Repository: plebbit/seedit Branch: master Commit: 9ce1b4e6a089 Files: 384 Total size: 1.8 MB Directory structure: gitextract_tr2m1266/ ├── .claude/ │ └── hooks.json ├── .codex/ │ ├── config.toml │ └── hooks.json ├── .cursor/ │ └── hooks.json ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ ├── release.yml │ └── test.yml ├── .gitignore ├── .nvmrc ├── .oxfmtrc.json ├── .yarnrc.yml ├── AGENTS.md ├── CHANGELOG.md ├── CLAUDE.md ├── LICENSE ├── README.md ├── android/ │ ├── .gitignore │ ├── .idea/ │ │ ├── .gitignore │ │ ├── compiler.xml │ │ ├── deploymentTargetSelector.xml │ │ ├── kotlinc.xml │ │ ├── migrations.xml │ │ ├── misc.xml │ │ └── runConfigurations.xml │ ├── app/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── capacitor.build.gradle │ │ ├── proguard-rules.pro │ │ └── src/ │ │ ├── androidTest/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── getcapacitor/ │ │ │ └── myapp/ │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── assets/ │ │ │ │ ├── capacitor.config.json │ │ │ │ └── capacitor.plugins.json │ │ │ ├── java/ │ │ │ │ └── seedit/ │ │ │ │ └── android/ │ │ │ │ ├── FileUploaderPlugin.java │ │ │ │ ├── FileUtils.java │ │ │ │ └── MainActivity.java │ │ │ └── res/ │ │ │ ├── drawable/ │ │ │ │ └── ic_launcher_background.xml │ │ │ ├── drawable-v24/ │ │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── layout/ │ │ │ │ └── activity_main.xml │ │ │ ├── mipmap-anydpi-v26/ │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ ├── values/ │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ │ └── xml/ │ │ │ ├── config.xml │ │ │ └── file_paths.xml │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── getcapacitor/ │ │ └── myapp/ │ │ └── ExampleUnitTest.java │ ├── build.gradle │ ├── capacitor.settings.gradle │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── plebbit.keystore │ ├── settings.gradle │ └── variables.gradle ├── capacitor.config.ts ├── docs/ │ └── agent-playbooks/ │ ├── bug-investigation.md │ ├── commit-issue-format.md │ ├── hooks-setup.md │ ├── known-surprises.md │ ├── long-running-agent-workflow.md │ ├── skills-and-tools.md │ ├── templates/ │ │ ├── feature-list.template.json │ │ └── progress.template.md │ └── translations.md ├── electron/ │ ├── after-all-artifact-build.cjs │ ├── before-pack.js │ ├── build-docker.sh │ ├── download-ipfs.js │ ├── log.js │ ├── main.js │ ├── preload.mjs │ ├── proxy-server.js │ ├── src/ │ │ ├── main.ts │ │ ├── plugins/ │ │ │ └── file-uploader.ts │ │ └── preload.ts │ ├── start-ipfs.js │ ├── start-plebbit-rpc.js │ ├── vite-config.js │ └── vite.preload.config.js ├── forge.config.js ├── index.html ├── knip.jsonc ├── oxlintrc.json ├── package.json ├── public/ │ ├── manifest.json │ ├── redirect.html │ ├── robots.txt │ └── translations/ │ ├── ar/ │ │ └── default.json │ ├── bn/ │ │ └── default.json │ ├── cs/ │ │ └── default.json │ ├── da/ │ │ └── default.json │ ├── de/ │ │ └── default.json │ ├── el/ │ │ └── default.json │ ├── en/ │ │ └── default.json │ ├── es/ │ │ └── default.json │ ├── fa/ │ │ └── default.json │ ├── fi/ │ │ └── default.json │ ├── fil/ │ │ └── default.json │ ├── fr/ │ │ └── default.json │ ├── he/ │ │ └── default.json │ ├── hi/ │ │ └── default.json │ ├── hu/ │ │ └── default.json │ ├── id/ │ │ └── default.json │ ├── it/ │ │ └── default.json │ ├── ja/ │ │ └── default.json │ ├── ko/ │ │ └── default.json │ ├── mr/ │ │ └── default.json │ ├── nl/ │ │ └── default.json │ ├── no/ │ │ └── default.json │ ├── pl/ │ │ └── default.json │ ├── pt/ │ │ └── default.json │ ├── ro/ │ │ └── default.json │ ├── ru/ │ │ └── default.json │ ├── sq/ │ │ └── default.json │ ├── sv/ │ │ └── default.json │ ├── te/ │ │ └── default.json │ ├── th/ │ │ └── default.json │ ├── tr/ │ │ └── default.json │ ├── uk/ │ │ └── default.json │ ├── ur/ │ │ └── default.json │ ├── vi/ │ │ └── default.json │ └── zh/ │ └── default.json ├── react-doctor.config.json ├── scripts/ │ ├── AGENTS.md │ ├── agent-hooks/ │ │ ├── format.sh │ │ ├── react-pattern-review.sh │ │ ├── sync-git-branches.sh │ │ ├── verify.sh │ │ └── yarn-install.sh │ ├── agent-init.sh │ ├── create-task-worktree.sh │ ├── deploy.sh │ ├── dev-server-utils.mjs │ ├── find-forge-executable.js │ ├── release-body.js │ ├── start-dev.js │ └── update-translations.js ├── src/ │ ├── AGENTS.md │ ├── app.module.css │ ├── app.tsx │ ├── components/ │ │ ├── account-bar/ │ │ │ ├── account-bar.module.css │ │ │ ├── account-bar.tsx │ │ │ └── index.ts │ │ ├── author-sidebar/ │ │ │ ├── author-sidebar.module.css │ │ │ ├── author-sidebar.tsx │ │ │ └── index.ts │ │ ├── challenge-modal/ │ │ │ ├── challenge-modal.module.css │ │ │ ├── challenge-modal.tsx │ │ │ └── index.ts │ │ ├── comment-edit-form/ │ │ │ ├── comment-edit-form.tsx │ │ │ └── index.ts │ │ ├── error-display/ │ │ │ ├── error-display.module.css │ │ │ ├── error-display.tsx │ │ │ └── index.ts │ │ ├── feed-footer/ │ │ │ ├── feed-footer.module.css │ │ │ ├── feed-footer.tsx │ │ │ └── index.ts │ │ ├── header/ │ │ │ ├── header.module.css │ │ │ ├── header.tsx │ │ │ └── index.ts │ │ ├── info-tooltip/ │ │ │ ├── index.ts │ │ │ ├── info-tooltip.module.css │ │ │ └── info-tooltip.tsx │ │ ├── loading-ellipsis/ │ │ │ ├── index.ts │ │ │ ├── loading-ellipsis.module.css │ │ │ └── loading-ellipsis.tsx │ │ ├── markdown/ │ │ │ ├── index.ts │ │ │ ├── markdown.module.css │ │ │ └── markdown.tsx │ │ ├── notification-handler/ │ │ │ ├── index.ts │ │ │ └── notification-handler.tsx │ │ ├── over-18-warning/ │ │ │ ├── index.ts │ │ │ ├── over-18-warning.module.css │ │ │ └── over-18-warning.tsx │ │ ├── post/ │ │ │ ├── comment-tools/ │ │ │ │ ├── comment-tools.module.css │ │ │ │ ├── comment-tools.tsx │ │ │ │ ├── edit-menu/ │ │ │ │ │ ├── edit-menu.module.css │ │ │ │ │ ├── edit-menu.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── hide-menu/ │ │ │ │ │ ├── hide-menu.module.css │ │ │ │ │ ├── hide-menu.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ └── mod-menu/ │ │ │ │ ├── index.ts │ │ │ │ ├── mod-menu.module.css │ │ │ │ └── mod-menu.tsx │ │ │ ├── embed/ │ │ │ │ ├── embed.module.css │ │ │ │ ├── embed.tsx │ │ │ │ └── index.ts │ │ │ ├── expand-button/ │ │ │ │ ├── expand-button.module.css │ │ │ │ ├── expand-button.tsx │ │ │ │ └── index.ts │ │ │ ├── expando/ │ │ │ │ ├── expando.module.css │ │ │ │ ├── expando.tsx │ │ │ │ └── index.ts │ │ │ ├── flair/ │ │ │ │ ├── flair.module.css │ │ │ │ ├── flair.tsx │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── label/ │ │ │ │ ├── index.ts │ │ │ │ ├── label.module.css │ │ │ │ └── label.tsx │ │ │ ├── post.module.css │ │ │ ├── post.tsx │ │ │ └── thumbnail/ │ │ │ ├── index.ts │ │ │ ├── thumbnail.module.css │ │ │ └── thumbnail.tsx │ │ ├── reply/ │ │ │ ├── index.ts │ │ │ ├── reply.module.css │ │ │ └── reply.tsx │ │ ├── reply-form/ │ │ │ ├── index.ts │ │ │ ├── reply-form.module.css │ │ │ └── reply-form.tsx │ │ ├── search-bar/ │ │ │ ├── index.ts │ │ │ ├── search-bar.module.css │ │ │ └── search-bar.tsx │ │ ├── sidebar/ │ │ │ ├── index.ts │ │ │ ├── sidebar.module.css │ │ │ └── sidebar.tsx │ │ ├── spoiler-tooltip/ │ │ │ ├── index.ts │ │ │ ├── spoiler-tooltip.module.css │ │ │ └── spoiler-tooltip.tsx │ │ ├── sticky-header/ │ │ │ ├── index.ts │ │ │ ├── sticky-header.module.css │ │ │ └── sticky-header.tsx │ │ ├── subscribe-button/ │ │ │ ├── index.ts │ │ │ ├── subscribe-button.module.css │ │ │ └── subscribe-button.tsx │ │ ├── topbar/ │ │ │ ├── index.ts │ │ │ ├── topbar.module.css │ │ │ └── topbar.tsx │ │ └── version/ │ │ ├── index.ts │ │ └── version.tsx │ ├── constants/ │ │ ├── nsfw-tags.ts │ │ ├── sort-labels.ts │ │ └── sort-types.ts │ ├── globals.d.ts │ ├── hooks/ │ │ ├── use-account-comment.ts │ │ ├── use-auto-subscribe.ts │ │ ├── use-challenge-settings.ts │ │ ├── use-challenges-options.ts │ │ ├── use-comment-media-info.ts │ │ ├── use-community-identifier.ts │ │ ├── use-community-subtitles.ts │ │ ├── use-default-subscriptions.ts │ │ ├── use-displayed-subscriptions.ts │ │ ├── use-downvote.ts │ │ ├── use-fetch-gif-first-frame.ts │ │ ├── use-is-broadly-nsfw-community.ts │ │ ├── use-is-community-offline.ts │ │ ├── use-is-mobile.ts │ │ ├── use-is-nsfw-community.ts │ │ ├── use-publish-reply.ts │ │ ├── use-redirect-to-default-sort.ts │ │ ├── use-replies.ts │ │ ├── use-scheduled-reset.ts │ │ ├── use-state-string.ts │ │ ├── use-theme.ts │ │ ├── use-time-filter.ts │ │ ├── use-upvote.ts │ │ └── use-window-width.ts │ ├── index.css │ ├── index.tsx │ ├── lib/ │ │ ├── init-translations.ts │ │ ├── push/ │ │ │ ├── common.ts │ │ │ ├── electron.ts │ │ │ ├── index.ts │ │ │ ├── native.ts │ │ │ └── web.ts │ │ └── utils/ │ │ ├── account-comment-utils.test.ts │ │ ├── account-comment-utils.ts │ │ ├── account-history-utils.test.ts │ │ ├── account-history-utils.ts │ │ ├── account-import-utils.ts │ │ ├── address-utils.ts │ │ ├── challenge-utils.ts │ │ ├── cid-utils.ts │ │ ├── clipboard-utils.ts │ │ ├── comment-utils.ts │ │ ├── file-export-utils.ts │ │ ├── media-utils.ts │ │ ├── nsfw-subscription-utils.ts │ │ ├── pattern-utils.ts │ │ ├── post-utils.ts │ │ ├── time-utils.ts │ │ ├── url-utils.ts │ │ ├── user-utils.ts │ │ └── view-utils.ts │ ├── modules.d.ts │ ├── plugins/ │ │ └── file-uploader.ts │ ├── polyfills.js │ ├── preload-assets.css │ ├── stores/ │ │ ├── use-auto-subscribe-store.ts │ │ ├── use-challenges-store.ts │ │ ├── use-communities-loading-start-timestamps-store.ts │ │ ├── use-community-offline-store.ts │ │ ├── use-community-settings-store.ts │ │ ├── use-content-options-store.ts │ │ ├── use-error-store.ts │ │ ├── use-feed-filters-store.ts │ │ ├── use-feed-reset-store.ts │ │ ├── use-not-found-store.ts │ │ ├── use-pinned-posts-store.ts │ │ ├── use-publish-post-store.ts │ │ ├── use-publish-reply-store.ts │ │ ├── use-theme-store.ts │ │ └── use-window-dimensions-store.ts │ ├── sw.ts │ ├── themes.css │ ├── views/ │ │ ├── about/ │ │ │ ├── about.module.css │ │ │ ├── about.tsx │ │ │ └── index.ts │ │ ├── all/ │ │ │ ├── all.tsx │ │ │ └── index.ts │ │ ├── author/ │ │ │ ├── author.module.css │ │ │ ├── author.tsx │ │ │ └── index.ts │ │ ├── communities/ │ │ │ ├── communities.module.css │ │ │ ├── communities.tsx │ │ │ └── index.ts │ │ ├── community/ │ │ │ ├── community.tsx │ │ │ └── index.ts │ │ ├── community-settings/ │ │ │ ├── challenge-settings/ │ │ │ │ ├── challenge-settings.tsx │ │ │ │ └── index.ts │ │ │ ├── community-data-editor/ │ │ │ │ ├── community-data-editor.tsx │ │ │ │ └── index.ts │ │ │ ├── community-settings.module.css │ │ │ ├── community-settings.tsx │ │ │ └── index.ts │ │ ├── domain/ │ │ │ ├── domain.tsx │ │ │ └── index.ts │ │ ├── home/ │ │ │ ├── home.module.css │ │ │ ├── home.tsx │ │ │ └── index.ts │ │ ├── inbox/ │ │ │ ├── inbox.module.css │ │ │ ├── inbox.tsx │ │ │ └── index.ts │ │ ├── mod/ │ │ │ ├── index.ts │ │ │ └── mod.tsx │ │ ├── not-found/ │ │ │ ├── index.ts │ │ │ ├── not-found.module.css │ │ │ └── not-found.tsx │ │ ├── post-page/ │ │ │ ├── index.ts │ │ │ ├── post-page.module.css │ │ │ └── post-page.tsx │ │ ├── profile/ │ │ │ ├── index.ts │ │ │ ├── profile.module.css │ │ │ └── profile.tsx │ │ ├── settings/ │ │ │ ├── account-data-editor/ │ │ │ │ ├── account-data-editor.module.css │ │ │ │ ├── account-data-editor.tsx │ │ │ │ └── index.ts │ │ │ ├── account-settings/ │ │ │ │ ├── account-settings.module.css │ │ │ │ ├── account-settings.tsx │ │ │ │ └── index.ts │ │ │ ├── address-settings/ │ │ │ │ ├── address-settings.module.css │ │ │ │ ├── address-settings.tsx │ │ │ │ └── index.ts │ │ │ ├── avatar-settings/ │ │ │ │ ├── avatar-settings.module.css │ │ │ │ ├── avatar-settings.tsx │ │ │ │ └── index.ts │ │ │ ├── content-options/ │ │ │ │ ├── content-options.module.css │ │ │ │ ├── content-options.tsx │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── notifications-settings/ │ │ │ │ ├── index.ts │ │ │ │ ├── notifications-settings.module.css │ │ │ │ └── notifications-settings.tsx │ │ │ ├── plebbit-options/ │ │ │ │ ├── index.ts │ │ │ │ ├── plebbit-options.module.css │ │ │ │ └── plebbit-options.tsx │ │ │ ├── settings.module.css │ │ │ ├── settings.tsx │ │ │ └── wallet-settings/ │ │ │ ├── index.ts │ │ │ ├── wallet-settings.module.css │ │ │ └── wallet-settings.tsx │ │ └── submit-page/ │ │ ├── index.ts │ │ ├── submit-page.module.css │ │ └── submit-page.tsx │ └── vite-env.d.ts ├── tsconfig.json ├── vercel.json └── vite.config.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .claude/hooks.json ================================================ { "version": 1, "hooks": { "sessionStart": [ { "command": ".claude/hooks/session-start.sh", "timeout": 120 } ], "afterFileEdit": [ { "command": ".claude/hooks/format.sh", "timeout": 10 }, { "command": ".claude/hooks/yarn-install.sh", "timeout": 120 }, { "command": ".claude/hooks/react-pattern-review.sh", "timeout": 10 } ], "stop": [ { "command": ".claude/hooks/sync-git-branches.sh", "timeout": 60 }, { "command": ".claude/hooks/react-pattern-review.sh", "timeout": 10 }, { "command": ".claude/hooks/verify.sh", "timeout": 60 } ] } } ================================================ FILE: .codex/config.toml ================================================ [agents] max_threads = 8 max_depth = 1 [agents.browser-check] description = "Browser verification agent for UI changes using playwright-cli across Blink, Gecko, and WebKit on the local seedit app." config_file = "agents/browser-check.toml" [agents.code-quality] description = "Code quality agent that runs build, lint, and type-check, then fixes only issues surfaced by those checks." config_file = "agents/code-quality.toml" [agents.plan-implementer] description = "Implementation-focused agent for scoped tasks from a parent plan." config_file = "agents/plan-implementer.toml" [agents.profiler] description = "Performance profiling agent that inspects seedit routes with playwright-cli and react-scan evidence." config_file = "agents/profiler.toml" [agents.react-doctor-fixer] description = "React issue remediation agent for a validated issue plus an explicit fix plan." config_file = "agents/react-doctor-fixer.toml" [agents.react-patterns-enforcer] description = "React architecture reviewer that fixes repo-specific anti-patterns after UI logic changes." config_file = "agents/react-patterns-enforcer.toml" [agents.test-apk] description = "Android emulator and APK testing agent for seedit mobile workflows." config_file = "agents/test-apk.toml" [agents.translator] description = "Single-key i18next translation agent that updates all supported languages through the project script." config_file = "agents/translator.toml" ================================================ FILE: .codex/hooks.json ================================================ { "version": 1, "hooks": { "afterFileEdit": [ { "command": ".codex/hooks/format.sh", "timeout": 10 }, { "command": ".codex/hooks/yarn-install.sh", "timeout": 120 }, { "command": ".codex/hooks/react-pattern-review.sh", "timeout": 10 } ], "stop": [ { "command": ".codex/hooks/sync-git-branches.sh", "timeout": 60 }, { "command": ".codex/hooks/react-pattern-review.sh", "timeout": 10 }, { "command": ".codex/hooks/verify.sh", "timeout": 60 } ] } } ================================================ FILE: .cursor/hooks.json ================================================ { "version": 1, "hooks": { "afterFileEdit": [ { "command": ".cursor/hooks/format.sh", "timeout": 10 }, { "command": ".cursor/hooks/yarn-install.sh", "timeout": 120 }, { "command": ".cursor/hooks/react-pattern-review.sh", "timeout": 10 } ], "stop": [ { "command": ".cursor/hooks/sync-git-branches.sh", "timeout": 60 }, { "command": ".cursor/hooks/react-pattern-review.sh", "timeout": 10 }, { "command": ".cursor/hooks/verify.sh", "timeout": 60 } ] } } ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms github: tomcasaburi # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] patreon: # Replace with a single Patreon username open_collective: # Replace with a single Open Collective username ko_fi: # Replace with a single Ko-fi username tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry polar: # Replace with a single Polar username buy_me_a_coffee: # Replace with a single Buy Me a Coffee username thanks_dev: # Replace with a single thanks.dev username custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] ================================================ FILE: .github/workflows/release.yml ================================================ # docs https://github.com/marketplace/actions/create-release # docs https://github.com/ncipollo/release-action # docs https://docs.github.com/en/actions/using-jobs/choosing-the-runner-for-a-job#choosing-github-hosted-runners name: release on: push: tags: - 'v*' jobs: linux: strategy: fail-fast: false matrix: arch: [x64, arm64] runs-on: ubuntu-22.04 permissions: contents: write steps: # electron build - uses: actions/checkout@v2 with: # needed for git commit history changelog fetch-depth: 0 - name: Setup Node.js v22 uses: actions/setup-node@v2 with: node-version: 22 - run: corepack enable - name: Install dependencies (with Node v22) run: yarn install --immutable # make sure the ipfs executable is executable - name: Download IPFS and set permissions (with Node v22) run: node electron/download-ipfs && sudo chmod +x bin/linux/ipfs - name: Build React app (with Node v22) run: CI='' NODE_ENV=production yarn build - name: Build Electron app for Linux (arm64) if: ${{ matrix.arch == 'arm64' }} run: yarn electron:build:linux:arm64 - name: Build Electron app for Linux (x64) if: ${{ matrix.arch == 'x64' }} run: yarn electron:build:linux:x64 - name: List dist directory run: ls dist # publish version release - name: Generate release body run: node scripts/release-body > release-body.txt - uses: ncipollo/release-action@v1 with: artifacts: 'dist/seedit*.AppImage,dist/seedit*-arm64.AppImage,dist/seedit-html*.zip' token: ${{ secrets.GITHUB_TOKEN }} replacesArtifacts: true omitBody: true allowUpdates: true mac: strategy: fail-fast: false matrix: include: - runner: macos-15-intel # Intel x64 arch: x64 - runner: macos-latest # Apple Silicon arm64 arch: arm64 runs-on: ${{ matrix.runner }} permissions: contents: write steps: # electron build - uses: actions/checkout@v2 with: # needed for git commit history changelog fetch-depth: 0 - name: Setup Node.js v22 uses: actions/setup-node@v2 with: node-version: 22 - run: corepack enable - name: Setup Python 3.12 uses: actions/setup-python@v5 with: python-version: '3.12' # install missing dep for sqlite (use setup-python to avoid PEP 668 externally-managed-environment error) - uses: actions/setup-python@v5 with: python-version: '3.12' - run: pip install setuptools - name: Install dependencies (with Node v22) run: yarn install --immutable # make sure the ipfs executable is executable - name: Download IPFS and set permissions (with Node v22) run: node electron/download-ipfs && sudo chmod +x bin/mac/ipfs - name: Build React app (with Node v22) run: CI='' NODE_ENV=production yarn build - name: Build Electron app for Mac (with Node v22) env: CSC_IDENTITY_AUTO_DISCOVERY: 'false' run: | if [ "${{ matrix.arch }}" = "arm64" ]; then yarn electron:build:mac:arm64 else yarn electron:build:mac:x64 fi - name: List dist directory run: ls dist # publish version release - name: Generate release body run: node scripts/release-body > release-body.txt - uses: ncipollo/release-action@v1 with: artifacts: 'dist/seedit*.dmg,dist/seedit*-arm64.dmg' token: ${{ secrets.GITHUB_TOKEN }} replacesArtifacts: true omitBody: true allowUpdates: true windows: runs-on: windows-2022 permissions: contents: write steps: # electron build - uses: actions/checkout@v2 with: # needed for git commit history changelog fetch-depth: 0 - name: Setup Node.js v22 uses: actions/setup-node@v2 with: node-version: 22 - run: corepack enable - name: Install dependencies (with Node v22) run: yarn install --immutable - name: Build React app (with Node v22) run: npx cross-env NODE_ENV=production yarn build - name: Build Electron app for Windows (x64) run: yarn electron:build:windows - name: List dist directory run: dir dist # publish version release - name: Generate release body run: node scripts/release-body > release-body.txt - uses: ncipollo/release-action@v1 with: artifacts: 'dist/seedit*.exe' token: ${{ secrets.GITHUB_TOKEN }} replacesArtifacts: true omitBody: true allowUpdates: true android: runs-on: ubuntu-22.04 permissions: contents: write steps: - uses: actions/checkout@v2 with: # needed to use 'git tag' and get all tags and for git commit history changelog fetch-depth: 0 - uses: actions/setup-java@v3 with: distribution: 'zulu' java-version: '17' - uses: gradle/gradle-build-action@v2 with: gradle-version: 8.9 - uses: actions/setup-node@v2 with: node-version: 22 - run: corepack enable - run: sudo apt install -y apksigner zipalign # install all dependencies (including devDependencies needed for React build) - name: Install dependencies (with Node v22) run: yarn install --immutable # build react app - run: CI='' NODE_ENV=production yarn build # set android versionCode and versionName - run: sed -i "s/versionCode 1/versionCode $(git tag | wc -l)/" ./android/app/build.gradle - run: sed -i "s/versionName \"1.0\"/versionName \"$(node -e "console.log(require('./package.json').version)")\"/" ./android/app/build.gradle - run: cat ./android/app/build.gradle # build apk - run: npx cap sync android - run: cd android && gradle bundle - run: cd android && ./gradlew assembleRelease --stacktrace # optimize apk - run: cd android/app/build/outputs/apk/release && zipalign 4 app-release-unsigned.apk app-release-unsigned-zip.apk # sign apk # to create keystore: keytool -genkey -v -keystore plebbit.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias release - run: cd android/app/build/outputs/apk/release && apksigner sign --ks ../../../../../plebbit.keystore --ks-pass pass:${{ secrets.PLEBBIT_REACT_KEYSTORE_PASSWORD }} --ks-key-alias release --out app-release-signed.apk app-release-unsigned-zip.apk # move apk to dist folder - run: mkdir -p dist && mv android/app/build/outputs/apk/release/app-release-signed.apk dist/seedit-$(node -e "console.log(require('./package.json').version)").apk - run: ls dist # publish version release - run: node scripts/release-body > release-body.txt - uses: ncipollo/release-action@v1 with: artifacts: 'dist/seedit*.apk' token: ${{ secrets.GITHUB_TOKEN }} replacesArtifacts: true omitBody: true allowUpdates: true finalize-release: runs-on: ubuntu-22.04 needs: [linux, mac, windows, android] steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Setup Node.js v22 uses: actions/setup-node@v2 with: node-version: 22 - run: corepack enable - name: Install dependencies run: yarn install --immutable - name: Generate final release body from GitHub assets env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_REPOSITORY: ${{ github.repository }} GITHUB_REF_NAME: ${{ github.ref_name }} run: node scripts/release-body > release-body.txt - name: Update release body only uses: ncipollo/release-action@v1 with: token: ${{ secrets.GITHUB_TOKEN }} allowUpdates: true bodyFile: "release-body.txt" ================================================ FILE: .github/workflows/test.yml ================================================ name: Test Builds on: push: branches: [ development, master ] pull_request: branches: [ development, master ] jobs: test-linux: name: Test Linux (Ubuntu) runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Node.js v22 uses: actions/setup-node@v4 with: node-version: 22 - run: corepack enable - name: Cache electron binaries uses: actions/cache@v4 with: path: ~/.cache/electron key: ${{ runner.os }}-electron-v2-${{ hashFiles('**/yarn.lock') }} restore-keys: ${{ runner.os }}-electron-v2- - name: Install dependencies run: | for i in 1 2 3; do echo "yarn install attempt $i" yarn install --immutable && break sleep 5 [ "$i" = "3" ] && exit 1 done - name: Build React App run: yarn build env: CI: '' - name: Build Preload Script run: yarn build:preload - name: Verify build outputs run: | echo "=== Checking build/ directory ===" ls -la build/ || exit 1 echo "=== Checking build/electron/preload.cjs ===" ls -la build/electron/preload.cjs || exit 1 echo "=== Checking build/index.html ===" ls -la build/index.html || exit 1 - name: Verify forge config run: | echo "=== forge.config.js exists ===" ls -la forge.config.js echo "=== Validating forge config can be loaded ===" node -e "import('./forge.config.js').then(c => console.log('Config loaded, makers:', c.default.makers?.length || 0)).catch(e => { console.error(e); process.exit(1); })" - name: Package Electron App timeout-minutes: 30 run: | set -o pipefail yarn electron-forge package 2>&1 | tee forge-output.log echo "=== Checking out/ directory ===" ls -la out/ - name: Verify Executable run: | ls -la out/ EXE=$(node scripts/find-forge-executable.js) echo "Found executable: $EXE" # Verify the file exists and is executable test -f "$EXE" && test -x "$EXE" && echo "✓ Executable is valid" test-mac-intel: name: Test Mac (Intel) runs-on: macos-15-intel steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Node.js v22 uses: actions/setup-node@v4 with: node-version: 22 - run: corepack enable - name: Install setuptools for native modules run: pip3 install --break-system-packages setuptools || pip3 install --user setuptools || true - name: Cache electron binaries uses: actions/cache@v4 with: path: ~/Library/Caches/electron key: ${{ runner.os }}-electron-v2-${{ hashFiles('**/yarn.lock') }} restore-keys: ${{ runner.os }}-electron-v2- - name: Install dependencies run: | for i in 1 2 3; do echo "yarn install attempt $i" yarn install --immutable && break sleep 5 [ "$i" = "3" ] && exit 1 done - name: Build React App run: yarn build env: CI: '' - name: Build Preload Script run: yarn build:preload - name: Verify build outputs run: | ls -la build/ || exit 1 ls -la build/electron/preload.cjs || exit 1 ls -la build/index.html || exit 1 - name: Package Electron App timeout-minutes: 30 run: | set -o pipefail yarn electron-forge package 2>&1 | tee forge-output.log ls -la out/ - name: Verify Executable run: | ls -la out/ EXE=$(node scripts/find-forge-executable.js) echo "Found executable: $EXE" test -f "$EXE" && test -x "$EXE" && echo "✓ Executable is valid" test-mac-arm: name: Test Mac (Apple Silicon) runs-on: macos-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Node.js v22 uses: actions/setup-node@v4 with: node-version: 22 - run: corepack enable - name: Install setuptools for native modules run: pip3 install --break-system-packages setuptools || pip3 install --user setuptools || true - name: Cache electron binaries uses: actions/cache@v4 with: path: ~/Library/Caches/electron key: ${{ runner.os }}-electron-v2-${{ hashFiles('**/yarn.lock') }} restore-keys: ${{ runner.os }}-electron-v2- - name: Install dependencies run: | for i in 1 2 3; do echo "yarn install attempt $i" yarn install --immutable && break sleep 5 [ "$i" = "3" ] && exit 1 done - name: Build React App run: yarn build env: CI: '' - name: Build Preload Script run: yarn build:preload - name: Verify build outputs run: | ls -la build/ || exit 1 ls -la build/electron/preload.cjs || exit 1 ls -la build/index.html || exit 1 - name: Package Electron App timeout-minutes: 30 run: | set -o pipefail yarn electron-forge package 2>&1 | tee forge-output.log ls -la out/ - name: Verify Executable run: | ls -la out/ EXE=$(node scripts/find-forge-executable.js) echo "Found executable: $EXE" test -f "$EXE" && test -x "$EXE" && echo "✓ Executable is valid" test-windows: name: Test Windows runs-on: windows-2022 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Node.js v22 uses: actions/setup-node@v4 with: node-version: 22 - run: corepack enable - name: Cache electron binaries uses: actions/cache@v4 with: path: ~/AppData/Local/electron/Cache key: ${{ runner.os }}-electron-v2-${{ hashFiles('**/yarn.lock') }} restore-keys: ${{ runner.os }}-electron-v2- - name: Install dependencies shell: bash run: | for i in 1 2 3; do echo "yarn install attempt $i" yarn install --immutable && break sleep 5 [ "$i" = "3" ] && exit 1 done - name: Build React App shell: bash run: yarn build env: CI: '' - name: Build Preload Script shell: bash run: yarn build:preload - name: Verify build outputs shell: bash run: | ls -la build/ || exit 1 ls -la build/electron/preload.cjs || exit 1 ls -la build/index.html || exit 1 - name: Package Electron App shell: bash timeout-minutes: 30 run: | set -o pipefail yarn electron-forge package 2>&1 | tee forge-output.log ls -la out/ - name: Verify Executable shell: bash run: | ls -la out/ EXE=$(node scripts/find-forge-executable.js) echo "Found executable: $EXE" test -f "$EXE" && test -x "$EXE" && echo "✓ Executable is valid" ================================================ FILE: .gitignore ================================================ # plebbit temp files .plebbit bin .env .deploy-env # Logs logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* lerna-debug.log* .pnpm-debug.log* # Diagnostic reports (https://nodejs.org/api/report.html) report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json # Runtime data pids *.pid *.seed *.pid.lock # Directory for instrumented libs generated by jscoverage/JSCover lib-cov # Coverage directory used by tools like istanbul coverage /badges/ *.lcov # nyc test coverage .nyc_output # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) .grunt # Bower dependency directory (https://bower.io/) bower_components # node-waf configuration .lock-wscript # Compiled binary addons (https://nodejs.org/api/addons.html) build/Release # Dependency directories node_modules/ jspm_packages/ # Snowpack dependency directory (https://snowpack.dev/) web_modules/ # TypeScript cache *.tsbuildinfo # Optional npm cache directory .npm # Optional eslint cache .eslintcache # Optional stylelint cache .stylelintcache # Microbundle cache .rpt2_cache/ .rts2_cache_cjs/ .rts2_cache_es/ .rts2_cache_umd/ # Optional REPL history .node_repl_history # Output of 'npm pack' *.tgz # Yarn Integrity file .yarn-integrity # dotenv environment variable files .env .env.development.local .env.test.local .env.production.local .env.local # parcel-bundler cache (https://parceljs.org/) .cache .parcel-cache # Next.js build output .next out # Nuxt.js build / generate output .nuxt dist # Electron Forge output squashfs-root # Vite PWA dev output dev-dist # Gatsby files .cache/ # Comment in the public line in if your project uses Gatsby and not Next.js # https://nextjs.org/blog/next-9-1#public-directory-support # public # vuepress build output .vuepress/dist # vuepress v2.x temp and cache directory .temp .cache # Docusaurus cache and generated files .docusaurus # Serverless directories .serverless/ # FuseBox cache .fusebox/ # DynamoDB Local files .dynamodb/ # TernJS port file .tern-port # Stores VSCode versions used for testing VSCode extensions .vscode-test # yarn .yarn/* !.yarn/patches !.yarn/plugins !.yarn/releases !.yarn/versions .pnp.* # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies /node_modules /.pnp .pnp.js # testing /coverage # production /build # misc .DS_Store .env.local .env.development.local .env.test.local .env.production.local npm-debug.log* yarn-debug.log* yarn-error.log* .vscode .playwright-cli .firecrawl/ # Repo-managed AI tooling .cursor/* .cursor/.DS_Store !.cursor/agents/ !.cursor/agents/** !.cursor/hooks/ !.cursor/hooks/** !.cursor/hooks.json !.cursor/skills/ !.cursor/skills/** .cursor/**/.DS_Store .claude/* .claude/.DS_Store !.claude/agents/ !.claude/agents/** !.claude/hooks/ !.claude/hooks/** !.claude/hooks.json !.claude/skills/ !.claude/skills/** .claude/**/.DS_Store .codex/* .codex/.DS_Store !.codex/agents/ !.codex/agents/** !.codex/config.toml !.codex/hooks/ !.codex/hooks/** !.codex/hooks.json !.codex/skills/ !.codex/skills/** .codex/**/.DS_Store # Upload selector smoke probe (report-only, local/CI triage) scripts/upload-selectors-smoke-report.json scripts/upload-selectors-smoke-snapshots/ # Android build artifacts android/app/build/ .vercel ================================================ FILE: .nvmrc ================================================ 22.12.0 ================================================ FILE: .oxfmtrc.json ================================================ { "$schema": "./node_modules/oxfmt/configuration_schema.json", "semi": true, "singleQuote": true, "printWidth": 170, "bracketSpacing": true, "tabWidth": 2, "trailingComma": "all", "jsxSingleQuote": true, "arrowParens": "always", "useTabs": false, "ignorePatterns": [] } ================================================ FILE: .yarnrc.yml ================================================ nodeLinker: node-modules ================================================ FILE: AGENTS.md ================================================ # AGENTS.md ## Purpose This file defines the always-on rules for AI agents working on seedit. Use this as the default policy. Load linked playbooks only when their trigger condition applies. ## Surprise Handling The role of this file is to reduce recurring agent mistakes and confusion points in this repository. If you encounter something surprising or ambiguous while working, alert the developer immediately. After confirmation, add a concise entry to `docs/agent-playbooks/known-surprises.md` so future agents avoid the same issue. Only record items that are repo-specific, likely to recur, and have a concrete mitigation. ## Project Overview seedit is a serverless, adminless, decentralized Reddit-style client built on the Bitsocial protocol with an old.reddit-inspired UI. ## Instruction Priority - **MUST** rules are mandatory. - **SHOULD** rules are strong defaults unless task context requires a different choice. - If guidance conflicts, prefer: user request > MUST > SHOULD > playbooks. ## Agent Operating Principles - Before editing, state important assumptions when the task is ambiguous. Ask instead of silently choosing between materially different interpretations. - Prefer the smallest implementation that solves the requested problem. Do not add speculative abstractions, configurability, or features. - Keep diffs surgical. Do not refactor, reformat, rename, or "improve" adjacent code unless it is necessary for the task. - Clean up only artifacts created by the current change, such as newly unused imports or dead helper code. - For non-trivial work, define success criteria and verify them with the narrowest reliable checks before marking the task complete. ## Task Router (Read First) | Situation | Required action | |---|---| | React UI logic changed (`src/components`, `src/views`, `src/hooks`, UI stores) | Follow React architecture rules below; review the changed diff with `vercel-react-best-practices` and `vercel:react-best-practices` when available; run `yarn build`, `yarn lint`, `yarn type-check`, and `yarn doctor` | | Visible UI or interaction changed | Verify in browser with `playwright-cli` across Chrome/Blink, Firefox/Gecko, and WebKit/Safari; test desktop and mobile viewport | | `package.json` changed | Run `corepack yarn install` to keep `yarn.lock` in sync | | Dependencies or import graph changed | Run `yarn knip` as an advisory manifest/import audit | | Translation key/value changed | Use `docs/agent-playbooks/translations.md` | | Bug report in a specific file/line | Start with git history scan from `docs/agent-playbooks/bug-investigation.md` before editing | | `CHANGELOG.md`, `scripts/release-body.js`, or package version changed | Run `yarn changelog` if release notes need regeneration | | Long-running task spans multiple sessions, handoffs, or spawned agents | Use `docs/agent-playbooks/long-running-agent-workflow.md`, keep a machine-readable feature list plus a progress log, and run `./scripts/agent-init.sh` before starting a fresh feature slice | | New reviewable feature/fix started while on `master` | Create a short-lived `codex/feature/*`, `codex/fix/*`, `codex/docs/*`, or `codex/chore/*` branch from `master` before editing; use a separate worktree only for parallel tasks | | New unrelated task started while another task branch is already checked out or being worked on by another agent | Create a separate worktree from `master`, create a new short-lived task branch there, and keep each agent on its own worktree/branch/PR | | Open PR needs feedback triage or merge readiness check | Use the `review-and-merge-pr` skill to inspect bot/human feedback, fix valid findings, and merge only after verification | | Repo AI workflow files changed (`.codex/**`, `.cursor/**`, `.claude/**`) | Keep the Codex, Cursor, and Claude copies aligned when they represent the same workflow; update `AGENTS.md` if the default agent policy changes | | GitHub operation needed | Use `gh` CLI, not GitHub MCP | | User asks for commit/issue phrasing | Use `docs/agent-playbooks/commit-issue-format.md` | | Surprising/ambiguous repo behavior encountered | Alert developer and, once confirmed, document in `docs/agent-playbooks/known-surprises.md` | ## Stack - React 19 + TypeScript - Zustand for shared state - React Router v6 - Vite - `@bitsocial/bitsocial-react-hooks` - i18next - Corepack-managed Yarn 4 - oxlint - oxfmt - tsgo ## Project Structure ```text src/ ├── components/ # Reusable UI components ├── views/ # Page-level route views ├── hooks/ # Custom hooks ├── stores/ # Zustand stores ├── lib/ # Utilities/helpers └── data/ # Static data ``` ## Core MUST Rules ### Package and Dependency Rules - Use Corepack-managed Yarn 4, never `npm`. Run `corepack enable` once on a new machine before using `yarn`. - Pin exact dependency versions (`package@x.y.z`), never `^` or `~`. - Keep lockfile synchronized when dependency manifests change. ### React Architecture Rules - Do not use `useState` for shared/global state. Use Zustand stores in `src/stores/`. - Do not use `useEffect` for data fetching. Use `@bitsocial/bitsocial-react-hooks`. - Do not sync derived state with effects. Compute during render. - Avoid copy-paste logic across components. Extract custom hooks in `src/hooks/`. - Avoid boolean flag soup for complex flows; model state clearly in Zustand. - Use React Router for navigation; no manual history manipulation. ### Code Organization Rules - Keep components focused; split large components. - Follow DRY: shared UI in `src/components/`, shared logic in `src/hooks/`. - Add comments for complex/non-obvious code; skip obvious comments. ### Git Workflow Rules - Keep `master` releasable. Do not treat `master` as a scratch branch. - If the user asks for a reviewable feature/fix and the current branch is `master`, create a short-lived task branch before making code changes unless the user explicitly asks to work directly on `master`. - Name short-lived AI task branches by intent under the Codex prefix: `codex/feature/*`, `codex/fix/*`, `codex/docs/*`, `codex/chore/*`. - Open PRs from task branches into `master` so review bots can run against the actual change. - Prefer short-lived task branches over a long-lived `develop` branch unless the user explicitly asks for a staging branch workflow. - Use worktrees only when parallel tasks need isolated checkouts. One active task branch per worktree. - If a new task is unrelated to the currently checked out branch, do not stack it on that branch. Create a new worktree from `master` and create a separate short-lived task branch there. - Prefer `./scripts/create-task-worktree.sh ` when you need a new task worktree and do not have a stronger repo-specific reason to create it manually. - Treat branch and worktree as different things: the branch is the change set; the worktree is the checkout where that branch is worked on. - For parallel unrelated tasks, give each task its own branch from `master`, its own worktree, and its own PR into `master`. - After a reviewed branch is merged, prefer deleting it to keep branch drift and merge conflicts low. - Open PRs as ready for review, not draft. Draft PRs prevent CodeRabbit, Cursor Bugbot, and similar review bots from running. ### Bug Investigation Rules - For bug reports tied to a specific file/line, check relevant git history before any fix. - Minimum sequence: `git log --oneline` or `git blame` first, then scoped `git show` for relevant commits. - Full workflow: `docs/agent-playbooks/bug-investigation.md`. ### Verification Rules - Never mark work complete without verification. - After code changes, run: `yarn build`, `yarn lint`, `yarn type-check`. - After React UI logic changes, run: `yarn doctor`. - Treat React Doctor output as actionable guidance; prioritize `error` then `warning`. - After adding or changing tests, run `yarn test`. - Do not commit or force-add local rebuild output. `build/` is the main generated build output in this repo; remove or restore generated output directories after local verification before committing. - For UI/visual changes, verify with `playwright-cli` across Chrome/Blink, Firefox/Gecko, and WebKit/Safari. - Cover desktop and a mobile viewport flow in each browser engine when the change affects layout, touch behavior, or responsiveness. - The shared hook verification path is strict by default. Only set `AGENT_VERIFY_MODE=advisory` when you intentionally need signal from a broken tree without blocking the session. - If verification fails, fix and re-run until passing. ### Tooling Constraints - Use `gh` CLI for GitHub work (issues, PRs, actions, dependabot, projects, search). - Do not use GitHub MCP. - Do not use browser MCP servers (cursor-ide-browser, playwright-mcp, chrome MCP, etc.). - Use `playwright-cli` for browser automation. - If many MCP tools are present in context, warn user and suggest disabling unused MCPs. ### AI Tooling Rules - Treat `.codex/`, `.cursor/`, and `.claude/` as repo-managed contributor tooling, not private scratch space. - Keep equivalent workflow files aligned across all toolchains when their directories contain the same skill, hook, or agent. - When changing shared agent behavior, update the relevant files in `.codex/skills/`, `.cursor/skills/`, `.claude/skills/`, `.codex/agents/`, `.cursor/agents/`, `.claude/agents/`, `.codex/hooks/`, `.cursor/hooks/`, `.claude/hooks/`, and their `hooks.json` or config entry points as needed. - If `AGENTS.md` references a skill, agent, or hook, prefer a tracked file under `.codex/`, `.cursor/`, or `.claude/` rather than an untracked local-only instruction. - Review `.codex/config.toml`, `.cursor/hooks.json`, and `.claude/hooks.json` before changing agent orchestration or hook behavior, because they are the entry points contributors will actually load. - When a diff adds new `useEffect`, `useLayoutEffect`, `useInsertionEffect`, `useMemo`, `useCallback`, or `memo(...)` usage under `src/`, treat the repo hook reminder as mandatory and reconsider the change with `you-might-not-need-an-effect` and `vercel-react-best-practices` before finishing. - Before finishing any React UI logic change under `src/components`, `src/views`, `src/hooks`, or UI stores, review the changed diff with `vercel-react-best-practices` and, in Codex/Vercel-plugin sessions, `vercel:react-best-practices`. Fix valid findings before final verification. - Do not configure `.claude` agents to use `composer-2`; that model is Cursor-only in this repo. Keep `.claude` agent models on Claude-supported options. - Do not configure `.codex/agents/*.toml` with `gpt-5.3-codex` or `gpt-5.3-codex-spark`; standardize Codex agents on `gpt-5.4` unless the user explicitly requests a different model. - For browser automation, default to a fresh isolated `playwright-cli` session for reproducible verification. If the task depends on existing auth, cookies, extensions, open tabs, or another live browser state, explicitly confirm whether to use a fresh isolated session or the contributor's current browser session. Do not assume permission to drive the contributor's active personal browser session. - Directory-specific auto-loaded rules live under `src/AGENTS.md` and `scripts/AGENTS.md`; read them before editing files in those trees. - For work expected to span multiple sessions, keep explicit task state in a `feature-list.json` plus `progress.md` pair using `docs/agent-playbooks/long-running-agent-workflow.md`. - If more than one human or toolchain needs the same task state, keep it in a tracked location such as `docs/agent-runs//` instead of burying it in a tool-specific hidden directory. ### Project Maintenance Rules - If `CHANGELOG.md`, `package.json`, or `scripts/release-body.js` changes as part of release work, run `yarn changelog` before finishing. ### Security and Boundaries - Never commit secrets or API keys. - Never push to a remote unless the user explicitly asks. - Test responsive behavior on mobile viewport. ## Core SHOULD Rules - Keep context lean: delegate heavy/verbose tasks to subprocesses when available. - For complex work, parallelize independent checks. - Add or update tests for bug fixes and non-trivial logic changes when the code is reasonably testable. - When touching already-covered code, prefer extending nearby tests so measured coverage does not regress without a clear reason. - When proposing or implementing meaningful code changes, include both: - a Conventional Commit title suggestion - a short GitHub issue suggestion Use the format playbook: `docs/agent-playbooks/commit-issue-format.md`. - When stuck on a bug, search the web for recent fixes/workarounds. - After user corrections, identify root cause and apply the lesson in subsequent steps. - Use `yarn knip` when adding/removing dependencies or introducing new direct imports; treat findings as advisory, but resolve real issues before finishing. ## Local Development URL This project uses [Portless](https://github.com/vercel-labs/portless) for the normal web dev flow. The canonical web dev URL is `https://seedit.localhost`, and non-`master` branches can automatically fall back to a branch-scoped `*.seedit.localhost` route when needed so parallel worktrees do not collide. Browser automation and local smoke/bootstrap helpers should target that URL unless the caller explicitly bypasses Portless with `PORTLESS=0`. ## Common Commands ```bash corepack enable corepack yarn install yarn start # https://seedit.localhost yarn build yarn lint yarn type-check yarn test yarn prettier yarn electron yarn changelog yarn knip yarn knip:full yarn doctor yarn doctor:score yarn doctor:verbose ./scripts/create-task-worktree.sh chore ai-workflow-improvement ./scripts/agent-init.sh ``` ## Playbooks (Load On Demand) Use these only when relevant to the active task: - Hooks setup and scripts: `docs/agent-playbooks/hooks-setup.md` - Long-running agent workflow: `docs/agent-playbooks/long-running-agent-workflow.md` - Translations workflow: `docs/agent-playbooks/translations.md` - Commit/issue output format: `docs/agent-playbooks/commit-issue-format.md` - Skills/tools setup and MCP rationale: `docs/agent-playbooks/skills-and-tools.md` - Bug investigation workflow: `docs/agent-playbooks/bug-investigation.md` - Known surprises log: `docs/agent-playbooks/known-surprises.md` ================================================ FILE: CHANGELOG.md ================================================ ## [0.5.10](https://github.com/plebbit/seedit/compare/v0.5.9...v0.5.10) (2025-09-26) ### Bug Fixes * **electron:** keep module-scoped Tray ref and destroy before reassign ([a33d708](https://github.com/plebbit/seedit/commit/a33d708e069c59bc52f6fc76c2e0291e27280c66)) ### Performance Improvements * **linux:** avoid GTK mixups by sanitizing env and skipping tray on Wayland ([e5e6aa4](https://github.com/plebbit/seedit/commit/e5e6aa4bf73c973b305e954f83ba168b195f4683)) ## [0.5.9](https://github.com/plebbit/seedit/compare/v0.5.8...v0.5.9) (2025-08-19) ### Bug Fixes * **challenge settings:** prevent uncontrolled input error in number fields ([818408c](https://github.com/plebbit/seedit/commit/818408c7d92afd14e05f2921c04c05b4a0c0a4b9)) * missing error displays in json editors ([06b9598](https://github.com/plebbit/seedit/commit/06b959855476d056d820cc5d9b519a80b9b84e7e)) * **posts:** handle whitespace-only post titles properly ([1f69dc9](https://github.com/plebbit/seedit/commit/1f69dc940591baa83d0f9a5d40110fa48ed63782)) ### Performance Improvements * **electron:** reduce prod logging + IPFS noise across OS; disable devtools in release; arch-aware mac builds ([c9f3ba8](https://github.com/plebbit/seedit/commit/c9f3ba88225461f788989c09915b8f2da6321c02)) ## [0.5.8](https://github.com/plebbit/seedit/compare/v0.5.7...v0.5.8) (2025-08-09) ### Bug Fixes * **android:** implement cross-platform account export ([b0b06db](https://github.com/plebbit/seedit/commit/b0b06db8c55b3e6bb6c1148acbc61d7ddf6c2d2c)) * edit comment state would get stuck at pending ([4251325](https://github.com/plebbit/seedit/commit/4251325b2a131bd64e5b8e8c8f1df20d7c20f581)) * resolve Android CI build failure with Google Services plugin ([a5373aa](https://github.com/plebbit/seedit/commit/a5373aa9baa44233cde6e9ec02e1b8c95917bcb1)) * resolve Android export dialog and permission issues ([01d7e1c](https://github.com/plebbit/seedit/commit/01d7e1c209d9899ea13502d70f6cf75786b5ec2c)) * revert Google Services to working config and remove hardcoded Java path ([f7df22a](https://github.com/plebbit/seedit/commit/f7df22a504e241d8d47af849a6b59937f5a3ca4e)) ## [0.5.7](https://github.com/plebbit/seedit/compare/v0.5.6...v0.5.7) (2025-08-06) ### Bug Fixes * **account editor:** page reload was missing when saving account edit, as well as auto navigate back to settings ([b6ee58f](https://github.com/plebbit/seedit/commit/b6ee58fe0a4872c2421f32500265a636d529b346)) * correct SNS v1 URLs ([f863aab](https://github.com/plebbit/seedit/commit/f863aab91209b009f9d25db5d2d29fe65c1fe1f5)) * **embeds:** make iframe width fix truly Safari-specific ([1badab4](https://github.com/plebbit/seedit/commit/1badab4a68e00eb916a5672ee63e89d5a16232a4)) * **embeds:** Safari iframe sizing in media previews ([c983de5](https://github.com/plebbit/seedit/commit/c983de555032e0a9760c0344a98054c5800a32cb)) * implement bidirectional sync between subplebbit form and JSON editor ([3d29e1f](https://github.com/plebbit/seedit/commit/3d29e1fa7fecfec5af1ae583021e9bc25d2089fb)) * improve PWA update detection and HTML caching strategy ([f3dd292](https://github.com/plebbit/seedit/commit/f3dd2926b78906ba20d72b3a4599c6d5180c0bf7)) * **inbox page:** prevent crash when iterating over undefined replies in context view ([5a459b5](https://github.com/plebbit/seedit/commit/5a459b5e4abda91402c786a05cdc965f99693752)) * **profile:** redirect to not-found when accessing profile routes with no comments ([2555711](https://github.com/plebbit/seedit/commit/255571173996d40cdfd86e13c239b111503c3fbe)) * react-scan was included in production builds ([a60142f](https://github.com/plebbit/seedit/commit/a60142f49330f08b313cbedfe4e9d9b71ee211c8)) * resolve Electron performance issues by ensuring Node.js version consistency in CI ([614fb42](https://github.com/plebbit/seedit/commit/614fb427bf21392245943e76b962711edf68a56b)) * **subplebbit data editor:** remove challenges field, it's read-only ([fdbced7](https://github.com/plebbit/seedit/commit/fdbced7311edb103a39f5dead0e40c4f56af840a)) * **subplebbit feed:** feed footer would show "loading..." incorrectly ([12df367](https://github.com/plebbit/seedit/commit/12df367ab93cc5dd99ef62c5c447b2c6a8f85bf6)) * **subplebbit settings:** clicking error wouldn't copy full error ([a526c0c](https://github.com/plebbit/seedit/commit/a526c0cc2f296290ab549fc0047e0b71f42b7d78)) * **subplebbit settings:** Improve offline handling ([ea9b12c](https://github.com/plebbit/seedit/commit/ea9b12cecac095673253bb6763acea3157635e90)) * **subplebbit:** sub with no posts could appear offline ([9be49c0](https://github.com/plebbit/seedit/commit/9be49c0a92edf206a34b4f009a921cba16201c99)) * **thumbnails:** some video duration overlays didn't render properly on safari and firefox ([b40eb9e](https://github.com/plebbit/seedit/commit/b40eb9e76552cbdab209c1e7c0ea3766b216b416)) ### Features * add domain-based libp2p client configuration ([6e6faa2](https://github.com/plebbit/seedit/commit/6e6faa23fdc082491290fd00709aaaf8305994fd)) * add info tooltips ([d21b5dd](https://github.com/plebbit/seedit/commit/d21b5ddb5b68bce9612b01f49c059e8f8c6b0a23)) * **moderation:** implement comment purging ([8f97434](https://github.com/plebbit/seedit/commit/8f974349e6e4ae61866c1bdb86200714f88f52bb)) * **subplebbit settings:** add json editor ([0f4058e](https://github.com/plebbit/seedit/commit/0f4058ea13b45aa8a5414627c8dd80cf63bc422d)) * **subplebbit settings:** enable editing via pubsub ([8e1ec8a](https://github.com/plebbit/seedit/commit/8e1ec8ac3d9bcb260ed1405cfbfc6b8e5f773d4d)) ### Performance Improvements * **feed:** replace individual window resize listeners with shared store ([843d796](https://github.com/plebbit/seedit/commit/843d7967cd97225128402d8449b466a3e2729472)) * optimize home feed rendering performance ([9842779](https://github.com/plebbit/seedit/commit/9842779de65d27d300445107c26bdb478c0a7663)) * replace direct store access with cached hooks ([6515e8c](https://github.com/plebbit/seedit/commit/6515e8c9bb28ed5086df67e89f0343f7ff75c9fb)) * **topbar:** memoize to prevent unnecessary rerenders ([afb1231](https://github.com/plebbit/seedit/commit/afb12315d1ee2c15d0a9df6b6cca48bca5a7ce2f)) ## [0.5.6](https://github.com/plebbit/seedit/compare/v0.5.5...v0.5.6) (2025-06-18) ### Bug Fixes * add missing text encoding dependencies for Electron build ([7f13a10](https://github.com/plebbit/seedit/commit/7f13a10f11acfd0453b5425d5c2a5332e4284e60)) * **inbox:** "full comments" button would count 0 posts incorrectly ([27233d0](https://github.com/plebbit/seedit/commit/27233d0e9a45b60ebb03c59ae287f52828ee8b5a)) ### Features * **account settings:** add granular export options for account backup ([633f0e6](https://github.com/plebbit/seedit/commit/633f0e66bb8c199224e26032e966b9050ae34c04)) * **account settings:** auto-adjust plebbit options on account import ([489a296](https://github.com/plebbit/seedit/commit/489a296179fe603b5903d99c28b093918b164e87)) ## [0.5.5](https://github.com/plebbit/seedit/compare/v0.5.4...v0.5.5) (2025-06-13) ### Bug Fixes * **electron:** add missing file uploader IPC channels ([63bb2ad](https://github.com/plebbit/seedit/commit/63bb2adc82959555c4dfd016dec6d155c1049155)) * **settings:** account data editor could fail to load for some users ([c413989](https://github.com/plebbit/seedit/commit/c41398935bf73f2057fd2b84b7f544b7cb317ba6)) * **vite.config.js:** increase PWA cache limit ([29b4d8c](https://github.com/plebbit/seedit/commit/29b4d8cd4c34d5c73df514b904f9382bb9bfcd6e)) ### Features * upgrade electron, add CSP to fix security warning ([77f6041](https://github.com/plebbit/seedit/commit/77f6041f04a75115aed4df3807e3a5cba6efb6ea)) ## [0.5.4](https://github.com/plebbit/seedit/compare/v0.5.3...v0.5.4) (2025-06-09) ### Bug Fixes * **account data editor:** immutable fields were included in the editor ([075f5cc](https://github.com/plebbit/seedit/commit/075f5cc80a1dc4f6aa85d8a6e3cadaed244d72ce)) * **account settings:** changing account didn't change fields in UI ([af48dcc](https://github.com/plebbit/seedit/commit/af48dccc02a825b6e6a5257baaba6b0ac4fcaf76)) * **post content:** trailing punctuation could prevent internal plebbit links from getting parsed ([fdf7bf6](https://github.com/plebbit/seedit/commit/fdf7bf60a70092e8493d777bf79f100e61bb3323)) * **post page:** deleted replies with no children would be rendered needlessly ([333cb38](https://github.com/plebbit/seedit/commit/333cb38b3efe5e3a76180fe0076f9c498a1d006c)) * **wallet settings:** removing a wallet didn't work ([7554d9d](https://github.com/plebbit/seedit/commit/7554d9dbdecf65251e1e888e5145626f41cf2cbe)) ### Features * **feed:** yearly feed suggestions and optimized loading for suggestions past 25 loaded posts ([a8155f1](https://github.com/plebbit/seedit/commit/a8155f1d931f1174dc405283c9f13ca6c4704178)) * **wallet settings:** add timestamp field ([f4cf9d3](https://github.com/plebbit/seedit/commit/f4cf9d38979d97610b1021471b1d6bcb368ede2c)) ## [0.5.3](https://github.com/plebbit/seedit/compare/v0.5.2...v0.5.3) (2025-06-01) ### Bug Fixes * **android:** resolve fullscreen overlay preventing user interaction ([4e69723](https://github.com/plebbit/seedit/commit/4e69723129dcf1a505b5b0cf65624e9c6629186b)) * **post page:** component would retain scrolling position incorrectly when navigating within itself ([415a56c](https://github.com/plebbit/seedit/commit/415a56c32dd32624ccbb50a710c32c50c5aa90e2)) * **post:** title could display some markdown syntax ([3eaf3c5](https://github.com/plebbit/seedit/commit/3eaf3c5eaf49ae46bb68a97015ccb5edcfba8189)) ### Features * **android:** add new seedit icon ([2a3c3a3](https://github.com/plebbit/seedit/commit/2a3c3a355b7b9a5c72e98fb7d5eda13f96ecf126)) ## [0.5.2](https://github.com/plebbit/seedit/compare/v0.5.1...v0.5.2) (2025-05-31) ### Bug Fixes * **author page:** posts were incorrectly ranked ([ca48aef](https://github.com/plebbit/seedit/commit/ca48aef8e041a5169ed3e66ae4b23d7dbbfd5f0e)) * **electron:** "share" button couldn't copy link to clipboard ([5dddd9e](https://github.com/plebbit/seedit/commit/5dddd9ee460686cf5d554759193383a0d31a9171)) * **post:** share links could be broken for posts that failed to publish ([b35edac](https://github.com/plebbit/seedit/commit/b35edac0d433eb5bd4c79565e0803cb8d4b1c740)) * push notifications didn't work properly ([5ee8fdb](https://github.com/plebbit/seedit/commit/5ee8fdbccc8ce53760b8e4bb06dee24644ba606c)) * **thumbnail:** gifs were stuck on playing endlessly on chromium-based browsers ([d0bc190](https://github.com/plebbit/seedit/commit/d0bc190bfdbc20b86d16de8561bba43d06c46f50)) ### Features * **communities page:** filter by nsfw communities by clicking the "18+" label, filter in each ([5e3bf59](https://github.com/plebbit/seedit/commit/5e3bf59387024a3f902735ca563d0abd4a012e75)) * **nsfw filter:** ask user whether to auto-subscribe to nsfw subs when disabling filter ([1808275](https://github.com/plebbit/seedit/commit/1808275d8acc467bf1939f51930df04e1f04448e)) * **post:** replace seedit links typed in post content with internal links so the user doesn't have to leave the app ([c37dc52](https://github.com/plebbit/seedit/commit/c37dc52cecf051231278e94db8d2d14e17b1b62d)) * update app icon, favicon ([c8dd7ec](https://github.com/plebbit/seedit/commit/c8dd7ec7005b3e974c88f2d1329113972b3b9e14)) ### Performance Improvements * **build:** optimize bundle chunking and PWA caching ([1094545](https://github.com/plebbit/seedit/commit/1094545e0d66f5e1d535374764b89cf9591a9fef)) ## [0.5.1](https://github.com/plebbit/seedit/compare/v0.5.0...v0.5.1) (2025-05-21) ### Bug Fixes * **account settings:** private key was visible in UI ([73fd0a5](https://github.com/plebbit/seedit/commit/73fd0a5329402178119c8af8259759b4f3ea710e)) * auto-subscribe logic could fail to run on certain views ([72136bb](https://github.com/plebbit/seedit/commit/72136bbf131a72e770dcdbfcdd32454b5e0d1ae6)) * **dark mode:** inputs and buttons didn't use the browser dark mode theme ([8acb9db](https://github.com/plebbit/seedit/commit/8acb9dbc27016c58cf3adfc07e19ac7015178c20)) * **electron:** add CJS wrapper for after-all-artifact-build hook ([4ac3c02](https://github.com/plebbit/seedit/commit/4ac3c02dff00a52274f9aeef2630d269919f9279)) * **electron:** client would assume the user is connected to full node ([2bc92cc](https://github.com/plebbit/seedit/commit/2bc92cc6f03bfeec08c0eb4b7e0c391c5c9dd312)) * **electron:** resolve preload script module errors and ensure proper bundling ([9a3481c](https://github.com/plebbit/seedit/commit/9a3481cbdb23ae42f1c64a706510373e00616fb0)) * **feed:** thumbnails could get stuck when navigating ([35f0456](https://github.com/plebbit/seedit/commit/35f04569f26bdc97e8450ab01003c8103a847128)) * **markdown:** blockquotes could appear behind thumbnail ([699e675](https://github.com/plebbit/seedit/commit/699e6751c9d30f0d914667043ac3d12902291dfe)) * **markdown:** code blocks had wrong spacing ([15e68b1](https://github.com/plebbit/seedit/commit/15e68b133515ce6c3d050ee768eb5113fd9a3892)) * **markdown:** empty lines (using special md syntax) didn't render with same spacing as normal breaks ([51e225e](https://github.com/plebbit/seedit/commit/51e225e967e4d36420309e613d45e7b5a0ee5019)) * **package.json:** downgrade bonfida/spl-name-service, it prevented the electron apps from opening ([7df0760](https://github.com/plebbit/seedit/commit/7df0760bd57576f0dacb349991e9fd03322539e8)) * **post:** some content could overflow ([195391b](https://github.com/plebbit/seedit/commit/195391b26a8f0d66b578e60fa6a5c97236de95d3)) * **replies:** floated image thumbnails weren't clickable when wrapped by markdown content ([ffdceb2](https://github.com/plebbit/seedit/commit/ffdceb24f969b30114a02ef59d414900f211f142)) * **replies:** thumbnail icons would disappear when clicked ([9cdf5bf](https://github.com/plebbit/seedit/commit/9cdf5bfbd4a46d96999cb22c1567a8b176d75b51)) * **search bar:** dropdown item wasn't clickable on mobile, search bar wouldn't unfocus after searching ([0dd5a55](https://github.com/plebbit/seedit/commit/0dd5a559225db0a4d85485cbfc4deb8ea3d069bb)) * **settings:** crypto wallets hashlink was missing ([d7845bd](https://github.com/plebbit/seedit/commit/d7845bd001d4b4b16f665046b28dff10c681badc)) * **settings:** spellcheck was enabled on certain fields, fix wrong placeholder ([fda2449](https://github.com/plebbit/seedit/commit/fda24499cbd38da97a4905dfbca831d021b1db32)) * **submit page:** preview of embeds had wrong width ([8082e6a](https://github.com/plebbit/seedit/commit/8082e6a4669980f3f6799ec7c36f6a5fb5fb32db)) * **subplebbit settings:** navigating away from view could reset fields ([4948bcb](https://github.com/plebbit/seedit/commit/4948bcbbfdb3d7bf7b6a1449470c8902ed5a3dd8)) * **subplebbit settings:** not owner alert could display for owners, missing state string, missing subplebbit error display ([a9e7d3b](https://github.com/plebbit/seedit/commit/a9e7d3bd35f37b5118b9d4452c6ef613424529b7)) * **subplebbit:** could temporarily show "no posts" in subplebbit with 1 post just published by user ([d3b68bb](https://github.com/plebbit/seedit/commit/d3b68bbd26a5252901f43574c98ce66bb3bb866e)) * **subplebbits list:** "my communities" list was numbered incorrectly ([961204a](https://github.com/plebbit/seedit/commit/961204a5133bc9f059f1242470e4e31e51d5501e)) * **subscriptions list:** message was missing when no subs are found ([9219029](https://github.com/plebbit/seedit/commit/9219029ac2460a2ac33925f38d99d395de609ce7)) * **subscriptions:** don't immediately remove sub from subscriptions page to let the user re-subscribe ([16b800e](https://github.com/plebbit/seedit/commit/16b800e9018a8bd9d9f7e31516ff330a04119a62)) * **useFeed:** update filter option structure per API change ([020af7a](https://github.com/plebbit/seedit/commit/020af7abe7fd021622135f7033bdac09243126a8)) ### Features * add better errors with button to display full error stack ([1856d99](https://github.com/plebbit/seedit/commit/1856d99a2136dcd2181874cbbcbffe8dcd2b34c1)) * add push notifications to web browser, android app, desktop app ([f08a10a](https://github.com/plebbit/seedit/commit/f08a10a2b347d30076f310edd42ff3bf70fdbd75)) * clicking error copies full error object to the clipboard ([63a5911](https://github.com/plebbit/seedit/commit/63a59115d061c476ee4a2b4c942ba7fcb01ee435)) * **create subplebbit:** automatically set user's own address as owner ([7beb47e](https://github.com/plebbit/seedit/commit/7beb47e09486d2f27feb6c5081a03da28b2e32ea)) * **markdown:** add headers ([8a86655](https://github.com/plebbit/seedit/commit/8a86655324872ae2479c504b2a1f0380811140e8)) * **post page:** add error message from post in reply section ([bc8fb76](https://github.com/plebbit/seedit/commit/bc8fb76f7412e597b61e9c461d54f17db9f6d85f)) * **search bar:** add autocomplete dropdown ([b62f699](https://github.com/plebbit/seedit/commit/b62f699d198d8a7df7937ab1fc62b28dabb3394f)) * **search bar:** add default communities to autocomplete dropdown ([e8251ff](https://github.com/plebbit/seedit/commit/e8251ffd04928130a8b9d63c8c8bfef04c639363)) * **settings:** add account data code editor page ([29c1470](https://github.com/plebbit/seedit/commit/29c147040781edcf875be61a0c27f7dd17f28ac0)) * **settings:** add custom options for thumbnails, media previews, video player ([9742578](https://github.com/plebbit/seedit/commit/974257841b44f6fe4489c08f28dcb03c4cb7e16f)) # [0.4.0](https://github.com/plebbit/seedit/compare/v0.3.0...v0.4.0) (2025-04-16) ### Bug Fixes * **account bar:** selecting account would not close dropdown ([87e5a03](https://github.com/plebbit/seedit/commit/87e5a030c417c50bfa67728b5e02ab8b7e7b1a4b)) * button image didn't appear instantly when moving the mouse over button ([137f470](https://github.com/plebbit/seedit/commit/137f470b5b23a5b46695c2762c5e64223e0e7877)) * **challenge modal:** user could submit empty answer ([5d0f4f9](https://github.com/plebbit/seedit/commit/5d0f4f958ce217fc8a9cb36782714a33024f1187)) * **electron:** bundle main process to resolve ESM issues in Linux AppImage ([ec989f5](https://github.com/plebbit/seedit/commit/ec989f5e9c040aa8144fced78342138ec56f1c94)) * **electron:** bundle main process to resolve ESM issues in Linux AppImage ([7e7a039](https://github.com/plebbit/seedit/commit/7e7a039f1ea008dcdcd4561fc17c72246b3f3e09)) * **electron:** migrate Electron files to CommonJS for cross-platform compatibility ([6444fb5](https://github.com/plebbit/seedit/commit/6444fb5b063db02cfb9308949ae2cf2b18ccd2df)) * **electron:** replace electron-is-dev with app.isPackaged ([8f7d8e3](https://github.com/plebbit/seedit/commit/8f7d8e32c6905a72a8d772359a5b4b6d50e37b1a)) * **embed:** on tablets, media could appear too small in width ([b1c3b62](https://github.com/plebbit/seedit/commit/b1c3b6232a6ddd095708d6ad668ba84469db8cf9)) * **feed:** newly published post wouldn't appear instantly in feed ([5303825](https://github.com/plebbit/seedit/commit/53038254f5b203f8d31ec0720b9512960ecff5d7)) * **feed:** selecting "controversial" sort would 404 ([456e8b4](https://github.com/plebbit/seedit/commit/456e8b466e9d0b588da92e843f4496975701fb88)) * fix electron ([82022fa](https://github.com/plebbit/seedit/commit/82022fa13c6831b7a2e9f0ddc02ce3ace3aa6fbd)) * **header:** clicking header avatar should always redirect to homepage ([593fd89](https://github.com/plebbit/seedit/commit/593fd8981801adfae8caebe0e046aca7b55c4302)) * **header:** fix mobile submit link ([7b02354](https://github.com/plebbit/seedit/commit/7b023540151b7f62fcd75700888d1d6796cdf23e)) * **header:** preload seedit logo text, so it switches to dark version immediately when changing theme ([5a87391](https://github.com/plebbit/seedit/commit/5a873915b37857f70f1f55d457adc9385fd6a2e6)) * **header:** some titles and links were bugged ([22e676e](https://github.com/plebbit/seedit/commit/22e676e539178f73510c0a2dfa35e8ba8127a47e)) * **header:** subplebbit address could fail to appear as title while subplebbits loads ([88da3f5](https://github.com/plebbit/seedit/commit/88da3f594bd1786d4d49cd4ec7fb05694894e081)) * **home:** no subscriptions message wasn't showing, after removing all subscriptions ([4e8db71](https://github.com/plebbit/seedit/commit/4e8db715418bced0cebabc0b5fad3242d6868f73)) * **inbox:** "show parent" button didn't work ([fa438fd](https://github.com/plebbit/seedit/commit/fa438fd9487b31414d1c236aa16a807878d48738)) * **media:** expanded media could appear behind sidebar, on tablet screen size ([afcacc7](https://github.com/plebbit/seedit/commit/afcacc7ef49faf2c3493f58f18730c82271490e0)) * **package.json:** downgrade typescript to fix linter warning ([d812d9c](https://github.com/plebbit/seedit/commit/d812d9c9de1c9953f93e8a63cf99906bb3926b6e)) * **pending post:** join button wasn't rendering in sidebar ([909186f](https://github.com/plebbit/seedit/commit/909186f10fe33d4f9559825863c32ecb4467acd5)) * **post:** context and permalink views wouldn't load comments properly ([f5172b0](https://github.com/plebbit/seedit/commit/f5172b04dda5d8899c4bf0fd245972e1582d2893)) * **post:** post context view should automatically scroll to post ([39c6f50](https://github.com/plebbit/seedit/commit/39c6f50bdcc407907e82e6f5112d0e754a4d6708)) * **post:** post without content nor link could have redundant padding from empty expando ([797f6ff](https://github.com/plebbit/seedit/commit/797f6ff70892531246f73e011c6ed204adedcaae)) * **profile page:** comments could appear after failing to load ([70ea094](https://github.com/plebbit/seedit/commit/70ea09411ccf63e95d51244b505f099ac495f2e2)) * **profile page:** links to user profiles from comments view were broken ([645638b](https://github.com/plebbit/seedit/commit/645638b10fad19adabcfe19c4851d77dce9ba401)) * **routing:** applying invalid sort types or time filter names should redirect to not found page ([f642aa6](https://github.com/plebbit/seedit/commit/f642aa659b819879d61b1b09398504a5b9c6b815)) * **submit page:** don't render subplebbit address dropdown if no matches are found ([b2f71a6](https://github.com/plebbit/seedit/commit/b2f71a69f036dc113d81f70a7949b7c1496d82d8)) * **submit page:** fields would unnecessarily reset when navigating away from page ([03383d7](https://github.com/plebbit/seedit/commit/03383d7231d471e6e035fb4d2a6629736c38a0c4)) * **thumbnail:** show link icon if media 404'd ([972b819](https://github.com/plebbit/seedit/commit/972b819f56b194013b23909b3253afaeade11773)) * **topbar:** position "more" link at rightmost end of the topbar ([f164ae1](https://github.com/plebbit/seedit/commit/f164ae1a692eb365937d699c2db2ebde943b421e)) ### Features * add domain view ([83a02f3](https://github.com/plebbit/seedit/commit/83a02f3471c0a7bdedd4001a1a0086b2f7fbe5a6)) * add filters dropdown from topbar, for easy access on mobile ([787bb6b](https://github.com/plebbit/seedit/commit/787bb6b982459f025e01336a1286e18f4e79e4da)) * **comment edit:** if the user manually types "edit: " at the end of an edit, parse it as comment.edit.reason ([10b4ea8](https://github.com/plebbit/seedit/commit/10b4ea84eb09ca1e5896db2ba082269ecc2c5d72)) * **embeds:** add PDF support for direct links and pdf file upload ([ee37b49](https://github.com/plebbit/seedit/commit/ee37b49d886c7d5bb08e5539268b7acf03bf8c34)) * **markdown:** add code blocks ([7921ca5](https://github.com/plebbit/seedit/commit/7921ca523ede481e708413c460cd1cee1af4db2a)) * **markdown:** add spoiler text ([ef1dd0f](https://github.com/plebbit/seedit/commit/ef1dd0f9910bb1001a32d89ff647aa4b6b166955)) * **profile:** add post karma count to account bar, start post count with 1 like on reddit ([8f48a92](https://github.com/plebbit/seedit/commit/8f48a925cd123999f9e5b36a0bb53a0303d6d29e)) * **search bar:** add function to search for posts in the feed ([d0bf172](https://github.com/plebbit/seedit/commit/d0bf1721f8eb7d84d0539f2459c11765bda3e395)) * **search bar:** search posts in current feed by query, highlight post titles matching result ([d4fc8bb](https://github.com/plebbit/seedit/commit/d4fc8bb822c7e889c70f032fab1a22f78d97c8fb)) * **settings:** add "content options" page, add option to hide all default subs from topbar ([32a643e](https://github.com/plebbit/seedit/commit/32a643e21ce63f1d294c82b832c11b7d5bae1a29)) * **submit forms:** add "preview" button to let the user quickly check how the markdown will render ([bf118e7](https://github.com/plebbit/seedit/commit/bf118e7ac8cffcda89d2ae72ac15f40b274a8d72)) * **submit page:** add formatting help ([c5b952f](https://github.com/plebbit/seedit/commit/c5b952ff37a6b3a1790fc7639eef440af760a907)) * **submit page:** add media file upload ([dc43aeb](https://github.com/plebbit/seedit/commit/dc43aeb9932dd98cd21ee8499db38ae8526fd975)) * **subplebbit settings:** add formatting help ([a4333aa](https://github.com/plebbit/seedit/commit/a4333aa1c39d8a4123fab5c5134d91d4396691ef)) * **time filter:** remember time filter selection during session ([1b4b5cf](https://github.com/plebbit/seedit/commit/1b4b5cf213df73e0217ec7c7f28dc9b226a1c21e)) * **topbar:** show subscriptions before other addresses ([f59c58a](https://github.com/plebbit/seedit/commit/f59c58af337a3e2f7ccc6631b023790d53bce947)) ### Performance Improvements * **expando:** lazy load Embed component for iframe embeds ([8c854f4](https://github.com/plebbit/seedit/commit/8c854f4a02a89564932ecc248ba50d8a46efa571)) # [0.3.0](https://github.com/plebbit/seedit/compare/v0.2.5...v0.3.0) (2025-03-17) ### Bug Fixes * **account bar:** new account could display u/undefined for a split second ([2904187](https://github.com/plebbit/seedit/commit/2904187c75e63b7b8a5c2a0bfe8d23ce3d664113)) * **account settings:** creating new account didn't automatically switch to it ([e2c5e38](https://github.com/plebbit/seedit/commit/e2c5e389f4357645978dacaf0c7f975af043d67d)) * **account settings:** importing an account file would not automatically select the imported account ([dd2d15c](https://github.com/plebbit/seedit/commit/dd2d15c440a478be3068780c9a10c182dcff6b0d)) * **author page:** page could look empty without "no posts" notice ([12fabd0](https://github.com/plebbit/seedit/commit/12fabd08d71169882b23b2cce5df936e08e8f7cf)) * **avatar settings:** timestamp default value was missing ([27f54a0](https://github.com/plebbit/seedit/commit/27f54a049bba670cfdbeeb434d9aab851d113c8a)) * **challenge modal:** user could submit empty answer ([f952044](https://github.com/plebbit/seedit/commit/f9520447e094151ac9082c0f71b18c44f199fb8f)) * **challenge settings:** changing exclude options would add invalid types causing saving error ([3f26a04](https://github.com/plebbit/seedit/commit/3f26a04ed44f9044f34c265d1a58055883fea12d)) * **feed:** invalid sortType should navigate to "not found" page ([ef84811](https://github.com/plebbit/seedit/commit/ef84811e5963fab93a54082655f07d34dc9dcd9c)) * **home:** feed could show no subscriptions alert for a split second ([9c2ec09](https://github.com/plebbit/seedit/commit/9c2ec095950d206245709cd3ccd556b3b74161d8)) * **label:** remove left padding for first visible label in array ([336fc67](https://github.com/plebbit/seedit/commit/336fc6726da0fdf9efd64965a7b14d6dfbeffda3)) * **label:** spacing was off ([763d744](https://github.com/plebbit/seedit/commit/763d7446656b0feeb1e40812d93ddfd20968c943)) * **mobile:** dropdown items should have enough padding on mobile to make it easy for the user to tap on them ([6ebdeb7](https://github.com/plebbit/seedit/commit/6ebdeb78d59a75b49146214a5a99672b19ed61eb)) * **moderation:** mod reason couldn't be removed ([c5fb295](https://github.com/plebbit/seedit/commit/c5fb2956592c8627da27139ec6a55a7db457888d)) * **offline indicator:** sub could be marked as offline even if online, consider it offline if it doesn't update for 2 hours instead of 1 hour ([a8fb2e6](https://github.com/plebbit/seedit/commit/a8fb2e6bda6d1de24f9d34613d848b5b85be2659)) * **pending post:** invalid pending post index would break the view, redirect to not found instead ([3a9d89b](https://github.com/plebbit/seedit/commit/3a9d89b2df704446a7ea4463faf8040a73ae467f)) * **pending post:** page could redirect to "not found" if pending post failed ([12daa03](https://github.com/plebbit/seedit/commit/12daa0314603d9c7b83b413c1f54f7c67482714c)) * **pending post:** pending post would appear in profile page instead of post page ([14e0fb8](https://github.com/plebbit/seedit/commit/14e0fb80251e5dc11f1ccc4fbcaa140c00de0dc0)) * **post page:** "there doesn't seem to be anything here" could appear while replies were still loading ([809d651](https://github.com/plebbit/seedit/commit/809d6515a21ef2a96234de36b513f14a04cb200b)) * **post:** post content wouldn't be expanded by default in pending post page ([f84a6ce](https://github.com/plebbit/seedit/commit/f84a6cea8dc1aba93e89270cf8e92f0720c2f9d7)) * **post:** post rank number could appear in profile page ([d0a4316](https://github.com/plebbit/seedit/commit/d0a4316e0ca649ef9b29142f84283e5d7283f73e)) * **post:** undistinguish mod post by default, unless stickied ([b858f17](https://github.com/plebbit/seedit/commit/b858f17aaadbc9eab799749343af906cebc11f4b)) * **replies:** replies published by account could appear at the bottom of the reply section by default ([d0765c3](https://github.com/plebbit/seedit/commit/d0765c3b4e4e518aac10c7fb41de44ab29fa9d53)) * **search bar:** use gpu acceleration for popup animation ([5b75d44](https://github.com/plebbit/seedit/commit/5b75d4478fed693eba67b5aed6e824c6a1f56efb)) * **settings:** saving plebbit options could return api schema error ([e7ec01b](https://github.com/plebbit/seedit/commit/e7ec01baad304d355cc56b4cb656365f1d332cb7)) * **sidebar:** blocking or unblocking sub wouldn't reset feed ([67d2ca8](https://github.com/plebbit/seedit/commit/67d2ca86a7bbfcd10aa7ed0921f4fb4cfbf41629)) * **sidebar:** subplebbit title and description could render as empty strings ([eb560db](https://github.com/plebbit/seedit/commit/eb560db870249a7bd7107241113138b72f2d9428)) * **subplebbit settings:** error wouldn't show after attempting to save changes incorrectly ([2e2d8ca](https://github.com/plebbit/seedit/commit/2e2d8ca351280389ab152cc709555baefa3420e7)) * **subplebbit settings:** excluding more than one user address from challenges didn't work ([30da6c7](https://github.com/plebbit/seedit/commit/30da6c770d95773a66047b5769896afc426f1287)) * **subplebbit settings:** removing exiting logo couldn't work because of API schema error ([4c1ad1d](https://github.com/plebbit/seedit/commit/4c1ad1d022d300e5a18bdb18978b3ed676d39381)) * **subplebbit settings:** reset previous error when saving ([550ddb1](https://github.com/plebbit/seedit/commit/550ddb18854f87b79af10c2fe95442d4db3667b3)) * **subplebbit settings:** reset previous error when saving ([f6241c5](https://github.com/plebbit/seedit/commit/f6241c5ddad556435cc77458c2587a563ccac5cd)) * **subplebbit sidebar:** moderators list could be empty ([0b83991](https://github.com/plebbit/seedit/commit/0b8399153870b861e7bf0de5a775259e67166ea8)) * **subplebbits list:** remove categories, subplebbits should be sorted by rank (via future pubsub voting) ([533b6ec](https://github.com/plebbit/seedit/commit/533b6ec30b1353a2bd8562ee2a68389af133a787)) * **user page:** account age was imprecise ([92b19c4](https://github.com/plebbit/seedit/commit/92b19c472f4202a28c44cc050bd5e0943ac0bb03)) ### Features * auto subscribe new accounts to specific default subplebbits ([fa24e73](https://github.com/plebbit/seedit/commit/fa24e73c6cfd65ff8b1e1da6284d8ffd9935bc8b)) * auto-subscribe to newly created communities ([c077685](https://github.com/plebbit/seedit/commit/c0776854f9bcdef01f24161905c7e95cf95b1017)) * **challenge modal:** close with escape key ([66a766b](https://github.com/plebbit/seedit/commit/66a766bbbbf90e62e279829fe953ff69346c310d)) * **embed:** add support for soundcloud albums ([fb18e3d](https://github.com/plebbit/seedit/commit/fb18e3d95446d5bd4fcca544bec78ed6281ad78d)) * **embed:** add support to youtube shorts, invidious instances ([02d061d](https://github.com/plebbit/seedit/commit/02d061da17b25e292f851aaa0720a85561c68a55)) * **footer:** display "loading feed" and then "looking for more posts" because it's more user-friendly, moving the mouse over displays the backend state ([c471317](https://github.com/plebbit/seedit/commit/c47131788d9dfdea48b18dd508c05de23a131e18)) * **home:** only include posts from subplebbits the user is subscribed to ([824f05c](https://github.com/plebbit/seedit/commit/824f05c140975294f825b946bba7febcde4c597a)) * **home:** show message linking to p/all when user has 0 subscriptions ([afa1e3f](https://github.com/plebbit/seedit/commit/afa1e3ffae1334902df07e3d6295d67bc23efc80)) * **post edit:** mark comment as "nsfw" ([c3691e8](https://github.com/plebbit/seedit/commit/c3691e8c5f168af75469edf1888ca587d8d3a74d)) * **post page:** show "are you over 18?" warning if post is from sub tagged as nsfw ([a2d3e22](https://github.com/plebbit/seedit/commit/a2d3e22372631b72a5f170917c671c7a2ba5a7d8)) * **post:** add video duration in thumbnail ([ab9ca95](https://github.com/plebbit/seedit/commit/ab9ca95faaa923f51f7e5cc37f06713f72700293)) * **replies:** add sorting by new, old or top ([97c990e](https://github.com/plebbit/seedit/commit/97c990ef1719f16b5b44f8f810dfef704dfab33b)) * **replies:** implement "best" sorting algo from reddit, instead of simply "top" (by score), ensure stickied comments always appear at the top ([31058ca](https://github.com/plebbit/seedit/commit/31058cabb96cd32790910663612976e7dd7aabb3)) * **replies:** sort account replies by new for 30 mins after page visit ([6117b82](https://github.com/plebbit/seedit/commit/6117b82432dab05c123810568dfcfe9f6205c3ea)) * **sidebar:** display moderator/owner/admin status of account, if any ([2a9eb26](https://github.com/plebbit/seedit/commit/2a9eb260a31ce335ea30b7919246d0c6c618426f)) * **subplebbit settings:** let user change default challenge when creating a sub ([76fe6a9](https://github.com/plebbit/seedit/commit/76fe6a9f0be881fdba397e40e32a6c82355726bd)) * **subplebbit sidebar:** add link to read-only subplebbit settings ([2a34ec6](https://github.com/plebbit/seedit/commit/2a34ec62639eb0abbedcdcf0069eae055c6c3c0d)) * **subplebbits list:** add infobar for filtering by tag, undo, prevent filtering by invalid tag ([9051bfa](https://github.com/plebbit/seedit/commit/9051bfa4373e485f10f701d2823908d723284801)) * **subplebbits list:** add nsfw label to nsfw-tagged subs ([f18dad4](https://github.com/plebbit/seedit/commit/f18dad4736db53770c1a0fb696efcb89010a19ba)) * **subplebbit:** show unblock button in feed for sub that was blocked by user ([3b7739f](https://github.com/plebbit/seedit/commit/3b7739f0ce2624e37ba438b27e118a53022a5b39)) ### Performance Improvements * **feed:** debounce state string to prevent unnecessary rerenders ([9b86e34](https://github.com/plebbit/seedit/commit/9b86e349fa6c6173329f266713f4ed69f450977d)) * **home feed:** reduce footer rerenders ([c510345](https://github.com/plebbit/seedit/commit/c510345ca35bae15908373bed2677537409a52b0)) * remove unnecessary API fetching ([cd09fe0](https://github.com/plebbit/seedit/commit/cd09fe0cc3aa70e471fa92650d6bc8c359b41038)) * **topbar:** optimize scroll up/down animation with GPU acceleration ([fbd46cb](https://github.com/plebbit/seedit/commit/fbd46cb6abdecc59d31d7ed0e7b7782f65cd0679)) ### Reverts * Revert "add http domain to let users test an insecure plebbit rpc" ([afdc02a](https://github.com/plebbit/seedit/commit/afdc02ac96818832b481dfa62a95248c67ecc574)) ## [0.2.5](https://github.com/plebbit/seedit/compare/v0.2.4...v0.2.5) (2024-12-19) ### Bug Fixes * **feed post:** gif thumbnail could break persistently ([2e86b3f](https://github.com/plebbit/seedit/commit/2e86b3f2afe6d94a093f4e14320ae95f1bb50332)) * **header:** special page title goes on top of header tabs, unlike a community's title ([61e7c1d](https://github.com/plebbit/seedit/commit/61e7c1d92c4d8925253513d34275bfc5d1188f57)) * **post:** format score with abbreviation ([6ce7fa9](https://github.com/plebbit/seedit/commit/6ce7fa9c365189fd4c47c98a0af033052e68f4a7)) * **post:** subscribe button wrapped incorrectly ([9d20cc8](https://github.com/plebbit/seedit/commit/9d20cc81d0f0a346ad2976f521fe008467c7e99e)) * **profile:** keep showing the welcome info bar for the first few visits ([d313a68](https://github.com/plebbit/seedit/commit/d313a68003d78a03be5e1bd66dd370341e0b51ff)) * **settings:** "check for update" button didn't include apk case, now it can download the latest apk ([8399174](https://github.com/plebbit/seedit/commit/8399174914ce5dcf8d5cb60868efbb21cac7d58b)) * **spoiler:** spoiler could appear bugged for posts with no content nor link, black background was too large ([6ac1777](https://github.com/plebbit/seedit/commit/6ac1777475d17327f31b6b6900e5f05a74b45490)) * **submit page:** could return error 'publishCommentOptions.content is an empty string' ([589f4bf](https://github.com/plebbit/seedit/commit/589f4bf073a2e088f6d15a0c336fdc8ca9e8d726)) ### Features * add blur for nsfw media or spoilers ([2829e50](https://github.com/plebbit/seedit/commit/2829e50d06155b37c2f762ec6030eb31dcca2bf2)) * add p/mod feed for communities the user is moderating ([6ec4f57](https://github.com/plebbit/seedit/commit/6ec4f57894928e7ddabe3d27bad1a4279dd3b3dd)) * **feed:** add numbered row to count posts ([84b1013](https://github.com/plebbit/seedit/commit/84b1013c894dff2a8d26bed8fb0f3b1d4d69df5b)) * **post:** add nsfw label and thumbnail ([a1b64f4](https://github.com/plebbit/seedit/commit/a1b64f4296955c6bde4157e1cf5426eebd1c073d)) * **post:** add spoiler thumbnail ([851e0e8](https://github.com/plebbit/seedit/commit/851e0e8039e82312377a00ebd35186b49d862b55)) * **post:** align all posts by fixed thumbnail width and using thumbnail icons for links without media or text-only posts ([72d77fa](https://github.com/plebbit/seedit/commit/72d77fa365efd7fc9be0e74feb9c0f2144e7f37a)) * **reply:** add colored "submitter" "[S]" next to user name if reply author is also the post author ([59f1f1b](https://github.com/plebbit/seedit/commit/59f1f1b572fb1f53d70458800c8497fd4bbc9f09)) * **settings:** add nsfw filters and filtering community by nsfw tag ([5a078e7](https://github.com/plebbit/seedit/commit/5a078e772de0fcd7e91f2f220771cbf1ece16e9b)) * **subplebbit:** show "are you over 18?" alert on communities tagged as nsfw ([76a6fc6](https://github.com/plebbit/seedit/commit/76a6fc69b5bc650222de7a68130c766de2eb8f37)) ### Performance Improvements * **index.html:** preload UI assets and CSS ([79423c3](https://github.com/plebbit/seedit/commit/79423c31d710c45f4cfcdfb0908fe1a16c1d4cbf)) * **media:** fix thumbnails getting stuck due to incorrect memoization ([9ff01c3](https://github.com/plebbit/seedit/commit/9ff01c33c6fa04c5d9c70e7c37aa5b035a8cd8bb)) ## [0.2.4](https://github.com/plebbit/seedit/compare/v0.2.3...v0.2.4) (2024-12-09) ### Bug Fixes * **electron:** auto restart script more reliable ([97221d6](https://github.com/plebbit/seedit/commit/97221d665d128b04eeb6a6847e1e94e29332f9f7)) * **electron:** ipfs proxy should have error status code ([c66d454](https://github.com/plebbit/seedit/commit/c66d45437356befee8296af4b361c253c486ce26)) * **subplebbit settings:** editing subplebbit challenge wouldn't work, fix loading state of settings, remove useless challenge setting when creating a sub, improve translations ([654b427](https://github.com/plebbit/seedit/commit/654b4277d8dfc91b8501eaffd3549c1580f72fa7)) ## [0.2.3](https://github.com/plebbit/seedit/compare/v0.2.2...v0.2.3) (2024-12-06) ### Bug Fixes * **avatar settings:** add timestamp field to let users add existing signature ([4263b44](https://github.com/plebbit/seedit/commit/4263b44458d42bf7e3748d314d48923f67bdea2d)) * **ellipsis animation:** dots could appear cut off and cause displacement changing width of string ([448673d](https://github.com/plebbit/seedit/commit/448673dd5b54f9ca1f08b4fab03a08a8cf698e0f)) * **feed:** posts could change position causing displacement ([ecf6a7b](https://github.com/plebbit/seedit/commit/ecf6a7b39da12442270d8de2fb4a27093fbb599c)) * **header:** seedit logo should show in subs without their own logo ([61c9f30](https://github.com/plebbit/seedit/commit/61c9f3061839d9112085001a4c7933d05a2b1961)) * **markdown:** links in post content would not open new tab ([4d30ad1](https://github.com/plebbit/seedit/commit/4d30ad14fbe906b011c2a66ac31654a76f0d1651)) * only show data path setting on electron ([8db2c15](https://github.com/plebbit/seedit/commit/8db2c15f4a33b1d603aea758c7c89e583361f33f)) * **plebbit options:** schema error prevented to save ([dc3dddf](https://github.com/plebbit/seedit/commit/dc3dddf410376874470c5e897189f67d280d1b44)) * **post page:** loading text could cause horizontal scroll on mobile ([580a598](https://github.com/plebbit/seedit/commit/580a5989df55c613e5a8f0c6cf2336ba230af298)) * **post:** editing comment content didn't work ([540d4c7](https://github.com/plebbit/seedit/commit/540d4c7f9b619255fb5e2b5ad97cca980e733089)) * **reply form:** only show offline info message if the user clicks on textarea ([221dab8](https://github.com/plebbit/seedit/commit/221dab8e83f75290e2073a0775350568649b9dd5)) * **reply:** pending edit label appeared cut off ([a02ed8f](https://github.com/plebbit/seedit/commit/a02ed8f1163ca311a6137c3001a7d2402184d2cc)) * **settings:** crypto address setting would show error for an already set address ([9f73a49](https://github.com/plebbit/seedit/commit/9f73a49822fe7c3808f241777913af45fba88f87)) * **sidebar:** moderator tools wouldn't appear in post page for sub owner who is not mod ([faf1718](https://github.com/plebbit/seedit/commit/faf171848eff5530f8cb11f22aa76e77bced2d50)) ### Features * **electron:** add http routers to electron ([69726e1](https://github.com/plebbit/seedit/commit/69726e1b97ca90f34c2d06ff1709bdb207a2e93d)) * **post:** updated design for deleted/removed replies to be more like old.reddit ([6beb8b3](https://github.com/plebbit/seedit/commit/6beb8b30a2616154a5d6f779c38efe473497780b)) * **settings:** add http routers setting to plebbit options ([cfe004c](https://github.com/plebbit/seedit/commit/cfe004cf07614f523fe5788d508bc23dc7218ef3)) * **settings:** add option to hide avatars from replies ([b8ebef0](https://github.com/plebbit/seedit/commit/b8ebef0c6e11055bafdf059c0bae20f80499fbf0)) ## [0.2.2](https://github.com/plebbit/seedit/compare/v0.2.1...v0.2.2) (2024-11-11) ### Bug Fixes * **post:** content would not appear if link is webpage ([a2516b5](https://github.com/plebbit/seedit/commit/a2516b59122c41cf333102aa97de2c882ac2ee9f)) * **post:** expand button didn't appear for text with webpage link ([80fcc58](https://github.com/plebbit/seedit/commit/80fcc5870dc14f61ada7054bd5b22ee8cebb8d73)) * **sidebar:** 0 score would show up as '•' ([5785e0b](https://github.com/plebbit/seedit/commit/5785e0bbe16006ef342bc936bbc353f49ee01018)) ### Features * **home:** improve design of "show more posts" button in feed footer ([e5fd224](https://github.com/plebbit/seedit/commit/e5fd22488f05e76d03aa5dbb04bd1b366680c8df)) ## [0.2.1](https://github.com/plebbit/seedit/compare/v0.2.0...v0.2.1) (2024-11-10) ### Bug Fixes * **moderation:** update to use new API schema ([5e1902f](https://github.com/plebbit/seedit/commit/5e1902fab3d5bf5c5fa27413e231f756025b51c2)) * **post:** expand button would appear for webpage thumbnails ([fddea3e](https://github.com/plebbit/seedit/commit/fddea3e5c13979ee9f18375702bfb611a650aa72)) * **post:** thumbnails would get stuck when navigating ([b3b39f1](https://github.com/plebbit/seedit/commit/b3b39f19fbf4f402ce8a57a79cc4861c654e19b2)) # [0.2.0](https://github.com/plebbit/seedit/compare/v0.1.17...v0.2.0) (2024-11-08) ### Bug Fixes * **profile:** return 'not found' for non-existent pending comments ([9eacdc5](https://github.com/plebbit/seedit/commit/9eacdc583acce0932c3178be85173164c163ea15)) ### Features * **subplebbit:** show published comments instantly in feed ([4b715c5](https://github.com/plebbit/seedit/commit/4b715c52ab403557966acfa0e0a28117d4df1013)) ## [0.1.17](https://github.com/plebbit/seedit/compare/v0.1.16...v0.1.17) (2024-10-29) ### Bug Fixes * **header:** sort buttons were displaced on android ([59d0c60](https://github.com/plebbit/seedit/commit/59d0c60aabbf13cc6a9569f5a5bca3d3efd8fb88)) * **home:** auto time filter didn't show posts from last visit ([aaa34b7](https://github.com/plebbit/seedit/commit/aaa34b797bb4f24a6e88b4880b8bbab11047e260)) * last visit time filter could show 'not found' page ([5d859cb](https://github.com/plebbit/seedit/commit/5d859cb0fb1130add0b6147e3565cd17b2ecb77a)) * **release.yml:** wrong java version prevented apk build ([f87bb1f](https://github.com/plebbit/seedit/commit/f87bb1fbe058ed8dc1ab9d58f42ab60c84b8b19d)) * **router:** a link could include '%23' instead of '#' ([ae87561](https://github.com/plebbit/seedit/commit/ae875616527bd96a813b92b81c35c48313f32a4f)) * **search bar:** fix overflow of text behind button, button resolution ([c5406f2](https://github.com/plebbit/seedit/commit/c5406f2a9b0281059286f5b1bd3fe24cee2b1154)) ### Features * **homepage:** add about page for FAQs and welcoming users ([1a245b5](https://github.com/plebbit/seedit/commit/1a245b5164092df671af57811aa7fdc1ba534848)) * **profile page:** clicking "(edit)" next to display name redirects to setting and highlights it ([aa242c3](https://github.com/plebbit/seedit/commit/aa242c3dfa3332a5a4620645c59c8a4a478dc3ae)) * **profile:** on first access, link to useful preferences and highlight them ([557db8c](https://github.com/plebbit/seedit/commit/557db8c2291d64fe7a37876af00be8338018d03e)) ## [0.1.16](https://github.com/plebbit/seedit/compare/v0.1.15...v0.1.16) (2024-10-23) ### Bug Fixes * **android:** icon was too big ([6f3b721](https://github.com/plebbit/seedit/commit/6f3b72148d6422d0b3c083d12ed0ed1a61e92e17)) * **electron:** "ipfs warning" without error message would appear after closing the desktop app ([faa33f0](https://github.com/plebbit/seedit/commit/faa33f08bfe0d26c6028a6a2a80c4aec12e9b53e)) * **electron:** isElectron flag was missing ([3a39eda](https://github.com/plebbit/seedit/commit/3a39eda7e6ef8b1d04bbec17ef1fea07d9aa1d2c)) * **embed:** reddit links have to include '/comments/' to be embeddable ([1dd2a4c](https://github.com/plebbit/seedit/commit/1dd2a4c2fd82c724dfc85bb9ab905065155c3606)) * **package.json:** add resolution for skia-canvas ([0d23bdb](https://github.com/plebbit/seedit/commit/0d23bdb1bb5dd6d3d4421b0cc44eea7e0158bab3)) * **post:** confirm dialog for delete button wasn't working ([4aa54a5](https://github.com/plebbit/seedit/commit/4aa54a5c0c866e922f657ee5d1a22257abecf4de)) * **post:** don't show author edit reason if post is deleted or removed ([6017ac2](https://github.com/plebbit/seedit/commit/6017ac24194938ae67c8cd30d1ce7f77cbccbfd6)) * **post:** reason field for author edit didn't work ([808a388](https://github.com/plebbit/seedit/commit/808a3889bde3d0ac179bcab3f532dd3223c37b27)) * **post:** score should show '•' if backend state is not 'succeeded' ([a438daf](https://github.com/plebbit/seedit/commit/a438daf71f3910608ad953536897052a3388b3d5)) * **post:** score should show "?" while loading ([7f8dc16](https://github.com/plebbit/seedit/commit/7f8dc1696b82d1b6052d5aeabae5c82cc92372d4)) * **post:** webpage thumbnail was rendered as image from direct link ([9678613](https://github.com/plebbit/seedit/commit/9678613ff3b25f917c292bcb08b8d7e9198e000f)) * **reply:** permalink button could be clicked while post is pending ([ccdacfe](https://github.com/plebbit/seedit/commit/ccdacfea32cd59472ddc4d62d2f3c4064588fbff)) * **submit page:** don't link to subplebbit page from title unless the selected address is valid ([4d6ea70](https://github.com/plebbit/seedit/commit/4d6ea7091a675ddf6bbd84526752a7447699c0bd)) * **submit page:** dropdown would stay opened and focused after selecting sub with keyboard ([8ffa0d4](https://github.com/plebbit/seedit/commit/8ffa0d4fd0e9f26b2093d8d622655184434cc06e)) * **submit page:** hitting enter key wouldn't select address in dropdown ([bb92bd0](https://github.com/plebbit/seedit/commit/bb92bd0107105c0178b214b610305aabb0cfef5b)) * subplebbit description showed too much space between lines ([906bb31](https://github.com/plebbit/seedit/commit/906bb31d12d4c2d72db586a3ff38b429a470d1a0)) * **subplebbits:** online/offline status of each sub would reload from scratch each time it was viewed ([b90d0fb](https://github.com/plebbit/seedit/commit/b90d0fbf385da311705ed10b4bd38768b964ef5b)) ### Features * **account settings:** alert user account is stored locally and specify location ([d328c5c](https://github.com/plebbit/seedit/commit/d328c5c2772050a523e3485b3c31153edd1d08e7)) * **embed:** add support for youtube playlists, music.youtube links ([c4d93fb](https://github.com/plebbit/seedit/commit/c4d93fbf31312ac0cc404dc76476f5529c739a76)) * **feat:** add automatic last visit time filter ([6823232](https://github.com/plebbit/seedit/commit/6823232a9c4ca4aaa99f316bfffc77d3eda6dd9b)) * **feed:** show alert to help user change time filter if there aren't enough posts ([35febb2](https://github.com/plebbit/seedit/commit/35febb2ee25c1b5e1603d657b743d7492b57a262)) * **post:** add client-side thumbnail fetching for webpage links from sites with CORS access ([b3bbb9c](https://github.com/plebbit/seedit/commit/b3bbb9c04d88a75d2956d606a8023bf6120964e9)) * **profile:** add info message about account, on first access ([6ddb4d7](https://github.com/plebbit/seedit/commit/6ddb4d7928d57b8e4d8292ba4b7993a33849eb0f)) * **profile:** show info bar about newly created account on profile first access ([9b701a5](https://github.com/plebbit/seedit/commit/9b701a559f9ee2457f01dbc0d784bff446c69865)) * **reply form:** alert user the subplebbit might be offline before publishing reply ([58218a7](https://github.com/plebbit/seedit/commit/58218a7a0c0a5e708a300323ae3259a61ab8dec2)) * **sidebar:** add info next to red dot for offline subs without last update timestamp ([5da4c02](https://github.com/plebbit/seedit/commit/5da4c02bc35acc95aaa9257d5512545ff85d34a7)) * **submit page:** alert user if selected subplebbit might be offline ([7e565ab](https://github.com/plebbit/seedit/commit/7e565ab9fced4d105b0c0f28fa8db5defe579d59)) * **subplebbit:** inform user about time filter if active ([352a74f](https://github.com/plebbit/seedit/commit/352a74f24c9cc599a5a9ec06bdff398e11d92e43)) ### Performance Improvements * **gifs:** cache first frame so gifs don't reload all the time when navigating ([e1c02cd](https://github.com/plebbit/seedit/commit/e1c02cdf8f60c9373c87f0fdac0b40d31e9255d1)) * **post:** optimize post history resource consumption with memoization, virtualization, pagination, routing ([9434a17](https://github.com/plebbit/seedit/commit/9434a175397c9b442a2b38089ed5852a15770736)) ## [0.1.15](https://github.com/plebbit/seedit/compare/v0.1.14...v0.1.15) (2024-09-09) ### Bug Fixes * **electron:** download url redirect status code changed ([bb94bdf](https://github.com/plebbit/seedit/commit/bb94bdf5f67b8d048bddffaebad94b452a1e8b1c)) * hiding/blocking comments wouldn't work because useBlock takes cid, not address ([e459132](https://github.com/plebbit/seedit/commit/e4591320a43f1f2ea74b315d251f33ff9f572989)) * **import account:** reload after import to ensure rpc starts ([a5f5d24](https://github.com/plebbit/seedit/commit/a5f5d24624e7b668f0cb6a06b2aa3b0830f93870)) * **offline indicator:** change last online check from 30 to 60 minutes for a better estimate ([dbb91bf](https://github.com/plebbit/seedit/commit/dbb91bf16c1eb7d23db07f2016f504b1b543ad03)) * **topbar:** always show 'my communities' link ([5a96239](https://github.com/plebbit/seedit/commit/5a96239053cf1ac64d240c4fa9e5091c9f4b98f6)) ### Features * add 'new posts' button to refresh feed and scroll to the top ([0077df0](https://github.com/plebbit/seedit/commit/0077df01a125c885cddbf136aa9446948ca082c4)) * **profile:** add 'hidden' tab and feed for blocked comments ([911fa76](https://github.com/plebbit/seedit/commit/911fa767c5295bfdcc3b7d222352d1f9a2138609)) * **public:** add redirect.html ([2ad3879](https://github.com/plebbit/seedit/commit/2ad3879fd2a87054dbb2842798247f34cdc3e860)) * **search bar:** alert 'invalid subplebbit address' if the user forgot to type the tld ([f4798f3](https://github.com/plebbit/seedit/commit/f4798f304c52572495dc64d8ce7d495b676e170f)) * **settings:** add functionality to plebbit options settings ([fe49694](https://github.com/plebbit/seedit/commit/fe49694458272f56eff7446255ffaf8e69f6ff6c)) * **subplebbit settings:** when first creating a sub, show the captcha challenge already set as default ([ea7853b](https://github.com/plebbit/seedit/commit/ea7853be63a9f7604ce579d7469ad09885b2ebc8)) * **subplebbit:** display error near state string in feed ([a40442d](https://github.com/plebbit/seedit/commit/a40442d785eed15563dd9865e5bdd1720d80aee8)) ### Performance Improvements * **profile:** too many comments could load at the same time ([2295599](https://github.com/plebbit/seedit/commit/2295599a20e8ff3477849f6a1996617484fd291e)) ## [0.1.14](https://github.com/plebbit/seedit/compare/v0.1.13...v0.1.14) (2024-05-22) ### Bug Fixes * **loading state:** position was bugged on post page and it wouldn't render on state 'failed' ([f40665d](https://github.com/plebbit/seedit/commit/f40665dc5cec28cdc859c5dc1f83f1aa6adecb1c)) ### Features * add plebchan mascot to 'page not found' ([bb8ed53](https://github.com/plebbit/seedit/commit/bb8ed53105eeade01ca13b54cc0cddafd05bfa78)) * **app:** return 'not found' for invalid pending comment indexes, subplebbit addresses and CIDs ([bc84faf](https://github.com/plebbit/seedit/commit/bc84faf43968f7c15fd2d9ce55e72d0b2bb1d6c8)) * change default communities order to respect category (plebbit, interests, random, projects, international) ([5b05e2a](https://github.com/plebbit/seedit/commit/5b05e2a547f10956d85aa080f037b1ad603ac4e7)) * exclude nsfw communities from the default list (hide nsfw posts in home) ([e978654](https://github.com/plebbit/seedit/commit/e978654dbf00bc30523c172240a75c879ead162e)) ## [0.1.13](https://github.com/plebbit/seedit/compare/v0.1.12...v0.1.13) (2024-05-06) ### Bug Fixes * **embed:** pass origin to youtube because popular videos won't load without it ([4d60d9b](https://github.com/plebbit/seedit/commit/4d60d9b576a35c5a28960b2afd9c237f6797b97c)) * **index.html:** add no-referrer meta tag to resolve CORP-related media access issues ([dcd06d3](https://github.com/plebbit/seedit/commit/dcd06d3fc1921a523b05c4bd1740456a09b7b97c)) * **loading ellipsis:** was not aligned to text bottom ([f184bb6](https://github.com/plebbit/seedit/commit/f184bb67ee80c48811aa049953840a063389947a)) * **subplebbit settings:** edits didn't work ([3cb5229](https://github.com/plebbit/seedit/commit/3cb52299410ca8319d974adc3c6a54fd7065b468)) ### Features * **subplebbit:** show 'no posts' loading state if sub was just created, not yet published and there are no posts yet (owner can already post) ([de5e999](https://github.com/plebbit/seedit/commit/de5e9997ad649d0c4586510503ba492ba436570c)) ## [0.1.12](https://github.com/plebbit/seedit/compare/v0.1.11...v0.1.12) (2024-05-04) ### Bug Fixes * **subplebbit settings:** stupid typo prevented edit from working ([6f67c26](https://github.com/plebbit/seedit/commit/6f67c263d00e1379843121a319cb6aa7c565ed3c)) ### Features * **loading ellipsis:** improve animation ([e8fafad](https://github.com/plebbit/seedit/commit/e8fafad27b2b5da7964c3bf866c1337aa30e0aa6)) * **submit page:** add spoiler option ([e4a50fe](https://github.com/plebbit/seedit/commit/e4a50feec7e6abb179daba9bddca63bc6516ddfc)) ### Performance Improvements * **use-default-subplebbits:** memoize subscriptions ([8470300](https://github.com/plebbit/seedit/commit/8470300a0fad1d6a982c414f95ca725f993ea9e4)) ## [0.1.11](https://github.com/plebbit/seedit/compare/v0.1.10...v0.1.11) (2024-04-27) ### Bug Fixes * creating a sub wouldn't work if fields were defined ([2a4f057](https://github.com/plebbit/seedit/commit/2a4f057059d2922ebb53d1193c5baa614406eb56)) * **embed:** detect uppercase extension in link ([18a63df](https://github.com/plebbit/seedit/commit/18a63df59de35fc3fb3bee4dea6174ba6bb8c2c6)) * **home:** remove feed render delay for subscriptions ([c383d90](https://github.com/plebbit/seedit/commit/c383d90c5f711fcb83d02cbf99e9a10f6f50ac4f)) * **reply:** default vote count to 1 ([ae3b28f](https://github.com/plebbit/seedit/commit/ae3b28f39e9019d9893691b9ae994d393ad71ea7)) * the position of subscribe buttons in p/all feed is bugged on narrow screen ([7dd6846](https://github.com/plebbit/seedit/commit/7dd6846cdb5518113b8993a1e359e684f7696bf0)) * **topbar:** last sub in the list was covered by the 'more' button ([ce3ed14](https://github.com/plebbit/seedit/commit/ce3ed1447ef71fe1b4f49f6f80898e879d469f74)) ### Features * **electron:** add window.plebbitRpcAuthKey ([328e3a0](https://github.com/plebbit/seedit/commit/328e3a09e94d4925c872c1f4568da84b388a8f7b)) * **embed:** add soundcloud embeds ([4058df5](https://github.com/plebbit/seedit/commit/4058df5b25177d786c2b88ae73753dc0c39bdb5e)) * **reply:** add support for audio embeds, prefer hostname as link to show instead of full link ([d457a50](https://github.com/plebbit/seedit/commit/d457a506f43d96256779e3d56432b80ebedaa15c)) * **settings:** add plebbit options ([5ab14bf](https://github.com/plebbit/seedit/commit/5ab14bff0a20757bcb55deb019aa6aebe0dfade8)) * **settings:** add plebbit options route ([25ff98e](https://github.com/plebbit/seedit/commit/25ff98e09543195e9f5f5a30026d3ffc187a5871)) * **topbar:** add 'own communities' button in dropdown ([0cf89c2](https://github.com/plebbit/seedit/commit/0cf89c2d39f52a9474e0853ebbe1b9dbc5361efd)) ### Performance Improvements * **app:** improve mobile design rensponsiveness ([6fe43e4](https://github.com/plebbit/seedit/commit/6fe43e43dcd34564438fc235121d7e8f6ed872d4)) * **media utils:** optimize loading of media and link preview ([177a994](https://github.com/plebbit/seedit/commit/177a994502e1bc4dd4534e62d643d19212158093)) ## [0.1.10](https://github.com/plebbit/seedit/compare/v0.1.9...v0.1.10) (2024-03-27) ### Bug Fixes * **home:** 'no communities found' would appear while loading multisub ([a281a6f](https://github.com/plebbit/seedit/commit/a281a6fa7d050136c9249f62f8af4a53c99c9084)) * **pending post:** don't expand media for visibility of the publishing state ([3dc5940](https://github.com/plebbit/seedit/commit/3dc5940824584580a2fb3237511a80b29254ed4a)) * **post page:** locked post state was missing in yellow banner alert ([6041aa1](https://github.com/plebbit/seedit/commit/6041aa102e0ff35503eb639b04e4e429f1aad694)) * **post page:** reply form wouldn't appear until replies loaded, but the user can reply already ([e276763](https://github.com/plebbit/seedit/commit/e276763a3d0370242ae20d2a04ae17d0f5ddccb5)) * **post:** remove avatars from posts in feed, they are distracting and don't look good ([929b648](https://github.com/plebbit/seedit/commit/929b648edd675ae50ac34c2154c5712dc9a0fa88)) * **post:** video thumbnails were not showing on mobile, without preload ([51cceae](https://github.com/plebbit/seedit/commit/51cceae2d823dc7559519bd4f7642ebf4cb0d95f)) * **reply:** upvoting a reply of score 1 would keep its score at 1 ([ce765b1](https://github.com/plebbit/seedit/commit/ce765b1d1e7fdd9585e0bec7372ee7fa1da1bd9c)) * **subplebbit:** a community blocked by the user would show 'no posts', show 'you blocked this community' instead ([e018205](https://github.com/plebbit/seedit/commit/e0182057dd674ba41fcff93517036727297031aa)) * **subplebbit:** a subplebbit address with emojis in it would cause bugs in the sub, such as broken links ([5552285](https://github.com/plebbit/seedit/commit/55522854a3c7ec03d100c369bac4822ea2937476)) * **wallet settings:** signature shouldn't include wallet address, only plebbit author address ([c45d2d3](https://github.com/plebbit/seedit/commit/c45d2d3e8c551817fff896d1712a4e500e32d924)) ### Features * **home:** optimize home feed content by limiting number of posts per sub ([e8a136b](https://github.com/plebbit/seedit/commit/e8a136bd25d2e88180e9e1eb4ceaf9ff6ab62d57)) * **media utils:** add embed support for custom youtube links, eg from invidious instances ([4e07055](https://github.com/plebbit/seedit/commit/4e070551c588a5ec1fef2f48d48744cd2d936296)) * **media utils:** add support for Next.js image links ([791e1ce](https://github.com/plebbit/seedit/commit/791e1ce422be3b8e5d931be6cecde626b5c087fa)) * **media utils:** detect GIFs as separate type from image ([7ad0953](https://github.com/plebbit/seedit/commit/7ad0953d8719324264d29f38d89a6cd4e55017e2)) * **thumbnails:** render the first frame of gifs so they don't autoplay in the feed ([7d8a80b](https://github.com/plebbit/seedit/commit/7d8a80b1f9aca5dcfc752e3f3ae2dec881cf3647)) ### Performance Improvements * **media utils:** cache check for invidious yt links ([7bf9c85](https://github.com/plebbit/seedit/commit/7bf9c857a505121d8fc9c8cbd12c4d6901637172)) ## [0.1.9](https://github.com/plebbit/seedit/compare/v0.1.8...v0.1.9) (2024-03-20) ### Bug Fixes * **mod menu:** ban days input was too long on firefox ([3f780a5](https://github.com/plebbit/seedit/commit/3f780a54ba64e9aaca563cc53bf7bae21a89eeed)) * **subplebbit settings:** creating a subplebbit would clear all fields even when failing to create ([81de00d](https://github.com/plebbit/seedit/commit/81de00d10be047f95294f373c737fc206790c6cd)) ## [0.1.8](https://github.com/plebbit/seedit/compare/v0.1.7...v0.1.8) (2024-03-14) ### Bug Fixes * **comment edit form:** author edit wasn't instant ([38baa01](https://github.com/plebbit/seedit/commit/38baa0123410cf1540b20f432b14152dde03582d)) * **delete button:** deleting own post wasn't instant ([db801ab](https://github.com/plebbit/seedit/commit/db801ab9842bd72a10625c6bd22d92256c049c83)) * **inbox:** show parent buttons were clickable outside of their space ([13b7b94](https://github.com/plebbit/seedit/commit/13b7b94a534c79dc49b8a8ff895d9fcdd285beb8)) * **markdown:** replies had incorrect white-space and double returns needed margin on posts ([ed02146](https://github.com/plebbit/seedit/commit/ed02146103bf3f5ec44e84338cd2cdd7e272ae1f)) * **post:** clicking near the 'comments' button would add the dotted border ([400b4f2](https://github.com/plebbit/seedit/commit/400b4f2f43a506e4da90b7506c7c4aad2bacbafa)) * **post:** dotted border for last visited post shouldn't appear in post page ([121cf3d](https://github.com/plebbit/seedit/commit/121cf3da976641dc140a87cf5aaf74b421fca0f0)) * **posts:** limit display name character count ([ff4a97b](https://github.com/plebbit/seedit/commit/ff4a97b9b4e4ece27b98be84edcb4b05608642a6)) * **reply:** spoiler styling couldn't be clicked ([29b5f72](https://github.com/plebbit/seedit/commit/29b5f72b241b184b787201d738febebf1edcda24)) * **search bar:** disable autocapitalize, autocorrect, autocomplete, spellcheck ([8eebb0f](https://github.com/plebbit/seedit/commit/8eebb0ff1bfc945fa9ac47bc313559e1c0e7aa7f)) * **submit page:** rules box would appear for sub with rules defined but empty ([358d6c8](https://github.com/plebbit/seedit/commit/358d6c87bf16a9a3f56be93c5797b1e670730723)) * **submit page:** some fields would update incorrectly or return 'option is an empty string' error ([24ab3c9](https://github.com/plebbit/seedit/commit/24ab3c9ca1b57ef9c72b5eb0132be63429a9feab)) ### Features * **address settings:** update setting for sol addresses, with guide on how to set up ([430c597](https://github.com/plebbit/seedit/commit/430c5970761e3e3fd0af03ce230a543cea6be3ab)) * **context:** allow any number as post context, always showing the top level reply ([b9d050c](https://github.com/plebbit/seedit/commit/b9d050c87c45b2e1c541a4ac45e7f23b6e5490f7)) * **mod menu:** community moderators can ban their users ([22beb4e](https://github.com/plebbit/seedit/commit/22beb4e0ea6a2c300422fa8a21b5f230af985ec0)) * **post page:** hide reply form and display 'loading comments...' while the post is loading ([a068691](https://github.com/plebbit/seedit/commit/a06869196d236f51ab8bfffae46bdf08aefd95df)) * **scripts:** add old versions to folders e.g. seedit.eth.limo/0.1.1 ([a384e7b](https://github.com/plebbit/seedit/commit/a384e7b845f6a6071f7cf0cfab3347d82c8d2528)) * **settings:** add link to nft whitelist ([f174602](https://github.com/plebbit/seedit/commit/f174602c81bab926ece3adb45c3fd14338c2f953)) * **settings:** users can add crypto wallets to their plebbit account ([75b25e7](https://github.com/plebbit/seedit/commit/75b25e74cd6dba73aae7b3385669c5a80b2c2c75)) * **subplebbit settings:** add info on how to set up .sol crypto domain as sub address ([5f54bbe](https://github.com/plebbit/seedit/commit/5f54bbe07ad6bf5acd8c6ff02da3e976a0730be0)) ## [0.1.7](https://github.com/plebbit/seedit/compare/v0.1.6...v0.1.7) (2024-03-06) ### Bug Fixes * disable buttons for comments that are failed, remove duplicate label from reply ([6e341e3](https://github.com/plebbit/seedit/commit/6e341e33fc5b57dae7eb7d6858a5159e20e054d6)) ### Features * **app:** redirect to link with hash on first load ([365b40d](https://github.com/plebbit/seedit/commit/365b40d3626a40131b7b0d722a3d9e0e6ab9359b)) * **post:** if post is removed, show locked info banner ([2490bc3](https://github.com/plebbit/seedit/commit/2490bc35f452e2231afea94edac14a9280bf430d)) ## [0.1.6](https://github.com/plebbit/seedit/compare/v0.1.5...v0.1.6) (2024-03-03) ### Bug Fixes * **account settings:** removed unnecessary reload when switching account, allow to delete last account (refreshing creates a new one) ([51f7dba](https://github.com/plebbit/seedit/commit/51f7dbadae5f385216d97b60d65c6ceb5ea0f765)) * **author sidebar:** hide +friends button until functionality is implemented ([83ea30d](https://github.com/plebbit/seedit/commit/83ea30d8e7ab06b70a98efaba6b8c756a8b89aa9)) * **challenge modal:** special characters couldn't get rendered in post content preview ([9d2c01d](https://github.com/plebbit/seedit/commit/9d2c01d12fff752422581988a05d779a76719c86)) * **comment tools:** don't show 'report' button if the user is the author ([96fd888](https://github.com/plebbit/seedit/commit/96fd888194a6f019e3deedf2b251142c11823fa5)) * don't reset time filter when changing sort in feeds ([e2de559](https://github.com/plebbit/seedit/commit/e2de55987cc02ecee94a0c57c4954d31a478ef27)) * **embed:** twitter embed width would glitch ([0c415fa](https://github.com/plebbit/seedit/commit/0c415fa94d5c83bb7c0a66b76f15347347c0c477)) * **embed:** videos on mobile had wrong width ([c560dd7](https://github.com/plebbit/seedit/commit/c560dd7d962f77639d6037a6289a86167ed7c439)) * **expando:** clicking on video would redirect to external link ([ff52a9a](https://github.com/plebbit/seedit/commit/ff52a9a05e50770133a18648d8683242281cf0ad)) * hide buttons that aren't functional yet (save, crosspost, embed, report) ([265f6c1](https://github.com/plebbit/seedit/commit/265f6c1df0f62e566a68d5fa26741c0ad219f56c)) * loading avatar should have empty space ([4e8142c](https://github.com/plebbit/seedit/commit/4e8142cd2196e57c0d17fe6a5c7d164f5f143118)) * **mod menu:** close modal when saving, instead of waiting for publishing ([929514f](https://github.com/plebbit/seedit/commit/929514ffde1ace70bb50cbddd15470797423c690)) * **post:** display title as dash if it's empty ([712779d](https://github.com/plebbit/seedit/commit/712779d30e01d4ead71166d7544992cce6db8619)) * **post:** dotted border for last visited post should only persist in the same window ([0a67399](https://github.com/plebbit/seedit/commit/0a673991236fa8a1314746ccc2ada42ff83a3e33)) * **post:** font size would bug out with overflowing title ([5890b92](https://github.com/plebbit/seedit/commit/5890b92888af1c5cc5c685f80be695ebc53b0dc1)) * **profile:** hide 'saved' and 'hidden' tabs until functional ([ad5f73f](https://github.com/plebbit/seedit/commit/ad5f73f0de618b46dc2f7c262d22526ddd131659)) * **reply form:** couldn't reply from inbox page because subplebbit address wasn't defined ([c31b7eb](https://github.com/plebbit/seedit/commit/c31b7eb52fee9aad04d2f6666b071b40031eb502)) * **settings:** display name setting wouldn't reset on account change ([b961626](https://github.com/plebbit/seedit/commit/b9616264f8584992e5c3e9c27e32ce971a8111b5)) * **sidebar:** 'created by u/' link shouldn't be a link because it has no cid ([1e73aee](https://github.com/plebbit/seedit/commit/1e73aee41ec50d38016c2b09b28677f87dfaef72)) * **sidebar:** hide 'about moderation team' button, not functional yet ([f887dc2](https://github.com/plebbit/seedit/commit/f887dc273d0520f9c88da08bb3ba179e555573a1)) * **sidebar:** show moderation tools to sub owner without role ([15921ef](https://github.com/plebbit/seedit/commit/15921ef75c4cb5296710748c21a904b1c4224813)) * **submit:** address wasn't selected when clicking it in the dropdown ([c55cd75](https://github.com/plebbit/seedit/commit/c55cd75a70da7f47d326ce1449327a989583a3f5)) * **subplebbit settings:** don't add empty exclude group when adding challenge ([2465a8b](https://github.com/plebbit/seedit/commit/2465a8bcf9b74949d3bbc2b9cf0e47095d4d3ffd)) * **subplebbit settings:** read only address would overflow if too long ([f02c71f](https://github.com/plebbit/seedit/commit/f02c71f5e1095bfd5bca31e184daa37fa1bc26f7)) * **subplebbit settings:** read only description needed word wrap ([6fdecce](https://github.com/plebbit/seedit/commit/6fdecce49730c9ca59a277aa8974f0721b557b2b)) * **subplebbit settings:** read only exclude setting wasn't displayed properly ([2f81578](https://github.com/plebbit/seedit/commit/2f815785fa707f5a7d38f56730d2ffa39bd18fef)) * **subplebbit settings:** reset store, challenges setting would not update on subplebbitAddress change ([e0862a8](https://github.com/plebbit/seedit/commit/e0862a85ff5a1a6732bc698924dcab16c3153078)) * **subplebbit settings:** when adding an exclude group for challenges, the roles should not be checked by default ([7dc0297](https://github.com/plebbit/seedit/commit/7dc0297983f6beed2094f0c5c1fa324a81a04685)) * **subplebbit:** scroll position wasn't retained ([f74ce22](https://github.com/plebbit/seedit/commit/f74ce2274542353e6d8d026eb1101e946642fc16)) * **subplebbits:** show subplebbit run in local node in mod/admin/owner tabs regardless of role ([32a6c01](https://github.com/plebbit/seedit/commit/32a6c01b8b27995d8decb64cbf723f49f28ed8b6)) ### Features * add 'edit content' functionality to edit button for replies and posts, show asterisk in date with timestamp title ([5055fde](https://github.com/plebbit/seedit/commit/5055fde320db05699c4e83066998bd5abdc74252)) * add 'not found' page for invalid links ([e8ee496](https://github.com/plebbit/seedit/commit/e8ee4963da7e7656ca1312aee3c598b0d9e3ffce)) * add 'pending edit' and 'failed edit' labels for mod and author edits ([3bf9ead](https://github.com/plebbit/seedit/commit/3bf9ead33ecaf5cf11907b88dad4aad9d01c534c)) * add "delete" button for user's posts ([1918ee9](https://github.com/plebbit/seedit/commit/1918ee96ee378c980ea7b3c33241cea258013774)) * add author edit reason, spoiler ([11cc1a4](https://github.com/plebbit/seedit/commit/11cc1a430fc98429a2a2e52b4e1ed339f317f26c)) * add mod edit reason to posts and replies ([dd6744a](https://github.com/plebbit/seedit/commit/dd6744ab7003792c1c66daf60b43731f068d1562)) * add spoiler styling as black overlay above post or reply content ([d9e5086](https://github.com/plebbit/seedit/commit/d9e508602ec5e75d1eaf71171168a9d692cd0f41)) * **communities:** add markdown to each sub expandable description ([486710c](https://github.com/plebbit/seedit/commit/486710c9e29d90b06e81a03003a1f35358657084)) * **feed:** add dotted border to last visited post ([6e5d644](https://github.com/plebbit/seedit/commit/6e5d6445a16becaad21a805521d60c4e065b1785)) * **header:** add 'all' title to p/all header ([6273029](https://github.com/plebbit/seedit/commit/6273029a1c803756d1f9502366bb18da5c507db4)) * hide media of removed posts and replies, blur title and media in feed for mods ([dbbe9b0](https://github.com/plebbit/seedit/commit/dbbe9b0dcd90f3e93471e0f645c4d8f9a28ba758)) * implement community creation on desktop app (p2p full node) ([b724894](https://github.com/plebbit/seedit/commit/b72489424f8edb2259944de5319b283fe9e3960a)) * **inbox:** add functionality to "show parent" button in comment replies ([3443445](https://github.com/plebbit/seedit/commit/3443445a6ffe0dfb5851e18a562735bb62a6ec55)) * **markdown:** add same markdown styling and rules as reddit ([83c2b3c](https://github.com/plebbit/seedit/commit/83c2b3c702222e51ea06b0611d6bc91ff16790ee)) * **post:** add '+' subscribe button to posts in p/all ([5699739](https://github.com/plebbit/seedit/commit/569973947cc21a54ed2c43896d93aed843d52062)) * **post:** add small profile nft avatar next to username ([da6e474](https://github.com/plebbit/seedit/commit/da6e474a6ef0bde4a6c909a6743f20c29932cf76)) * **post:** show "[deleted]" as content if user deletes his own post ([26ae8ea](https://github.com/plebbit/seedit/commit/26ae8ea33a8c57e0d6c248cd6bfbacb0a85dccd8)) * **reply form:** add formatting help table for markdown ([1c73e70](https://github.com/plebbit/seedit/commit/1c73e7063d5a0a5740986960df8a5abe428c4d8e)) * **reply:** add deleted (by author) styling, hide media ([d3e8b89](https://github.com/plebbit/seedit/commit/d3e8b89aba68ea2bafc816ac6f528a54a17468e1)) * **reply:** display nft profile picture if set ([14c2cec](https://github.com/plebbit/seedit/commit/14c2cec5650e444ddf6db254b7c9232298114534)) * **settings:** add 'check for updates' button ([1acab82](https://github.com/plebbit/seedit/commit/1acab82b994c1b383a291599f072d8e0c2e9d3f2)) * **settings:** add 'contribute to github' link to translations setting ([5804c7d](https://github.com/plebbit/seedit/commit/5804c7d88b8f5de09f01cd82fe2595c93bf6157a)) * **settings:** add button to copy full account address ([306919c](https://github.com/plebbit/seedit/commit/306919ca3ba2d58591728b844f7ab4e88635c3a3)) * **settings:** add double confirm when deleting account, red color ([5afcf5c](https://github.com/plebbit/seedit/commit/5afcf5c21a886d5f60a7a4b36e8d1b4eab899c8b)) * **settings:** add link to ipfs stats on desktop full node, version info ([d833a89](https://github.com/plebbit/seedit/commit/d833a89fc43777690396e8c02900fc9ad78e5343)) * **settings:** add profile avatar setting ([4b90287](https://github.com/plebbit/seedit/commit/4b902871b92043920e3cff64536d88af53cb4ad2)) * show avatar in profile page sidebar ([d3e85ab](https://github.com/plebbit/seedit/commit/d3e85ab214d5a052a9d58825f40b09e092491ea1)) * **submit:** add markdown preview for post content ([5c5273f](https://github.com/plebbit/seedit/commit/5c5273fc17421d4d5f6b9b636d0f5170b85af392)) * **submit:** add media preview to url field ([2d6e7dd](https://github.com/plebbit/seedit/commit/2d6e7ddb381e31befcf546cd542fa0db2761cfa1)) * **subplebbit settings:** add delete community button ([615bd0d](https://github.com/plebbit/seedit/commit/615bd0d00c09efbe08c5701c3160bc5c2d45a7ee)) * **subplebbit settings:** add markdown preview for description ([30caa7e](https://github.com/plebbit/seedit/commit/30caa7e7abe71cca1bcde0e0953d36da060ffc9f)) * **topbar:** add create community button to 'my communities' dropdown, so it's easier to find on mobile ([55a30e8](https://github.com/plebbit/seedit/commit/55a30e87c17834e558b638467285670c839affda)) * **topbar:** add link to default communities in "my communities" dropdown, rename "edit" link to "more" ([09a7e63](https://github.com/plebbit/seedit/commit/09a7e63dc48b1b172582a64a64e8723cfc1c793b)) ### Performance Improvements * **inbox:** memoize filters to avoid recalculation at every render ([f6caf90](https://github.com/plebbit/seedit/commit/f6caf90d8d2d2dff0db5fe9db697d81bbd5b3d00)) * **markdown:** only render links in content if its length is less than 10000, to avoid lag ([0edca2a](https://github.com/plebbit/seedit/commit/0edca2aad90821e1757ee451d53967eadb8552e2)) * **media utils:** memoize link media info ([caa5390](https://github.com/plebbit/seedit/commit/caa5390d995530208e1e1bd3e330ac46379c31bb)) * **post page:** optimize load time ([369360c](https://github.com/plebbit/seedit/commit/369360ca0c17d79d1eba28c40445c53a034b7a5f)) * **reply form:** faster replying by passing cid and sub address without having to load the post; fix no sub address error ([3b40538](https://github.com/plebbit/seedit/commit/3b40538b84089714352613b53aa973a39096da6a)) * **settings:** remove unnecessary useEffect from crypto address and displayName functions ([a2ade9f](https://github.com/plebbit/seedit/commit/a2ade9fc65bf4b3193c4c4ed660ead7152870ee5)) * **settings:** use default value and inline fallback for dynamic strings, instead of useEffect ([1c4883e](https://github.com/plebbit/seedit/commit/1c4883e83f2d7e543c2b97cda2e26cb9eb72a5cd)) ### Reverts * Revert "Update subplebbit-settings.tsx" ([d16c354](https://github.com/plebbit/seedit/commit/d16c35423eecdd0c26bdb03924b84b22428556b1)) ## [0.1.5](https://github.com/plebbit/seedit/compare/v0.1.4...v0.1.5) (2024-02-04) ### Bug Fixes * **electron:** make sure repo is migrated when starting ipfs ([e3804e3](https://github.com/plebbit/seedit/commit/e3804e353330601a7cb19d91b29333444514ab24)) * **submit:** don't spellcheck and autocorrect in url input and community address input ([65ea473](https://github.com/plebbit/seedit/commit/65ea473dcadf78eb4af14b4082c15bb3dbc0dec7)) * **subplebbit settings:** in challenge exclude, non-actions were incorrectly checked by their counterparts ([0b193ad](https://github.com/plebbit/seedit/commit/0b193ad5664f0e6389a6d488e0523bab638c9078)) ### Features * add 'continue this thread' nested replies limit ([d4f66ac](https://github.com/plebbit/seedit/commit/d4f66ac3a17a376a1b987725fe6976c11132af24)) * add service worker (PWA) ([8c7ebf2](https://github.com/plebbit/seedit/commit/8c7ebf231a2010258c89922400eff7f829976afb)) * **android:** add android build script ([f58827a](https://github.com/plebbit/seedit/commit/f58827a0aa441b33a6e051a3159dce112738c7af)) * **author sidebar:** show avatar if set ([3574546](https://github.com/plebbit/seedit/commit/3574546c539ac567467bb1233e175d937b728467)) * implement text challenge modal ([bf8b575](https://github.com/plebbit/seedit/commit/bf8b575d334b02c99e75880670c886504f4c187b)) * **inbox:** add functionality to 'context' button, highlighting reply in single comment thread ([7537cba](https://github.com/plebbit/seedit/commit/7537cbaa6dd117535cd736441eea606f3432fdfd)) * **post:** add single comment's thread view ([a605bdd](https://github.com/plebbit/seedit/commit/a605bdd77e696ca92c3a6e055c09514a6226b85f)) * **submit:** add arrow keys control to community address dropdown items ([aea68e6](https://github.com/plebbit/seedit/commit/aea68e66eb08a687fe26796cab820a0948e5163e)) * update app icon design ([b3a37d5](https://github.com/plebbit/seedit/commit/b3a37d541e116e7f9feb2577fc28c833111ac9fa)) ## [0.1.4](https://github.com/plebbit/seedit/compare/v0.1.3...v0.1.4) (2024-01-30) ### Bug Fixes * **account settings:** prevent deleting last account, reload page when changing active account ([14fde38](https://github.com/plebbit/seedit/commit/14fde3833a1be67b4db232e682848c172e40ea3f)) * **home:** some text would be cut on mobile, padding-right was needed ([e599393](https://github.com/plebbit/seedit/commit/e59939375785e654c7bacefecc1ef3b44c031488)) * **index.html:** disable auto zoom on safari mobile ([497b8d6](https://github.com/plebbit/seedit/commit/497b8d6d34dba0f96952e0687c9c1c4b80bcfe4b)) * **markdown:** add regex to fix newlines in list items separated by empty lines ([b65e9aa](https://github.com/plebbit/seedit/commit/b65e9aa153b50f6743d03946cc4ca199c8f494ac)) * **markdown:** remove regex, adopting conventional markdown rules ([337373f](https://github.com/plebbit/seedit/commit/337373fdf5ebc1d7a9e2b416c36967842ae24c1b)) * **markdown:** use regex and a custom remark plugin to correctly style quotes and lists ([361a479](https://github.com/plebbit/seedit/commit/361a479111098f592e4ffd214d950f31fd69b9be)) * **media utils:** add m.youtube ([c81d240](https://github.com/plebbit/seedit/commit/c81d240b90f80844d87bf313bd369cd88dcfb285)) * **post:** author address wouldn't underline on mouse over ([cfcda0f](https://github.com/plebbit/seedit/commit/cfcda0f4ee83fad59eed01b8cd4eba356750096c)) * **post:** fix virtuoso zero-sized element error ([b2cbacc](https://github.com/plebbit/seedit/commit/b2cbacc3b4d08f27ae94ff0e3fe992fd61bc09ca)) * **sidebar:** don't render rules if they are an empty array ([ad91dd7](https://github.com/plebbit/seedit/commit/ad91dd7432e45dfe991245c6f2da04e11a57358a)) * **submit:** show suggested communities if subs are less than 5, update translation, fix state ([c56b944](https://github.com/plebbit/seedit/commit/c56b944e99b55941f1d4bd4785c80dde03b37f48)) * **subplebbits:** don't show offline label if updatedAt is undefined ([9d0bd81](https://github.com/plebbit/seedit/commit/9d0bd81584e0fd2c4ffa34b742e6b4e283e42f63)) * **subplebbit:** selecting the time filter would bug the header title and topbar ([90f9d35](https://github.com/plebbit/seedit/commit/90f9d3546c4fcd1d03fdcdcd3e8c5b7b26e13c35)) * **time utils:** show 1 minute if 1.x minutes ([8f941c1](https://github.com/plebbit/seedit/commit/8f941c14db882c53c54bf09ee1d3393d18a7e88b)) * **topbar:** subscriptions were showing in default sub list ([dbd2f34](https://github.com/plebbit/seedit/commit/dbd2f348fbcf7009f6e0abacb7eb30423e32adf7)) * unescape html encoded tags in i18next trans element ([76065a8](https://github.com/plebbit/seedit/commit/76065a80c0dd94e62967a7b6d0158bc0450e53be)) ### Features * add mobile about page to home, p/all ([e1e28b9](https://github.com/plebbit/seedit/commit/e1e28b94909149ecd9ebd92e7241a93918f74cd7)) * add offline/online title to indicator ([8a56bf1](https://github.com/plebbit/seedit/commit/8a56bf1f15ec5ae4480042166ced77062d7e630f)) * **edit menu:** implemented instant author edits to delete post, mark as spoiler ([33d1e6b](https://github.com/plebbit/seedit/commit/33d1e6bc93dc1af6fdbac707ff777eb77e63cbc5)) * **electron:** improve navigation labels ([32dd697](https://github.com/plebbit/seedit/commit/32dd69789cb9578234cecbaaa4b696861867d306)) * **home:** default time filter to 1 week to avoid showing old posts ([16b0f39](https://github.com/plebbit/seedit/commit/16b0f39491317b8be501d5ad69eddffa6f2c63ee)) * **home:** implement last visit time filter, automatically selected ([5f651fc](https://github.com/plebbit/seedit/commit/5f651fcffbacb6699fccc5df33f63fa489cd4fe2)) * implement markdown, styled, in posts, replies and sidebars ([5e61fd6](https://github.com/plebbit/seedit/commit/5e61fd6a8717de338011275840629dc8b9c82468)) * **label:** add removed and deleted labels, don't hide post when deleting to allow other edits ([5314d10](https://github.com/plebbit/seedit/commit/5314d10b935165ed6cc082d068e6e8484f89b391)) * **mod menu:** allow multiple instant edits ([f887972](https://github.com/plebbit/seedit/commit/f8879724646e62b5e4520d44a8f80a41b81933ef)) * **mod menu:** show mod menu for single replies, put it last in tools for quicker access ([3c1da1c](https://github.com/plebbit/seedit/commit/3c1da1cfee6328054f5aff3d2ee34e3a46f3bde6)) * **sidebar:** add desktop app banner ([4266964](https://github.com/plebbit/seedit/commit/4266964323d8804005be4f8b18c0caa7bea3a928)) * **sidebar:** add dev version commit ref with link to the commit ([052aad9](https://github.com/plebbit/seedit/commit/052aad9bff2a67599e70cf40646a6ef99ddf733d)) * **sidebar:** add download links for the desktop client ([2578249](https://github.com/plebbit/seedit/commit/2578249e3049bbbf9d45bae176f2c7199a90625e)) * **sidebar:** add footer with version and link to release ([218840f](https://github.com/plebbit/seedit/commit/218840fd0b4b05349a01a444904232a6311ecb0f)) * **sidebar:** add moderation tools and community settings link ([7b1ebf7](https://github.com/plebbit/seedit/commit/7b1ebf7eecafff97d2cdf88dd318233b07109b18)) * **sidebar:** detect OS for 'download app' button in footer ([103a209](https://github.com/plebbit/seedit/commit/103a20959444676903cb02145c27618d1f826418)) * **sidebar:** version footer links to specific version changelog ([cf6f7d9](https://github.com/plebbit/seedit/commit/cf6f7d99470ff4b0f9154a4c5fe965cecf929fc8)) * **submit:** 'submit to' page title links to subplebbit, passing link element to translation ([8fd70b6](https://github.com/plebbit/seedit/commit/8fd70b67134181081abe48c746becd8535b35301)) * **submit:** suggest random communities when subscriptions are zero ([9ed7c42](https://github.com/plebbit/seedit/commit/9ed7c420883eb52add96c6ee2387a9d0f59e9621)) * **subplebbit settings:** add challenges UI from API ([d2f9249](https://github.com/plebbit/seedit/commit/d2f924981e2cabf7800410dcb7ced4ce444fb50c)) * **subplebbit settings:** add combinations for exclude from challenge settings ([1e93bad](https://github.com/plebbit/seedit/commit/1e93bad0476260acc9e36e4965e35bd4d297a83e)) * **subplebbit settings:** add exceptions setting to challenges ([416f097](https://github.com/plebbit/seedit/commit/416f097f681ed00901edadbca2c8dbc1713aaee1)) * **subplebbit settings:** add functional setting for adding/removing moderators and changing roles ([4680021](https://github.com/plebbit/seedit/commit/46800212c8eef703d4fcf45c2ef70b2c67a4e58d)) * **subplebbit settings:** add functional settings for subplebbit title, description, address, avatar, rules, settings json ([0d3622f](https://github.com/plebbit/seedit/commit/0d3622f823444544e666dd96546051ee65d557dc)) * **subplebbit settings:** add functionality to add and remove challenges, include challenge details and exclude values ([dc36065](https://github.com/plebbit/seedit/commit/dc36065635fec96f00d9fd544352860b9c3f15a1)) * **subplebbit settings:** add info banners for required admin role and desktop app ([118ba4a](https://github.com/plebbit/seedit/commit/118ba4a03768e0d85dd40f51e99fc7b36fbc9bbb)) * **subplebbit settings:** add logo preview ([7a451df](https://github.com/plebbit/seedit/commit/7a451df71902a7fd600b35d42e27b519f2c2b795)) * **subplebbit settings:** add negative action exclusion types for challenges ([afe9746](https://github.com/plebbit/seedit/commit/afe9746635f4f2aa97d72aa397ff582a1a7e3a93)) * **subplebbit settings:** add read-only challenge type and description ([87e305f](https://github.com/plebbit/seedit/commit/87e305f1b3726a437bdd553ce0838ad84cccfead)) * **subplebbit settings:** add UI ([5f70b02](https://github.com/plebbit/seedit/commit/5f70b022fb86da530c5dc87a0a18c1006baeb6f8)) * **subplebbit settings:** allow to define custom challenges in default types, using strings as values ([8216994](https://github.com/plebbit/seedit/commit/82169943b26d889bf7553bd9ddb2f119d39e318f)) * **subplebbit settings:** allow to define exceptions for each challenge, defining exclude array ([c2c68be](https://github.com/plebbit/seedit/commit/c2c68bed2f52f6deaa9c6c0b45fb892873dea96c)) * **subplebbit settings:** automatically show settings of a challenge when adding it ([3495fee](https://github.com/plebbit/seedit/commit/3495fee801e8d0b3f86e0b8ed159ace4df577b42)) * **subplebbit settings:** exclude specific user addresses from challenges, minimum user karma ([592a889](https://github.com/plebbit/seedit/commit/592a8893d04b148ced67a7237cad8052afd70e95)) * **subplebbit settings:** exclude users from challenge by account age, and by free actions per hour ([52533e8](https://github.com/plebbit/seedit/commit/52533e8b801207b9366477c22e7b346461d9f94e)) * **subplebbits:** add 'all' tab to 'my communities' ([d408cc5](https://github.com/plebbit/seedit/commit/d408cc511398fa4519e0000bd214a1f70cfb5941)) * **subplebbits:** add 'passed' and 'rejected' tabs to vote page ([fcdb478](https://github.com/plebbit/seedit/commit/fcdb4784a0294c2ff2cc7a3ca1ac6fad66858250)) * **subplebbits:** add avatars to communities page ([10a4b46](https://github.com/plebbit/seedit/commit/10a4b4662c33460cd4d8232c246bf607438b138d)) * **subplebbits:** add default subs view, subscriptions view ([b9efbc9](https://github.com/plebbit/seedit/commit/b9efbc940bfc5aee235aab8b99769f2af28a86fe)) * **subplebbits:** add filtering by user role in 'my communities' tab, routes ([7dfc053](https://github.com/plebbit/seedit/commit/7dfc05395bd200a480ec8ae705ddebb565a6ec40)) * **subplebbits:** add flair for user role if any ([9cb27c1](https://github.com/plebbit/seedit/commit/9cb27c103c33fecba62a8a6fa3a492feb344e671)) * **subplebbits:** link to communities, show empty subscriptions view to user, empty moderating subs page ([a485bc9](https://github.com/plebbit/seedit/commit/a485bc98e38b791f45455a2da862898fa3278fa8)) * **time filter:** default to 1m for new users ([8166d0f](https://github.com/plebbit/seedit/commit/8166d0fcd2dc40fe8781016737839d1fc0fa27ff)) * **topbar:** add 'edit subscriptions' button ([e14fe49](https://github.com/plebbit/seedit/commit/e14fe49b9cd99f532de13e0b3fa6911d4dbd1ca3)) * **topbar:** show 'edit subscriptions' button in 'my communities' dropdown ([3b13281](https://github.com/plebbit/seedit/commit/3b13281704b5932d1bbaed31fa499c9a4ea4675a)) ### Performance Improvements * **inbox:** improve loading of notification details ([11ddd46](https://github.com/plebbit/seedit/commit/11ddd46aad70b75f6f0ecf0756f8a5d777b897fb)) ## [0.1.3](https://github.com/plebbit/seedit/compare/v0.1.2...v0.1.3) (2024-01-05) ### Bug Fixes * **author sidebar:** handle nullish values in karma calculation to prevent NaN ([faed873](https://github.com/plebbit/seedit/commit/faed8736a876bd9281b081f489a82f49137d55ef)) * **author sidebar:** undefined ([85e3930](https://github.com/plebbit/seedit/commit/85e3930a84752af7d46284b3a7ad1efa1b4c3b21)) * **embed:** remove noreferrer for youtube-nocookie because it prevented some videos from loading ([8d0e73b](https://github.com/plebbit/seedit/commit/8d0e73bc0c32af10348caa7c7abe7d8af38d68f1)) * **header:** add missing translation ([b094523](https://github.com/plebbit/seedit/commit/b094523cd5351669e4693d685a64bf00b8f47a17)) * **header:** correct height on mobile submit page ([a68b009](https://github.com/plebbit/seedit/commit/a68b009f3e0e47a17628ef1384eeb858d36244f6)) * **language settings:** trigger page refresh at language change because some strings get stuck ([0304b5c](https://github.com/plebbit/seedit/commit/0304b5cde5013d8a3e576226c3fc1864ba0f89c9)) * **media utils:** use 0.jpg instead of sddefault for youtube thumbnails, some wouldn't load the specific sd res ([8bcded4](https://github.com/plebbit/seedit/commit/8bcded4237cb58d9fa997f274d909c2f8dd7b6db)) * **mod menu:** don't show locked option for replies, they can't be locked ([4ad46b6](https://github.com/plebbit/seedit/commit/4ad46b6c14ae308924fd13e1ab128c1b3856a37b)) * **submit:** limit input resizing to fit in UI ([b794ea7](https://github.com/plebbit/seedit/commit/b794ea74da9445ac750e8c24f307f0fe008733d1)) * **submit:** set min height/width of input elements ([a6a1795](https://github.com/plebbit/seedit/commit/a6a17952adcc687bc518e41436308efb37ece204)) ### Features * add subplebbits component and header ([69f3d20](https://github.com/plebbit/seedit/commit/69f3d2019f43a6ca7ed74946d99ebf164a282973)) * **comment tools:** show mod if mod, else show report, move some buttons to menus only on mobile, show them on desktop ([b62831b](https://github.com/plebbit/seedit/commit/b62831b3588359b6f89df20c6dac9d7cb9fdf19b)) * **inbox:** add red info text for no notifications found ([5d4ca28](https://github.com/plebbit/seedit/commit/5d4ca287d57728d7f35f39c8894862315716cd3c)) * **post:** add locked post info banner ([d5a9472](https://github.com/plebbit/seedit/commit/d5a94723c8714f435eff5f0665606b582e1d7c0d)) * **post:** implement instant edits ([0a9b154](https://github.com/plebbit/seedit/commit/0a9b154aec286bbd25c74d5dc4d5917264f1b32a)) * **reply:** add pinned replies ('stickied comment') ([f04ef91](https://github.com/plebbit/seedit/commit/f04ef913d9f38d294edbcf89f253fa2d016ffbed)) * **reply:** implement instant edits ([38cb7d9](https://github.com/plebbit/seedit/commit/38cb7d9b6287a0f7882bb95ced72c47d29afc8b5)) * **sidebar:** add community settings button ([dbbba07](https://github.com/plebbit/seedit/commit/dbbba0732f2f35292e7ae338d2574c4d2b62f1ed)) * **subplebbit settings:** add initial UI ([f4634b6](https://github.com/plebbit/seedit/commit/f4634b645538e1e4619fcc75140839253067bfdc)) * **subplebbits:** add 'my communities' routes and tabs ([79c8682](https://github.com/plebbit/seedit/commit/79c86822c337e3a719def664b93d4fd4ce32b350)) * **subplebbits:** add initial UI ([12306a6](https://github.com/plebbit/seedit/commit/12306a68164b3fd50fe58532ce6e7340812a4c34)) * **subplebbits:** add online indicator ([e24aa06](https://github.com/plebbit/seedit/commit/e24aa066dac2c232de99451f0e5301ba2607947c)) * **subplebbits:** add page title ([1eb75fa](https://github.com/plebbit/seedit/commit/1eb75fa92a6e025ecf07bde021fd1a06e9f480bf)) * **subplebbits:** add responsive design, vote buttons, preferences button ([e1d1682](https://github.com/plebbit/seedit/commit/e1d168297cd891099d51498c86ab82ca9dd901cf)) * **subplebbits:** add settings route, header title ([91be80f](https://github.com/plebbit/seedit/commit/91be80f3e5135af244fd0a7a921301c8a786d75d)) ## [0.1.2](https://github.com/plebbit/seedit/compare/v0.1.1...v0.1.2) (2023-12-25) ### Bug Fixes * **comment tools:** close menu when option is clicked, use dropdown styling ([486e0b4](https://github.com/plebbit/seedit/commit/486e0b4e8f90fc46a547b3c97a19ec0c509f6bc6)) * **hide menu:** only close menu when hiding post ([00072bb](https://github.com/plebbit/seedit/commit/00072bb4cc2cd9541a78a97e6bbc2c356bf577dc)) * **post:** link to pending page if cid is undefined ([10ddcfe](https://github.com/plebbit/seedit/commit/10ddcfe567f784643695e687614c6817d7e4e5fb)) * **post:** set width of voting column taking into account high vote counts ([8448206](https://github.com/plebbit/seedit/commit/844820690efed4ef66726dccfad029fc26be1b57)) * **reply:** don't show long subplebbit addresses, shorten them instead ([f1c8249](https://github.com/plebbit/seedit/commit/f1c82494f18dbf2a77f3cb38d9905dcf61379903)) * **share menu:** add 'link copied' text with timeout and don't close the menu ([67ac476](https://github.com/plebbit/seedit/commit/67ac476129e24c5f593488b67d35621c3698e550)) * **share menu:** don't open for pending comments, fix share link div ([c0edbf6](https://github.com/plebbit/seedit/commit/c0edbf6633e3f06a63496520b60e8e17e7dfc5cf)) * **share menu:** remove browser outline ([ba5eca3](https://github.com/plebbit/seedit/commit/ba5eca3a411b0537ca94f1683452cad3e5b5d6e8)) * **share menu:** remove focus outline on open ([686c5b1](https://github.com/plebbit/seedit/commit/686c5b165621ab7a2e52046f574481df60d238c1)) * **sidebar:** fix undefined submit link in pending page ([e9d9fc5](https://github.com/plebbit/seedit/commit/e9d9fc5ec7b7a4d2dd0f43e3d2a2d4730135af7c)) * **sidebar:** hide title section on pending page ([853d88a](https://github.com/plebbit/seedit/commit/853d88a0b9b0b9d2438e7d4dd01caba1c2731576)) * **submit:** subplebbit address wasn't selected by autocomplete ([87fee93](https://github.com/plebbit/seedit/commit/87fee93ebf89a6daecf1ecbb7969c3b9b974a9a3)) * **topbar:** fix z-index, dropdown was behind account bar ([2573be4](https://github.com/plebbit/seedit/commit/2573be40a652e5d04470120044a17af3a6d6400f)) ### Features * add pending post view ([f451bbe](https://github.com/plebbit/seedit/commit/f451bbe744003820b1655d16d892a04daaa8f901)) * **comment tools:** add share menu with share link and links to other clients ([560a90a](https://github.com/plebbit/seedit/commit/560a90aff11024cbbb87a268b1839b34b3bae1b4)) * **comment tools:** clicking on pending comment tools links to its pending page ([0a0d96c](https://github.com/plebbit/seedit/commit/0a0d96c5acf3fbb61deb0ba42aaa53a444f3c247)) * **header:** add inbox header tabs ([1bdfe44](https://github.com/plebbit/seedit/commit/1bdfe447b897c20a58bff70f0bd0d5a1490b8663)) * **header:** add pending page header ([02199c0](https://github.com/plebbit/seedit/commit/02199c0a9046058b06031a12cc83edf9016a98e4)) * **hide menu:** show on replies and collapse reply if blocked ([f31f2b8](https://github.com/plebbit/seedit/commit/f31f2b8dbea0404a70d13e9257e41702b1eb4b7e)) * **inbox:** add filters for "comment replies", "post replies", unread ([ffcfe37](https://github.com/plebbit/seedit/commit/ffcfe37ce6ddb90e53dba7499d2007a57cc7e70c)) * **post:** redirect to post view when cid is received for pending post ([ef1b385](https://github.com/plebbit/seedit/commit/ef1b38570929f69cb8d2bb5627a2039ef4609665)) * **profile:** add functional sort by new or old ([7314db2](https://github.com/plebbit/seedit/commit/7314db28bc795c458106780ee5f7ac884e33f6f4)) * **reply:** add inbox reply design for notifications ([e7daa04](https://github.com/plebbit/seedit/commit/e7daa0488662a743cda4e4a3941df85a2829f65e)) * **search bar:** automatically focus search bar when clicked from account bar ([6ab2ce8](https://github.com/plebbit/seedit/commit/6ab2ce8c99502b70ec5333075c8dd51005c93a38)) * **sidebar:** tell user to create a community with plebbit-cli ([c484783](https://github.com/plebbit/seedit/commit/c484783a207101f75570aa7ff0203c60a2f52fa6)) ### Performance Improvements * **inbox:** filter with useCallback, don't memo result ([9f46922](https://github.com/plebbit/seedit/commit/9f46922c482cff4a6a5762370f2eab9f755d76da)) * **profile:** memoize sorting of comments ([0374c14](https://github.com/plebbit/seedit/commit/0374c1404c903cf39120a4a256e238be233aaf29)) ## [0.1.1](https://github.com/plebbit/seedit/compare/v0.1.0...v0.1.1) (2023-12-20) ### Bug Fixes * **account settings:** do not remove signer ([a3408cc](https://github.com/plebbit/seedit/commit/a3408cc0d92761bd8125d03ae051ea3cb181e3a8)) * **electron:** don't spam user with ipfs errors ([795d390](https://github.com/plebbit/seedit/commit/795d39098a972630064e8a8df22a9ab01b1dec89)) * **post:** fix state string placement ([efa6fef](https://github.com/plebbit/seedit/commit/efa6fef58ab3eb7abc6c0f2525283438b26476d5)) * **profile settings:** signer can be undefined ([b93a72e](https://github.com/plebbit/seedit/commit/b93a72ebb5e4f698ebe720fd12169cfeb2c874f9)) * **reply:** show parent of pending reply ([81efaa7](https://github.com/plebbit/seedit/commit/81efaa76954f79ba46add059ebeadbdad5bdc643)) ### Features * **reply form:** allow posting replies with a link and no content ([158aefe](https://github.com/plebbit/seedit/commit/158aefe13cd49a5cd4aa262a8ec6f68c6983cddc)) # [0.1.0](https://github.com/plebbit/seedit/compare/b902094f009e39db9176b70d07eddf427e4e655e...v0.1.0) (2023-12-18) ### Bug Fixes * accidental global styling rule ([beadb2c](https://github.com/plebbit/seedit/commit/beadb2cc97a9ca9e8cceeeb4b271fdb64426db84)) * **account bar:** hide submit button on desktop ([8e80474](https://github.com/plebbit/seedit/commit/8e80474303625e0180dd8656eb5ae19067889dd8)) * **account bar:** link to subplebbit-specific submit route ([13f50a7](https://github.com/plebbit/seedit/commit/13f50a74945fe58042d90bb9650164e3121612ef)) * **account bar:** search bar text overlapped icon ([c21dd56](https://github.com/plebbit/seedit/commit/c21dd5606fb1af18570b43a318d25647e288462a)) * **author sidebar:** don't render karma as NaN ([15e8e8b](https://github.com/plebbit/seedit/commit/15e8e8b4aa3b1e85c9b9aa94cb63d72a984e0271)) * **author sidebar:** don't show friends and block if it's the user's own profile ([f928a33](https://github.com/plebbit/seedit/commit/f928a33899d009cf1c98da0a07835f557e3e5966)) * **author:** fix loading string and add ellipsis animation ([78498f7](https://github.com/plebbit/seedit/commit/78498f7b2086150008ac31ac029760718e92a8c6)) * **author:** remove unnecessary redirect to profile ([5491460](https://github.com/plebbit/seedit/commit/54914600ce537de727eccd6e9bf5be50f3ea9728)) * **comment tools:** fix mod tools publishing logic ([17b5913](https://github.com/plebbit/seedit/commit/17b59135a9bd274882a70960caa3d53cdedb334e)) * **comments buttons:** add media rule for mobile ([3164fef](https://github.com/plebbit/seedit/commit/3164fefbcc748a635b3c59b977dfbbe2e653b511)) * **comments buttons:** fix flexbox positioning ([7ee59b9](https://github.com/plebbit/seedit/commit/7ee59b99519bedfc809077aab0e2fff9b9f63565)) * **comments:** wrong useeffect logic ([06d79d8](https://github.com/plebbit/seedit/commit/06d79d8d77ba49b186cd31fd9c7fda65a77d89fd)) * **embed:** wrong srcdoc class syntax prevented some embeds from loading ([f6f0089](https://github.com/plebbit/seedit/commit/f6f0089413897df853f7464faaa7e7ea7094b087)) * **expando:** add line breaks ([4618e6e](https://github.com/plebbit/seedit/commit/4618e6ee02d8b58e25a1ca5b601750c1ca56ea1b)) * **feed post:** add pluralization of reply count ([8ffbe69](https://github.com/plebbit/seedit/commit/8ffbe69866f0c461bc909d8b0215a99c2a5bc388)) * **feed post:** add try block for link hostname ([6f274ed](https://github.com/plebbit/seedit/commit/6f274ed53fe2410df8f1b4751358022380608f3c)) * **feed post:** don't render link url if it's undefined ([7440fe0](https://github.com/plebbit/seedit/commit/7440fe06d9d9acd38ad9bab65e2fa3e960bd4629)) * **feed post:** enable external embed links ([fc9a865](https://github.com/plebbit/seedit/commit/fc9a865958f75219012ab37b10c9ab716c9a1453)) * **feed post:** only show hostname of links ([2147c96](https://github.com/plebbit/seedit/commit/2147c96a9beb3221c8a08ab92f9559a4c10f0538)) * **feed post:** remove 'thumbnail' alt onError for img elements, prettify ([959d5b3](https://github.com/plebbit/seedit/commit/959d5b3f3f1418542a27d668027fa37b28dc0eb7)) * **feed post:** remove www in links ([04b6fc2](https://github.com/plebbit/seedit/commit/04b6fc2bb520cd5d4a9f4d7944c8e902f4942799)) * **feed post:** use Comment type from API in props interface ([1618108](https://github.com/plebbit/seedit/commit/1618108f6f3ef6db2d9b1a8a893375bf81ebdf14)) * **feed post:** use subplebbit.shortAddress instead of slice ([0fd9fbb](https://github.com/plebbit/seedit/commit/0fd9fbb845e6b139d2360510de337bf887f6b4fd)) * **header:** add functionality to profile view buttons ([be3a555](https://github.com/plebbit/seedit/commit/be3a555ff355097623c3997be182d98586f3bc6a)) * **header:** add responsiveness ([0d433ca](https://github.com/plebbit/seedit/commit/0d433caebeec929e7787eceefcfaa82c789c5c6b)) * **header:** adjust mobile positioning ([d1cf663](https://github.com/plebbit/seedit/commit/d1cf663bcd0e7d3c670302cd0ca34207d9c58099)) * **header:** auto select hot short at first load ([bf8add3](https://github.com/plebbit/seedit/commit/bf8add3106a7c6021b36b97ef427de0c0ebbd504)) * **header:** consistent mobile height and padding ([4b63130](https://github.com/plebbit/seedit/commit/4b631308099dcd19546215e9ea1cbcc6a4d9af05)) * **header:** don't select sort type in mobile about page ([6194130](https://github.com/plebbit/seedit/commit/6194130d72ee487e3192621bcca42eecbab93a42)) * **header:** fix buttons positioning, header title size, container height on mobile ([6a69f4e](https://github.com/plebbit/seedit/commit/6a69f4e9e85143277daabac70f86631cde455b48)) * **header:** fix padding, cursor ([908f001](https://github.com/plebbit/seedit/commit/908f001a20a48c4549876c2a4bc52fc06227622c)) * **header:** fix styling z-index, positioning on different languages ([f1e4ed9](https://github.com/plebbit/seedit/commit/f1e4ed9804505c42747507d5cff5c2e27a0363cd)) * **header:** remove "top" sort ([777d4ee](https://github.com/plebbit/seedit/commit/777d4eee707d33686cee2f6e94beb62feafa0737)) * **header:** use transform for pixel decimals ([9aa9d4e](https://github.com/plebbit/seedit/commit/9aa9d4ed0a67c6ab4a5403f7696ccb095aa87c82)) * **header:** wrong assets url for desktop ([9c27746](https://github.com/plebbit/seedit/commit/9c277460b2d55220c00d4f7bd1879cd241cb4a03)) * **home:** add event.preventDefault() for links, adjust styling ([7c1962a](https://github.com/plebbit/seedit/commit/7c1962ad6b25603b924a778aac95c16184cc2009)) * **home:** delay feed rendering until all subscription addresses are fetched, virtuoso seemed to glitch ([7dfa624](https://github.com/plebbit/seedit/commit/7dfa6240e8bdd658376c52fefdf2c29969a23c8a)) * **home:** set max width for statestring for wrap ([df6ad98](https://github.com/plebbit/seedit/commit/df6ad98b2b1e426bb6dd3e022811ec3b2abbc216)) * **label:** wrap for padding, add failed label to feed posts and pending posts, darker colors for dark mode ([1816c30](https://github.com/plebbit/seedit/commit/1816c30a136e3b2f2388e29b4fc8b28fe25e3052)) * **loading ellipsis:** sometimes would display misaligned ([d599b49](https://github.com/plebbit/seedit/commit/d599b49ba8cfd716bd706cfe7f8cd3a7ce95d165)) * **post tools:** cid was rendered as label ([68e1d0b](https://github.com/plebbit/seedit/commit/68e1d0bd2d3c807a93d027ff2a68da861766c5e3)) * **post tools:** default replycount to zero if isNaN ([bab7092](https://github.com/plebbit/seedit/commit/bab7092f5052270e657cf25521a0b59a67f81df8)) * **post tools:** disable reply button for pending replies ([d959093](https://github.com/plebbit/seedit/commit/d959093be0669907d1f1c913204e1c9a815a42f9)) * **post tools:** fix labels spacing ([b32a553](https://github.com/plebbit/seedit/commit/b32a55375dc78a4197b87b327e50c406516fd83f)) * **post tools:** hide reply button on pending reply ([32b557d](https://github.com/plebbit/seedit/commit/32b557dc6117f37231fb66550f3b4fa82a9f084f)) * **post:** add undefined type to cid to show pending label ([8363bd9](https://github.com/plebbit/seedit/commit/8363bd97a914ca6e95abd142534bfea8d197394b)) * **post:** clicking on post title should only link to post page ([3c4d5f4](https://github.com/plebbit/seedit/commit/3c4d5f4c6981aa335f405dd86df7aa8f776ef24e)) * **post:** displayName should link to user, using full address ([96fd07e](https://github.com/plebbit/seedit/commit/96fd07e4bcaaf79d65c59a7bcf13b5aa4079a4cc)) * **post:** don't display "posted to p/" info in subplebbit view ([aa867f4](https://github.com/plebbit/seedit/commit/aa867f470573a285e7ef78f974f54c47514bbae0)) * **post:** fix isInPostView including pending view ([b1acbae](https://github.com/plebbit/seedit/commit/b1acbaefe2e5f5c9949564e3a5d131223ea052d3)) * **post:** fix overflow for verified address css animation ([ec19e72](https://github.com/plebbit/seedit/commit/ec19e7288ba2ad25be177756b1370af3aa346579)) * **post:** fix undefined ([84e836a](https://github.com/plebbit/seedit/commit/84e836a6ddb18d9aac995ae152a1537b47731f6a)) * **post:** fix undefined ([63310c7](https://github.com/plebbit/seedit/commit/63310c74989765bb3a47493ce13d77afaaae995b)) * **post:** footer isn't needed ([17f4533](https://github.com/plebbit/seedit/commit/17f453347d137a9965fddfccb9327740bc2db32a)) * **post:** handle undefined in document title ([16bcb7a](https://github.com/plebbit/seedit/commit/16bcb7a838f9d490332b51ece84b246804af7123)) * **post:** handle undefined values with empty strings ([d7fb21e](https://github.com/plebbit/seedit/commit/d7fb21e7a5ee9c66cf8c4b45872ef1372889e5e7)) * **post:** max title length is 300 chars not 90 ([c95672d](https://github.com/plebbit/seedit/commit/c95672d31b38287835dfc4c44418770f66fc0a48)) * **post:** overflow clip bugs out on webkit ([eb2f293](https://github.com/plebbit/seedit/commit/eb2f293e92105949ae4005e188dd404ad1713100)) * **post:** remove pending reply count ([c882679](https://github.com/plebbit/seedit/commit/c8826796daa5e60e222cf11a34a6893b1ccc1c38)) * **post:** remove unnecessary margin, might glitch virtuoso ([29d22ec](https://github.com/plebbit/seedit/commit/29d22ec0cd2a6475a9a8d200922d149e8b38f91a)) * **post:** state typo caused wrong expando behavior ([9cfa43d](https://github.com/plebbit/seedit/commit/9cfa43d100ff8880c55b3480c8baed9bcf6c45c2)) * **post:** unset overflow on webkit because it adds unwanted margin ([31dc1d2](https://github.com/plebbit/seedit/commit/31dc1d2a0c2be146ac90f974a83ba83a925fc2e3)) * **profile sidebar:** check length of object keys to render conditionally, render 'no posts', prettify ([afa2d61](https://github.com/plebbit/seedit/commit/afa2d610c595d7cb2b05b90c8917625be6516c88)) * **profile sidebar:** default account age to date now, conditionally render mod list ([fd6f4a8](https://github.com/plebbit/seedit/commit/fd6f4a8c5b8ee64917c3ef6470a4aeccca291118)) * **reply form:** textarea overflowed on mobile ([3285e7d](https://github.com/plebbit/seedit/commit/3285e7dd2faf567a250c049703ba6f465a5b8802)) * **reply:** enable author page link, fix undefined ([b4e0722](https://github.com/plebbit/seedit/commit/b4e072249452ba6c5f549f9e7ba823e476b17aec)) * **reply:** ensure failed label only renders if state is failed ([8983b70](https://github.com/plebbit/seedit/commit/8983b702343e3ca4b797f2a2085ec1dd2d396549)) * **reply:** key is better as string of index and cid ([200e5ba](https://github.com/plebbit/seedit/commit/200e5ba1793fb6681977b0b767f65ea090cd4f96)) * **reply:** missing prop ([8681a7e](https://github.com/plebbit/seedit/commit/8681a7e3d797ff5efd7660de09ec5238d0319ece)) * **reply:** only show state string if state is pending ([71c239f](https://github.com/plebbit/seedit/commit/71c239fa1d7208cb573443393f5eb3ccbebcb68b)) * **search bar:** fix warning ([7c465f5](https://github.com/plebbit/seedit/commit/7c465f5d9a5633365b67222b96df70a065e8712c)) * **settings:** adjust logic to check if crypto address is resolved to another account, fix styling ([c1e6731](https://github.com/plebbit/seedit/commit/c1e673116315589b6fb51f7952b74ff7541b9e9f)) * **settings:** handle createAccount async to switch automatically to new account ([f875f27](https://github.com/plebbit/seedit/commit/f875f2784481543ee2899d795b5f873a0f4fcb8e)) * **settings:** misplaced media rule ([fe62aa3](https://github.com/plebbit/seedit/commit/fe62aa3ec3d81cc67a483cac3821ddfc7c64f86b)) * **settings:** wrong account value for alert ([483dbdc](https://github.com/plebbit/seedit/commit/483dbdca57dd898817c37af64964dabc153a2d46)) * **sidebar:** adjust margin if sub has no title ([f0f6d1a](https://github.com/plebbit/seedit/commit/f0f6d1a06540bc34395283947419d935abcf11e9)) * **sidebar:** prevent linking to inexistent route ([b61a15d](https://github.com/plebbit/seedit/commit/b61a15d554bd2b9b79cd422b56881c0e35d4d298)) * **sidebar:** react fragment caused key warning ([78ddf0c](https://github.com/plebbit/seedit/commit/78ddf0c5a84ff6e5cf57b037f30852592edd9e3e)) * **sidebar:** use short address for sub creator, only consider owner as creator ([beae439](https://github.com/plebbit/seedit/commit/beae43934cc429e4706ca36e0d446a52fb1e8483)) * **sort buttons:** add media rule for mobile ([310a215](https://github.com/plebbit/seedit/commit/310a215dbaf30e69aeb7a54dc1c6c496c77d5e3d)) * **sticky header:** don't run sticky menu animation on mobile overscroll behavior ([cfef4d9](https://github.com/plebbit/seedit/commit/cfef4d94703661378899fc43d8d00d932dd9001c)) * **sticky header:** fix overscroll behavior bug, remove debug logs ([8192504](https://github.com/plebbit/seedit/commit/81925047966941dd1e768df35a10c1bc65e0b8aa)) * **sticky header:** hide on desktop ([2a64d4a](https://github.com/plebbit/seedit/commit/2a64d4acbb0639829a53e7e30dbf425330057bea)) * **style:** body background color defaulted to light on dark mode when scrolling fast ([bb0291e](https://github.com/plebbit/seedit/commit/bb0291e686aeeb3b2573b904188d6496be0fe583)) * **submit:** default selected subplebbit title if not found, add margin ([d88f6e3](https://github.com/plebbit/seedit/commit/d88f6e36488b4c966404f17494efc0bd0bfd0b14)) * **submit:** define subplebbitAddress store if automatically filled ([960a2ea](https://github.com/plebbit/seedit/commit/960a2ead2f3b27aa758d37aa140f46b996f14989)) * **submit:** fix type and empty strings instead of undefined ([d3f4ada](https://github.com/plebbit/seedit/commit/d3f4ada96e38aae20a2f7475cb6b8792309d8a39)) * **submit:** handle async state of publishComment ([452029f](https://github.com/plebbit/seedit/commit/452029f7e5ddbf42e8cc111f0bd4e394fe8a042f)) * **submit:** improve logic ([a6d864d](https://github.com/plebbit/seedit/commit/a6d864d9687e08ec1461063827264927ac5c960a)) * **submit:** scroll to top at first load ([e72d6ab](https://github.com/plebbit/seedit/commit/e72d6ab4c109e04068c82aaaf864c651d2ad0435)) * **submit:** selecting a sub address should show its rules ([b54f00a](https://github.com/plebbit/seedit/commit/b54f00ace4a8f991d738749b3d6eb72bbd342a4f)) * **submit:** selecting a sub address shouldn't link to it, hide overflow ([d9c24ad](https://github.com/plebbit/seedit/commit/d9c24ad157a323ff6aba29c83825abcbd8df2728)) * **submit:** selecting a subscription wouldn't show its rules ([f9f622a](https://github.com/plebbit/seedit/commit/f9f622ac6ebbd0314fe784e5600a42711f1bc77c)) * **submit:** use onChange for publishComment store, fix undefined, fix dropdown conditional rendering ([8cb421b](https://github.com/plebbit/seedit/commit/8cb421b56ecc72a8194ad4a68328d260d86f2cf5)) * **subplebbit:** don't render ellipsis for failed string ([a14a93d](https://github.com/plebbit/seedit/commit/a14a93da03aa18ebb6a82d706ec3229d2759c23d)) * **subplebbit:** state string should wrap next to sidebar ([4f07474](https://github.com/plebbit/seedit/commit/4f07474f7081817a97d18700eb0ee233a3d013a2)) * **themes:** don't style placeholder, it bugs out in different browsers ([e66280c](https://github.com/plebbit/seedit/commit/e66280c02f0dfee081da1ae802781f423eccd635)) * **time filter:** close dropdown when choice is selected ([fc29c1e](https://github.com/plebbit/seedit/commit/fc29c1e9bdc87ce9c930eb68990db82ffc53e071)) * **time filter:** wrong ref ([b0418f4](https://github.com/plebbit/seedit/commit/b0418f45282cbc487f024fc565d57a076d468047)) * **topbar:** classname typo ([46e12a5](https://github.com/plebbit/seedit/commit/46e12a578f267e386ae1f068bc33a9e5cc92d556)) * **topbar:** clicking a subscription should close the dropdown ([805b42a](https://github.com/plebbit/seedit/commit/805b42a923c279bcce9e0b89a78bf32003727590)) * **topbar:** close dropdown when choice is selected ([c956f98](https://github.com/plebbit/seedit/commit/c956f980770160d496f74edc657354af85e09188)) * **topbar:** hide scrollbar on chromium and webkit ([e7e696f](https://github.com/plebbit/seedit/commit/e7e696f1832d96b605f9ae382c9119fb1768b99b)) * **topbar:** highlight home button only in homepage ([70be116](https://github.com/plebbit/seedit/commit/70be116798d2cc0d5c8187fdc4a3de083e228191)) * **topbar:** prevent clicking the subs dropdown if there are no subs ([1e6fdff](https://github.com/plebbit/seedit/commit/1e6fdfff27383c555e64b7aa172cebfdf0fff3fe)) * **topbar:** subscriptions didn't highlight on hover ([5d2b20d](https://github.com/plebbit/seedit/commit/5d2b20d3b228789fe42570367dfbd8bfb6464bc3)) * **topbar:** tell user if subscriptions are empty ([8a3b139](https://github.com/plebbit/seedit/commit/8a3b139c55525ae37eb601c629f4185f3b225b9e)) * **topbar:** use shortAddress from API for subscriptions ([1648107](https://github.com/plebbit/seedit/commit/16481074f34df85d1ab943f533c358120e2fe160)) * **topbar:** wrong ref ([53d031e](https://github.com/plebbit/seedit/commit/53d031e72b5272967c118456f4fa52e89d1fc4e9)) * **topbar:** wrong z-index ([dc8e7da](https://github.com/plebbit/seedit/commit/dc8e7da5867335eca9e56073fdd9176a65f03636)) * **use-theme:** forgot to default to light theme, not dark ([3140f82](https://github.com/plebbit/seedit/commit/3140f829bd4f772cdcf457583ec04a7ef42f4893)) * **utils:** remove broken bitchute patternThumbnailUrl ([28705cf](https://github.com/plebbit/seedit/commit/28705cf25d493846732ee3b1b23de4f285c5d31e)) * **utils:** remove unnecessary log ([cff13e5](https://github.com/plebbit/seedit/commit/cff13e5572c069de83de76feb843f48a42733307)) * **view utils:** check timefilterkey when detecting home view ([f1204a7](https://github.com/plebbit/seedit/commit/f1204a77f122c9fe2fab0a8213da52b031c7ec90)) ### Features * **about:** add about view for sidebar on mobile ([b1c4b9b](https://github.com/plebbit/seedit/commit/b1c4b9ba84986b8f16674afa8eb82d73b7da8030)) * **about:** add post-specific about page with post stats ([eaa4d75](https://github.com/plebbit/seedit/commit/eaa4d7513ebd99cf9b5841103cc3d67066cafa89)) * **account bar:** add dropdown with arrow next to username, username is link to user page ([ca939cf](https://github.com/plebbit/seedit/commit/ca939cf42c0ada83eb0c59941cf2d617d893f023)) * **account bar:** add functionality to search bar ([cf7584b](https://github.com/plebbit/seedit/commit/cf7584b42c00138ef48da70a76c5f9aa50e4b746)) * **account bar:** add search bar to connect to a sub ([cc9a040](https://github.com/plebbit/seedit/commit/cc9a040d7c5ec3a0633a729941ab7bc352a7df04)) * **account bar:** change submit link depending on location ([bc2dae7](https://github.com/plebbit/seedit/commit/bc2dae703a4947f364438a416ba5a897fcba1cfb)) * **account bar:** clicking the language name switches the language, for testing ([12afc82](https://github.com/plebbit/seedit/commit/12afc828fd8bbc419da01c5106a2b49d63f3dd36)) * **account settings:** export or import account as json file ([e533317](https://github.com/plebbit/seedit/commit/e5333178a1b34c52c61ad9252152dc0e22ec29a0)) * add complete p/all view ([cd5b617](https://github.com/plebbit/seedit/commit/cd5b617124d28f5ebf3aacd09173f2157a16e924)) * add functional author page ([3c3a4f5](https://github.com/plebbit/seedit/commit/3c3a4f5e767ff618cdb17e7a148930e913f19e81)) * add inbox view, to be tested with publishing ([e90115b](https://github.com/plebbit/seedit/commit/e90115b7486b23a5fb65bed8a03150cabebe1bf5)) * add profile view ([5cd1c03](https://github.com/plebbit/seedit/commit/5cd1c03cc55cdfaf8a56e5402f0db0f31d1f16ca)) * **app:** add routes, comments view, topbar as layout route to prevent it from rerendering ([2cda0dc](https://github.com/plebbit/seedit/commit/2cda0dcdcff62cc0efe4d69b599f50ba31dcb639)) * **app:** update routes ([330c88c](https://github.com/plebbit/seedit/commit/330c88c50d3429608068c636d60bdec66ca271ae)) * **author sidebar:** add author address ([ae319cf](https://github.com/plebbit/seedit/commit/ae319cfe5a3c7a1b4a91395dc0736868741f2d41)) * **author sidebar:** add author post karma estimation ([73c9902](https://github.com/plebbit/seedit/commit/73c99029a46a7a62c6e1763ca9870b63efd3af69)) * **author sidebar:** add block/unblock user ([b79c725](https://github.com/plebbit/seedit/commit/b79c725a477611298e644e44ad2b0d0d275b47a5)) * **author sidebar:** add moderating list for authors, user displayName ([2154e35](https://github.com/plebbit/seedit/commit/2154e3582372d94036e1e7a971fa8cfa9d9aa40d)) * **author sidebar:** add subscribe (friends) button ([0d65f58](https://github.com/plebbit/seedit/commit/0d65f58da7fb46bf1bc2214606fd9fe16b1bb237)) * **author sidebar:** add to author and profile mobile views on top of posts, remove about tab ([1e07ce2](https://github.com/plebbit/seedit/commit/1e07ce2ff99be8acbcc9c507a0da5e450c8ba9d4)) * **author:** add 'comments' (replies) and 'submitted' (posts) tabs and feeds ([9bfa9fe](https://github.com/plebbit/seedit/commit/9bfa9fe2ef27e0305d5947174faf00e3c2427396)) * **author:** add single reply rendering ([bf964c5](https://github.com/plebbit/seedit/commit/bf964c56a6f1ba8cf9ab410dc6cd946f9bc0666b)) * **author:** redirect to profile if author is account ([422ef01](https://github.com/plebbit/seedit/commit/422ef01a9680fd608f9af41daa55594957791c1b)) * **challenge modal:** add functional challenge modal ([d3e8e44](https://github.com/plebbit/seedit/commit/d3e8e44023bb7d76b59d47074b226aa450e43a43)) * **challenge modal:** add title and subtitle to identify post and community ([14cbeb3](https://github.com/plebbit/seedit/commit/14cbeb3825b30b418d4339e2b4fcadcefb3f9dc9)) * **challenge modal:** preview publication content also for votes ([304c313](https://github.com/plebbit/seedit/commit/304c3136b667598ea466762101a3b96345fac29d)) * **comment tools:** add hide tools ([533412f](https://github.com/plebbit/seedit/commit/533412f5174bc03433827ef5b4c2e4f3041dea83)) * **comment tools:** make permalink and context buttons partly functional by linking to the post ([7198e0b](https://github.com/plebbit/seedit/commit/7198e0b5f39afae058c8df95f1f3fa5b1727d4aa)) * **comments:** add comments view ([179d2f5](https://github.com/plebbit/seedit/commit/179d2f54fd12752c26c0065eb3bc2e6c0aa99962)) * **comments:** add replies including nested and reply media ([bf296b6](https://github.com/plebbit/seedit/commit/bf296b64d1ca3c6b5b769fe483afe9f1846331bd)) * **comments:** add textarea section ([832001b](https://github.com/plebbit/seedit/commit/832001bed29058692574298748b8f6c24c0b0407)) * **comments:** add thread op in comments with expanded media and text, no thumbnail ([f140750](https://github.com/plebbit/seedit/commit/f1407502986d4612d9beb91630d65ccb642d8493)) * **electron:** add electron ([b6d5285](https://github.com/plebbit/seedit/commit/b6d5285e2077af67334489374b24dbddaee6596e)) * **feed post:** add audio embed ([2fe0309](https://github.com/plebbit/seedit/commit/2fe03093478ea2c401d2012b4dfab5122f4ba462)) * **feed post:** add buttons ([cac7d19](https://github.com/plebbit/seedit/commit/cac7d19e6d56eb49777586174cafcd8ee40ab535)) * **feed post:** add expandos for posts text content and related buttons ([86331eb](https://github.com/plebbit/seedit/commit/86331eb99abc41dbb0feb80e5753cd36570e17c9)) * **feed post:** add flair ([9e26af4](https://github.com/plebbit/seedit/commit/9e26af485f3535a0d4e3fba77bf66cf992027a2d)) * **feed post:** add iframe embeds ([88c2e1d](https://github.com/plebbit/seedit/commit/88c2e1dc77d4b8b125bffb985bea5d5efc3f559e)) * **feed post:** add images and videos with dimensions from API and wrapper ([1419306](https://github.com/plebbit/seedit/commit/141930615e87e18abd96924a5de2c99c96ec95f5)) * **feed post:** add link contents after scroll optimization ([ac046d5](https://github.com/plebbit/seedit/commit/ac046d511ea9629456a090fd92d6512600992e6d)) * **feed post:** add posts to homepage, initial design, optimized scrolling for virtuoso ([452e06d](https://github.com/plebbit/seedit/commit/452e06dfce8d130779259268dcb83ce0aab50f11)) * **feed post:** translate post UI ([0d08489](https://github.com/plebbit/seedit/commit/0d084891a01861453ff31d9ed95923276930c598)) * **feed post:** translate timestamp ([ef6091c](https://github.com/plebbit/seedit/commit/ef6091ca6cea714d6a0f1b5b29b744baa1b0aa69)) * **header:** add account bar with username ([4e8843b](https://github.com/plebbit/seedit/commit/4e8843ba06d6a1750e2c08ede856b9ecfcd1e463)) * **header:** add horizontal scrolling for overflowing tabs on mobile ([6f08efe](https://github.com/plebbit/seedit/commit/6f08efe5628fccf7f3148573560482e4f32d8317)) * **header:** add settings header, add settings view util ([a3bd954](https://github.com/plebbit/seedit/commit/a3bd954f7fa0510fa34a64266a885bb0d754b7ba)) * **header:** add subscribe button for mobile ([5c0306e](https://github.com/plebbit/seedit/commit/5c0306e23dae600926368de650a4f85f83bcc170)) * **header:** clicking subplebbit avatar takes to subplebbit home ([50a570f](https://github.com/plebbit/seedit/commit/50a570ffbbcf17a6c3006e5529cc49585a528ef9)) * **header:** implement profile view like subplebbit, showing avatar instead of logo ([ad0a955](https://github.com/plebbit/seedit/commit/ad0a955b91fdc68f2f07aec8f581f50af5e3f7f4)) * **header:** subplebbit avatar replaces seedit logo ([0c87e13](https://github.com/plebbit/seedit/commit/0c87e130b1cc8206a7bf0643e469cd15712d8644)) * **header:** use author nft avatar instead of app logo ([91795cf](https://github.com/plebbit/seedit/commit/91795cf32ba9fb55a3b40b5249a2d34ef79305a9)) * **home:** add loading state string for feed ([a3777df](https://github.com/plebbit/seedit/commit/a3777dfd7bc952d698c4d368f2d4774449445582)) * **home:** add sidebar ([138feb1](https://github.com/plebbit/seedit/commit/138feb18e8ed1f82be984fab317efb082d688350)) * **home:** add subscriptions to feed ([4425676](https://github.com/plebbit/seedit/commit/4425676207d9d743e944692f30b9eee2bcaae66c)) * **home:** add top bar with sub lists ([7bb6e48](https://github.com/plebbit/seedit/commit/7bb6e48c90b513852059a06b228192d47f3276af)) * **home:** added header with logo and sort types ([b902094](https://github.com/plebbit/seedit/commit/b902094f009e39db9176b70d07eddf427e4e655e)) * **hooks:** add use-challenges ([1dd1d8c](https://github.com/plebbit/seedit/commit/1dd1d8ca874c282ca11d4182465ed9eaf63c0a61)) * **inbox:** add unread overlay and initial view styling ([82ae452](https://github.com/plebbit/seedit/commit/82ae452e9dd973e14d19e9dd21419f2c8273c657)) * **label:** add failed label for replies, improve position ([9885553](https://github.com/plebbit/seedit/commit/98855537fc2e4ac23b957ef3a6609406ec20becb)) * **pending post:** add pending post component and route ([5ff9d30](https://github.com/plebbit/seedit/commit/5ff9d30821b280c96e8987838c827bc0ef1dccca)) * **pending post:** add state string ([07145fa](https://github.com/plebbit/seedit/commit/07145fa3e1330068a769c9e90e5bb01dfd85414a)) * **post tools label:** add spoiler label next to post tools buttons ([64087f6](https://github.com/plebbit/seedit/commit/64087f611f0d1d86d703c702e0dace2dbc9fc28a)) * **post tools:** add functional mod tools ([8d80863](https://github.com/plebbit/seedit/commit/8d80863991695ce4232175db12deace3b666f259)) * **post tools:** add functional share button ([ea1a201](https://github.com/plebbit/seedit/commit/ea1a201493e883b3e342da30da9deb342422974b)) * **post tools:** add pending label ([ea6202e](https://github.com/plebbit/seedit/commit/ea6202ededc9b775955675843aa9c9d369f6579f)) * **post:** add displayName to post cards ([f149c0d](https://github.com/plebbit/seedit/commit/f149c0d00f7decf88b157fe73d9c953b6cd2a923)) * **post:** add functional upvote and downvote ([c2d2540](https://github.com/plebbit/seedit/commit/c2d25409c0a87311558214ba5c779495b47e8369)) * **post:** add hidden post ([5dd66e7](https://github.com/plebbit/seedit/commit/5dd66e78ce44ed74c7ed4f4afd62a7d2b7c5e273)) * **post:** add loading state string ([f6d3a70](https://github.com/plebbit/seedit/commit/f6d3a70c7a7cecaa44c9c6fcf169fce5e6bb3ace)) * **post:** add moderator role to post card with colors ([56befbf](https://github.com/plebbit/seedit/commit/56befbf4e9b0493e58459ada56930c12c7ffd8e6)) * **post:** add pinned style and "announcement" tag ([f41fe07](https://github.com/plebbit/seedit/commit/f41fe071e4807a9ca012fa034c7b6480584c0d2b)) * **post:** add spoiler to reply form, rename translations, ([4d6d8c0](https://github.com/plebbit/seedit/commit/4d6d8c0ce8aa4b19f40c4e714245f8b00d46e6c1)) * **post:** add url field, fields placeholders, translated ([1f8dc0e](https://github.com/plebbit/seedit/commit/1f8dc0ef957f345cfdbe7a487d02639a06fd9387)) * **post:** clear textarea after publishing a reply ([fb4987a](https://github.com/plebbit/seedit/commit/fb4987a33b87570fff249044dcd90bb8013f5e67)) * **post:** clicking on post title in comments view redirects to link if defined ([362c8fb](https://github.com/plebbit/seedit/commit/362c8fbce3ce53c6a81478457286f5b93ee7ee11)) * **post:** clicking on post title redirects to link if defined, else to the post page ([035d0d9](https://github.com/plebbit/seedit/commit/035d0d9ab08240c00173f8f6123b5bcc1d55acf0)) * **profile settings:** return with alert if crypto address input doesn't include tld ([bda0937](https://github.com/plebbit/seedit/commit/bda0937f6b0b675a40b7380987576b18b166c312)) * **profile:** add 'comments' (replies) and 'submitted' (posts) tabs and feeds ([7a339fe](https://github.com/plebbit/seedit/commit/7a339feb1e5071b666bed91868c5ea78b60e7cae)) * **profile:** add lastVirtuosoState ([d51183f](https://github.com/plebbit/seedit/commit/d51183f709c2296a3b0ed1251db04ca1a6828a53)) * **profile:** add replies to overview feed with parent link ([f71b749](https://github.com/plebbit/seedit/commit/f71b74947c3e7f8228f0586808a4e64366792a82)) * **profile:** add sidebar, about page, styling, header link ([3c919d7](https://github.com/plebbit/seedit/commit/3c919d74ecdaed2d2da6e07efbd2d56d17d05870)) * **profile:** add upvoted and downvoted views ([af2c6b6](https://github.com/plebbit/seedit/commit/af2c6b6e4de6e2e8dd815dbf6641857959ddb5e2)) * **reply form:** add functional reply form component with dynamic rendering for replies of replies ([90499a3](https://github.com/plebbit/seedit/commit/90499a3bc8473cf3439e1ab509cb2958219246b9)) * **reply form:** add options button to show or hide spoiler and url fields ([a4a93a8](https://github.com/plebbit/seedit/commit/a4a93a8ce3dd815015dac6cf42285288dae75710)) * **reply form:** automatically focus the textarea when replying to a reply ([9e104b0](https://github.com/plebbit/seedit/commit/9e104b0ce1c52e62fbc038ae75f8884027be5ed6)) * **reply:** add depth to pending replies ([470a5d6](https://github.com/plebbit/seedit/commit/470a5d624d25fcc832b9d1e8b8bf99abc127ca9f)) * **reply:** add flairs ([8c6f597](https://github.com/plebbit/seedit/commit/8c6f597e87c87e77063bee8ba9322c1ded72c7c1)) * **reply:** add functional upvote and downvote, ensure they don't run for pending comments ([7e4e579](https://github.com/plebbit/seedit/commit/7e4e57965a7d7790aedda9cfc33ae237eb0c5722)) * **reply:** add mod roles and colors to reply card ([4311491](https://github.com/plebbit/seedit/commit/4311491793ad737c8d017e991131e5b90dc5b31b)) * **reply:** add state string to pending replies ([0bb9cfb](https://github.com/plebbit/seedit/commit/0bb9cfba9a5e1c054c891394006d9c8c7d944e74)) * **reply:** click to enlarge effect for images, right/left click difference (route/media link), conditionally rendered expand button and text link for iframe/webpage types ([d729e2d](https://github.com/plebbit/seedit/commit/d729e2d2dee66d917b167ecd2820b03d38402be0)) * **reply:** collapse replies and show children counter ([755efd6](https://github.com/plebbit/seedit/commit/755efd665a78411fd60e2b57f8f75050a9863ad1)) * **reply:** display link embedded in reply above its content, keep embed button ([49d1a32](https://github.com/plebbit/seedit/commit/49d1a32dfb618210788cf715199bb20da9eddd02)) * **reply:** if removed, change the content to "[removed]" ([5d34625](https://github.com/plebbit/seedit/commit/5d346254bf44a5021d819edbf22d0da93545eb7f)) * **reply:** implement vote score, translated ([7873689](https://github.com/plebbit/seedit/commit/7873689ef70661485e0f306e22f637145146cd97)) * **reply:** show cid for reference, and add u/ to user address for consistency ([6d0cbd2](https://github.com/plebbit/seedit/commit/6d0cbd29deb9f1568531fd9875bb8b87884c9516)) * **reply:** use single reply layout for author page, with full comments button and link to OP ([ce74a60](https://github.com/plebbit/seedit/commit/ce74a60708cd726266c0aea13a17d8a21cb04ba7)) * **search bar:** on mobile, hide when clicking outside of it ([dbb1da1](https://github.com/plebbit/seedit/commit/dbb1da194f6a40c005f2a5ca0ddd5d093e5d0ab3)) * **search bar:** show animated expando box when clicking search bar for multiple search functions ([9780f05](https://github.com/plebbit/seedit/commit/9780f0529b3e33349b76c46b7a100ed190f69978)) * **settings:** add functional crypto address setting with resolve check ([1e1fd24](https://github.com/plebbit/seedit/commit/1e1fd245c30b268311710aca1342df3a6232ad35)) * **settings:** add functional settings ([a1e5914](https://github.com/plebbit/seedit/commit/a1e59141b8a316212c25331bd8592d87e6926320)) * **settings:** add functionality to username setting ([c4edf32](https://github.com/plebbit/seedit/commit/c4edf32ca1eb730c74de35f73bf256fe9cca90d7)) * **sidebar:** add block community button ([f4caa56](https://github.com/plebbit/seedit/commit/f4caa56d9b249e0c19c07f2c5ba91b707894fcc8)) * **sidebar:** add create community button ([390680a](https://github.com/plebbit/seedit/commit/390680aaa564c1a7bcc4186f46355bc48004c1b7)) * **sidebar:** add moderators list ([e6b2cc3](https://github.com/plebbit/seedit/commit/e6b2cc32d4c0df24c8dc804b20197d4e89de60cf)) * **sidebar:** add post-specific sidebar with stats ([708b3bb](https://github.com/plebbit/seedit/commit/708b3bb8c8baa788b9cf819b581cc5027a3c7b1f)) * **sidebar:** add rules list ([0c698ba](https://github.com/plebbit/seedit/commit/0c698ba2ce4deab45a3af479dc9006dfe320be25)) * **sidebar:** add search bar for feed filtering ([f1fd4fb](https://github.com/plebbit/seedit/commit/f1fd4fb7c8e7f4e25f33ba06591d37e34371840f)) * **sidebar:** add sidebar ([3e1ab75](https://github.com/plebbit/seedit/commit/3e1ab752aace4ea9f255e550e41da487106f7739)) * **sidebar:** add submit a new post button, move create community button next to it ([eaf46eb](https://github.com/plebbit/seedit/commit/eaf46eb35b46ae66964bec90b9d9aa17eb729c87)) * **sidebar:** tell user if owner role is unset ([004e394](https://github.com/plebbit/seedit/commit/004e394767e8ad317ef145115d24d972f6ed940a)) * **sort dropdown:** add sort UI to author and profile ([4ac0d44](https://github.com/plebbit/seedit/commit/4ac0d4437e4baa1564f3e0d429042e0306dbb21d)) * **sticky header:** add functionality to account select element ([8b1d9f9](https://github.com/plebbit/seedit/commit/8b1d9f96abca76e092832b1cc197291286f6683a)) * **sticky header:** add new design and functionality ([8c12813](https://github.com/plebbit/seedit/commit/8c12813fcf300c1fa38dd4c940d03e619439fcb6)) * **sticky header:** add sorttype navigation, improve styling ([dd5751b](https://github.com/plebbit/seedit/commit/dd5751b66f8c447b22e47375009fec166f7f242a)) * **sticky header:** add sticky menu with animation ([6e93f03](https://github.com/plebbit/seedit/commit/6e93f037de96c3469f8bc559fffe6050e20e6814)) * **sticky header:** disappear when near the top of the page ([02fe2d0](https://github.com/plebbit/seedit/commit/02fe2d0833c937868ef59a7a9a0b8a510300abc1)) * **sticky header:** hide at first load ([6e642e7](https://github.com/plebbit/seedit/commit/6e642e7c51637e241194a623f2fa35081cb2f06c)) * **sticky header:** only show on mobile ([d44289d](https://github.com/plebbit/seedit/commit/d44289df81117bf553b0f869e8a933a69289d534)) * **submit:** add publishing functionality ([a1a2c47](https://github.com/plebbit/seedit/commit/a1a2c470d1ae85c590158d35a53ea20437960e86)) * **submit:** add submit form UI ([5e232e4](https://github.com/plebbit/seedit/commit/5e232e4542c6831d8163d0396e8b553ef7c6cc13)) * **submit:** add submit route, component, button ([b4f5a4a](https://github.com/plebbit/seedit/commit/b4f5a4a01d2c21d8e50d93643ffcac2a62b5f16c)) * **submit:** add subscriptions list to quickly select a sub to post to ([57593b5](https://github.com/plebbit/seedit/commit/57593b564b4b8789a8db7968508d3c4395f5d646)) * **submit:** auto select current sub address ([6edf456](https://github.com/plebbit/seedit/commit/6edf456a035ac315728e5a8fe709fc2f57158bd1)) * **submit:** show subplebbit rules if any as the user types a valid subplebbit address ([42b4bce](https://github.com/plebbit/seedit/commit/42b4bcec5df5b9bddf4a9def69a94de860256c07)) * **submit:** typing sub address shows a dropdown with possible matches of default sub addresses ([fe82d0a](https://github.com/plebbit/seedit/commit/fe82d0a79c11155f334099be17ea8211685ecbd3)) * **subplebbit:** add feed sorting ([6187438](https://github.com/plebbit/seedit/commit/61874382cf013f517695337edaa605ed2bac1ece)) * **subplebbit:** add route and component ([7ae14c4](https://github.com/plebbit/seedit/commit/7ae14c4344fe8bb0d5b41d344c6b454e841d73b0)) * **subplebbit:** add subplebbit feed, enable links to it ([c48cd07](https://github.com/plebbit/seedit/commit/c48cd07d9360c9be6797dbdfd87b9c6acdc558d4)) * **subscribe button:** add functional join/leave button ([e6fd214](https://github.com/plebbit/seedit/commit/e6fd214424ba98f64c6ee58e2b99e99b306546cf)) * **thread:** add loading state string for replies ([619ef97](https://github.com/plebbit/seedit/commit/619ef97ef38c8d8dd37574b3576d6dd625040ec2)) * **time filter:** add time filter UI ([52998e1](https://github.com/plebbit/seedit/commit/52998e1f8d7fb823fd1f460809f87ccdf18dfa1d)) * **time utils:** differentiate between 'time ago' adding function for formatted time duration ([f6aa70b](https://github.com/plebbit/seedit/commit/f6aa70be9d4e0ded63d0e4c8b7bf8d5bf59bba5f)) * **topbar:** add scrollable sub list ([8cee962](https://github.com/plebbit/seedit/commit/8cee9629fc388d1f5c1f4f132d65abe1859ae949)) * **topbar:** display subplebbit addresses from defaults and subs with proper formatting ([647a7ed](https://github.com/plebbit/seedit/commit/647a7ed7d6698ae0fd6b21d989cbba4eadd01db4)) * **topbar:** get sort label translation and display it as dropdown title ([3f053a6](https://github.com/plebbit/seedit/commit/3f053a670359fefffe8bb740a46a6010910e097a)) * **translations:** add ar, es, hi, ja, pt, zh ([cfa8993](https://github.com/plebbit/seedit/commit/cfa89934902e88e467bb977f3306557333aee9d3)) * **translations:** add English and Italian ([a4217a8](https://github.com/plebbit/seedit/commit/a4217a803aa4f591845a5cc1a2e8e6af75b5e43c)) * **translations:** add most spoken languages for a total of 35 ([37d895f](https://github.com/plebbit/seedit/commit/37d895f66185703df9724c9cea332d8f86ec6c17)) * **translations:** add select element for many translations ([862abf1](https://github.com/plebbit/seedit/commit/862abf1b9108fee1521ae3052ce03c457c6f27c8)) * **use-current-view:** add isPendingView ([3e33f50](https://github.com/plebbit/seedit/commit/3e33f501c95048f99e235eea9819fb9be1122bfc)) * **use-pending-replycount:** implement useAccountComments with filter to get total reply count including pending replies ([050dfcc](https://github.com/plebbit/seedit/commit/050dfcce758c47ba123fc082eaef56823e8a9219)) * **use-reply:** implement replying to a post ([34d380e](https://github.com/plebbit/seedit/commit/34d380ecc6a5e9f23d26063751b3598beeec1fdd)) * **use-time-filter:** implement time filters ([3ec7555](https://github.com/plebbit/seedit/commit/3ec75553282270360e0538d3cad646ce174a7339)) * **user utils:** find subplebbit creator for sidebar 'created by' ([c09bae3](https://github.com/plebbit/seedit/commit/c09bae351cd77d70bfdb0817231afac8e19ec9a3)) * **utils:** add alert for failed challenge verification ([a5e8580](https://github.com/plebbit/seedit/commit/a5e8580b2e03c14a9bc8c9486ff0de0ef32adac0)) * **utils:** add isValidENS, isValidIPFS, isValidURL ([99bc823](https://github.com/plebbit/seedit/commit/99bc8230eaaad7a780f9b5899d057acdaac28c52)) ### Performance Improvements * **addresses utils:** use object instead of array for useDefaultAndSubscriptionsSubplebbits ([8ed60f9](https://github.com/plebbit/seedit/commit/8ed60f95d8a1e022b0668b82edb99c8b646e7598)) * **app:** use route outlet for home layout ([e607fa7](https://github.com/plebbit/seedit/commit/e607fa7b33f545ab2863be82923c9cbf5a009f70)) * **comments:** avoid unmounting home by rendering comments as modal in it, so the feed is already loaded when navigating back to it ([dfa4383](https://github.com/plebbit/seedit/commit/dfa4383520b09d9bdf7ba882ae7225b50aec1df1)) * **comments:** memoize isCommentsModalOpen ([0d50537](https://github.com/plebbit/seedit/commit/0d50537fe871f5bb2407242c2664b834e8bb9786)) * **expando:** refactor, only load videos and audios when expanded ([e8d7a22](https://github.com/plebbit/seedit/commit/e8d7a220334af2f9738d0f796f4ad658c7a54d89)) * **feed post:** fix img source impacted scroll performance ([a7fd5dd](https://github.com/plebbit/seedit/commit/a7fd5dd36b9efdad439be474e225e8ca4e87d77a)) * **feed post:** fix virtuoso scrolling smoothness removing all margin and adding render optimizations ([319dd23](https://github.com/plebbit/seedit/commit/319dd23919adeaea5a609ac818827bc8c2b58a72)) * **home:** add overscan to virtuoso ([725a2e4](https://github.com/plebbit/seedit/commit/725a2e42a4f41726df21a342a20401ad03d80038)) * **home:** double increaseViewportBy in Virtuoso so it's harder to reach the bottom of the loaded posts on low resource ([06f5226](https://github.com/plebbit/seedit/commit/06f5226cd6ab1cd80188ee8a6dbc08fdfe34e2c7)) * **home:** when navigating, render comments view instantly by conditionally rendering virtuoso in home ([12c90c7](https://github.com/plebbit/seedit/commit/12c90c702c4a184d5ff4d8a4a01ddef7cbe6b85b)) * **media:** use else if statements instead of dynamic jsx object ([6da0790](https://github.com/plebbit/seedit/commit/6da0790367e75afb4584f41ad11325c0e255fe2d)) * **post:** use verified addresses with css effect to avoid virtuoso glitch ([c739801](https://github.com/plebbit/seedit/commit/c7398014b29fe00f5135e785a34d09c07161713e)) * **profile settings:** better state management ([fcd2d6c](https://github.com/plebbit/seedit/commit/fcd2d6c7d7954c44559d446d5c4f785640ca60ea)) * **profile settings:** pre-load address resolve, only show status when clicking check, reset state after clicking save ([b7e059b](https://github.com/plebbit/seedit/commit/b7e059b469555acd7e7e2f976d22a8832840b508)) * reduce calls of plebbit-react-hooks ([c1514a9](https://github.com/plebbit/seedit/commit/c1514a98829156713ca0498ab2fcfe80fefed538)) * **sidebar:** use components instead of variables for conditional rendering ([7f73939](https://github.com/plebbit/seedit/commit/7f73939906f6680597b0284d8dbf63f3bb9e205d)) * **use-default-subplebbits:** cache hook for faster navigation ([1fc9fce](https://github.com/plebbit/seedit/commit/1fc9fce32006611d9e9ba9e448eaee7ec520a9c4)) * **use-default-subplebbits:** optimize cache ([9673b08](https://github.com/plebbit/seedit/commit/9673b08a0dd53b790c3ef60ff60ffb492efe7ba5)) * **use-default-subplebbits:** switch to multisub.json and return cache for faster navigation ([35846f7](https://github.com/plebbit/seedit/commit/35846f766fc84aaa98c4912b9a143d6244ae93f2)) ### Reverts * Revert "chore(package.json): upgrade plebbit-react-hooks" ([2307bc2](https://github.com/plebbit/seedit/commit/2307bc23c7a46e148bc682c263fa7cb36e4cc7d5)) * Revert "chore(translations): translate "settings", rename account_bar_preferences to settings" ([d79f5dd](https://github.com/plebbit/seedit/commit/d79f5ddf98ab19306219748081b479b266521110)) * Revert "style(header): remove wiki button, because of inconsistent UI and not enough space" ([e940379](https://github.com/plebbit/seedit/commit/e94037990f6ed35b2ed6cf3fc3ab4894904892c2)) * Revert "style: convert all css modules to scss" ([f1dfafe](https://github.com/plebbit/seedit/commit/f1dfafeb5e7d8b0fa6af273639e18181cc3236c8)) ================================================ FILE: CLAUDE.md ================================================ @AGENTS.md ================================================ FILE: LICENSE ================================================ GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. ================================================ FILE: README.md ================================================ [![Build Status](https://img.shields.io/github/actions/workflow/status/bitsocialhq/seedit/test.yml?branch=master)](https://github.com/bitsocialhq/seedit/actions/workflows/test.yml) [![Release](https://img.shields.io/github/v/release/bitsocialhq/seedit)](https://github.com/bitsocialhq/seedit/releases/latest) [![License](https://img.shields.io/badge/license-GPL--2.0--only-red.svg)](https://github.com/bitsocialhq/seedit/blob/master/LICENSE) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) _Telegram group for this repo https://t.me/seeditreact_ # Seedit Seedit is a serverless, adminless, decentralized and open-source (old)reddit alternative built on the [Bitsocial protocol](https://bitsocial.net). Like reddit, anyone can create a seedit community, It features a similar homepage structure as reddit, but with a crucial difference: **anyone can create and own communities, and multiple communities can compete for each default community slot**. - Seedit web version: https://seedit.app — or, using Brave/IPFS Companion: https://seedit.eth ### Downloads - Seedit desktop version (full p2p bitsocial node, seeds automatically): available for Mac/Windows/Linux, [download link in the release page](https://github.com/bitsocialhq/seedit/releases/latest) - Seedit mobile version: available for Android, [download link in the release page](https://github.com/bitsocialhq/seedit/releases/latest)
## How to create a community To run a community, you can choose between two options: 1. If you prefer to use a **GUI**, download the desktop version of the Seedit client, available for Windows, MacOS and Linux: [latest release](https://github.com/bitsocialhq/seedit/releases/latest). Create a community using using the familiar old.reddit-like UI, and modify its settings to your liking. The app runs an IPFS node, meaning you have to keep it running to have your board online. 2. If you prefer to use a **command line interface**, install bitsocial-cli, available for Windows, MacOS and Linux: [latest release](https://github.com/bitsocialhq/bitsocial-cli/releases/latest). Follow the instructions in the readme of the repo. When running the daemon for the first time, it will output WebUI links you can use to manage your community with the ease of the GUI. Peers can connect to your bitsocial community using any bitsocial client, such as Seedit or [5chan](https://github.com/bitsocialhq/5chan). They only need the community address, which is not stored in any central database, as bitsocial is a pure peer-to-peer protocol. ### How to add a community to the default list (s/all) The default list of communities, used on s/all on Seedit, is bitsocial's [default-multisub.json list](https://github.com/bitsocialhq/lists/blob/master/default-multisub.json). You can open a pull request in that repo to add your community to the list. ## Contributor setup 1. `nvm install && nvm use` 2. Run `corepack enable` once on your machine 3. Use plain `yarn install`, `yarn build`, and `yarn test` from then on ## To run locally 1. `yarn install` to install Seedit dependencies 2. `yarn start` to run the web client The default web dev server runs at `https://seedit.localhost` via [Portless](https://github.com/vercel-labs/portless), so it can share the same proxy as other Bitsocial projects without colliding on raw Vite ports. On non-`master` branches, or when another legacy process is already holding the canonical route, `yarn start` automatically uses a branch-scoped `*.seedit.localhost` URL instead of failing, and repeated branch-scoped runs keep suffixing (`-2`, `-3`, ...) until they find a free route. To bypass Portless and use plain Vite directly, run `PORTLESS=0 yarn start`; it will probe from port `3000` unless you pin `PORT` yourself. ### Scripts: - Web client: `yarn start` (`https://seedit.localhost`) - Electron client (must start web client first): `yarn electron` - Electron client and don't delete data: `yarn electron:no-delete-data` - Web client and electron client: `yarn electron:start` (forces `PORTLESS=0 PORT=3000` and uses `http://localhost:3000`) - Web client and electron client and don't delete data: `yarn electron:start:no-delete-data` (forces `PORTLESS=0 PORT=3000` and uses `http://localhost:3000`) ### Build: The linux/windows/mac/android build scripts are in https://github.com/bitsocialhq/seedit/blob/master/.github/workflows/release.yml ================================================ FILE: android/.gitignore ================================================ # Using Android gitignore template: https://github.com/github/gitignore/blob/HEAD/Android.gitignore # Built application files *.apk *.aar *.ap_ *.aab # Files for the ART/Dalvik VM *.dex # Java class files *.class # Generated files bin/ gen/ out/ # Uncomment the following line in case you need and you don't have the release build type files in your app # release/ # Gradle files .gradle/ build/ # Local configuration file (sdk path, etc) local.properties # Proguard folder generated by Eclipse proguard/ # Log Files *.log # Android Studio Navigation editor temp files .navigation/ # Android Studio captures folder captures/ # IntelliJ *.iml .idea/workspace.xml .idea/tasks.xml .idea/gradle.xml .idea/assetWizardSettings.xml .idea/dictionaries .idea/libraries # Android Studio 3 in .gitignore file. .idea/caches .idea/modules.xml # Comment next line if keeping position of elements in Navigation Editor is relevant for you .idea/navEditor.xml # Keystore files # Uncomment the following lines if you do not want to check your keystore files in. #*.jks #*.keystore # External native build folder generated in Android Studio 2.2 and later .externalNativeBuild .cxx/ # Google Services (e.g. APIs or Firebase) # google-services.json # Freeline freeline.py freeline/ freeline_project_description.json # fastlane fastlane/report.xml fastlane/Preview.html fastlane/screenshots fastlane/test_output fastlane/readme.md # Version control vcs.xml # lint lint/intermediates/ lint/generated/ lint/outputs/ lint/tmp/ # lint/reports/ # Android Profiling *.hprof # Cordova plugins for Capacitor capacitor-cordova-android-plugins # Copied web assets app/src/main/assets/public ================================================ FILE: android/.idea/.gitignore ================================================ # Default ignored files /shelf/ /workspace.xml ================================================ FILE: android/.idea/compiler.xml ================================================ ================================================ FILE: android/.idea/deploymentTargetSelector.xml ================================================ ================================================ FILE: android/.idea/kotlinc.xml ================================================ ================================================ FILE: android/.idea/migrations.xml ================================================ ================================================ FILE: android/.idea/misc.xml ================================================ ================================================ FILE: android/.idea/runConfigurations.xml ================================================ ================================================ FILE: android/app/.gitignore ================================================ /build/* !/build/.npmkeep ================================================ FILE: android/app/build.gradle ================================================ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' android { namespace "seedit.android" compileSdkVersion rootProject.ext.compileSdkVersion defaultConfig { applicationId "seedit.android" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. // Default: https://android.googlesource.com/platform/frameworks/base/+/282e181b58cf72b6ca770dc7ca5f91f135444502/tools/aapt/AaptAssets.cpp#61 ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~' } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = '17' } } repositories { google() mavenCentral() maven { url "https://maven.google.com" } flatDir{ dirs '../capacitor-cordova-android-plugins/src/main/libs', 'libs' } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion" implementation project(':capacitor-android') implementation project(':capacitor-cordova-android-plugins') testImplementation "junit:junit:$junitVersion" androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion" androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion" implementation "org.apache.cordova:framework:$cordovaAndroidVersion" implementation 'com.squareup.okhttp3:okhttp:4.12.0' implementation 'com.squareup.okio:okio:3.9.0' } apply from: 'capacitor.build.gradle' try { def servicesJSON = file('google-services.json') if (servicesJSON.exists() && servicesJSON.text) { apply plugin: 'com.google.gms.google-services' logger.info("google-services.json found, applying Google Services plugin") } else { logger.info("google-services.json not found or empty, Google Services plugin not applied. Push Notifications won't work") } } catch(Exception e) { logger.info("Error checking google-services.json: ${e.message}. Google Services plugin not applied") } ================================================ FILE: android/app/capacitor.build.gradle ================================================ // DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN android { compileOptions { sourceCompatibility JavaVersion.VERSION_21 targetCompatibility JavaVersion.VERSION_21 } } apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle" dependencies { implementation project(':capacitor-app') implementation project(':capacitor-filesystem') implementation project(':capacitor-local-notifications') implementation project(':capacitor-share') implementation project(':capacitor-status-bar') implementation project(':capawesome-capacitor-android-edge-to-edge-support') } if (hasProperty('postBuildExtras')) { postBuildExtras() } ================================================ FILE: android/app/proguard-rules.pro ================================================ # Add project specific ProGuard rules here. # You can control the set of applied configuration files using the # proguardFiles setting in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} # Uncomment this to preserve the line number information for # debugging stack traces. #-keepattributes SourceFile,LineNumberTable # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile ================================================ FILE: android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java ================================================ package com.getcapacitor.myapp; import static org.junit.Assert.*; import android.content.Context; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.platform.app.InstrumentationRegistry; import org.junit.Test; import org.junit.runner.RunWith; /** * Instrumented test, which will execute on an Android device. * * @see Testing documentation */ @RunWith(AndroidJUnit4.class) public class ExampleInstrumentedTest { @Test public void useAppContext() throws Exception { // Context of the app under test. Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); assertEquals("com.getcapacitor.app", appContext.getPackageName()); } } ================================================ FILE: android/app/src/main/AndroidManifest.xml ================================================ ================================================ FILE: android/app/src/main/assets/capacitor.config.json ================================================ { "appId": "seedit.android", "appName": "seedit", "webDir": "build", "plugins": { "CapacitorHttp": { "enabled": true }, "FileUploader": { "enabled": true }, "StatusBar": { "style": "Dark", "backgroundColor": "#000000", "overlay": false }, "EdgeToEdge": { "backgroundColor": "#000000" } }, "server": { "androidScheme": "https" } } ================================================ FILE: android/app/src/main/assets/capacitor.plugins.json ================================================ [ { "pkg": "@capacitor/app", "classpath": "com.capacitorjs.plugins.app.AppPlugin" }, { "pkg": "@capacitor/filesystem", "classpath": "com.capacitorjs.plugins.filesystem.FilesystemPlugin" }, { "pkg": "@capacitor/local-notifications", "classpath": "com.capacitorjs.plugins.localnotifications.LocalNotificationsPlugin" }, { "pkg": "@capacitor/share", "classpath": "com.capacitorjs.plugins.share.SharePlugin" }, { "pkg": "@capacitor/status-bar", "classpath": "com.capacitorjs.plugins.statusbar.StatusBarPlugin" }, { "pkg": "@capawesome/capacitor-android-edge-to-edge-support", "classpath": "io.capawesome.capacitorjs.plugins.androidedgetoedgesupport.EdgeToEdgePlugin" } ] ================================================ FILE: android/app/src/main/java/seedit/android/FileUploaderPlugin.java ================================================ package seedit.android; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.provider.MediaStore; import android.util.Log; import android.database.Cursor; import android.provider.OpenableColumns; import com.getcapacitor.JSObject; import com.getcapacitor.Plugin; import com.getcapacitor.PluginCall; import com.getcapacitor.PluginMethod; import com.getcapacitor.annotation.CapacitorPlugin; import com.getcapacitor.annotation.ActivityCallback; import com.getcapacitor.PluginCall; import androidx.activity.result.ActivityResult; import java.io.File; import java.io.IOException; import java.io.FileOutputStream; import java.util.concurrent.TimeUnit; import java.io.InputStream; import java.io.ByteArrayOutputStream; import okhttp3.MediaType; import okhttp3.MultipartBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; @CapacitorPlugin(name = "FileUploader") public class FileUploaderPlugin extends Plugin { private static final String TAG = "FileUploaderPlugin"; @PluginMethod public void pickAndUploadMedia(PluginCall call) { Log.d(TAG, "pickAndUploadMedia called"); Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("*/*"); String[] mimeTypes = {"image/jpeg", "image/png", "video/mp4", "video/webm", "application/pdf"}; intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes); startActivityForResult(call, intent, "pickFileResult"); } @ActivityCallback private void pickFileResult(PluginCall call, ActivityResult result) { Log.d(TAG, "pickFileResult callback received"); if (call == null) { return; } if (result.getResultCode() == Activity.RESULT_OK) { Intent data = result.getData(); if (data != null) { Uri uri = data.getData(); uploadToCatbox(uri, call); } else { call.reject("No data received"); } } else { call.reject("File selection cancelled"); } } private void uploadToCatbox(Uri fileUri, PluginCall call) { new Thread(() -> { try { Log.d(TAG, "Starting file conversion from URI"); File file = FileUtils.getFileFromUri(getContext(), fileUri); Log.d(TAG, "File name: " + file.getName()); JSObject statusUpdate = new JSObject(); statusUpdate.put("status", "Uploading to catbox.moe..."); notifyListeners("uploadStatus", statusUpdate); OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(30, TimeUnit.SECONDS) .writeTimeout(30, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) .build(); RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("reqtype", "fileupload") .addFormDataPart("fileToUpload", file.getName(), RequestBody.create(MediaType.parse("application/octet-stream"), file)) .build(); Request request = new Request.Builder() .url("https://catbox.moe/user/api.php") .post(requestBody) .build(); try (Response response = client.newCall(request).execute()) { if (!response.isSuccessful()) throw new IOException("Unexpected response " + response); String url = response.body().string(); Log.d(TAG, "Upload successful. URL: " + url); JSObject ret = new JSObject(); ret.put("url", url); ret.put("fileName", file.getName()); ret.put("status", "Upload complete!"); call.resolve(ret); } } catch (Exception e) { Log.e(TAG, "Upload failed", e); call.reject("Upload failed: " + e.getMessage()); } }).start(); } @PluginMethod public void uploadMedia(PluginCall call) { if (!call.getData().has("fileData") || !call.getData().has("fileName")) { call.reject("Missing required parameters fileData or fileName"); return; } String fileData = call.getString("fileData"); String fileName = call.getString("fileName"); // Execute in background thread to avoid blocking UI new Thread(() -> { try { // Convert base64 to file byte[] decodedBytes = android.util.Base64.decode(fileData, android.util.Base64.DEFAULT); File tempFile = new File(getContext().getCacheDir(), fileName); try (FileOutputStream fos = new FileOutputStream(tempFile)) { fos.write(decodedBytes); } // Create multipart upload form OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(30, TimeUnit.SECONDS) .writeTimeout(30, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) .build(); RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("reqtype", "fileupload") .addFormDataPart("fileToUpload", fileName, RequestBody.create(MediaType.parse("application/octet-stream"), tempFile)) .build(); Request request = new Request.Builder() .url("https://catbox.moe/user/api.php") .post(requestBody) .build(); try (Response response = client.newCall(request).execute()) { if (!response.isSuccessful()) throw new IOException("Unexpected response " + response); String url = response.body().string(); // Return the result to JavaScript JSObject ret = new JSObject(); ret.put("url", url); ret.put("fileName", fileName); getActivity().runOnUiThread(() -> { call.resolve(ret); }); // Clean up temp file tempFile.delete(); } } catch (Exception e) { getActivity().runOnUiThread(() -> { call.reject("Upload failed: " + e.getMessage(), e); }); } }).start(); } @PluginMethod public void pickMedia(PluginCall call) { Log.d(TAG, "pickMedia called"); Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("*/*"); String[] mimeTypes = {"image/jpeg", "image/png", "video/mp4", "video/webm", "application/pdf"}; intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes); startActivityForResult(call, intent, "pickMediaResult"); } @ActivityCallback private void pickMediaResult(PluginCall call, ActivityResult result) { Log.d(TAG, "pickMediaResult callback received"); if (call == null) { return; } if (result.getResultCode() == Activity.RESULT_OK) { Intent data = result.getData(); if (data != null) { Uri uri = data.getData(); try { // Get file name String fileName = getFileNameFromUri(uri); // Get mime type String mimeType = getContext().getContentResolver().getType(uri); if (mimeType == null) { mimeType = "application/octet-stream"; } // Read file into a byte array InputStream inputStream = getContext().getContentResolver().openInputStream(uri); ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len; while ((len = inputStream.read(buffer)) != -1) { byteBuffer.write(buffer, 0, len); } byte[] fileBytes = byteBuffer.toByteArray(); inputStream.close(); // Convert to base64 String base64Data = android.util.Base64.encodeToString(fileBytes, android.util.Base64.DEFAULT); // Return data to JavaScript JSObject ret = new JSObject(); ret.put("data", base64Data); ret.put("fileName", fileName); ret.put("mimeType", mimeType); call.resolve(ret); } catch (Exception e) { call.reject("Failed to read file: " + e.getMessage(), e); } } else { call.reject("No data received"); } } else { call.reject("File selection cancelled"); } } // Helper method to get file name from URI private String getFileNameFromUri(Uri uri) { String result = null; if (uri.getScheme().equals("content")) { Cursor cursor = getContext().getContentResolver().query(uri, null, null, null, null); try { if (cursor != null && cursor.moveToFirst()) { int nameIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME); if (nameIndex >= 0) { result = cursor.getString(nameIndex); } } } finally { if (cursor != null) { cursor.close(); } } } if (result == null) { result = uri.getPath(); int cut = result.lastIndexOf('/'); if (cut != -1) { result = result.substring(cut + 1); } } return result; } } ================================================ FILE: android/app/src/main/java/seedit/android/FileUtils.java ================================================ package seedit.android; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.provider.OpenableColumns; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; public class FileUtils { public static File getFileFromUri(Context context, Uri uri) throws Exception { String fileName = getFileName(context, uri); File file = new File(context.getCacheDir(), fileName); try (InputStream inputStream = context.getContentResolver().openInputStream(uri); FileOutputStream outputStream = new FileOutputStream(file)) { byte[] buffer = new byte[4096]; int length; while ((length = inputStream.read(buffer)) > 0) { outputStream.write(buffer, 0, length); } outputStream.flush(); return file; } } private static String getFileName(Context context, Uri uri) { String result = null; if (uri.getScheme().equals("content")) { try (Cursor cursor = context.getContentResolver().query(uri, null, null, null, null)) { if (cursor != null && cursor.moveToFirst()) { int columnIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME); if (columnIndex != -1) { result = cursor.getString(columnIndex); } } } } if (result == null) { result = uri.getPath(); int cut = result.lastIndexOf('/'); if (cut != -1) { result = result.substring(cut + 1); } } return result; } } ================================================ FILE: android/app/src/main/java/seedit/android/MainActivity.java ================================================ package seedit.android; import android.os.Bundle; import com.getcapacitor.BridgeActivity; import com.capacitorjs.plugins.localnotifications.LocalNotificationsPlugin; import com.capacitorjs.plugins.statusbar.StatusBarPlugin; public class MainActivity extends BridgeActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Register custom and community plugins after initialization registerPlugin(FileUploaderPlugin.class); registerPlugin(LocalNotificationsPlugin.class); registerPlugin(StatusBarPlugin.class); } } ================================================ FILE: android/app/src/main/res/drawable/ic_launcher_background.xml ================================================ ================================================ FILE: android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml ================================================ ================================================ FILE: android/app/src/main/res/layout/activity_main.xml ================================================ ================================================ FILE: android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml ================================================ ================================================ FILE: android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml ================================================ ================================================ FILE: android/app/src/main/res/values/ic_launcher_background.xml ================================================ #FFFFFF ================================================ FILE: android/app/src/main/res/values/strings.xml ================================================ seedit seedit seedit.android seedit.android ================================================ FILE: android/app/src/main/res/values/styles.xml ================================================ ================================================ FILE: android/app/src/main/res/xml/config.xml ================================================ ================================================ FILE: android/app/src/main/res/xml/file_paths.xml ================================================ ================================================ FILE: android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java ================================================ package com.getcapacitor.myapp; import static org.junit.Assert.*; import org.junit.Test; /** * Example local unit test, which will execute on the development machine (host). * * @see Testing documentation */ public class ExampleUnitTest { @Test public void addition_isCorrect() throws Exception { assertEquals(4, 2 + 2); } } ================================================ FILE: android/build.gradle ================================================ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:8.1.0' classpath 'com.google.gms:google-services:4.3.5' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.22' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } apply from: "variables.gradle" allprojects { repositories { google() mavenCentral() } } task clean(type: Delete) { delete rootProject.buildDir } // Force Java 17 for all Android modules and override Gradle toolchains allprojects { project.afterEvaluate { // Force Java 17 toolchain for all projects if (project.hasProperty('java')) { project.java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } } if (project.hasProperty('android')) { android.compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } } // Override Kotlin JVM target for all modules project.tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { kotlinOptions { jvmTarget = '17' } } } } ================================================ FILE: android/capacitor.settings.gradle ================================================ // DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN include ':capacitor-android' project(':capacitor-android').projectDir = new File('../node_modules/@capacitor/android/capacitor') include ':capacitor-app' project(':capacitor-app').projectDir = new File('../node_modules/@capacitor/app/android') include ':capacitor-filesystem' project(':capacitor-filesystem').projectDir = new File('../node_modules/@capacitor/filesystem/android') include ':capacitor-local-notifications' project(':capacitor-local-notifications').projectDir = new File('../node_modules/@capacitor/local-notifications/android') include ':capacitor-share' project(':capacitor-share').projectDir = new File('../node_modules/@capacitor/share/android') include ':capacitor-status-bar' project(':capacitor-status-bar').projectDir = new File('../node_modules/@capacitor/status-bar/android') include ':capawesome-capacitor-android-edge-to-edge-support' project(':capawesome-capacitor-android-edge-to-edge-support').projectDir = new File('../node_modules/@capawesome/capacitor-android-edge-to-edge-support/android') ================================================ FILE: android/gradle/wrapper/gradle-wrapper.properties ================================================ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists ================================================ FILE: android/gradle.properties ================================================ # Project-wide Gradle settings. # IDE (e.g. Android Studio) users: # Gradle settings configured through the IDE *will override* # any settings specified in this file. # For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. org.gradle.jvmargs=-Xmx1536m # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true # AndroidX package structure to make it clearer which packages are bundled with the # Android operating system, and which are packaged with your app's APK # https://developer.android.com/topic/libraries/support-library/androidx-rn android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX android.enableJetifier=true android.defaults.buildfeatures.buildconfig=true android.nonTransitiveRClass=false android.nonFinalResIds=false android.suppressUnsupportedCompileSdk=35 ================================================ FILE: android/gradlew ================================================ #!/bin/sh # # Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # SPDX-License-Identifier: Apache-2.0 # ############################################################################## # # Gradle start up script for POSIX generated by Gradle. # # Important for running: # # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is # noncompliant, but you have some other compliant shell such as ksh or # bash, then to run this script, type that shell name before the whole # command line, like: # # ksh Gradle # # Busybox and similar reduced shells will NOT work, because this script # requires all of these POSIX shell features: # * functions; # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», # «${var#prefix}», «${var%suffix}», and «$( cmd )»; # * compound commands having a testable exit status, especially «case»; # * various built-in commands including «command», «set», and «ulimit». # # Important for patching: # # (2) This script targets any POSIX shell, so it avoids extensions provided # by Bash, Ksh, etc; in particular arrays are avoided. # # The "traditional" practice of packing multiple parameters into a # space-separated string is a well documented source of bugs and security # problems, so this is (mostly) avoided, by progressively accumulating # options in "$@", and eventually passing that to Java. # # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; # see the in-line comments for details. # # There are tweaks for specific operating systems such as AIX, CygWin, # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template # https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. # ############################################################################## # Attempt to set APP_HOME # Resolve links: $0 may be a link app_path=$0 # Need this for daisy-chained symlinks. while APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path [ -h "$app_path" ] do ls=$( ls -ld "$app_path" ) link=${ls#*' -> '} case $link in #( /*) app_path=$link ;; #( *) app_path=$APP_HOME$link ;; esac done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s ' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum warn () { echo "$*" } >&2 die () { echo echo "$*" echo exit 1 } >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false case "$( uname )" in #( CYGWIN* ) cygwin=true ;; #( Darwin* ) darwin=true ;; #( MSYS* | MINGW* ) msys=true ;; #( NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables JAVACMD=$JAVA_HOME/jre/sh/java else JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else JAVACMD=java if ! command -v java >/dev/null 2>&1 then die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi fi # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac fi # Collect all arguments for the java command, stacking in reverse order: # * args from the command line # * the main class name # * -classpath # * -D...appname settings # * --module-path (only if needed) # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) # Now convert the arguments - kludge to limit ourselves to /bin/sh for arg do if case $arg in #( -*) false ;; # don't mess with options #( /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath [ -e "$t" ] ;; #( *) false ;; esac then arg=$( cygpath --path --ignore --mixed "$arg" ) fi # Roll the args list around exactly as many times as the number of # args, so each arg winds up back in the position where it started, but # possibly modified. # # NB: a `for` loop captures its iteration list before it begins, so # changing the positional parameters here affects neither the number of # iterations, nor the values presented in `arg`. shift # remove old arg set -- "$@" "$arg" # push replacement arg done fi # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: # * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ -classpath "$CLASSPATH" \ org.gradle.wrapper.GradleWrapperMain \ "$@" # Stop when "xargs" is not available. if ! command -v xargs >/dev/null 2>&1 then die "xargs is not available" fi # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. # # In Bash we could simply go: # # readarray ARGS < <( xargs -n1 <<<"$var" ) && # set -- "${ARGS[@]}" "$@" # # but POSIX shell has neither arrays nor command substitution, so instead we # post-process each arg (as a line of input to sed) to backslash-escape any # character that might be a shell metacharacter, then use eval to reverse # that process (while maintaining the separation between arguments), and wrap # the whole thing up as a single "set" statement. # # This will of course break if any of these variables contains a newline or # an unmatched quote. # eval "set -- $( printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | xargs -n1 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | tr '\n' ' ' )" '"$@"' exec "$JAVACMD" "$@" ================================================ FILE: android/gradlew.bat ================================================ @rem @rem Copyright 2015 the original author or authors. @rem @rem Licensed under the Apache License, Version 2.0 (the "License"); @rem you may not use this file except in compliance with the License. @rem You may obtain a copy of the License at @rem @rem https://www.apache.org/licenses/LICENSE-2.0 @rem @rem Unless required by applicable law or agreed to in writing, software @rem distributed under the License is distributed on an "AS IS" BASIS, @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem @rem SPDX-License-Identifier: Apache-2.0 @rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @rem @rem ########################################################################## @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. @rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @rem Resolve any "." and ".." in APP_HOME to make it shorter. for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute echo. 1>&2 echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 goto fail :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute echo. 1>&2 echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 goto fail :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! set EXIT_CODE=%ERRORLEVEL% if %EXIT_CODE% equ 0 set EXIT_CODE=1 if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal :omega ================================================ FILE: android/settings.gradle ================================================ include ':app' include ':capacitor-cordova-android-plugins' project(':capacitor-cordova-android-plugins').projectDir = new File('./capacitor-cordova-android-plugins/') apply from: 'capacitor.settings.gradle' ================================================ FILE: android/variables.gradle ================================================ ext { minSdkVersion = 23 compileSdkVersion = 35 targetSdkVersion = 35 androidxActivityVersion = '1.2.0' androidxAppCompatVersion = '1.2.0' androidxCoordinatorLayoutVersion = '1.1.0' androidxCoreVersion = '1.12.0' androidxFragmentVersion = '1.3.0' junitVersion = '4.13.1' androidxJunitVersion = '1.1.2' androidxEspressoCoreVersion = '3.3.0' cordovaAndroidVersion = '10.1.1' } ================================================ FILE: capacitor.config.ts ================================================ import { CapacitorConfig } from '@capacitor/cli'; const config: CapacitorConfig = { appId: 'seedit.android', appName: 'seedit', webDir: 'build', plugins: { CapacitorHttp: { enabled: true, }, FileUploader: { enabled: true, }, StatusBar: { style: 'Dark', backgroundColor: '#000000', overlay: false, }, EdgeToEdge: { backgroundColor: '#000000', }, }, server: { androidScheme: 'https' } }; export default config; ================================================ FILE: docs/agent-playbooks/bug-investigation.md ================================================ # Bug Investigation Workflow Use this when a bug is reported in a specific file/line/code block. ## Mandatory First Step Before editing, check git history for the relevant code. Previous contributors may have introduced behavior for an edge case/workaround. ## Workflow 1. Scan recent commit titles (titles only) for the file/area: ```bash # Recent commit titles for a specific file git log --oneline -10 -- src/components/post-desktop/post-desktop.tsx # Recent commit titles for a specific line range git blame -L 120,135 src/components/post-desktop/post-desktop.tsx ``` 2. Inspect only relevant commits with scoped diffs: ```bash # Show commit message + diff for one file git show -- path/to/file.tsx ``` 3. Continue with reproduction and fix after understanding the history context. ## Troubleshooting Rule When blocked, search the web for recent fixes/workarounds. ================================================ FILE: docs/agent-playbooks/commit-issue-format.md ================================================ # Commit and Issue Format Use this when proposing or implementing meaningful code changes. ## Commit Suggestion Format - **Title:** Conventional Commits style, short, wrapped in backticks. - Use `perf` (not `fix`) for performance optimizations. - **Description:** Optional 2-3 informal sentences describing the solution. Concise, technical, no bullet points. Example: > **Commit title:** `fix: correct date formatting in timezone conversion` > > Updated `formatDate()` in `date-utils.ts` to properly handle timezone offsets. ## GitHub Issue Suggestion Format - **Title:** As short as possible, wrapped in backticks. - **Description:** 2-3 informal sentences describing the problem (not the solution), as if still unresolved. Example: > **GitHub issue:** > - **Title:** `Date formatting displays incorrect timezone` > - **Description:** Comment timestamps show incorrect timezones when users view posts from different regions. The `formatDate()` function doesn't account for user's local timezone settings. ================================================ FILE: docs/agent-playbooks/hooks-setup.md ================================================ # Agent Hooks Setup If your AI coding assistant supports lifecycle hooks, configure these for this repo. ## Recommended Hooks | Hook | Command | Purpose | |---|---|---| | `afterFileEdit` | `scripts/agent-hooks/format.sh` | Auto-format files after AI edits | | `afterFileEdit` | `scripts/agent-hooks/yarn-install.sh` | Run `corepack yarn install` when `package.json` changes | | `afterFileEdit` | `scripts/agent-hooks/react-pattern-review.sh` | When React UI source changes, remind the agent to run the React best-practice review skills; also flag new `useEffect`/memo primitives | | `stop` | `scripts/agent-hooks/sync-git-branches.sh` | Prune stale refs and delete integrated temporary task branches | | `stop` | `scripts/agent-hooks/react-pattern-review.sh` | Re-scan the current diff for React UI source changes and new React effects/memos before the final verify gate | | `stop` | `scripts/agent-hooks/verify.sh` | Hard-gate build, lint, and type-check; keep `yarn audit` informational | ## Why - Consistent formatting - Lockfile stays in sync - React UI source changes get an explicit best-practices review reminder before the agent finishes - New `useEffect`/memo additions get an additional effect-specific second look before the agent finishes - Build/lint/type issues caught early - Security visibility via `corepack yarn npm audit` - One shared hook implementation for Codex, Cursor, and Claude - Temporary task branches stay aligned with the repo's worktree workflow ## Example Hook Scripts ### Format Hook ```bash #!/bin/bash # Auto-format JS/TS files after AI edits # Hook receives JSON via stdin with file_path input=$(cat) file_path=$(echo "$input" | grep -o '"file_path"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/.*:.*"\([^"]*\)"/\1/') case "$file_path" in *.js|*.ts|*.tsx|*.mjs) npx oxfmt "$file_path" 2>/dev/null ;; esac exit 0 ``` ### Verify Hook ```bash #!/bin/bash # Run build, lint, type-check, and security audit when agent finishes cat > /dev/null # consume stdin status=0 corepack yarn build || status=1 corepack yarn lint || status=1 corepack yarn type-check || status=1 echo "=== corepack yarn npm audit ===" && (corepack yarn npm audit || true) # informational exit $status ``` By default, `scripts/agent-hooks/verify.sh` exits non-zero when `corepack yarn build`, `corepack yarn lint`, or `corepack yarn type-check` fails. Set `AGENT_VERIFY_MODE=advisory` only when you intentionally need signal from a broken tree without blocking the hook. Lifecycle hooks do not replace manual browser verification. For UI or visual changes, still run `playwright-cli` checks across `chrome`, `firefox`, and `webkit`, plus a mobile viewport flow in each engine when responsiveness or touch behavior changed. ### Yarn Install Hook ```bash #!/bin/bash # Run Corepack-managed Yarn install when package.json is changed # Hook receives JSON via stdin with file_path input=$(cat) file_path=$(echo "$input" | grep -o '"file_path"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/.*:.*"\([^"]*\)"/\1/') if [ -z "$file_path" ]; then exit 0 fi if [ "$file_path" = "package.json" ]; then cd "$(dirname "$0")/../.." || exit 0 echo "package.json changed - running corepack yarn install to update yarn.lock..." corepack yarn install fi exit 0 ``` Configure hook wiring according to your agent tool docs (`hooks.json`, equivalent, etc.). In this repo, `.codex/hooks/*.sh`, `.cursor/hooks/*.sh`, and `.claude/hooks/*.sh` should stay as thin wrappers that delegate to the shared implementations under `scripts/agent-hooks/`. Harness-specific startup hooks such as Claude's `SessionStart` can live alongside those wrappers when the other harnesses do not have an equivalent entry point. ================================================ FILE: docs/agent-playbooks/known-surprises.md ================================================ # Known Surprises This file tracks repository-specific confusion points that caused agent mistakes. ## Entry Criteria Add an entry only if all are true: - It is specific to this repository (not generic advice). - It is likely to recur for future agents. - It has a concrete mitigation that can be followed. If uncertain, ask the developer before adding an entry. ## Entry Template ```md ### [Short title] - **Date:** YYYY-MM-DD - **Observed by:** agent name or contributor - **Context:** where/when it happened - **What was surprising:** concrete unexpected behavior - **Impact:** what went wrong or could go wrong - **Mitigation:** exact step future agents should take - **Status:** confirmed | superseded ``` ## Entries ### Portless 0.11 reuses legacy proxy state unless the launcher forces HTTPS - **Date:** 2026-04-28 - **Observed by:** Tommaso + Codex - **Context:** Upgrading the normal `yarn start` flow from the old `http://seedit.localhost:1355` proxy URL to `https://seedit.localhost`. - **What was surprising:** Even with `portless@0.11.1` installed, Portless reused the existing `~/.portless/proxy.port = 1355` HTTP proxy and printed the legacy `:1355` URL. - **Impact:** Updating package versions and docs is not enough; `yarn start` can still advertise and use the old URL when a contributor has legacy Portless state running. - **Mitigation:** Keep `scripts/start-dev.js` explicitly starting the Portless HTTPS proxy on port `443` before registering the app route, so the runtime flow migrates away from persisted `1355` state instead of inheriting it. - **Status:** confirmed ### `.vercel` output is local-only - **Date:** 2026-03-19 - **Observed by:** Codex - **Context:** Local Vercel inspection created a large `.vercel/output/` tree in the repo. - **What was surprising:** The generated Vercel output can look like meaningful project files, but it is purely local build/deploy state and should not be committed. - **Impact:** Agents may accidentally stage large generated artifacts or mistake them for source changes. - **Mitigation:** Keep `.vercel` ignored and clean it before committing if Vercel tooling was used locally. - **Status:** confirmed ### Do not add `@plebbit/plebbit-js` directly for Electron RPC - **Date:** 2026-03-19 - **Observed by:** Codex - **Context:** `electron/start-plebbit-rpc.js` imports `@plebbit/plebbit-js/rpc` directly even though the repo depends on `@bitsocialnet/bitsocial-react-hooks`. - **What was surprising:** The direct import can make agents think `@plebbit/plebbit-js` should be added to `package.json`, but this repo intentionally relies on the transitive copy provided by `@bitsocialnet/bitsocial-react-hooks`. - **Impact:** Agents may add a redundant direct dependency and widen the upgrade surface unnecessarily. - **Mitigation:** Do not add `@plebbit/plebbit-js` just to satisfy a manifest audit. If a dependency audit complains, handle it with a targeted ignore or with the repo owner first. - **Status:** confirmed ### Electron packaging can ship a broken `better-sqlite3` binary - **Date:** 2026-03-19 - **Observed by:** Codex - **Context:** Investigating desktop packaging failures where the app launched but the local RPC never became healthy. - **What was surprising:** The packaged app can appear to start normally while `better-sqlite3` was built for plain Node instead of the Electron runtime, which prevents the local RPC path from starting correctly. - **Impact:** The desktop app may open but fail to load comments, communities, or other RPC-backed data. - **Mitigation:** Before Electron packaging or release verification, rebuild `better-sqlite3` for the target Electron version, for example with `npx electron-rebuild -f -o better-sqlite3`, then verify the rebuilt native module under the Electron runtime. - **Status:** confirmed ### Portless is now the canonical web dev URL - **Date:** 2026-03-30 - **Observed by:** Codex - **Context:** Normal `yarn start` runs alongside other local Bitsocial projects - **What was surprising:** The repo historically assumed `http://localhost:3000`, but the normal web dev flow now runs through Portless at `https://seedit.localhost` so multiple Bitsocial apps can coexist without raw-port collisions. - **Impact:** Agents can point browser automation, health checks, or local smoke scripts at the wrong URL and conclude the app is down when it is healthy. - **Mitigation:** Use `https://seedit.localhost` for standard web dev and agent smoke flows. Only rely on `http://localhost:3000` when a script intentionally forces both `PORTLESS=0` and `PORT=3000`, such as the combined Electron dev commands. - **Status:** confirmed ### Fixed Portless app names collide across seedit worktrees - **Date:** 2026-03-30 - **Observed by:** Codex - **Context:** Starting `yarn start` in one seedit worktree while another seedit worktree was already serving through Portless - **What was surprising:** Using the literal Portless app name `seedit` in every worktree makes the route itself collide, even when the backing ports are different, so the second process fails because `seedit.localhost` is already registered. - **Impact:** Parallel seedit branches can block each other even though Portless is meant to let them coexist safely. - **Mitigation:** Keep Portless startup behind `scripts/start-dev.js`, which now uses a branch-scoped `*.seedit.localhost` route outside the canonical case, suffixes repeated branch routes (`-2`, `-3`, ...) until it finds a free Portless name, and falls back to the next free direct-Vite port when `PORTLESS=0` is used without an explicit `PORT`. - **Status:** confirmed ### Toolchain model names are not interchangeable - **Date:** 2026-04-08 - **Observed by:** contributor + Codex - **Context:** Reviewing repo-managed agent configs under `.codex/agents`, `.cursor/agents`, and `.claude/agents` - **What was surprising:** `composer-2` is only available for Cursor in this repo, while Codex agents using `gpt-5.3-codex` or `gpt-5.3-codex-spark` perform poorly enough that they should not be configured by default. - **Impact:** Agents can silently inherit invalid or weak model settings, leading to broken subagent runs or degraded implementation quality. - **Mitigation:** Keep `.cursor` agent configs on Cursor-supported models only, never use `composer-2` in `.claude`, and standardize `.codex/agents/*.toml` on `gpt-5.4` unless a contributor explicitly requests an override. - **Status:** confirmed ================================================ FILE: docs/agent-playbooks/long-running-agent-workflow.md ================================================ # Long-Running Agent Workflow Use this playbook when a task is likely to span multiple sessions, handoffs, or spawned agents. ## Goals - Give each fresh session a fast way to regain context - Keep work incremental instead of one-shotting a large change - Catch a broken local baseline before adding more code - Leave durable artifacts that the next session can trust ## Where to Keep State - Use `docs/agent-runs//` when humans, review bots, or multiple toolchains need the same task state. - Use a tool-local directory such as `.codex/runs//` only when the task state is intentionally local to one workstation or one toolchain. - Do not hide multi-session shared state in a private scratch file if another contributor or agent will need it later. ## Required Files Create these files at the start of the long-running task: - `feature-list.json` - `progress.md` Use the templates in `docs/agent-playbooks/templates/feature-list.template.json` and `docs/agent-playbooks/templates/progress.template.md`. Prefer JSON for the feature list so agents can update a small number of fields without rewriting the whole document. ## Session Start Checklist 1. Run `pwd`. 2. Read `progress.md`. 3. Read `feature-list.json`. 4. Run `git log --oneline -20`. 5. Run `./scripts/agent-init.sh --smoke`. 6. Choose exactly one highest-priority item that is still `pending`, `in_progress`, or `blocked`. If the smoke step fails, fix the broken baseline before implementing a new feature slice. ## Session Rules - Work on one feature or task slice at a time. - Keep the feature list machine-readable and stable. Update status, notes, files, and verification fields instead of rewriting unrelated items. - Only mark an item verified after running the command or user flow listed in that item. - Use spawned agents for bounded slices, not for overall task-state ownership. - When a child agent owns one item, give it the exact item id, acceptance criteria, and files it may touch. ## Session End Checklist 1. Append a short progress entry to `progress.md`. 2. Update the touched item in `feature-list.json`. 3. Record the exact commands run for verification. 4. Capture blockers, follow-ups, and the next best item to resume. ## Recommended Progress Entry Shape Use a short structure like: ```markdown ## 2026-03-17 14:30 - Item: F003 - Summary: Updated the browser-check flow to use the shared init/bootstrap path. - Files: `.cursor/agents/browser-check.md`, `.codex/agents/browser-check.toml` - Verification: `yarn build`, `yarn lint`, `yarn type-check` - Next: Run the smoke flow and update the task-board status. ``` ================================================ FILE: docs/agent-playbooks/skills-and-tools.md ================================================ # Skills and Tools Use this playbook when setting up/adjusting skills and external tooling. ## Recommended Skills ### Context7 (library docs) For up-to-date docs on libraries. ```bash npx skills add https://github.com/intellectronica/agent-skills --skill context7 ``` ### Vercel React Best Practices For deeper React/Next performance guidance. ```bash npx skills add https://github.com/vercel-labs/agent-skills --skill vercel-react-best-practices ``` ### Find Skills Discover/install skills from the open ecosystem. ```bash npx skills add https://github.com/vercel-labs/skills --skill find-skills ``` ### Playwright CLI Use `playwright-cli` for browser automation (navigation, interaction, screenshots, tests, extraction). Default to a fresh isolated browser session for normal verification. If the task depends on the contributor's existing browser state, ask whether they want: - a fresh isolated `playwright-cli` session - their current browser session reused Do not attach to a live personal browser session without explicit confirmation. When using `playwright-cli` for repo UI verification, run the relevant flow in all three main browser engines: - `chrome` for Blink - `firefox` for Gecko - `webkit` for Safari/WebKit coverage Use separate named sessions per engine so results stay isolated. If an engine is intentionally skipped, record why. ```bash npm install -g @playwright/cli@latest playwright-cli install --skills ``` Skill install locations: - `.codex/skills/playwright-cli/` - `.cursor/skills/playwright-cli/` - `.claude/skills/playwright-cli/` ## MCP Policy Rationale Avoid GitHub MCP and browser MCP servers for this project because they add significant tool-schema/context overhead. - GitHub operations: use `gh` CLI. - Browser operations: use `playwright-cli`. - If current browser reuse is needed, keep using Playwright-based attach paths rather than browser MCP servers. ================================================ FILE: docs/agent-playbooks/templates/feature-list.template.json ================================================ { "task": "replace-with-task-slug", "last_updated": "YYYY-MM-DD", "items": [ { "id": "F001", "priority": 1, "status": "pending", "description": "Describe one end-to-end feature or one reviewable task slice.", "verification": [ "List the command or user-visible check that proves this item works." ], "files": [], "notes": "" } ] } ================================================ FILE: docs/agent-playbooks/templates/progress.template.md ================================================ # Progress Log Append one entry per session. ## YYYY-MM-DD HH:MM - Item: F001 - Summary: Replace this with the session summary. - Files: `path/to/file` - Verification: `yarn build`, `yarn lint`, `yarn type-check` - Blockers: none - Next: Replace this with the next best follow-up. ================================================ FILE: docs/agent-playbooks/translations.md ================================================ # Translations Workflow This project uses i18next translation files in `public/translations/{lang}/default.json`. ## Rule Do not manually edit every language file. Use `scripts/update-translations.js`. ## Add or Update a Key 1. Create a temporary dictionary file, e.g. `translations-temp.json`: ```json { "en": "English text", "es": "Spanish text", "fr": "French text", "de": "German text" } ``` 2. Apply the translation map: ```bash node scripts/update-translations.js --key my_new_key --map translations-temp.json --include-en --write ``` 3. Delete the temporary dictionary file. ## Other Useful Commands ```bash # Copy a key from English to all languages (dry run then write) node scripts/update-translations.js --key some_key --from en --dry node scripts/update-translations.js --key some_key --from en --write # Delete a key from all languages node scripts/update-translations.js --key obsolete_key --delete --write # Audit for unused translation keys node scripts/update-translations.js --audit --dry node scripts/update-translations.js --audit --write ``` ================================================ FILE: electron/after-all-artifact-build.cjs ================================================ const fs = require('fs-extra'); const path = require('path'); const { execSync } = require('child_process'); const packageJson = require('../package.json'); const rootPath = path.resolve(__dirname, '..'); const distFolderPath = path.resolve(rootPath, 'dist'); function addPortableToPortableExecutableFileName() { const files = fs.readdirSync(distFolderPath); for (const file of files) { if (file.endsWith('.exe') && !file.match('Setup')) { const filePath = path.resolve(distFolderPath, file); const renamedFilePath = path.resolve(distFolderPath, file.replace('seedit', 'seedit Portable')); fs.moveSync(filePath, renamedFilePath); } } } function createHtmlArchive() { if (process.platform !== 'linux') { return; } const zipBinPath = path.resolve(rootPath, 'node_modules', '7zip-bin', 'linux', 'x64', '7za'); const seeditHtmlFolderName = `seedit-html-${packageJson.version}`; const outputFile = path.resolve(distFolderPath, `${seeditHtmlFolderName}.zip`); const inputFolder = path.resolve(rootPath, 'build'); try { execSync(`${zipBinPath} a ${outputFile} ${inputFolder}`); execSync(`${zipBinPath} rn -r ${outputFile} build ${seeditHtmlFolderName}`); } catch (e) { console.error('electron build createHtmlArchive error:', e); } } module.exports = async function afterAllArtifactBuild(_buildResult) { addPortableToPortableExecutableFileName(); createHtmlArchive(); }; ================================================ FILE: electron/before-pack.js ================================================ // download the ipfs binaries before building the electron clients import fs from 'fs-extra'; import ProgressBar from 'progress'; import https from 'https'; import decompress from 'decompress'; import path from 'path'; import { fileURLToPath } from 'url'; const ipfsClientsPath = path.join(path.dirname(fileURLToPath(import.meta.url)), '..', 'bin'); const ipfsClientWindowsPath = path.join(ipfsClientsPath, 'win'); const ipfsClientMacPath = path.join(ipfsClientsPath, 'mac'); const ipfsClientLinuxPath = path.join(ipfsClientsPath, 'linux'); // plebbit kubu download links https://github.com/plebbit/kubo/releases // const ipfsClientVersion = '0.20.0' // const ipfsClientWindowsUrl = `https://github.com/plebbit/kubo/releases/download/v${ipfsClientVersion}/ipfs-windows-amd64` // const ipfsClientMacUrl = `https://github.com/plebbit/kubo/releases/download/v${ipfsClientVersion}/ipfs-darwin-amd64` // const ipfsClientLinuxUrl = `https://github.com/plebbit/kubo/releases/download/v${ipfsClientVersion}/ipfs-linux-amd64` // official kubo download links https://docs.ipfs.tech/install/command-line/#install-official-binary-distributions // NOTE: Keep this version in sync with the kubo version in package.json to avoid repo version mismatches const ipfsClientVersion = '0.39.0'; // Resolve desired build arch: allow overriding via env (so cross-arch builds pick correct binary) const resolveBuildArch = () => { const envArch = process.env.SEEDIT_BUILD_ARCH; if (envArch === 'arm64' || envArch === 'x64') return envArch; // fallback to host arch if (process.arch === 'arm64') return 'arm64'; return 'x64'; }; const toKuboArch = (arch) => (arch === 'arm64' ? 'arm64' : 'amd64'); const getKuboUrl = (platform) => { const arch = toKuboArch(resolveBuildArch()); if (platform === 'win32') return `https://dist.ipfs.io/kubo/v${ipfsClientVersion}/kubo_v${ipfsClientVersion}_windows-${arch}.zip`; if (platform === 'darwin') return `https://dist.ipfs.io/kubo/v${ipfsClientVersion}/kubo_v${ipfsClientVersion}_darwin-${arch}.tar.gz`; if (platform === 'linux') return `https://dist.ipfs.io/kubo/v${ipfsClientVersion}/kubo_v${ipfsClientVersion}_linux-${arch}.tar.gz`; // default to linux return `https://dist.ipfs.io/kubo/v${ipfsClientVersion}/kubo_v${ipfsClientVersion}_linux-${arch}.tar.gz`; }; const downloadWithProgress = (url) => new Promise((resolve, reject) => { const split = url.split('/'); const fileName = split[split.length - 1]; const chunks = []; const req = https.request(url); req.on('error', (err) => { console.error(`Error making request for ${url}:`, err); reject(err); }); req.on('response', (res) => { res.on('error', (err) => { console.error(`Error in response for ${url}:`, err); reject(err); }); // handle redirects if (res.statusCode == 301 || res.statusCode === 302) { resolve(downloadWithProgress(res.headers.location)); return; } const len = parseInt(res.headers['content-length'], 10); console.log(); const bar = new ProgressBar(` ${fileName} [:bar] :rate/bps :percent :etas`, { complete: '=', incomplete: ' ', width: 20, total: len, stream: process.stdout, }); res.on('data', (chunk) => { chunks.push(chunk); bar.tick(chunk.length); }); res.on('end', () => { console.log('\n'); resolve(Buffer.concat(chunks)); }); }); req.end(); }); // add retry wrapper around downloadWithProgress to handle transient network errors const downloadWithRetry = async (url, retries = 3) => { for (let attempt = 1; attempt <= retries; attempt++) { try { return await downloadWithProgress(url); } catch (err) { console.warn(`Download attempt ${attempt} for ${url} failed:`, err); if (attempt === retries) throw err; // wait before retrying await new Promise((res) => setTimeout(res, attempt * 1000)); } } }; // official kubo downloads need to be extracted const downloadAndExtract = async (url, destinationPath) => { let binName = 'ipfs'; if (destinationPath.endsWith('win')) { binName += '.exe'; } const binPath = path.join(destinationPath, binName); if (fs.pathExistsSync(binPath)) { return; } console.log(`Downloading IPFS client from ${url} to ${destinationPath}`); const split = url.split('/'); const fileName = split[split.length - 1]; const archivePath = path.join(destinationPath, fileName); const file = await downloadWithRetry(url); fs.ensureDirSync(destinationPath); await fs.writeFile(archivePath, file); console.log(`Downloaded archive to ${archivePath}`); console.log(`Extracting ${archivePath} to ${destinationPath}`); try { await decompress(archivePath, destinationPath); console.log('Decompression complete'); } catch (err) { console.error('Error during decompression:', err); throw err; } const extractedPath = path.join(destinationPath, 'kubo'); const extractedBinPath = path.join(extractedPath, binName); console.log(`Moving binary from ${extractedBinPath} to ${binPath}`); fs.moveSync(extractedBinPath, binPath); console.log('Binary moved'); console.log('Cleaning up temporary files'); fs.removeSync(archivePath); console.log('Cleanup complete'); }; export const downloadIpfsClients = async () => { const platform = process.platform; console.log(`Starting IPFS client download for platform: ${platform}, targetArch: ${resolveBuildArch()}`); const url = getKuboUrl(platform); if (platform === 'win32') { await downloadAndExtract(url, ipfsClientWindowsPath); } else if (platform === 'darwin') { await downloadAndExtract(url, ipfsClientMacPath); } else if (platform === 'linux') { await downloadAndExtract(url, ipfsClientLinuxPath); } else { console.warn(`Unknown platform: ${platform}, defaulting to linux path`); await downloadAndExtract(url, ipfsClientLinuxPath); } }; export default async (_context) => { await downloadIpfsClients(); }; ================================================ FILE: electron/build-docker.sh ================================================ root_path=$(cd `dirname $0` && cd .. && pwd) cd "$root_path" # install node_modules if [[ ! -f node_modules ]] then yarn || { echo "Error: failed installing 'node_modules' with 'yarn'" ; exit 1; } fi # download ipfs clients node electron/download-ipfs || { echo "Error: failed script 'node electron/download-ipfs'" ; exit 1; } dockerfile=' FROM node:22 # install node_modules WORKDIR /usr/src/seedit COPY ./package.json . COPY ./yarn.lock . RUN yarn # copy source files and configs COPY ./bin ./bin COPY ./electron ./electron COPY ./src ./src COPY ./public ./public COPY ./forge.config.js ./forge.config.js COPY ./vite.config.js ./vite.config.js COPY ./tsconfig.json ./tsconfig.json COPY ./index.html ./index.html # react build RUN yarn build ' # build electron-forge docker image # temporary .dockerignore to save build time echo $'node_modules\ndist' > .dockerignore echo "$dockerfile" | sudo docker build \ . \ --tag seedit-electron-forge \ --file - rm .dockerignore # build linux binary sudo docker run \ --name seedit-electron-forge \ --volume "$root_path"/dist:/usr/src/seedit/dist \ --rm \ seedit-electron-forge \ yarn electron:build:linux # build windows binary sudo docker run \ --name seedit-electron-forge \ --volume "$root_path"/dist:/usr/src/seedit/dist \ --rm \ seedit-electron-forge \ yarn electron:build:windows ================================================ FILE: electron/download-ipfs.js ================================================ import { downloadIpfsClients } from './before-pack.js'; // Wrap the download in an async IIFE and exit when done (async () => { try { await downloadIpfsClients(); console.log('IPFS clients downloaded successfully.'); process.exit(0); } catch (err) { console.error('IPFS clients download error:', err); process.exit(1); } })(); ================================================ FILE: electron/log.js ================================================ // require this file to log to file in case there's a crash import util from 'util'; import fs from 'fs-extra'; import path from 'path'; import EnvPaths from 'env-paths'; import isDev from 'electron-is-dev'; const envPaths = EnvPaths('plebbit', { suffix: false }); // previous version created a file instead of folder // we should remove this at some point try { if (fs.lstatSync(envPaths.log).isFile()) { fs.removeSync(envPaths.log); } } catch {} const logFilePath = path.join(envPaths.log, new Date().toISOString().substring(0, 7)); fs.ensureFileSync(logFilePath); const logFile = fs.createWriteStream(logFilePath, { flags: 'a' }); const writeLog = (...args) => { logFile.write(new Date().toISOString() + ' '); for (const arg of args) { logFile.write(util.format(arg) + ' '); } logFile.write('\r\n'); }; const consoleLog = console.log; const consoleError = console.error; const consoleWarn = console.warn; const consoleDebug = console.debug; // In production, avoid writing verbose logs (log/debug) to disk to prevent I/O thrash. if (!isDev) { console.log = (...args) => { // keep stdout behavior but don't write to file consoleLog(...args); }; console.debug = (...args) => { consoleDebug(...args); }; console.warn = (...args) => { writeLog(...args); consoleWarn(...args); }; console.error = (...args) => { writeLog(...args); consoleError(...args); }; } else { // In dev, mirror everything to file for easier debugging console.log = (...args) => { writeLog(...args); consoleLog(...args); }; console.warn = (...args) => { writeLog(...args); consoleWarn(...args); }; console.error = (...args) => { writeLog(...args); consoleError(...args); }; console.debug = (...args) => { for (const arg of args) { logFile.write(util.format(arg) + ' '); } logFile.write('\r\n'); consoleDebug(...args); }; } // errors aren't console logged process.on('uncaughtException', console.error); process.on('unhandledRejection', console.error); if (isDev) console.log(envPaths); ================================================ FILE: electron/main.js ================================================ import './log.js'; import { app, BrowserWindow, Menu, MenuItem, Tray, shell, dialog, nativeTheme, ipcMain, Notification, systemPreferences, clipboard } from 'electron'; import isDev from 'electron-is-dev'; import fs from 'fs'; import path from 'path'; import EnvPaths from 'env-paths'; import startIpfs from './start-ipfs.js'; import './start-plebbit-rpc.js'; import { URL, fileURLToPath } from 'node:url'; import contextMenu from 'electron-context-menu'; import FormData from 'form-data'; import fetch from 'node-fetch'; // Linux startup hardening: default to X11 ozone and sanitize env to avoid GTK mixups const isLinux = process.platform === 'linux'; if (isLinux && !process.env.SEEDIT_NO_ENV_SANITIZE) { // Default to X11 unless the user explicitly sets a hint if (!process.env.ELECTRON_OZONE_PLATFORM_HINT) { process.env.ELECTRON_OZONE_PLATFORM_HINT = 'x11'; } // Unset common injectors known to trigger mixed GTK majors delete process.env.GTK_MODULES; delete process.env.GTK_PATH; delete process.env.LD_PRELOAD; } // Keep a global Tray reference to prevent GC removing the tray icon let tray; // Determine __filename and dirname for ESM const __filename = fileURLToPath(import.meta.url); const dirname = path.dirname(__filename); // Load package.json dynamically const packageJson = JSON.parse(fs.readFileSync(path.join(dirname, '../package.json'), 'utf-8')); let startIpfsError; startIpfs.onError = (error) => { // only show error once or it spams the user const alreadyShownIpfsError = !!startIpfsError; startIpfsError = error; if (!alreadyShownIpfsError && error.message) { dialog.showErrorBox('IPFS warning', error.message); } }; // send plebbit rpc auth key to renderer const plebbitDataPath = !isDev ? EnvPaths('plebbit', { suffix: false }).data : path.join(dirname, '..', '.plebbit'); const plebbitRpcAuthKey = fs.readFileSync(path.join(plebbitDataPath, 'auth-key'), 'utf8'); ipcMain.on('get-plebbit-rpc-auth-key', (event) => event.reply('plebbit-rpc-auth-key', plebbitRpcAuthKey)); // use common user agent instead of electron so img, video, audio, iframe elements don't get blocked // https://www.whatismybrowser.com/guides/the-latest-version/chrome // https://www.whatismybrowser.com/guides/the-latest-user-agent/chrome // NOTE: eventually should probably fake sec-ch-ua header as well let fakeUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'; if (process.platform === 'darwin') fakeUserAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 13_5_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'; if (process.platform === 'linux') fakeUserAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'; const realUserAgent = `seedit/${packageJson.version}`; // Handle IPC call to show notification ipcMain.on('show-notification', (event, notificationData) => { if (Notification.isSupported()) { const notification = new Notification({ title: notificationData.title, body: notificationData.body, }); if (notificationData.url) { notification.on('click', () => { if (mainWindow && !mainWindow.isDestroyed()) { shell.openExternal(notificationData.url).catch((err) => console.error('Failed to open URL:', err)); } }); } notification.show(); } else { console.warn('Electron Notifications not supported on this system.'); } }); // Handle request for notification permission status ipcMain.handle('get-notification-permission-status', async () => { try { if (!Notification.isSupported()) { console.log('[Electron Main] Notification API not supported.'); return 'not-supported'; } if (process.platform === 'darwin') { if (typeof systemPreferences.getNotificationSettings === 'function') { const settings = systemPreferences.getNotificationSettings(); const auth = settings.authorizationStatus; if (auth === 'denied') return 'denied'; if (auth === 'authorized') return 'granted'; return 'not-determined'; } if (typeof systemPreferences.getNotificationPermissionStatus === 'function') { return systemPreferences.getNotificationPermissionStatus(); } return 'granted'; } return 'granted'; } catch (error) { console.error('[Electron Main] Error getting notification permission status:', error); return 'unknown'; } }); // Handle request to test notification permission ipcMain.handle('test-notification-permission', async () => { if (!Notification.isSupported()) { return { success: false, reason: 'not-supported' }; } try { let status = 'unknown'; if (process.platform === 'darwin') { if (typeof systemPreferences.getNotificationPermissionStatus === 'function') { status = systemPreferences.getNotificationPermissionStatus(); } else { status = Notification.isSupported() ? 'granted' : 'not-supported'; } } else { status = Notification.isSupported() ? 'granted' : 'not-supported'; } if (status === 'denied') return { success: false, reason: 'denied' }; if (status === 'not-supported') return { success: false, reason: 'not-supported' }; const testNotification = new Notification({ title: 'Seedit Test', body: 'Testing if notifications are allowed.', }); testNotification.show(); return { success: true }; } catch (error) { console.error('[Electron Main Test] Error sending test notification:', error); return { success: false, reason: 'error' }; } }); // add right click menu contextMenu({ // prepend custom buttons to top prepend: (defaultActions, parameters, browserWindow) => [ { label: 'Back', visible: parameters.mediaType === 'none', enabled: browserWindow?.webContents?.canGoBack(), click: () => browserWindow?.webContents?.goBack(), }, { label: 'Forward', visible: parameters.mediaType === 'none', enabled: browserWindow?.webContents?.canGoForward(), click: () => browserWindow?.webContents?.goForward(), }, { label: 'Reload', visible: parameters.mediaType === 'none', click: () => browserWindow?.webContents?.reload(), }, ], showLookUpSelection: false, showCopyImage: true, showCopyImageAddress: true, showSaveImageAs: true, showSaveLinkAs: true, showInspectElement: true, showServices: false, showSearchWithGoogle: false, }); const createMainWindow = () => { let mainWindow = new BrowserWindow({ width: 1000, height: 600, show: false, backgroundColor: nativeTheme.shouldUseDarkColors ? '#000000' : '#ffffff', webPreferences: { webSecurity: true, // must be true or iframe embeds like youtube can do remote code execution nodeIntegration: false, contextIsolation: true, devTools: isDev, preload: path.join(dirname, '../build/electron/preload.cjs'), }, }); // set fake user agent mainWindow.webContents.userAgent = fakeUserAgent; // set custom user agent and other headers for window.fetch requests to prevent origin errors mainWindow.webContents.session.webRequest.onBeforeSendHeaders({ urls: ['*://*/*'] }, (details, callback) => { const isIframe = !!details.frame?.parent; // if not a fetch request (or fetch request is from within iframe), do nothing, filtering webRequest by types doesn't seem to work if (details.resourceType !== 'xhr' || isIframe) { return callback({ requestHeaders: details.requestHeaders }); } // add privacy details.requestHeaders['User-Agent'] = realUserAgent; details.requestHeaders['sec-ch-ua'] = undefined; details.requestHeaders['sec-ch-ua-platform'] = undefined; details.requestHeaders['sec-ch-ua-mobile'] = undefined; details.requestHeaders['Sec-Fetch-Dest'] = undefined; details.requestHeaders['Sec-Fetch-Mode'] = undefined; details.requestHeaders['Sec-Fetch-Site'] = undefined; // prevent origin errors details.requestHeaders['Origin'] = undefined; callback({ requestHeaders: details.requestHeaders }); }); // fix cors errors for window.fetch. must not be enabled for iframe or can cause remote code execution mainWindow.webContents.session.webRequest.onHeadersReceived({ urls: ['*://*/*'] }, (details, callback) => { const isIframe = !!details.frame?.parent; // if not a fetch request (or fetch request is from within iframe), do nothing, filtering webRequest by types doesn't seem to work if (details.resourceType !== 'xhr' || isIframe) { return callback({ responseHeaders: details.responseHeaders }); } // must delete lower case headers or both '*, *' could get added delete details.responseHeaders['access-control-allow-origin']; delete details.responseHeaders['access-control-allow-headers']; delete details.responseHeaders['access-control-allow-methods']; delete details.responseHeaders['access-control-expose-headers']; details.responseHeaders['Access-Control-Allow-Origin'] = '*'; details.responseHeaders['Access-Control-Allow-Headers'] = '*'; details.responseHeaders['Access-Control-Allow-Methods'] = '*'; details.responseHeaders['Access-Control-Expose-Headers'] = '*'; callback({ responseHeaders: details.responseHeaders }); }); const startURL = isDev ? 'http://localhost:3000' : `file://${path.join(dirname, '../build/index.html')}`; mainWindow.loadURL(startURL); mainWindow.once('ready-to-show', async () => { // make sure back button is disabled on launch mainWindow.webContents.clearHistory(); mainWindow.show(); if (isDev) { mainWindow.openDevTools(); } if (startIpfsError) { dialog.showErrorBox('IPFS warning', startIpfsError.message); } }); mainWindow.on('closed', () => { mainWindow = null; }); // don't open new windows mainWindow.webContents.on('new-window', (event, url) => { event.preventDefault(); mainWindow.loadURL(url); }); // open links in external browser // do not open links in seedit or will lead to remote execution mainWindow.webContents.on('will-navigate', (e, originalUrl) => { if (originalUrl != mainWindow.webContents.getURL()) { e.preventDefault(); try { // do not let the user open any url with shell.openExternal // or it will lead to remote execution https://benjamin-altpeter.de/shell-openexternal-dangers/ // only open valid https urls to prevent remote execution // will throw if url isn't valid const validatedUrl = new URL(originalUrl); let serializedUrl = ''; // make an exception for ipfs stats if (validatedUrl.toString() === 'http://localhost:50019/webui/') { serializedUrl = validatedUrl.toString(); } else if (validatedUrl.protocol === 'https:') { // open serialized url to prevent remote execution serializedUrl = validatedUrl.toString(); } else { throw Error(`can't open url '${originalUrl}', it's not https and not the allowed http exception`); } shell.openExternal(serializedUrl); } catch (e) { console.warn(e); } } }); // open links (with target="_blank") in external browser // do not open links in seedit or will lead to remote execution mainWindow.webContents.setWindowOpenHandler(({ url }) => { const originalUrl = url; try { // do not let the user open any url with shell.openExternal // or it will lead to remote execution https://benjamin-altpeter.de/shell-openexternal-dangers/ // only open valid https urls to prevent remote execution // will throw if url isn't valid const validatedUrl = new URL(originalUrl); let serializedUrl = ''; // make an exception for ipfs stats if (validatedUrl.toString() === 'http://localhost:50019/webui/') { serializedUrl = validatedUrl.toString(); } else if (validatedUrl.protocol === 'https:') { // open serialized url to prevent remote execution serializedUrl = validatedUrl.toString(); } else { throw Error(`can't open url '${originalUrl}', it's not https and not the allowed http exception`); } shell.openExternal(serializedUrl); } catch (e) { console.warn(e); } return { action: 'deny' }; }); // deny permissions like location, notifications, etc https://www.electronjs.org/docs/latest/tutorial/security#5-handle-session-permission-requests-from-remote-content mainWindow.webContents.session.setPermissionRequestHandler((webContents, permission, callback) => { // deny all permissions return callback(false); }); // deny attaching webview https://www.electronjs.org/docs/latest/tutorial/security#12-verify-webview-options-before-creation mainWindow.webContents.on('will-attach-webview', (e) => { // deny all e.preventDefault(); }); if (process.platform !== 'darwin') { const isWayland = process.platform === 'linux' && (process.env.XDG_SESSION_TYPE === 'wayland' || process.env.WAYLAND_DISPLAY || process.env.ELECTRON_OZONE_PLATFORM_HINT === 'wayland'); const trayDisabled = isWayland && process.env.SEEDIT_ENABLE_TRAY !== '1'; if (!trayDisabled) { // tray const trayIconPath = path.join(dirname, '..', isDev ? 'public' : 'build', 'electron-tray-icon.png'); if (tray) { try { tray.destroy(); } catch {} } tray = new Tray(trayIconPath); tray.setToolTip('seedit'); const trayMenu = Menu.buildFromTemplate([ { label: 'Open seedit', click: () => { mainWindow.show(); }, }, { label: 'Quit seedit', click: () => { mainWindow.destroy(); app.quit(); }, }, ]); tray.setContextMenu(trayMenu); // show/hide on tray right click tray.on('right-click', () => { if (mainWindow.isVisible()) { mainWindow.hide(); } else { mainWindow.show(); } }); // close to tray if (!isDev) { let isQuiting = false; app.on('before-quit', () => { isQuiting = true; }); mainWindow.on('close', (event) => { if (!isQuiting) { event.preventDefault(); mainWindow.hide(); event.returnValue = false; } }); } } } const appMenuBack = new MenuItem({ label: '←', enabled: mainWindow?.webContents?.canGoBack(), click: () => mainWindow?.webContents?.goBack(), }); const appMenuForward = new MenuItem({ label: '→', enabled: mainWindow?.webContents?.canGoForward(), click: () => mainWindow?.webContents?.goForward(), }); const appMenuReload = new MenuItem({ label: '⟳', role: 'reload', click: () => mainWindow?.webContents?.reload(), }); // application menu // hide useless electron help menu if (process.platform === 'darwin') { const appMenu = Menu.getApplicationMenu(); appMenu.insert(1, appMenuBack); appMenu.insert(2, appMenuForward); appMenu.insert(3, appMenuReload); Menu.setApplicationMenu(appMenu); } else { // Other platforms const originalAppMenuWithoutHelp = Menu.getApplicationMenu()?.items.filter((item) => item.role !== 'help'); const appMenu = [appMenuBack, appMenuForward, appMenuReload, ...originalAppMenuWithoutHelp]; Menu.setApplicationMenu(Menu.buildFromTemplate(appMenu)); } }; app.whenReady().then(() => { // Set app name and dock icon for development mode on macOS if (process.platform === 'darwin') { app.setName('seedit'); if (app.dock) { const iconPath = path.join(dirname, '..', isDev ? 'public' : 'build', 'icon.png'); app.dock.setIcon(iconPath); } } createMainWindow(); app.on('activate', () => { if (!BrowserWindow.getAllWindows().length) { createMainWindow(); } }); }); app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit(); } }); // FileUploader plugin handlers ipcMain.handle('plugin:file-uploader:pickAndUploadMedia', async (event) => { try { const mainWindow = BrowserWindow.fromWebContents(event.sender); const result = await dialog.showOpenDialog(mainWindow, { properties: ['openFile'], filters: [{ name: 'Images & Videos', extensions: ['jpg', 'jpeg', 'png', 'gif', 'mp4', 'webm'] }], }); if (result.canceled || result.filePaths.length === 0) throw new Error('File selection cancelled'); const filePath = result.filePaths[0]; const fileName = path.basename(filePath); const formData = new FormData(); formData.append('reqtype', 'fileupload'); formData.append('fileToUpload', fs.createReadStream(filePath)); const response = await fetch('https://catbox.moe/user/api.php', { method: 'POST', body: formData }); if (!response.ok) throw new Error(`Upload failed with status ${response.status}`); return { url: await response.text(), fileName }; } catch (error) { console.error('FileUploader error:', error); throw error; } }); ipcMain.handle('plugin:file-uploader:uploadMedia', async (event, fileData) => { try { console.log('uploadMedia handler called with data:', typeof fileData); const formData = new FormData(); formData.append('reqtype', 'fileupload'); if (fileData.fileData && fileData.fileName) { const buffer = Buffer.from(fileData.fileData, 'base64'); formData.append('fileToUpload', buffer, fileData.fileName); } else { throw new Error('Invalid file data'); } const response = await fetch('https://catbox.moe/user/api.php', { method: 'POST', body: formData }); if (!response.ok) throw new Error(`Upload failed with status ${response.status}`); return { url: await response.text(), fileName: fileData.fileName || 'uploaded-file' }; } catch (error) { console.error('FileUploader uploadMedia error:', error); throw error; } }); ipcMain.handle('plugin:file-uploader:pickMedia', async (event) => { try { const mainWindow = BrowserWindow.fromWebContents(event.sender); const result = await dialog.showOpenDialog(mainWindow, { properties: ['openFile'], filters: [{ name: 'Images & Videos', extensions: ['jpg', 'jpeg', 'png', 'gif', 'mp4', 'webm'] }], }); if (result.canceled || result.filePaths.length === 0) throw new Error('File selection cancelled'); const filePath = result.filePaths[0]; const fileName = path.basename(filePath); const fileBuffer = fs.readFileSync(filePath); const base64Data = fileBuffer.toString('base64'); const ext = path.extname(fileName).toLowerCase(); let mimeType = 'application/octet-stream'; if (ext === '.jpg' || ext === '.jpeg') mimeType = 'image/jpeg'; else if (ext === '.png') mimeType = 'image/png'; else if (ext === '.gif') mimeType = 'image/gif'; else if (ext === '.mp4') mimeType = 'video/mp4'; else if (ext === '.webm') mimeType = 'video/webm'; return { data: base64Data, fileName, mimeType }; } catch (error) { console.error('FileUploader pickMedia error:', error); throw error; } }); // Handle request to copy text to clipboard ipcMain.handle('copy-to-clipboard', async (event, text) => { try { clipboard.writeText(text); return { success: true }; } catch (error) { console.error('[Electron Main] Error copying to clipboard:', error); return { success: false, error: error.message }; } }); // Handle request for platform info ipcMain.handle('get-platform', async () => { return { platform: process.platform, arch: process.arch, version: process.version, }; }); ================================================ FILE: electron/preload.mjs ================================================ import { contextBridge, ipcRenderer } from 'electron'; // dev uses http://localhost, prod uses file://...index.html const defaultPlebbitOptions = { plebbitRpcClientsOptions: ['ws://localhost:9138'], httpRoutersOptions: ['https://peers.pleb.bot', 'https://routing.lol', 'https://peers.forumindex.com', 'https://peers.plebpubsub.xyz'], }; contextBridge.exposeInMainWorld('isElectron', true); contextBridge.exposeInMainWorld('defaultPlebbitOptions', defaultPlebbitOptions); contextBridge.exposeInMainWorld('defaultMediaIpfsGatewayUrl', 'http://localhost:6473'); // receive plebbit rpc auth key from main ipcRenderer.on('plebbit-rpc-auth-key', (event, plebbitRpcAuthKey) => contextBridge.exposeInMainWorld('plebbitRpcAuthKey', plebbitRpcAuthKey)); ipcRenderer.send('get-plebbit-rpc-auth-key'); // notifications IPC contextBridge.exposeInMainWorld('electron', { invoke: (channel, ...args) => { const validChannels = [ 'plugin:file-uploader:pickAndUploadMedia', 'plugin:file-uploader:uploadMedia', 'plugin:file-uploader:pickMedia', 'get-notification-permission-status', 'get-platform', 'test-notification-permission', 'copy-to-clipboard', ]; if (validChannels.includes(channel)) { return ipcRenderer.invoke(channel, ...args); } throw new Error(`Unauthorized IPC channel: ${channel}`); }, sendNotification: (notification) => { ipcRenderer.send('show-notification', notification); }, }); contextBridge.exposeInMainWorld('electronApi', { isElectron: true, getNotificationStatus: () => ipcRenderer.invoke('get-notification-permission-status'), getPlatform: () => ipcRenderer.invoke('get-platform'), testNotification: () => ipcRenderer.invoke('test-notification-permission'), showNotification: (notification) => ipcRenderer.send('show-notification', notification), copyToClipboard: (text) => ipcRenderer.invoke('copy-to-clipboard', text), }); ================================================ FILE: electron/proxy-server.js ================================================ // use this proxy server to debug ipfs api requests made by electron import http from 'http'; import httpProxy from 'http-proxy'; // start proxy const proxy = httpProxy.createProxyServer({}); // rewrite the request proxy.on('proxyReq', function (proxyReq) { // remove headers that could potentially cause an ipfs 403 error proxyReq.removeHeader('X-Forwarded-For'); proxyReq.removeHeader('X-Forwarded-Proto'); proxyReq.removeHeader('sec-ch-ua'); proxyReq.removeHeader('sec-ch-ua-mobile'); proxyReq.removeHeader('user-agent'); proxyReq.removeHeader('origin'); proxyReq.removeHeader('sec-fetch-site'); proxyReq.removeHeader('sec-fetch-mode'); proxyReq.removeHeader('sec-fetch-dest'); proxyReq.removeHeader('referer'); }); proxy.on('error', (e, req, res) => { console.error(e); // if not ended, will hang forever res.statusCode = 502; res.setHeader('Content-Type', 'text/plain'); res.end(`502 Bad Gateway: ${e.message}`); }); // start server const start = ({ proxyPort, targetPort } = {}) => { const server = http.createServer(); // never timeout the keep alive connection server.keepAliveTimeout = 0; server.on('request', async (req, res) => { console.log(new Date().toISOString(), req.method, req.url, req.rawHeaders); // fix cors error from dev url localhost:3000 // should not be necessary in production build using file url res.setHeader('Access-Control-Allow-Origin', '*'); proxy.web(req, res, { target: `http://localhost:${targetPort}` }); }); server.on('error', console.error); server.listen(proxyPort); console.log(`proxy server listening on port ${proxyPort}`); }; export default { start }; ================================================ FILE: electron/src/main.ts ================================================ import { app, BrowserWindow, ipcMain, Notification, systemPreferences } from 'electron'; import * as path from 'path'; import { setupFileUploaderPlugin } from './plugins/file-uploader'; let mainWindow: BrowserWindow | null = null; function createWindow() { mainWindow = new BrowserWindow({ width: 1200, height: 800, webPreferences: { nodeIntegration: false, contextIsolation: true, preload: path.join(__dirname, 'preload.js'), }, }); // Prevent file drops on the window mainWindow!.webContents.on('will-navigate', (e, url) => { if (url !== mainWindow!.webContents.getURL()) { e.preventDefault(); } }); // Prevent default file drop behavior // @ts-ignore: drop event not in WebContents type definitions (mainWindow!.webContents as any).on('drop', (e: any) => { e.preventDefault(); }); // @ts-ignore: dragover event not in WebContents type definitions (mainWindow!.webContents as any).on('dragover', (e: any) => { e.preventDefault(); }); // Setup the FileUploader plugin setupFileUploaderPlugin(mainWindow); // Load your app if (process.env.NODE_ENV === 'development') { mainWindow.loadURL('http://localhost:3000'); mainWindow.webContents.openDevTools(); } else { mainWindow.loadFile(path.join(__dirname, '../build/index.html')); } } app.whenReady().then(() => { // --- notification IPC handlers --- ipcMain.handle('get-notification-permission-status', async () => { try { // First check if the Notification API itself is supported if (!Notification.isSupported()) { console.log('[Electron Main] Notification API not supported.'); return 'not-supported'; } // Platform-specific checks using Electron built-ins if (process.platform === 'darwin') { // macOS if (typeof (systemPreferences as any).getNotificationSettings === 'function') { // Use systemPreferences only if available (avoids electron internal warnings on older builds) // @ts-ignore: getNotificationSettings may not be in TS definitions const settings = (systemPreferences as any).getNotificationSettings(); const auth = settings.authorizationStatus as string; // 'authorized'|'denied'|'not-determined' console.log('[Electron Main] macOS getNotificationSettings returned:', auth); if (auth === 'denied') return 'denied'; if (auth === 'authorized') return 'granted'; return 'not-determined'; } else if (typeof (systemPreferences as any).getNotificationPermissionStatus === 'function') { // Fallback to older API // @ts-ignore const status = (systemPreferences as any).getNotificationPermissionStatus(); console.log('[Electron Main] macOS getNotificationPermissionStatus returned:', status); return status; } else { console.warn('[Electron Main] No macOS notification permission API available; assuming granted.'); return 'granted'; } } // Windows/Linux/Other: Assume granted if Notification API is supported console.log('[Electron Main] Assuming notification permission granted on non-macOS platform.'); return 'granted'; } catch (error) { console.error('[Electron Main] Error getting notification permission status:', error); return 'unknown'; } }); ipcMain.handle('get-platform', () => { return process.platform as NodeJS.Platform; }); // Changed from handle to on as it doesn't need to return a value ipcMain.on('show-notification', (_evt, notificationData) => { if (!Notification.isSupported()) { console.log('Notifications not supported on this system.'); return; // Don't try to show if not supported } // Use the data passed from the renderer const { title, body } = notificationData; if (title && body) { new Notification({ title, body }).show(); } else { console.error('Invalid notification data received:', notificationData); } }); // Placeholder for test-notification if you implement it later // ipcMain.handle('test-notification', async () => { // // Implement test logic // return { success: true }; // }); // --------------------------------- createWindow(); app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow(); } }); }); app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit(); } }); ================================================ FILE: electron/src/plugins/file-uploader.ts ================================================ import { dialog, ipcMain } from 'electron'; import { createReadStream } from 'fs'; import fetch from 'node-fetch'; import FormData from 'form-data'; import path from 'path'; import fs from 'fs'; import { app } from 'electron'; export function setupFileUploaderPlugin(mainWindow: Electron.BrowserWindow) { // Handle the file upload request from the renderer ipcMain.handle('plugin:file-uploader:pickAndUploadMedia', async () => { try { // Open file dialog const result = await dialog.showOpenDialog(mainWindow, { properties: ['openFile'], filters: [{ name: 'Images, Videos & PDFs', extensions: ['jpg', 'jpeg', 'png', 'gif', 'mp4', 'webm', 'pdf'] }], }); if (result.canceled || result.filePaths.length === 0) { throw new Error('File selection cancelled'); } const filePath = result.filePaths[0]; const fileName = path.basename(filePath); // Create form data for upload const formData = new FormData(); formData.append('reqtype', 'fileupload'); formData.append('fileToUpload', createReadStream(filePath)); // Upload to catbox.moe const response = await fetch('https://catbox.moe/user/api.php', { method: 'POST', body: formData, }); if (!response.ok) { throw new Error(`Upload failed with status ${response.status}`); } const url = await response.text(); return { url, fileName }; } catch (error) { console.error('FileUploader error:', error); throw error; } }); // Add the uploadMedia handler ipcMain.handle('plugin:file-uploader:uploadMedia', async (_, fileData) => { try { const formData = new FormData(); formData.append('reqtype', 'fileupload'); if (fileData.fileData && fileData.fileName) { // If we have base64 data from pickMedia const tempFilePath = path.join(app.getPath('temp'), fileData.fileName); // Write the base64 data to a temp file fs.writeFileSync(tempFilePath, Buffer.from(fileData.fileData, 'base64')); // Append the file to the form formData.append('fileToUpload', createReadStream(tempFilePath)); // Upload to catbox.moe const response = await fetch('https://catbox.moe/user/api.php', { method: 'POST', body: formData, }); // Clean up temp file fs.unlinkSync(tempFilePath); if (!response.ok) { throw new Error(`Upload failed with status ${response.status}`); } const url = await response.text(); return { url, fileName: fileData.fileName }; } else { throw new Error('Invalid file data'); } } catch (error) { console.error('FileUploader uploadMedia error:', error); throw error; } }); // Add the pickMedia handler to Electron ipcMain.handle('plugin:file-uploader:pickMedia', async () => { try { // Open file dialog const result = await dialog.showOpenDialog(mainWindow, { properties: ['openFile'], filters: [{ name: 'Images, Videos & PDFs', extensions: ['jpg', 'jpeg', 'png', 'gif', 'mp4', 'webm', 'pdf'] }], }); if (result.canceled || result.filePaths.length === 0) { throw new Error('File selection cancelled'); } const filePath = result.filePaths[0]; const fileName = path.basename(filePath); // Read the file as base64 const fileBuffer = fs.readFileSync(filePath); const base64Data = fileBuffer.toString('base64'); // Determine mime type from extension const ext = path.extname(fileName).toLowerCase(); let mimeType = 'application/octet-stream'; if (ext === '.jpg' || ext === '.jpeg') mimeType = 'image/jpeg'; else if (ext === '.png') mimeType = 'image/png'; else if (ext === '.gif') mimeType = 'image/gif'; else if (ext === '.mp4') mimeType = 'video/mp4'; else if (ext === '.webm') mimeType = 'video/webm'; else if (ext === '.pdf') mimeType = 'application/pdf'; return { data: base64Data, fileName, mimeType, }; } catch (error) { console.error('FileUploader pickMedia error:', error); throw error; } }); } ================================================ FILE: electron/src/preload.ts ================================================ import { contextBridge, ipcRenderer } from 'electron'; // Expose protected methods that allow the renderer process to use // the ipcRenderer without exposing the entire object contextBridge.exposeInMainWorld('electron', { invoke: (channel: string, ...args: any[]) => { // whitelist channels const validChannels = [ 'plugin:file-uploader:pickAndUploadMedia', 'plugin:file-uploader:uploadMedia', 'plugin:file-uploader:pickMedia', 'get-notification-permission-status', // actual channel 'get-platform', 'test-notification-permission', // correct test channel in main 'show-notification', ]; if (validChannels.includes(channel)) { return ipcRenderer.invoke(channel, ...args); } throw new Error(`Unauthorized IPC channel: ${channel}`); }, // Direct send for notifications sendNotification: (notificationData: { title: string; body: string }) => { ipcRenderer.send('show-notification', notificationData); }, }); // Expose a dedicated "electronApi" for UI code contextBridge.exposeInMainWorld('electronApi', { isElectron: true, invoke: (channel: string, ...args: any[]) => ipcRenderer.invoke(channel, ...args), getNotificationStatus: () => ipcRenderer.invoke('get-notification-permission-status'), getPlatform: () => ipcRenderer.invoke('get-platform'), testNotification: () => ipcRenderer.invoke('test-notification'), // Note: show-notification uses the other API showNotification: (notificationData: { title: string; body: string }) => { ipcRenderer.send('show-notification', notificationData); }, }); ================================================ FILE: electron/start-ipfs.js ================================================ import isDev from 'electron-is-dev'; import path from 'path'; import { spawn } from 'child_process'; import fs from 'fs-extra'; import ps from 'node:process'; import proxyServer from './proxy-server.js'; import tcpPortUsed from 'tcp-port-used'; import EnvPaths from 'env-paths'; import { fileURLToPath, pathToFileURL } from 'url'; const dirname = path.join(path.dirname(fileURLToPath(import.meta.url))); const envPaths = EnvPaths('plebbit', { suffix: false }); // Get platform-specific binary name const getIpfsBinaryName = () => (process.platform === 'win32' ? 'ipfs.exe' : 'ipfs'); // Get platform subdirectory name for bin/ folder const getPlatformDir = () => { if (process.platform === 'win32') return 'win'; if (process.platform === 'darwin') return 'mac'; return 'linux'; }; // Resolve kubo binary path const getKuboPath = async () => { if (isDev) { // In dev, use kubo from node_modules const { path: getKuboBinaryPath } = await import('kubo'); return getKuboBinaryPath(); } else { // In production, the binary is downloaded to bin//ipfs by generateAssets hook // With asar: false, files are at resources/app/ instead of resources/app.asar.unpacked const appPath = process.resourcesPath; const binaryName = getIpfsBinaryName(); const platformDir = getPlatformDir(); // Try the bin/ directory first (where generateAssets downloads binaries) const binDirPath = path.join(appPath, 'app', 'bin', platformDir, binaryName); if (fs.existsSync(binDirPath)) { return binDirPath; } // Fallback: try app.asar.unpacked for ASAR builds (if we ever re-enable ASAR) const unpackedPath = path.join(appPath, 'app.asar.unpacked'); const kuboModulePath = path.join(unpackedPath, 'node_modules', 'kubo'); // Try to import kubo from unpacked location try { const kuboUrl = pathToFileURL(path.resolve(kuboModulePath)).href; const kuboModule = await import(kuboUrl); const { path: getKuboBinaryPath } = kuboModule; return getKuboBinaryPath(); } catch (err) { // Fallback: try to find the binary directly in kubo module const kuboBinPath = path.join(kuboModulePath, 'kubo', binaryName); if (fs.existsSync(kuboBinPath)) { return kuboBinPath; } // Last resort: check in resources/app/node_modules/kubo for non-ASAR builds const appModulePath = path.join(appPath, 'app', 'node_modules', 'kubo'); const appKuboBinPath = path.join(appModulePath, 'kubo', binaryName); if (fs.existsSync(appKuboBinPath)) { return appKuboBinPath; } throw new Error(`Could not find kubo binary. Checked: ${binDirPath}, ${kuboBinPath}, ${appKuboBinPath}`); } } }; // use this custom function instead of spawnSync for better logging // also spawnSync might have been causing crash on start on windows const spawnAsync = (...args) => new Promise((resolve, reject) => { const spawnedProcess = spawn(...args); spawnedProcess.on('exit', (exitCode, signal) => { if (exitCode === 0) resolve(); else reject(Error(`spawnAsync process '${spawnedProcess.pid}' exited with code '${exitCode}' signal '${signal}'`)); }); // Always surface errors from short-lived commands spawnedProcess.stderr.on('data', (data) => console.error(data.toString())); // Short-lived command stdout can be useful in dev, but is noisy in prod if (isDev) { spawnedProcess.stdout.on('data', (data) => console.log(data.toString())); } else { // Drain to avoid backpressure without logging spawnedProcess.stdout.on('data', () => {}); } spawnedProcess.on('error', (data) => console.error(data.toString?.() || String(data))); }); const startIpfs = async () => { const ipfsPath = await getKuboPath(); const ipfsDataPath = isDev ? path.join(dirname, '..', '.plebbit', 'ipfs') : path.join(envPaths.data, 'ipfs'); if (!fs.existsSync(ipfsPath)) { throw Error(`ipfs binary '${ipfsPath}' doesn't exist`); } console.log({ ipfsPath, ipfsDataPath }); fs.ensureDirSync(ipfsDataPath); // Reduce IPFS daemon log verbosity in production to avoid UI lag from excessive logging const env = { ...process.env, IPFS_PATH: ipfsDataPath, ...(isDev ? {} : { GOLOG_LOG_LEVEL: 'error' }) }; // init ipfs client on first launch try { await spawnAsync(ipfsPath, ['init'], { env, hideWindows: true }); } catch {} // make sure repo is migrated try { await spawnAsync(ipfsPath, ['repo', 'migrate'], { env, hideWindows: true }); } catch {} // dont use 8080 port because it's too common await spawnAsync(ipfsPath, ['config', '--json', 'Addresses.Gateway', '"/ip4/127.0.0.1/tcp/6473"'], { env, hideWindows: true, }); // use different port with proxy for debugging during env let apiAddress = '/ip4/127.0.0.1/tcp/50019'; if (isDev) { apiAddress = apiAddress.replace('50019', '50029'); proxyServer.start({ proxyPort: 50019, targetPort: 50029 }); } await spawnAsync(ipfsPath, ['config', 'Addresses.API', apiAddress], { env, hideWindows: true }); const startIpfsDaemon = () => new Promise((resolve, reject) => { const ipfsProcess = spawn(ipfsPath, ['daemon', '--migrate', '--enable-pubsub-experiment', '--enable-namesys-pubsub'], { env, hideWindows: true }); console.log(`ipfs daemon process started with pid ${ipfsProcess.pid}`); let lastError; ipfsProcess.stderr.on('data', (data) => { lastError = data.toString(); if (isDev) console.error(lastError); }); ipfsProcess.stdout.on('data', (chunk) => { const text = chunk.toString(); if (isDev) console.log(text); if (text.includes('Daemon is ready')) { resolve(); } }); ipfsProcess.on('error', (err) => console.error(err?.toString?.() || String(err))); ipfsProcess.on('exit', () => { console.error(`ipfs process with pid ${ipfsProcess.pid} exited`); reject(Error(lastError)); }); process.on('exit', () => { try { ps.kill(ipfsProcess.pid); } catch (e) { console.log(e); } try { // sometimes ipfs doesnt exit unless we kill pid +1 ps.kill(ipfsProcess.pid + 1); } catch (e) { console.log(e); } }); }); await startIpfsDaemon(); }; const DefaultExport = {}; export default DefaultExport; const startIpfsAutoRestart = async () => { let pendingStart = false; const start = async () => { if (pendingStart) { return; } pendingStart = true; try { const started = await tcpPortUsed.check(isDev ? 50029 : 50019, '127.0.0.1'); if (!started) { await startIpfs(); } } catch (e) { console.log('failed starting ipfs', e); try { // try to run exported onError callback, can be undefined DefaultExport.onError(e)?.catch?.(console.log); } catch {} } pendingStart = false; }; // retry starting ipfs every 1 second, // in case it was started by another client that shut down and shut down ipfs with it start(); setInterval(() => { start(); }, 1000); }; startIpfsAutoRestart(); ================================================ FILE: electron/start-plebbit-rpc.js ================================================ import tcpPortUsed from 'tcp-port-used'; import EnvPaths from 'env-paths'; import { randomBytes } from 'crypto'; import fs from 'fs-extra'; import PlebbitRpc from '@plebbit/plebbit-js/rpc'; import path from 'path'; import { fileURLToPath } from 'url'; import isDev from 'electron-is-dev'; const dirname = path.join(path.dirname(fileURLToPath(import.meta.url))); const envPaths = EnvPaths('plebbit', { suffix: false }); // PLEB, always run plebbit rpc on this port so all clients can use it const port = 9138; const defaultPlebbitOptions = { // find the user's OS data path dataPath: !isDev ? envPaths.data : path.join(dirname, '..', '.plebbit'), kuboRpcClientsOptions: [{ url: 'http://localhost:50019/api/v0' }], httpRoutersOptions: ['https://routing.lol', 'https://peers.pleb.bot', 'https://peers.plebpubsub.xyz', 'https://peers.forumindex.com'], }; // generate plebbit rpc auth key if doesn't exist const plebbitRpcAuthKeyPath = path.join(defaultPlebbitOptions.dataPath, 'auth-key'); let plebbitRpcAuthKey; try { plebbitRpcAuthKey = fs.readFileSync(plebbitRpcAuthKeyPath, 'utf8'); } catch { plebbitRpcAuthKey = randomBytes(32).toString('base64').replace(/[/+=]/g, '').substring(0, 40); fs.ensureFileSync(plebbitRpcAuthKeyPath); fs.writeFileSync(plebbitRpcAuthKeyPath, plebbitRpcAuthKey); } const startPlebbitRpcAutoRestart = async () => { let pendingStart = false; const start = async () => { if (pendingStart) { return; } pendingStart = true; try { const started = await tcpPortUsed.check(port, '127.0.0.1'); if (!started) { const plebbitWebSocketServer = await PlebbitRpc.PlebbitWsServer({ port, plebbitOptions: defaultPlebbitOptions, authKey: plebbitRpcAuthKey }); plebbitWebSocketServer.on('error', (e) => console.log('plebbit rpc error', e)); console.log(`plebbit rpc: listening on ws://localhost:${port} (local connections only)`); console.log(`plebbit rpc: listening on ws://localhost:${port}/${plebbitRpcAuthKey} (secret auth key for remote connections)`); plebbitWebSocketServer.ws.on('connection', (socket) => { console.log('plebbit rpc: new connection'); // debug raw JSON RPC messages in console if (isDev) { socket.on('message', (message) => console.log(`plebbit rpc: ${message.toString()}`)); } }); } } catch (e) { console.log('failed starting plebbit rpc server', e); } pendingStart = false; }; // retry starting the plebbit rpc server every 1 second, // in case it was started by another client that shut down and shut down the server with it start(); setInterval(() => { start(); }, 1000); }; startPlebbitRpcAutoRestart(); ================================================ FILE: electron/vite-config.js ================================================ import { defineConfig } from 'vite'; import path from 'path'; export default defineConfig({ build: { outDir: 'dist', rollupOptions: { input: { main: path.resolve(__dirname, 'main.js'), }, }, }, }); ================================================ FILE: electron/vite.preload.config.js ================================================ import { defineConfig } from 'vite'; import { resolve, dirname } from 'path'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); export default defineConfig({ resolve: { conditions: ['node'], }, build: { lib: { entry: resolve(__dirname, 'preload.mjs'), name: 'Preload', fileName: () => 'preload.cjs', formats: ['cjs'], }, outDir: resolve(__dirname, '../build/electron'), emptyOutDir: true, rollupOptions: { external: ['electron'], }, target: 'node20', minify: false, }, }); ================================================ FILE: forge.config.js ================================================ import { downloadIpfsClients } from './electron/before-pack.js'; const config = { packagerConfig: { name: 'seedit', executableName: 'seedit', appBundleId: 'seedit.desktop', icon: './public/icon', // electron-forge adds the correct extension per platform // NOTE: asar is disabled because of a bug where electron-packager silently fails // during asar creation with seedit's large node_modules. The app works fine without it. // TODO: investigate and fix the asar creation issue asar: false, // Exclude unnecessary files from the package ignore: [ /^\/src$/, /^\/public$/, /^\/android$/, /^\/\.github$/, /^\/scripts$/, /^\/\.git/, /^\/\.plebbit$/, /^\/out$/, /^\/dist$/, /^\/squashfs-root$/, /\.map$/, /\.md$/, /\.ts$/, /tsconfig\.json$/, /\.oxfmtrc/, /oxlintrc/, /vite\.config/, /forge\.config/, /capacitor\.config/, /\.env$/, /\.DS_Store$/, /yarn\.lock$/, // Exclude build-time scripts from the package /electron\/before-pack\.js/, // kubo npm package creates symlinks that break build - exclude its bin dir // (we download our own kubo binary in generateAssets hook) /node_modules\/kubo\/bin/, // Exclude .bin directories anywhere in node_modules (contain escaping symlinks) /node_modules\/.*\/\.bin/, /node_modules\/\.bin/, /node_modules\/\.cache/, ], }, rebuildConfig: { force: true, }, hooks: { // Download IPFS/Kubo binaries before packaging generateAssets: async () => { console.log('Downloading IPFS clients...'); await downloadIpfsClients(); console.log('IPFS clients downloaded.'); }, }, makers: [ // macOS { name: '@electron-forge/maker-dmg', platforms: ['darwin'], config: { name: 'seedit', icon: './public/icon.png', format: 'UDZO', }, }, { name: '@electron-forge/maker-zip', platforms: ['darwin'], }, // Windows { name: '@electron-forge/maker-squirrel', platforms: ['win32'], config: { name: 'seedit', setupIcon: './public/favicon.ico', }, }, // Linux { name: '@reforged/maker-appimage', platforms: ['linux'], config: { options: { name: 'seedit', icon: './public/icon.png', categories: ['Network'], }, }, }, ], }; export default config; ================================================ FILE: index.html ================================================ Seedit
================================================ FILE: knip.jsonc ================================================ { "$schema": "https://unpkg.com/knip@6.1.0/schema-jsonc.json", "ignoreBinaries": [ // These are intentionally invoked through package scripts / commit hooks rather than local package bins. "cz", "source-map-explorer" ], "ignoreFiles": [ // Tool-owned config and runtime entry files are resolved by Vite/Electron rather than the app import graph. "electron/preload.mjs", "electron/vite-config.js", "electron/vite.preload.config.js", "forge.config.js", "src/sw.ts" ], "ignoreDependencies": [ // This package is satisfied transitively through bitsocial-react-hooks rather than listed directly. "@plebbit/plebbit-js", // These packages are consumed by native Capacitor/Gradle config rather than JS imports. "@capacitor/status-bar", "@capawesome/capacitor-android-edge-to-edge-support", // These packages are used by build/config/html entrypoints Knip does not fully trace in this repo. "@electron-forge/maker-dmg", "@electron-forge/maker-squirrel", "@electron-forge/maker-zip", "@reforged/maker-appimage", "assert", "babel-plugin-react-compiler", "buffer", "crypto-browserify", "cz-conventional-changelog", "react-grab", "stream-browserify", // The PWA service worker entry is injected by vite-plugin-pwa, which Knip does not trace here. "workbox-core", "workbox-expiration", "workbox-precaching", "workbox-routing", "workbox-strategies" ], "ignoreIssues": { // This import is intentionally satisfied transitively through bitsocial-react-hooks. "electron/start-plebbit-rpc.js": ["unlisted"], // Knip falsely infers v8 coverage for Vitest config even though this repo uses Istanbul. "vitest.config.ts": ["unlisted"] } } ================================================ FILE: oxlintrc.json ================================================ { "plugins": ["react"], "rules": { "react/react-in-jsx-scope": "off", "react/rules-of-hooks": "error", "react/exhaustive-deps": "warn" }, "ignore": [ "android/**", "build/**", "node_modules/**", "public/**", "electron/**" ] } ================================================ FILE: package.json ================================================ { "name": "seedit", "version": "0.5.10", "description": "A bitsocial client with an old.reddit UI", "author": "Bitsocial Labs", "type": "module", "license": "GPL-2.0-only", "private": true, "packageManager": "yarn@4.13.0", "dependencies": { "@bitsocial/bitsocial-react-hooks": "0.1.2", "@capacitor/app": "7.0.1", "@capacitor/filesystem": "7.1.4", "@capacitor/local-notifications": "7.0.1", "@capacitor/share": "7.0.2", "@capacitor/status-bar": "7.0.1", "@capawesome/capacitor-android-edge-to-edge-support": "7.2.2", "@floating-ui/react": "0.26.1", "@types/node": "20.8.2", "@types/react": "19.1.2", "@types/react-dom": "19.1.2", "@vercel/analytics": "1.6.1", "ace-builds": "1.41.0", "cross-env": "7.0.3", "electron-context-menu": "3.3.0", "electron-is-dev": "2.0.0", "env-paths": "3.0.0", "ext-name": "5.0.0", "form-data": "4.0.4", "fs-extra": "11.2.0", "gifuct-js": "2.1.2", "http-proxy": "1.18.1", "i18next": "25.10.9", "i18next-browser-languagedetector": "7.1.0", "i18next-http-backend": "3.0.5", "json-stringify-pretty-compact": "4.0.0", "lodash": "4.18.0", "memoizee": "0.4.15", "node-fetch": "2", "react": "19.1.2", "react-ace": "14.0.1", "react-dom": "19.1.2", "react-dropzone": "14.3.8", "react-i18next": "16.6.6", "react-markdown": "10.1.0", "react-router-dom": "6.30.2", "react-router-hash-link": "2.4.3", "react-virtuoso": "4.18.5", "rehype-raw": "7.0.0", "rehype-sanitize": "5.0.1", "remark-gfm": "3.0.1", "remark-supersub": "1.0.0", "tcp-port-used": "1.0.2", "typescript": "6.0.2", "zustand": "4.4.3" }, "scripts": { "start": "node scripts/start-dev.js", "build": "cross-env NODE_ENV=production PUBLIC_URL=./ GENERATE_SOURCEMAP=false vite build", "build:preload": "cross-env NODE_ENV=production vite build --config electron/vite.preload.config.js", "build-netlify": "cross-env NODE_OPTIONS=\"--max_old_space_size=4096\" NODE_ENV=production PUBLIC_URL=./ GENERATE_SOURCEMAP=true VITE_COMMIT_REF=$COMMIT_REF CI='' vite build", "test": "vitest --passWithNoTests", "preview": "vite preview", "analyze-bundle": "cross-env NODE_ENV=production PUBLIC_URL=./ GENERATE_SOURCEMAP=true vite build && npx source-map-explorer 'build/assets/*.js'", "electron": "yarn build:preload && yarn electron:before && electron .", "electron:no-delete-data": "yarn build:preload && electron .", "electron:start": "concurrently \"cross-env BROWSER=none PORTLESS=0 PORT=3000 yarn start\" \"wait-on http://localhost:3000 && yarn electron\"", "electron:start:no-delete-data": "concurrently \"cross-env BROWSER=none PORTLESS=0 PORT=3000 yarn start\" \"wait-on http://localhost:3000 && yarn electron:no-delete-data\"", "electron:package": "yarn build && yarn build:preload && electron-forge package", "electron:build": "yarn build && yarn build:preload && electron-forge make", "electron:build:linux": "yarn build && yarn build:preload && electron-forge make --platform=linux", "electron:build:mac": "yarn build && yarn build:preload && electron-forge make --platform=darwin", "electron:build:windows": "yarn build && yarn build:preload && electron-forge make --platform=win32", "electron:build:linux:x64": "yarn build && yarn build:preload && electron-forge make --platform=linux --arch=x64", "electron:build:linux:arm64": "yarn build && yarn build:preload && electron-forge make --platform=linux --arch=arm64", "electron:build:mac:x64": "yarn build && yarn build:preload && electron-forge make --platform=darwin --arch=x64", "electron:build:mac:arm64": "yarn build && yarn build:preload && electron-forge make --platform=darwin --arch=arm64", "electron:before": "yarn electron:before:delete-data", "electron:before:delete-data": "rimraf .plebbit", "android:build:icons": "cordova-res android --skip-config --copy --resources /tmp/plebbit-react-android-icons --icon-source ./android/icons/icon.png --splash-source ./android/icons/splash.png --icon-foreground-source ./android/icons/icon-foreground.png --icon-background-source '#ffffee'", "prettier": "oxfmt src/**/*.{js,ts,tsx} electron/**/*.{js,mjs}", "lint": "oxlint src electron", "type-check": "tsgo --noEmit", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0", "android:build": "yarn build && npx cap sync android && npx cap run android", "knip": "knip --production --include dependencies,unlisted,binaries --no-progress", "knip:full": "knip --no-progress --no-exit-code", "doctor": "react-doctor . -y", "doctor:score": "react-doctor . --score -y", "doctor:verbose": "react-doctor . --verbose -y" }, "browserslist": { "production": [ "chrome >= 67", "edge >= 79", "firefox >= 68", "opera >= 54", "safari >= 14" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] }, "devDependencies": { "@capacitor/android": "7.4.5", "@capacitor/cli": "7.4.5", "@capacitor/core": "7.4.5", "@electron-forge/cli": "7.8.0", "@electron-forge/maker-dmg": "7.8.0", "@electron-forge/maker-squirrel": "7.8.0", "@electron-forge/maker-zip": "7.8.0", "@electron-forge/plugin-auto-unpack-natives": "7.8.0", "@react-scan/vite-plugin-react-scan": "0.1.8", "@reforged/maker-appimage": "5.1.1", "@types/memoizee": "0.4.9", "@types/node-fetch": "2", "@typescript/native-preview": "7.0.0-dev.20260115.1", "@vitejs/plugin-react": "6.0.0", "assert": "2.1.0", "babel-plugin-react-compiler": "1.0.0", "buffer": "6.0.3", "concurrently": "8.0.1", "conventional-changelog-cli": "4.1.0", "cordova-res": "0.15.4", "cross-env": "7.0.3", "crypto-browserify": "3.12.1", "cz-conventional-changelog": "3.3.0", "decompress": "4.2.1", "electron": "39.8.7", "glob": "10.5.0", "husky": "4.3.8", "isomorphic-fetch": "3.0.0", "knip": "6.1.0", "lint-staged": "12.3.8", "oxfmt": "0.24.0", "oxlint": "1.39.0", "progress": "2.0.3", "react-doctor": "0.0.31", "react-grab": "0.1.28", "react-scan": "0.5.3", "stream-browserify": "3.0.0", "vite": "8.0.5", "vite-plugin-node-polyfills": "0.24.0", "vite-plugin-pwa": "1.2.0", "vitest": "4.1.0", "wait-on": "9.0.4" }, "optionalDependencies": { "portless": "0.11.1" }, "resolutions": { "axios": "1.15.0", "@xmldom/xmldom": "0.8.12", "follow-redirects": "1.16.0", "handlebars@npm:^4.7.7": "4.7.9", "js-yaml": "4.1.1", "baseline-browser-mapping": "2.9.11", "vite": "8.0.5", "qs": "6.15.0", "mdast-util-to-hast": "13.2.1", "node-forge": "1.4.0", "protobufjs": "7.5.5", "glob": "10.5.0", "tmp": "0.2.5", "elliptic": "6.6.1", "ws": "8.18.3", "jose": "4.15.9", "sharp": "0.34.5", "cacache": "19.0.1", "preact": "10.27.3", "@remix-run/router": "1.23.2", "@peculiar/asn1-schema": "2.5.0", "@tootallnate/once": "3.0.1", "axios@npm:^0.27.2": "0.30.2", "brace-expansion@npm:^1.1.7": "1.1.13", "brace-expansion@npm:^2.0.0": "2.0.3", "brace-expansion@npm:^5.0.2": "5.0.5", "diff@npm:^5.0.0": "5.2.2", "lodash": "4.18.0", "picomatch@npm:^2.3.1": "2.3.2", "picomatch@npm:^4.0.1": "4.0.4", "picomatch@npm:^4.0.3": "4.0.4", "minimatch@npm:^3.0.4": "3.1.4", "minimatch@npm:^3.0.5": "3.1.4", "minimatch@npm:^5.0.1": "5.1.8", "minimatch@npm:^9.0.3": "9.0.7", "minimatch@npm:^9.0.4": "9.0.7", "open-graph-scraper": "6.11.0", "serialize-javascript": "7.0.5", "solid-js": "1.9.11", "seroval": "1.5.0", "tar@npm:^6.0.5": "7.5.11", "tar@npm:^6.1.2": "7.5.11", "tar@npm:^6.1.11": "7.5.11", "tar@npm:^6.2.1": "7.5.11", "tar@npm:^7.4.3": "7.5.11", "undici@npm:^6.21.2": "6.24.0", "undici@npm:^7.12.0": "7.24.0", "undici@npm:^7.16.0": "7.24.0" }, "main": "electron/main.js", "lint-staged": { "{src,electron}/**/*.{js,ts,tsx,mjs}": [ "oxfmt" ] }, "husky": { "hooks": { "prepare-commit-msg": "exec < /dev/tty && cz --hook || true", "pre-commit": "lint-staged" } }, "config": { "commitizen": { "path": "./node_modules/cz-conventional-changelog" } } } ================================================ FILE: public/manifest.json ================================================ { "short_name": "Seedit", "name": "Seedit", "icons": [ { "src": "favicon.ico", "sizes": "64x64 32x32 24x24 16x16", "type": "image/x-icon" } ], "start_url": ".", "display": "standalone", "theme_color": "#000000", "background_color": "#ffffff" } ================================================ FILE: public/redirect.html ================================================ seedit redirect

seedit moved. If you are not redirected, click https://seedit.eth.limo. ================================================ FILE: public/robots.txt ================================================ # https://www.robotstxt.org/robotstxt.html User-agent: * Disallow: ================================================ FILE: public/translations/ar/default.json ================================================ { "about": "حول", "comments": "تعليقات", "preferences": "التفضيلات", "submit": "إرسال", "dark": "داكن", "light": "فاتح", "my_communities": "مجتمعاتي", "home": "الرئيسية", "all": "الكل", "submitted": "تم الإرسال", "post_by": "بواسطة", "post_to": "إلى", "post_no_comments": "تعليق", "post_comment": "تعليق", "post_comments": "تعليقات", "share": "مشاركة", "save": "حفظ", "hide": "إخفاء", "report": "الإبلاغ", "crosspost": "نشر متقاطع", "time_1_minute_ago": "منذ دقيقة واحدة", "time_x_minutes_ago": "منذ {{count}} دقائق", "time_1_hour_ago": "منذ ساعة واحدة", "time_x_hours_ago": "منذ {{count}} ساعات", "time_1_day_ago": "منذ يوم واحد", "time_x_days_ago": "منذ {{count}} أيام", "time_1_month_ago": "منذ شهر واحد", "time_x_months_ago": "منذ {{count}} شهور", "time_1_year_ago": "منذ عام واحد", "time_x_years_ago": "منذ {{count}} سنوات", "spoiler": "حرق", "reply_reply": "الرد", "reply_sorted_by": "مرتبة حسب", "all_comments": "جميع {{count}} التعليقات", "no_comments": "لا تعليقات (بعد)", "reply_score_singular": "1 نقطة", "reply_score_plural": "{{score}} نقطة", "removed": "تمت الإزالة", "one_comment": "1 تعليق", "submit_url_description": "قم بتضمين الوسائط عن طريق نشر الرابط المباشر (الذي ينتهي بـ .jpg، .gif، .mp4، إلخ)", "title": "عنوان", "text": "نص", "required": "مطلوب", "optional": "اختياري", "community_address": "عنوان المجتمع", "submit_choose": "اختر أين ترغب في النشر", "submit_notice": "يرجى الحذر من قوانين المجتمع ، لا توجد إدارة عامة في seedit.", "challenge_from": "التحدي من p/{{subplebbit}}", "challenge_for_post": "للمنشور: \"{{publicationContent}}\"", "challenge_for_reply": "للرد على u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} من {{total}}", "cancel": "إلغاء", "previous": "السابق", "next": "التالي", "loading": "تحميل", "pending": "قيد الانتظار", "submit_subscriptions_notice": "المجتمعات المقترحة", "submit_subscriptions": "مجتمعاتك المشتركة", "rules_for": "قواعد لـ", "no_communities_found": "لا توجد مجتمعات على <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "للاتصال بمجتمع، استخدم 🔎 في أعلى اليمين", "options": "خيارات", "hide_options": "إخفاء الخيارات", "failed": "فشل", "time_1_minute": "دقيقة واحدة", "time_x_minutes": "{{count}} دقائق", "time_1_hour": "ساعة واحدة", "time_x_hours": "{{count}} ساعات", "time_1_day": "يوم واحد", "time_x_days": "{{count}} أيام", "time_1_month": "شهر واحد", "time_x_months": "{{count}} أشهر", "time_1_year": "عام واحد", "time_x_years": "{{count}} سنوات", "submit_post": "قدم مشاركة جديدة", "create_your_community": "أنشئ مجتمعك الخاص", "moderators": "المشرفون", "about_moderation": "عن الإشراف", "join": "انضم", "leave": "غادر", "created_by": "تم إنشاؤها بواسطة {{creatorAddress}}", "community_for": "مجتمع لمدة {{date}}", "post_submitted_on": "تم تقديم هذا المنشور في {{postDate}}", "users_online": "مستخدمين {{count}} هنا الآن", "point": "نقطة", "points": "نقاط", "share_link": "رابط المشاركة", "upvoted": "قام بالتصويت بإعجاب", "announcement": "إعلان", "child": "{{childrenCount}} طفل", "children": "{{childrenCount}} أطفال", "moderation": "مراقبة", "interface_language": "لغة الواجهة", "theme": "نسق", "account": "حساب", "display_name": "اسم العرض", "crypto_address": "عنوان العملة الرقمية", "check": "تحقق", "crypto_address_verification": "إذا تم حل عنوان العملة الرقمية عبر الند للند", "create": "أنشئ", "delete": "حذف", "locked": "مقفل", "reason": "السبب", "sorted_by": "مرتبة حسب", "downvoted": "قمت بالتصويت بالسلب", "hidden": "مخفي", "saved": "تم الحفظ", "overview": "نظرة عامة", "user_since": "مستخدم منذ {{time}} على الأقل", "post_karma": "نقاط النشر", "comment_karma": "نقاط التعليقات", "full_comments": "جميع التعليقات", "context": "السياق", "block": "حظر", "post": "منشور", "unhide": "إظهار", "unblock": "إلغاء الحظر", "undo": "تراجع", "post_hidden": "المنشور مخفي", "link_copied": "تم نسخ الرابط", "block_community": "حظر المجتمع", "unblock_community": "إلغاء حظر المجتمع", "search_feed_post": "ابحث عن منشور في هذا التغذية", "from": "من", "via": "عبر", "sent": "أرسل", "unread": "غير مقروء", "comment_replies": "ردود التعليقات", "post_replies": "ردود المنشورات", "messages": "رسائل", "inbox": "صندوق الوارد", "mark_all_read": "وضع علامة على الجميع كمقروءة", "comment_reply": "رد على التعليق", "post_reply": "رد على المنشور", "show_parent": "أظهر المشاركة المشار إليها", "no_posts": "لا توجد مشاركات", "media_url": "عنوان وسائط", "post_locked_info": "هذه المشاركة {{state}}. لن تتمكن من التعليق.", "members_count": "{{count}} أعضاء", "communities": "مجتمع", "edit": "تعديل", "moderator": "مشرف", "description": "وصف", "rules": "قواعد", "save_options": "حفظ الخيارات", "logo": "شعار", "address": "عنوان", "nothing_found": "لا يبدو أن هناك شيء هنا", "stickied_comment": "التعليق المثبت", "posts_last_synced": "آخر مرة تمت مزامنة المشاركات {{dateAgo}}", "community_settings": "إعدادات المجتمع", "moderation_tools": "أدوات الإشراف", "submit_to": "إرسال إلى <1>{{link}}", "edit_subscriptions": "تحرير الاشتراكات", "delete_confirm": "هل أنت متأكد أنك تريد حذف {{value}}؟", "saving": "حفظ", "deleted": "تم الحذف", "online": "متصل", "offline": "غير متصل", "subscriber": "مشترك", "join_communities_notice": "انقر على الأزرار <1>{{join}} أو <2>{{leave}} لاختيار المجتمعات التي تظهر على صفحة البداية.", "below_subscribed": "فيما يلي المجتمعات التي اشتركت فيها.", "not_subscribed": "لم تشترك في أي مجتمع حتى الآن.", "below_moderator_access": "أدناه هي المجتمعات التي لديك وصولاً كمشرف إليها.", "not_moderator": "أنت لست مشرفًا على أي مجتمع.", "create_community": "إنشاء مجتمع", "single_comment_notice": "أنت تشاهد موضوع تعليق واحد فقط", "single_comment_link": "عرض بقية التعليقات", "owner_settings_notice": "فقط مالك المجتمع يمكنه تعديل إعداداته.", "preview": "معاينة", "shown_in_sidebar": "يُعرَض في الشريط الجانبي لمجتمعك", "community_logo_info": "قم بتعيين شعار المجتمع باستخدام رابط صورة مباشر (منتهي بـ .jpg أو .png)", "moderators_setting_info": "اسمح للمستخدمين الآخرين بالتدخل والنشر دون تحديات", "vote": "صوت", "passing": "مرور", "rejecting": "رفض", "add_moderator": "إضافة مشرف", "add_rule": "إضافة قاعدة", "json_settings": "إعدادات JSON", "json_settings_info": "نسخ أو لصق إعدادات المجتمع بسرعة", "address_setting_info": "قم بتعيين عنوان مجتمع قابل قراءة باستخدام نطاق العملات الرقمية", "enter_crypto_address": "الرجاء إدخال عنوان كريبتو صالح.", "check_for_updates": "<1>تحقق من التحديثات", "refresh_to_update": "قم بتحديث الصفحة للتحديث", "latest_development_version": "أنت على أحدث إصدار تطوير، النسخة {{commit}}. لاستخدام النسخة الثابتة، انتقل إلى {{link}}.", "latest_stable_version": "أنت على أحدث نسخة ثابتة، seedit v{{version}}.", "new_development_version": "إصدار تطوير جديد متاح، كوميت {{newCommit}}. أنت تستخدم كوميت {{oldCommit}}.", "new_stable_version": "إصدار مستقر جديد متاح، seedit v{{newVersion}}. أنت تستخدم seedit v{{oldVersion}}.", "download_latest_desktop": "حمل أحدث إصدار سطح المكتب هنا: {{link}}", "contribute_on_github": "المساهمة على GitHub", "no_media_found": "لم يتم العثور على وسائط", "no_image_found": "لم يتم العثور على صورة", "warning_spam": "تحذير: لم يتم تحديد تحدي، المجتمع عُرضة لهجمات البريد العشوائي.", "hide_help": "إخفاء المساعدة", "formatting_help": "مساعدة التنسيق", "you_see": "ترى", "you_type": "أنت تكتب", "italics": "مائل", "bold": "عريض", "quoted_text": "النص المقتبس", "item": "العنصر", "delete_community": "حذف المجتمع", "delete_community_description": "احذف هذه المجتمع نهائيًا. قد تظل المحتويات موجودة ومشتتة بواسطة الأقران", "add": "إضافة", "owner": "المالك", "admin": "مسؤول", "settings_saved": "تم حفظ الإعدادات لـ p/{{subplebbitAddress}}", "continue_thread": "تابع هذا الموضوع", "mod_edit_reason": "سبب تعديل المشرف", "double_confirm": "هل أنت متأكد حقًا؟ هذا الإجراء لا يمكن التراجع عنه.", "crypto_address_not_yours": "عنوان العملة الرقمية ينتمي إلى حساب آخر.", "crypto_address_yours": "عنوان العملة الرقمية ينتمي إلى هذا الحساب.", "crypto_address_not_resolved": "لم يتم حل عنوان العملة الرقمية بعد.", "submit_to_string": "إرسال إلى {{string}}", "page_not_found": "الصفحة غير موجودة", "not_found_description": "الصفحة التي طلبتها غير موجودة", "last_edited": "آخر تعديل {{timestamp}}", "view_spoiler": "عرض الحاضر", "default_communities": "المجتمعات الافتراضية", "avatar": "الصورة الرمزية", "pending_edit": "تحرير معلق", "failed_edit": "فشل التعديل", "node_stats": "إحصائيات العقدة", "version": "الإصدار", "edit_reason": "سبب التعديل", "view_parent_comment": "عرض التعليق الأصلي", "chain_ticker": "تذييل سلسلة", "token_address_whitelist": "عنوان الرمز (فقط على الـ <1>قائمة البيضاء)", "token_id": "تعريف الرمز", "paste_signature": "لصق التوقيع", "copy_message_etherscan": "<1>{{copy}} رسالة للتوقيع على <2>etherscan", "copy": "نسخ", "copied": "تم النسخ", "missing_chain_ticker": "ناقص الرمز المتسلسل", "missing_token_address": "عنوان الرمز المفقود", "missing_token_id": "معرف الرمز المفقود", "missing_signature": "التوقيع المفقود", "edited_timestamp": "تم التحرير {{timestamp}}", "ban_user_for": "حظر المستخدم لمدة <1> يوم(أيام)", "crypto_wallets": "محافظ العملات الرقمية", "wallet_address": "عنوان المحفظة", "remove": "إزالة", "add_wallet": "<1>إضافة محفظة رقمية", "show_settings": "عرض الإعدادات", "hide_settings": "إخفاء الإعدادات", "undelete": "إلغاء الحذف", "downloading_comments": "تحميل التعليقات", "you_blocked_community": "لقد حظرت هذه المجتمعة", "show": "اظهر", "plebbit_options": "خيارات plebbit", "general": "عام", "more_posts_last_week": "{{count}} منشورات في الأسبوع {{currentTimeFilterName}}: <1>عرض المزيد من المنشورات من الأسبوع الماضي", "more_posts_last_month": "{{count}} منشورات في {{currentTimeFilterName}}: <1>عرض المزيد من المشاركات من الشهر الماضي", "profile_info": "تم إنشاء حسابك u/{{shortAddress}}. <1>تعيين اسم العرض, <2>تصدير النسخة الاحتياطية, <3>اعرف المزيد.", "show_all_instead": "عرض المشاركات منذ {{timeFilterName}} ، <1>عرض الكل بدلاً من ذلك", "subplebbit_offline_info": "قد تكون المجتمع غير متصل وقد يفشل النشر.", "posts_last_synced_info": "تم مزامنة المنشورات آخر مرة {{time}}، قد تكون المجتمع غير متصل والنشر قد يفشل.", "import_account_backup": "<1>استيراد نسخة احتياطية للحساب", "export_account_backup": "<1>تصدير نسخة احتياطية للحساب", "save_reset_changes": "<1>حفظ أو <2>إعادة تعيين التغييرات", "delete_this_account": "<1>حذف هذا الحساب", "create_new_account": "<1>إنشاء حساب جديد", "wallet_number": "المحفظة #{{index}}", "view_more": "عرض المزيد", "submit_community": "قدم مجتمعك", "hide_avatars_from_replies": "إخفاء الصور الرمزية من الردود", "yes": "نعم", "no": "لا", "are_you_sure": "هل أنت متأكد؟", "a_short_title": "عنوان قصير لمجتمعك", "challenges": "التحديات", "challenges_subtitle": "اختر تحدي أو أكثر لمنع الرسائل غير المرغوب فيها", "add_a_challenge": "إضافة تحدي", "communities_you_moderate": "المجتمعات التي تشرف عليها", "blur_media": "تمويه الوسائط المعلمة كـ NSFW/18+", "nsfw_content": "محتوى NSFW", "see_nsfw": "انقر لرؤية NSFW", "see_nsfw_spoiler": "انقر لرؤية NSFW المفسد", "always_show_nsfw": "هل تريد دائمًا عرض وسائل الإعلام NSFW؟", "always_show_nsfw_notice": "حسنًا، لقد غيرنا تفضيلاتك لعرض وسائل الإعلام NSFW دائمًا.", "content_options": "خيارات المحتوى", "over_18": "أكثر من 18؟", "must_be_over_18": "يجب أن تكون فوق 18 عامًا لعرض هذه المجتمع", "must_be_over_18_explanation": "يجب أن تكون في سن 18 عامًا على الأقل لعرض هذا المحتوى. هل أنت فوق 18 عامًا ومستعد لرؤية المحتوى البالغ؟", "no_thank_you": "لا، شكرًا", "continue": "استمر", "download_latest_android": "تحميل أحدث إصدار من أندرويد؟", "submitter": "مقدّم", "block_user": "حظر المستخدم", "unblock_user": "إلغاء حظر المستخدم", "filtering_by_tag": "تصفية حسب التاغ: \"{{tag}}\"", "you_are_moderator": "أنت مشرف في هذه المجتمع", "you_are_admin": "أنت مشرف في هذه المجتمع", "you_are_owner": "أنت مالك هذا المجتمع", "looking_for_more_posts": "البحث عن المزيد من المشاركات", "loading_feed": "تحميل الخلاصة", "downloading_posts": "تحميل المنشورات", "post_is_pending": "المنشور قيد الانتظار", "post_has_failed": "فشل النشر", "choose_file": "اختر ملف", "uploading": "تحميل", "invalid_url_alert": "الرابط المقدم ليس عنوان URL صالحًا.", "empty_comment_alert": "لا يمكن نشر تعليق فارغ.", "no_subscriptions_message": "<1>{{accountName}}, هذه هي الصفحة الرئيسية الخاصة بك على Seedit<2>عندما تجد مجتمعًا يعجبك، <3>انضم إلى <4>", "find_communities": "ابحث عن المجتمعات على p/all", "community_deleted": "تم حذف المجتمع بنجاح.", "go_to_a_community": "اذهب إلى مجتمع", "enter_community_address": "أدخل عنوان المجتمع", "all_communities": "جميع المجتمعات", "search_posts": "البحث عن المشاركات", "found_n_results_for": "تم العثور على {{count}} منشورات لـ \"{{query}}\"", "clear_search": "مسح البحث", "no_matches_found_for": "لم يتم العثور على تطابقات لـ \"{{query}}\"", "searching": "البحث", "hide_default_communities_from_topbar": "إخفاء المجتمعات الافتراضية من شريط الأدوات العلوي", "media": "وسائط", "hide_communities_tagged_as_nsfw": "إخفاء المجتمعات المعلمة كـ NSFW/18+", "tagged_as_adult": "تم وسمها كـ \"بالغ\"", "tagged_as_gore": "موسوم كـ \"جور\"", "tagged_as_anti": "تم وضع علامة كـ \"مناهض\"", "tagged_as_vulgar": "تم وسمه كـ \"بذيء\"", "drop_here_or": "إسقاط هنا أو", "upload_button_warning": "التحميل التلقائي محظور بواسطة سياسة CORS في متصفحك، ولكنه متاح في تطبيق Seedit لنظام Android وتطبيقات سطح المكتب (Win/Mac/Linux).\n\nاذهب إلى صفحة روابط التنزيل على GitHub؟", "create_community_warning": "إنشاء مجتمع يتطلب تشغيل عقدة كاملة. يقوم تطبيق Seedit لسطح المكتب (Win/Mac/Linux) بتشغيل عقدة كاملة تلقائيًا.\n\nاذهب إلى صفحة روابط التنزيل على GitHub؟", "avatars": "الصورة الرمزية", "filtering_by_nsfw": "التصفية حسب المجتمعات التي تحتوي على محتوى NSFW", "notifications": "الإشعارات", "new_replies_received": "تم استلام ردود جديدة", "private_key_warning_title": "سيتم عرض مفتاحك الخاص", "private_key_warning_description": "أنت على وشك عرض بيانات حسابك، والتي تتضمن المفتاح الخاص بك. يجب ألا تشارك مفتاحك الخاص مع أي شخص.", "go_back": "عد", "loading_editor": "جارٍ تحميل المحرر", "show_thumbnails_next_to_links": "عرض الصور المصغرة بجانب الروابط", "dont_show_thumbnails_next_to_links": "عدم عرض الصور المصغرة بجانب الروابط", "show_thumbnails_based_on_community_media_preferences": "عرض الصور المصغرة بناءً على تفضيلات وسائط تلك المجتمعة", "media_previews": "معاينات الوسائط", "auto_expand_media_previews": "توسيع معاينات الوسائط تلقائيًا", "dont_auto_expand_media_previews_on_comments_pages": "لا تقم بتوسيع معاينات الوسائط تلقائيًا في صفحات التعليقات", "video_player": "مشغل الفيديو", "autoplay_videos_on_comments_page": "تشغيل الفيديوهات تلقائيًا في صفحة التعليقات", "mute_videos_by_default": "كتم الفيديوهات افتراضياً", "expand_media_previews_based_on_community_media_preferences": "قم بتوسيع معاينات الوسائط بناءً على تفضيلات الوسائط في تلك المجتمع", "show_all_nsfw": "عرض كل المحتوى NSFW", "hide_all_nsfw": "إخفاء كل المحتوى غير الآمن", "tags": "الوسوم", "moderator_of": "مشرف على", "not_subscriber_nor_moderator": "أنت لست مشتركًا ولا مشرفًا في أي مجتمع.", "more_posts_last_year": "{{count}} منشورات في {{currentTimeFilterName}}: <1>عرض المزيد من المنشورات من العام الماضي", "editor_fallback_warning": "فشل تحميل المحرر المتقدم، يتم استخدام محرر نصوص أساسي كبديل.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "أنت تشاهد هذه المجموعة بالفعل" } ================================================ FILE: public/translations/bn/default.json ================================================ { "about": "সম্পর্কে", "comments": "মন্তব্য", "preferences": "পছন্দ", "submit": "জমা দিন", "dark": "অন্ধকার", "light": "আলো", "my_communities": "আমার সম্প্রদায়", "home": "হোম", "all": "সব", "submitted": "জমা দেওয়া হয়েছে", "post_by": "দ্বারা", "post_to": "প্রতি", "post_no_comments": "মন্তব্য", "post_comment": "মন্তব্য", "post_comments": "মন্তব্যগুলি", "share": "শেয়ার", "save": "সংরক্ষণ", "hide": "লুকান", "report": "রিপোর্ট", "crosspost": "ক্রসপোস্ট", "time_1_minute_ago": "১ মিনিট আগে", "time_x_minutes_ago": "{{count}} মিনিট আগে", "time_1_hour_ago": "১ ঘণ্টা আগে", "time_x_hours_ago": "{{count}} ঘণ্টা আগে", "time_1_day_ago": "১ দিন আগে", "time_x_days_ago": "{{count}} দিন আগে", "time_1_month_ago": "১ মাস আগে", "time_x_months_ago": "{{count}} মাস আগে", "time_1_year_ago": "১ বছর আগে", "time_x_years_ago": "{{count}} বছর আগে", "spoiler": "স্পয়লার", "reply_reply": "উত্তর", "reply_sorted_by": "অনুসারে বাছাই", "all_comments": "সব {{count}} মন্তব্য", "no_comments": "কোনো মন্তব্য নেই (এখনো)", "reply_score_singular": "1 পয়েন্ট", "reply_score_plural": "{{score}} পয়েন্ট", "removed": "অপসারণ করা হয়েছে", "one_comment": "1 মন্তব্য", "submit_url_description": ".jpg, .gif, .mp4 ইত্যাদি দ্বারা সরাসরি লিঙ্ক পোস্ট করে মিডিয়া এম্বেড করুন", "title": "শিরোনাম", "text": "পাঠ", "required": "প্রয়োজনীয়", "optional": "ঐচ্ছিক", "community_address": "সম্প্রদায়ের ঠিকানা", "submit_choose": "পোস্ট করার জায়গা চয়ন করুন", "submit_notice": "সম্প্রদায়ের নিয়মগুলি মনে রাখুন, seedit এ বৈশ্বিক প্রশাসক নেই।", "challenge_from": "পি/ {{subplebbit}} থেকে চ্যালেঞ্জ", "challenge_for_post": "পোস্টের জন্য: \"{{publicationContent}}\"", "challenge_for_reply": "u/{{parentAddress}} এর উত্তরে: \"{{publicationContent}}\"", "challenge_counter": "{{index}} থেকে {{total}}", "cancel": "বাতিল", "previous": "পূর্ববর্তী", "next": "পরবর্তী", "loading": "লোড হচ্ছে", "pending": "মুলতুবি", "submit_subscriptions_notice": "প্রস্তাবিত কমিউনিটিগুলি", "submit_subscriptions": "আপনার সাবস্ক্রাইব করা কমিউনিটিগুলি", "rules_for": "এর নিয়মাবলী", "no_communities_found": "<1>https://github.com/bitsocialhq/lists এ কোনো সম্প্রদায় পাওয়া যায়নি", "connect_community_notice": "একটি সম্প্রদায়ের সাথে যুক্ত হতে, ডান উপরে 🔎 ব্যবহার করুন", "options": "অপশনস", "hide_options": "অপশনগুলি লুকান", "failed": "ব্যর্থ", "time_1_minute": "১ মিনিট", "time_x_minutes": "{{count}} মিনিট", "time_1_hour": "১ ঘন্টা", "time_x_hours": "{{count}} ঘন্টা", "time_1_day": "১ দিন", "time_x_days": "{{count}} দিন", "time_1_month": "১ মাস", "time_x_months": "{{count}} মাস", "time_1_year": "১ বছর", "time_x_years": "{{count}} বছর", "submit_post": "নতুন পোস্ট দিন", "create_your_community": "আপনার নিজস্ব সম্প্রদায় তৈরি করুন", "moderators": "মডারেটর", "about_moderation": "মডারেশন টিম সম্পর্কে", "join": "যোগদান করুন", "leave": "ছাড়া", "created_by": "দ্বারা তৈরি {{creatorAddress}}", "community_for": "মেয়াদ শেষে একটি সম্প্রদায়", "post_submitted_on": "এই পোস্টটি {{postDate}} তে সাবমিট করা হয়েছে", "users_online": "{{count}} ব্যবহারকারী এখানে এখন", "point": "পয়েন্ট", "points": "পয়েন্টস", "share_link": "শেয়ার লিঙ্ক", "upvoted": "আপভোট দেওয়া হয়েছে", "announcement": "ঘোষণা", "child": "{{childrenCount}} শিশু", "children": "{{childrenCount}} শিশুরা", "moderation": "মধ্যস্থতা", "interface_language": "ইন্টারফেস ভাষা", "theme": "থিম", "account": "অ্যাকাউন্ট", "display_name": "প্রদর্শনী নাম", "crypto_address": "ক্রিপ্টো ঠিকানা", "check": "চেক", "crypto_address_verification": "যদি ক্রিপ্টো ঠিকানা পি2প দ্বারা সমাধান হয়", "create": "তৈরি করুন", "delete": "মুছে ফেলা", "locked": "লক করা", "reason": "কারণ", "sorted_by": "বাছাই করা", "downvoted": "নেতিবাচক ভোট দেন", "hidden": "লুকানো", "saved": "সংরক্ষিত", "overview": "সংক্ষেপ", "user_since": "কমপক্ষে {{time}} থেকে ব্যবহারকারী", "post_karma": "পোস্ট কর্মা", "comment_karma": "মন্তব্য কর্মা", "full_comments": "সম্পূর্ণ মন্তব্য", "context": "প্রসঙ্গ", "block": "ব্লক", "post": "পোস্ট", "unhide": "দেখাও", "unblock": "ব্লক বাতিল", "undo": "পূর্ববর্তী করা", "post_hidden": "পোস্ট লুকানো", "link_copied": "লিংক কপি হয়েছে", "block_community": "সম্প্রদায় ব্লক করুন", "unblock_community": "সম্প্রদায় ব্লক আনব্লক করুন", "search_feed_post": "এই ফিডে একটি পোস্ট খুঁজুন", "from": "থেকে", "via": "মাধ্যমে", "sent": "প্রেরিত", "unread": "অপঠিত", "comment_replies": "মন্তব্যের উত্তর", "post_replies": "পোস্টের উত্তর", "messages": "বার্তা", "inbox": "ইনবক্স", "mark_all_read": "সবগুলি পঠিত হিসেবে চিহ্নিত করুন", "comment_reply": "মন্তব্য প্রতিক্রিয়া", "post_reply": "পোস্ট উত্তর", "show_parent": "সূচিত পোস্ট দেখুন", "no_posts": "কোন পোস্ট নেই", "media_url": "মিডিয়া ইউআরএল", "post_locked_info": "এই পোস্ট {{state}}। আপনি মন্তব্য করতে পারবেন না।", "members_count": "{{count}} সদস্য", "communities": "সম্প্রদান", "edit": "সম্পাদনা", "moderator": "মডারেটর", "description": "বর্ণনা", "rules": "নির্বাচনসমূহ", "save_options": "অপশন সংরক্ষণ করুন", "logo": "লোগো", "address": "ঠিকানা", "nothing_found": "এখানে কিছুই নেই মনে হয় না", "stickied_comment": "পিন করা মন্তব্য", "posts_last_synced": "পোস্টগুলি সর্বশেষ সিঙ্ক হয়েছে {{dateAgo}}", "community_settings": "সম্প্রদায় সেটিংস", "moderation_tools": "মধ্যস্থতা সরঞ্জাম", "submit_to": "জমা দিন <1>{{link}}", "edit_subscriptions": "সাবস্ক্রিপশন সম্পাদনা", "delete_confirm": "আপনি কি নিশ্চিত যে আপনি {{value}} মুছতে চান?", "saving": "সংরক্ষণ", "deleted": "মোছা হয়েছে", "online": "অনলাইন", "offline": "অফলাইন", "subscriber": "সাবস্ক্রাইবার", "join_communities_notice": "হোম ফিডে কোন কোন সম্প্রদানগুলি প্রদর্শন করা উচিত তা চয়ন করতে <1>{{join}} বা <2>{{leave}} বোতামগুলি চাপুন", "below_subscribed": "নিম্নে আপনি সদস্য হয়েছেন সে সম্প্রদানগুলি রয়েছে।", "not_subscribed": "আপনি এখনো কোন সম্প্রদায়ে সাবস্ক্রাইব করেননি।", "below_moderator_access": "নীচে সেটি সম্প্রদায়গুলি যেগুলি আপনি মডারেটরেটর অ্যাক্সেস রাখেন।", "not_moderator": "আপনি কোনও সম্প্রদায়ে মডারেটর নন।", "create_community": "সম্প্রদায় তৈরি করুন", "single_comment_notice": "আপনি একটি মন্তব্যের থ্রেড দেখছেন", "single_comment_link": "আরও মন্তব্য দেখুন", "owner_settings_notice": "শুধুমাত্র কমিউনিটির মালিকই তার সেটিংস সম্পাদনা করতে পারে।", "preview": "পূর্বরূপ", "shown_in_sidebar": "আপনার সম্প্রদায়ের সাইডবারে দেখানো হয়", "community_logo_info": "একটি সম্প্রদায়ের লোগো সেট করতে তার সরাসরি ইমেজ লিঙ্ক ব্যবহার করুন (.jpg, .png দিয়ে শেষ হলে)", "moderators_setting_info": "অন্যান্য ব্যবহারকারীদের সম্মোদন করতে এবং চ্যালেঞ্জ ছাড়া পোস্ট করতে দিন", "vote": "ভোট দাও", "passing": "পাস", "rejecting": "বাতিল", "add_moderator": "একটি মডারেটর যোগ করুন", "add_rule": "একটি নিয়ম যোগ করুন", "json_settings": "JSON সেটিংস", "json_settings_info": "দ্রুত সমুদায়ের সেটিংস অনুলিপি বা পেস্ট করুন", "address_setting_info": "একটি ক্রিপ্টো ডোমেন ব্যবহার করে একটি পঠনযোগ্য সম্প্রদায় ঠিকানা সেট করুন", "enter_crypto_address": "দয়া করে একটি বৈধ ক্রিপ্টো ঠিকানা দিন।", "check_for_updates": "<1>যাচাই করুন আপডেট", "refresh_to_update": "আপডেট করতে পৃষ্ঠাটি রিফ্রেশ করুন", "latest_development_version": "আপনি সর্বশেষ ডেভেলপমেন্ট সংস্করণে আছেন, কমিট {{commit}}। স্থিতিশীল সংস্করণ ব্যবহার করতে, {{link}} যান।", "latest_stable_version": "আপনি সর্বশেষ স্থিতিশীল সংস্করণে আছেন, seedit v{{version}}।", "new_development_version": "নতুন ডেভেলপমেন্ট সংস্করণ উপলব্ধ, কমিট {{newCommit}}। আপনি কমিট {{oldCommit}} ব্যবহার করছেন।", "new_stable_version": "নতুন স্থিতিশীল সংস্করণ উপলব্ধ, seedit v{{newVersion}}। আপনি seedit v{{oldVersion}} ব্যবহার করছেন।", "download_latest_desktop": "সর্বশেষ ডেস্কটপ সংস্করণ এখানে ডাউনলোড করুন: {{link}}", "contribute_on_github": "GitHub এ অবদান রাখুন", "no_media_found": "কোন মিডিয়া পাওয়া যায়নি", "no_image_found": "ছবি পাওয়া যায়নি", "warning_spam": "সতর্কতা: কোন চ্যালেঞ্জ নির্বাচন করা হয়নি, কমিউনিটি স্প্যাম হামলার নিশ্চিততা ব্যতিত.", "hide_help": "সাহায্য লুকান", "formatting_help": "বিন্যাস সাহায্য", "you_see": "আপনি দেখেন", "you_type": "আপনি টাইপ করেন", "italics": "ইটালিক", "bold": "বোল্ড", "quoted_text": "উল্লিখিত লেখা", "item": "আইটেম", "delete_community": "সম্প্রদায় মোছো", "delete_community_description": "এই সম্প্রদায়টি চিরকুটিভাবে মুছে ফেলুন। এর বিষয়বস্তু এখনও সহপ্রের দ্বারা বীজ করা হতে পারে", "add": "যোগ করুন", "owner": "মালিক", "admin": "অ্যাডমিন", "settings_saved": "p/{{subplebbitAddress}} এর জন্য সেটিংস সংরক্ষিত হয়েছে", "continue_thread": "এই থ্রেড চালিয়ে যান", "mod_edit_reason": "মড এডিট কারণ", "double_confirm": "আপনি কি সত্যিই নিশ্চিত? এই অ্যাকশন বিপর্যস্ত করা যাবে না।", "crypto_address_not_yours": "ক্রিপ্টো ঠিকানা অন্য একটি অ্যাকাউন্টের অংশ।", "crypto_address_yours": "ক্রিপ্টো ঠিকানা এই অ্যাকাউন্টের অংশ।", "crypto_address_not_resolved": "ক্রিপ্টো ঠিকানা এখনো সমাধান করা হয়নি।", "submit_to_string": "{{string}} এ জমা দিন", "page_not_found": "পৃষ্ঠাটি খুঁজে পাওয়া যায়নি", "not_found_description": "আপনি যে পৃষ্ঠাটি অনুরোধ করেছেন সেটি অস্তিত্বে নেই", "last_edited": "শেষ সম্পাদনা {{timestamp}}", "view_spoiler": "স্পোয়ালার দেখুন", "default_communities": "ডিফল্ট কমিউনিটিস", "avatar": "অবতার", "pending_edit": "মুলতুবি সম্পাদনা", "failed_edit": "ব্যর্থ সম্পাদনা", "node_stats": "নোড পরিসংখ্যান", "version": "সংস্করণ", "edit_reason": "সম্পাদনার কারণ", "view_parent_comment": "মূল মন্তব্য দেখুন", "chain_ticker": "শৃঙ্খলা টিকার", "token_address_whitelist": "টোকেন ঠিকানা (<1>সাফল্যবান কেবল)", "token_id": "টোকেন আইডি", "paste_signature": "স্বাক্ষর পেস্ট করুন", "copy_message_etherscan": "<1>{{copy}} বার্তা সাইন করতে <2>etherscan এ", "copy": "কপি", "copied": "নকল হয়েছে", "missing_chain_ticker": "নিখোঁজ শৃঙ্খলা টিকার", "missing_token_address": "নিখোঁজ টোকেন ঠিকানা", "missing_token_id": "নিখোঁজ টোকেন আইডি", "missing_signature": "নিখোঁজ স্বাক্ষর", "edited_timestamp": "সম্পাদনা করা হয়েছে {{timestamp}}", "ban_user_for": "ব্যবহারকারীকে <1> দিনের জন্য বন্ধ করুন", "crypto_wallets": "ক্রিপ্টো ওয়ালেট", "wallet_address": "ওয়ালেট ঠিকানা", "remove": "মুছে ফেলুন", "add_wallet": "<1>যোগ একটি ক্রিপ্টো ওয়ালেট", "show_settings": "সেটিংস দেখুন", "hide_settings": "সেটিংস লুকান", "undelete": "মুছে ফেলা প্রত্যাহার", "downloading_comments": "মন্তব্য ডাউনলোড হচ্ছে", "you_blocked_community": "আপনি এই সম্প্রদায়টি ব্লক করেছেন", "show": "দেখান", "plebbit_options": "প্লেবিট বিকল্প", "general": "সাধারণ", "more_posts_last_week": "{{count}} পোস্ট গত {{currentTimeFilterName}}: <1>গত সপ্তাহ থেকে আরও পোস্ট দেখান", "more_posts_last_month": "{{count}} পোস্ট {{currentTimeFilterName}}-এ: <1>গত মাসের আরও পোস্ট দেখান", "profile_info": "আপনার অ্যাকাউন্ট u/{{shortAddress}} তৈরি করা হয়েছে। <1>ডিসপ্লে নাম সেট করুন, <2>ব্যাকআপ রপ্তানি করুন, <3>আরো জানুন.", "show_all_instead": "আপনি {{timeFilterName}} থেকে পোস্টগুলি দেখছেন, <1>তার পরিবর্তে সব দেখান", "subplebbit_offline_info": "সম্প্রদায়টি অফলাইন হতে পারে এবং প্রকাশনা ব্যর্থ হতে পারে।", "posts_last_synced_info": "পোস্টগুলি সর্বশেষ {{time}}ে সিঙ্ক করা হয়েছিল, সম্প্রদায় অফলাইনে থাকতে পারে এবং প্রকাশনা ব্যর্থ হতে পারে।", "import_account_backup": "<1>আমদানি অ্যাকাউন্ট ব্যাকআপ", "export_account_backup": "<1>রপ্তানি অ্যাকাউন্ট ব্যাকআপ", "save_reset_changes": "<1>সংরক্ষণ করুন অথবা <2>রিসেট করুন পরিবর্তনগুলি", "delete_this_account": "<1>মুছুন এই অ্যাকাউন্ট", "create_new_account": "<1>নতুন তৈরি করুন অ্যাকাউন্ট", "wallet_number": "ওয়ালেট #{{index}}", "view_more": "আরও দেখুন", "submit_community": "আপনার সম্প্রদায় জমা দিন", "hide_avatars_from_replies": "প্রতিক্রিয়া থেকে অ্যাভাটারগুলি লুকান", "yes": "হ্যাঁ", "no": "না", "are_you_sure": "আপনি কি নিশ্চিত?", "a_short_title": "আপনার সম্প্রদায়ের জন্য একটি সংক্ষিপ্ত শিরোনাম", "challenges": "চ্যালেঞ্জ", "challenges_subtitle": "স্প্যাম প্রতিরোধ করতে এক বা একাধিক চ্যালেঞ্জ নির্বাচন করুন", "add_a_challenge": "একটি চ্যালেঞ্জ যোগ করুন", "communities_you_moderate": "আপনি যে কমিউনিটিগুলি পরিচালনা করেন", "blur_media": "NSFW/18+ হিসেবে চিহ্নিত মিডিয়া ব্লার করুন", "nsfw_content": "NSFW কনটেন্ট", "see_nsfw": "NSFW দেখতে ক্লিক করুন", "see_nsfw_spoiler": "NSFW স্পয়লার দেখতে ক্লিক করুন", "always_show_nsfw": "আপনি কি সর্বদা NSFW মিডিয়া দেখাতে চান?", "always_show_nsfw_notice": "ওকে, আমরা আপনার পছন্দগুলি সর্বদা NSFW মিডিয়া দেখাতে পরিবর্তন করেছি।", "content_options": "সামগ্রী বিকল্প", "over_18": "১৮ এর উপরে?", "must_be_over_18": "এই কমিউনিটি দেখতে আপনাকে ১৮+ হতে হবে", "must_be_over_18_explanation": "এই কন্টেন্ট দেখতে আপনাকে অন্তত ১৮ বছর বয়সী হতে হবে। আপনি কি ১৮ বছরের উপরে এবং প্রাপ্তবয়স্ক কন্টেন্ট দেখতে ইচ্ছুক?", "no_thank_you": "না, ধন্যবাদ", "continue": "অবস্থান করুন", "download_latest_android": "সর্বশেষ অ্যান্ড্রয়েড সংস্করণ ডাউনলোড করুন?", "submitter": "জমাদাতা", "block_user": "ব্যবহারকারী ব্লক করুন", "unblock_user": "ব্যবহারকারী আনব্লক করুন", "filtering_by_tag": "ট্যাগ দ্বারা ফিল্টার করা হচ্ছে: \"{{tag}}\"", "you_are_moderator": "আপনি এই কমিউনিটির একজন মডারেটর", "you_are_admin": "আপনি এই কমিউনিটির একজন প্রশাসক", "you_are_owner": "আপনি এই কমিউনিটির মালিক", "looking_for_more_posts": "আরও পোস্ট খুঁজছি", "loading_feed": "লোডিং ফিড", "downloading_posts": "পোস্ট ডাউনলোড করা হচ্ছে", "post_is_pending": "পোস্ট পেন্ডিং", "post_has_failed": "পোস্ট ব্যর্থ হয়েছে", "choose_file": "ফাইল নির্বাচন করুন", "uploading": "আপলোড হচ্ছে", "invalid_url_alert": "দেওয়া লিঙ্কটি একটি বৈধ URL নয়।", "empty_comment_alert": "খালি মন্তব্য পোস্ট করা যাবে না।", "no_subscriptions_message": "<1>{{accountName}}, এটি আপনার হোম Seedit এ<2>যখন আপনি এমন একটি কমিউনিটি খুঁজে পান যা আপনাকে পছন্দ হয়, <3>এতে যোগ দিন <4>", "find_communities": "p/all এ কমিউনিটি খুঁজুন", "community_deleted": "কমিউনিটি সফলভাবে মুছে ফেলা হয়েছে।", "go_to_a_community": "একটি সম্প্রদায়ে যান", "enter_community_address": "একটি কমিউনিটি ঠিকানা লিখুন", "all_communities": "সব সম্প্রদায়", "search_posts": "পোস্টগুলি অনুসন্ধান করুন", "found_n_results_for": "{{query}} এর জন্য {{count}} পোস্ট পাওয়া গেছে", "clear_search": "খোঁজ মুছে ফেলুন", "no_matches_found_for": "\"{{query}}\" এর জন্য কোনো মিল পাওয়া যায়নি", "searching": "খুঁজছে", "hide_default_communities_from_topbar": "টপবার থেকে ডিফল্ট কমিউনিটিগুলি লুকান", "media": "মিডিয়া", "hide_communities_tagged_as_nsfw": "NSFW/18+ হিসেবে ট্যাগকৃত কমিউনিটিগুলি লুকান", "tagged_as_adult": "\"এডাল্ট\" হিসেবে ট্যাগ করা হয়েছে", "tagged_as_gore": "\"গোর\" হিসেবে চিহ্নিত", "tagged_as_anti": "\"এন্টি\" হিসেবে চিহ্নিত", "tagged_as_vulgar": "\"বদতুমিজ\" হিসেবে ট্যাগ করা হয়েছে", "drop_here_or": "এখানে ফেলুন অথবা", "upload_button_warning": "অটো-আপলোড আপনার ব্রাউজারের CORS নীতি দ্বারা ব্লক করা হয়েছে, তবে এটি Seedit অ্যান্ড্রয়েড অ্যাপ এবং ডেস্কটপ অ্যাপ (Win/Mac/Linux)-এ উপলব্ধ।\n\nGitHub এ ডাউনলোড লিঙ্ক পৃষ্ঠায় যান?", "create_community_warning": "একটি কমিউনিটি তৈরি করতে একটি ফুল নোড চালানো প্রয়োজন। Seedit ডেস্কটপ অ্যাপ (Win/Mac/Linux) স্বয়ংক্রিয়ভাবে একটি ফুল নোড চালায়।\n\nGitHub এ ডাউনলোড লিঙ্ক পৃষ্ঠায় যান?", "avatars": "অ্যাভাটার", "filtering_by_nsfw": "NSFW কমিউনিটি দ্বারা ফিল্টারিং", "notifications": "নোটিফিকেশন", "new_replies_received": "নতুন উত্তর পাওয়া গেছে", "private_key_warning_title": "আপনার ব্যক্তিগত কী প্রদর্শিত হবে", "private_key_warning_description": "আপনি আপনার অ্যাকাউন্টের ডেটা দেখার পথে আছেন, যার মধ্যে আপনার প্রাইভেট কি রয়েছে। আপনার প্রাইভেট কি কখনই কারো সাথে শেয়ার করা উচিত নয়।", "go_back": "ফিরে যাও", "loading_editor": "এডিটর লোড হচ্ছে", "show_thumbnails_next_to_links": "লিঙ্কের পাশে থাম্বনেইল দেখান", "dont_show_thumbnails_next_to_links": "লিঙ্কগুলির পাশে থাম্বনেল দেখাবেন না", "show_thumbnails_based_on_community_media_preferences": "সেই সম্প্রদায়ের মিডিয়া পছন্দের ভিত্তিতে থাম্বনেইল দেখান", "media_previews": "মিডিয়া প্রিভিউ", "auto_expand_media_previews": "মিডিয়া প্রিভিউ স্বয়ংক্রিয়ভাবে প্রসারিত করুন", "dont_auto_expand_media_previews_on_comments_pages": "মন্তব্য পৃষ্ঠাগুলিতে মিডিয়া প্রিভিউ স্বয়ংক্রিয়ভাবে প্রসারিত করবেন না", "video_player": "ভিডিও প্লেয়ার", "autoplay_videos_on_comments_page": "মন্তব্য পৃষ্ঠায় ভিডিও স্বয়ংক্রিয়ভাবে চালান", "mute_videos_by_default": "ডিফল্টভাবে ভিডিও মিউট করুন", "expand_media_previews_based_on_community_media_preferences": "সেই কমিউনিটির মিডিয়া পছন্দের উপর ভিত্তি করে মিডিয়া প্রিভিউগুলি সম্প্রসারণ করুন", "show_all_nsfw": "সব NSFW দেখান", "hide_all_nsfw": "সব NSFW লুকান", "tags": "ট্যাগসমূহ", "moderator_of": "মডারেটর", "not_subscriber_nor_moderator": "আপনি কোনও কমিউনিটির সদস্য বা মডারেটর নন।", "more_posts_last_year": "{{count}} পোস্ট {{currentTimeFilterName}} এ: <1>গত বছরের আরও পোস্ট দেখান", "editor_fallback_warning": "উন্নত সম্পাদক লোড করতে ব্যর্থ হয়েছে, বিকল্প হিসেবে মৌলিক টেক্সট সম্পাদক ব্যবহার করা হচ্ছে।", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "আপনি ইতিমধ্যে এই সম্প্রদায়টি দেখছেন" } ================================================ FILE: public/translations/cs/default.json ================================================ { "about": "O", "comments": "komentáře", "preferences": "Předvolby", "submit": "Odeslat", "dark": "Tmavý", "light": "Světlá", "my_communities": "Mé komunity", "home": "Domů", "all": "Vše", "submitted": "Odesláno", "post_by": "Od", "post_to": "Do", "post_no_comments": "Komentovat", "post_comment": "Komentář", "post_comments": "Komentáře", "share": "Sdílet", "save": "Uložit", "hide": "Skrýt", "report": "Nahlásit", "crosspost": "Crosspost", "time_1_minute_ago": "Před 1 minutou", "time_x_minutes_ago": "Před {{count}} minutami", "time_1_hour_ago": "Před 1 hodinou", "time_x_hours_ago": "Před {{count}} hodinami", "time_1_day_ago": "Před 1 dnem", "time_x_days_ago": "Před {{count}} dny", "time_1_month_ago": "Před 1 měsícem", "time_x_months_ago": "Před {{count}} měsíci", "time_1_year_ago": "Před 1 rokem", "time_x_years_ago": "Před {{count}} roky", "spoiler": "Spoiler", "reply_reply": "Odpověď", "reply_sorted_by": "Řazeno podle", "all_comments": "Všechny {{count}} komentáře", "no_comments": "Žádné komentáře (zatím)", "reply_score_singular": "1 bod", "reply_score_plural": "{{score}} bodů", "removed": "Odstraněno", "one_comment": "1 komentář", "submit_url_description": "vložte média zveřejněním přímého odkazu (končícího na .jpg, .gif, .mp4 atd.)", "title": "název", "text": "text", "required": "vyžadováno", "optional": "volitelný", "community_address": "adresa komunity", "submit_choose": "Vyberte, kam chcete příspěvek odeslat", "submit_notice": "Buďte ohleduplní k pravidlům komunity, seedit nemá globální administrátory.", "challenge_from": "Challenge od p/{{subplebbit}}", "challenge_for_post": "pro příspěvek: \"{{publicationContent}}\"", "challenge_for_reply": "pro odpověď u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} z {{total}}", "cancel": "Zrušit", "previous": "Předchozí", "next": "Další", "loading": "Načítání", "pending": "Čeká na schválení", "submit_subscriptions_notice": "Navrhované komunity", "submit_subscriptions": "vaše odběratelské komunity", "rules_for": "pravidla pro", "no_communities_found": "Na <1>https://github.com/bitsocialhq/lists nebyly nalezeny žádné komunity", "connect_community_notice": "Chcete-li se připojit ke komunitě, použijte 🔎 vpravo nahoře", "options": "možnosti", "hide_options": "skrýt možnosti", "failed": "selhal", "time_1_minute": "1 minuta", "time_x_minutes": "{{count}} minut", "time_1_hour": "1 hodina", "time_x_hours": "{{count}} hodin", "time_1_day": "1 den", "time_x_days": "{{count}} dní", "time_1_month": "1 měsíc", "time_x_months": "{{count}} měsíců", "time_1_year": "1 rok", "time_x_years": "{{count}} let", "submit_post": "Odeslat nový příspěvek", "create_your_community": "Vytvořte si vlastní komunitu", "moderators": "moderátoři", "about_moderation": "o moderaci týmu", "join": "Připojit se", "leave": "odejít", "created_by": "vytvořeno uživatelem {{creatorAddress}}", "community_for": "komunita po dobu {{date}}", "post_submitted_on": "tento příspěvek byl odeslán dne {{postDate}}", "users_online": "{{count}} uživatelé zde nyní", "point": "bod", "points": "body", "share_link": "sdílet odkaz", "upvoted": "hlasovalo", "announcement": "oznámení", "child": "{{childrenCount}} dítě", "children": "{{childrenCount}} děti", "moderation": "moderace", "interface_language": "jazyk rozhraní", "theme": "téma", "account": "účet", "display_name": "zobrazované jméno", "crypto_address": "adresa kryptoměny", "check": "kontrolovat", "crypto_address_verification": "pokud je kryptoměna vyřešena p2p", "create": "vytvořte", "delete": "smazat", "locked": "uzamčeno", "reason": "důvod", "sorted_by": "seřazeno podle", "downvoted": "hlasováno dolů", "hidden": "skrytý", "saved": "uloženo", "overview": "přehled", "user_since": "Uživatel alespoň {{time}}", "post_karma": "karma příspěvků", "comment_karma": "karma komentářů", "full_comments": "všechny komentáře", "context": "kontext", "block": "blokovat", "post": "příspěvek", "unhide": "zobrazit", "unblock": "odblokovat", "undo": "vrátit zpět", "post_hidden": "skrytý příspěvek", "link_copied": "odkaz byl zkopírován", "block_community": "blokovat komunitu", "unblock_community": "odblokovat komunitu", "search_feed_post": "Hledejte příspěvek na této návěštce", "from": "od", "via": "přes", "sent": "odesláno", "unread": "nepřečteno", "comment_replies": "odpovědi na komentáře", "post_replies": "odpovědi na příspěvky", "messages": "zprávy", "inbox": "doručená pošta", "mark_all_read": "označit vše jako přečtené", "comment_reply": "odpovědět na komentář", "post_reply": "odpovědět na příspěvek", "show_parent": "zobrazit příspěvek, na který se odkazuje", "no_posts": "žádné příspěvky", "media_url": "URL médií", "post_locked_info": "Tento příspěvek je {{state}}. Nebudete moci komentovat.", "members_count": "{{count}} členů", "communities": "komunita", "edit": "upravit", "moderator": "Moderátor", "description": "Popis", "rules": "Pravidla", "save_options": "Uložit možnosti", "logo": "Logo", "address": "Adresa", "nothing_found": "Zdá se, že zde nic není", "stickied_comment": "Připnutý komentář", "posts_last_synced": "Poslední synchronizace příspěvků {{dateAgo}}", "community_settings": "Nastavení komunity", "moderation_tools": "Nástroje pro moderaci", "submit_to": "Odeslat na <1>{{link}}", "edit_subscriptions": "Upravit předplatné", "delete_confirm": "Opravdu chcete smazat {{value}}?", "saving": "Ukládání", "deleted": "Smazáno", "online": "Online", "offline": "Offline", "subscriber": "Odběratel", "join_communities_notice": "Klikněte na tlačítka <1>{{join}} nebo <2>{{leave}} pro výběr komunit, které se zobrazí na úvodní stránce.", "below_subscribed": "Níže jsou komunity, do kterých jste se přihlásili.", "not_subscribed": "Zatím nejste přihlášeni ke žádné komunitě.", "below_moderator_access": "Níže jsou komunity, ke kterým máte moderátorský přístup.", "not_moderator": "Nejste moderátorem žádné komunity.", "create_community": "Vytvořit komunitu", "single_comment_notice": "Prohlížíte si vlákno jednoho komentáře", "single_comment_link": "Zobrazit zbytek komentářů", "owner_settings_notice": "Pouze vlastník komunity může upravit její nastavení.", "preview": "Náhled", "shown_in_sidebar": "zobrazeno na boční liště vaší komunity", "community_logo_info": "Nastavte logo komunity pomocí jeho přímého odkazu na obrázek (končícího na .jpg, .png)", "moderators_setting_info": "nechte ostatní uživatele moderovat a přispívat bez výzev", "vote": "hlasovat", "passing": "projde", "rejecting": "zamítání", "add_moderator": "přidat moderátora", "add_rule": "přidat pravidlo", "json_settings": "JSON nastavení", "json_settings_info": "Rychle zkopírujte nebo vložte nastavení komunity", "address_setting_info": "Nastavte čitelnou adresu komunity pomocí krypto domény", "enter_crypto_address": "Zadejte prosím platnou kryptoadresu.", "check_for_updates": "<1>Zkontrolujte aktualizace", "refresh_to_update": "Obnovte stránku pro aktualizaci", "latest_development_version": "Jste na nejnovější vývojové verzi, commit {{commit}}. Chcete-li použít stabilní verzi, přejděte na {{link}}.", "latest_stable_version": "Jste na nejnovější stabilní verzi, seedit v{{version}}.", "new_development_version": "Nová vývojová verze k dispozici, commit {{newCommit}}. Používáte commit {{oldCommit}}.", "new_stable_version": "Nová stabilní verze k dispozici, seedit v{{newVersion}}. Používáte seedit v{{oldVersion}}.", "download_latest_desktop": "Stáhněte si nejnovější verzi pro stolní počítače zde: {{link}}", "contribute_on_github": "Přispět na GitHubu", "no_media_found": "Žádná média nebyla nalezena", "no_image_found": "Obrázek nebyl nalezen", "warning_spam": "Varování: nebyl vybrán žádný výzva, komunita je ohrožena spamovými útoky.", "hide_help": "Skrýt nápovědu", "formatting_help": "Formátování nápovědy", "you_see": "Vidíte", "you_type": "Píšete", "italics": "kurzíva", "bold": "tučné", "quoted_text": "citovaný text", "item": "položka", "delete_community": "smazat komunitu", "delete_community_description": "Trvale smazat tuto komunitu. Jeho obsah by stále mohl být zasevován ostatními uzly", "add": "přidat", "owner": "vlastník", "admin": "správce", "settings_saved": "Nastavení uloženo pro p/{{subplebbitAddress}}", "continue_thread": "pokračovat v tématu", "mod_edit_reason": "Důvod úpravy moderátorem", "double_confirm": "Opravdu jste si jisti? Tato akce je nevratná.", "crypto_address_not_yours": "Adresa kryptoměny patří k jinému účtu.", "crypto_address_yours": "Adresa kryptoměny patří k tomuto účtu.", "crypto_address_not_resolved": "Adresa kryptoměny ještě není vyřešena.", "submit_to_string": "Odeslat do {{string}}", "page_not_found": "Stránka nenalezena", "not_found_description": "Požadovaná stránka neexistuje", "last_edited": "Poslední úprava {{timestamp}}", "view_spoiler": "zobrazit spoiler", "default_communities": "výchozí komunity", "avatar": "avatar", "pending_edit": "čekající úprava", "failed_edit": "neúspěšná úprava", "node_stats": "statistiky uzlu", "version": "verze", "edit_reason": "důvod úpravy", "view_parent_comment": "zobrazit původní komentář", "chain_ticker": "Řetězový ticker", "token_address_whitelist": "Tokenová adresa (<1>jen bílý seznam)", "token_id": "Token ID", "paste_signature": "Vložit podpis", "copy_message_etherscan": "<1>{{copy}} zpráva k podpisu na <2>etherscan", "copy": "kopírovat", "copied": "zkopírováno", "missing_chain_ticker": "Chybějící řetězový ticker", "missing_token_address": "Chybějící tokenová adresa", "missing_token_id": "Chybějící ID tokenu", "missing_signature": "Chybějící podpis", "edited_timestamp": "Upraveno {{timestamp}}", "ban_user_for": "Zakázat uživatele na <1> den (dní)", "crypto_wallets": "Kryptoměny", "wallet_address": "Adresa peněženky", "remove": "Odebrat", "add_wallet": "<1>Přidat kryptoměnovou peněženku", "show_settings": "Zobrazit nastavení", "hide_settings": "Skrýt nastavení", "undelete": "Obnovit smazání", "downloading_comments": "stahování komentářů", "you_blocked_community": "Zablokovali jste tuto komunitu", "show": "ukázat", "plebbit_options": "plebbit možnosti", "general": "obecné", "more_posts_last_week": "{{count}} příspěvků minulý {{currentTimeFilterName}}: <1>zobrazit více příspěvků z minulého týdne", "more_posts_last_month": "{{count}} příspěvků v {{currentTimeFilterName}}: <1>zobrazit více příspěvků z minulého měsíce", "profile_info": "Váš účet u/{{shortAddress}} byl vytvořen. <1>Nastavit zobrazované jméno, <2>exportovat zálohu, <3>další informace.", "show_all_instead": "Zobrazujeme příspěvky od {{timeFilterName}}, <1>zobrazit vše místo toho", "subplebbit_offline_info": "Komunita může být offline a publikování může selhat.", "posts_last_synced_info": "Příspěvky byly naposledy synchronizovány {{time}}, komunita může být offline a zveřejnění může selhat.", "import_account_backup": "<1>importovat zálohu účtu", "export_account_backup": "<1>exportovat zálohu účtu", "save_reset_changes": "<1>uložit nebo <2>resetovat změny", "delete_this_account": "<1>smazat tento účet", "create_new_account": "<1>vytvořit nový účet", "wallet_number": "peněženka #{{index}}", "view_more": "zobrazit více", "submit_community": "Odešlete svou komunitu", "hide_avatars_from_replies": "Skrýt avatary v odpovědích", "yes": "ano", "no": "ne", "are_you_sure": "Jste si jistí?", "a_short_title": "Krátký název pro vaši komunitu", "challenges": "Výzvy", "challenges_subtitle": "Vyberte jednu nebo více výzev k prevenci spamu", "add_a_challenge": "Přidat výzvu", "communities_you_moderate": "Komunity, které moderujete", "blur_media": "Zamázat média označená jako NSFW/18+", "nsfw_content": "NSFW obsah", "see_nsfw": "Klikněte pro zobrazení NSFW", "see_nsfw_spoiler": "Klikněte pro zobrazení NSFW spoileru", "always_show_nsfw": "Chcete vždy zobrazit NSFW média?", "always_show_nsfw_notice": "Dobře, změnili jsme vaše preference na vždy zobrazovat NSFW média.", "content_options": "Možnosti obsahu", "over_18": "Více než 18?", "must_be_over_18": "Musíte být starší 18 let, abyste si mohli prohlédnout tuto komunitu", "must_be_over_18_explanation": "Musíte být alespoň 18 let starý/á, abyste si mohli prohlédnout tento obsah. Jste starší 18 let a ochotni vidět obsah pro dospělé?", "no_thank_you": "Ne, děkuji", "continue": "Pokračovat", "download_latest_android": "Stáhněte si nejnovější verzi Androidu?", "submitter": "Odesílatel", "block_user": "Zablokovat uživatele", "unblock_user": "Odblokovat uživatele", "filtering_by_tag": "Filtruje se podle tagu: \"{{tag}}\"", "you_are_moderator": "Jste moderátorem této komunity", "you_are_admin": "Jste administrátorem této komunity", "you_are_owner": "Jste vlastníkem této komunity", "looking_for_more_posts": "Hledání dalších příspěvků", "loading_feed": "Načítání kanálu", "downloading_posts": "Stahování příspěvků", "post_is_pending": "Příspěvek čeká", "post_has_failed": "Příspěvek selhal", "choose_file": "Vyberte soubor", "uploading": "Nahrávání", "invalid_url_alert": "Poskytnutý odkaz není platná adresa URL.", "empty_comment_alert": "Nelze publikovat prázdný komentář.", "no_subscriptions_message": "<1>{{accountName}}, toto je váš domov na Seedit<2>Až najdete komunitu, která se vám líbí, <3>připojte se k <4>", "find_communities": "hledat komunity na p/all", "community_deleted": "Komunita byla úspěšně smazána.", "go_to_a_community": "Přejít do komunity", "enter_community_address": "Zadejte adresu komunity", "all_communities": "všechny komunity", "search_posts": "hledat příspěvky", "found_n_results_for": "nalezeno {{count}} příspěvků pro \"{{query}}\"", "clear_search": "vymazat hledání", "no_matches_found_for": "nenalezeny žádné shody pro \"{{query}}\"", "searching": "hledání", "hide_default_communities_from_topbar": "Skrýt výchozí komunity z horního panelu", "media": "mediální", "hide_communities_tagged_as_nsfw": "Skrýt komunity označené jako NSFW/18+", "tagged_as_adult": "označeno jako \"dospělý\"", "tagged_as_gore": "označeno jako \"gore\"", "tagged_as_anti": "označeno jako \"anti\"", "tagged_as_vulgar": "označeno jako \"vulgární\"", "drop_here_or": "Přetáhněte sem nebo", "upload_button_warning": "Automatické nahrávání je blokováno politikou CORS vašeho prohlížeče, ale je k dispozici v aplikaci Seedit pro Android a desktopovou aplikaci (Win/Mac/Linux).\n\nPřejděte na stránku odkazů ke stažení na GitHubu?", "create_community_warning": "Vytvoření komunity vyžaduje spuštění plného uzlu. Aplikace Seedit pro desktop (Win/Mac/Linux) automaticky spouští plný uzel.\n\nPřejděte na stránku odkazů ke stažení na GitHubu?", "avatars": "Avatar", "filtering_by_nsfw": "Filtrování podle komunit NSFW", "notifications": "Notifikace", "new_replies_received": "Přišly nové odpovědi", "private_key_warning_title": "Váš soukromý klíč bude zobrazen", "private_key_warning_description": "Chystáte se zobrazit data svého účtu, která zahrnují váš soukromý klíč. Soukromý klíč byste nikdy neměli sdílet s nikým.", "go_back": "Zpět", "loading_editor": "Načítání editoru", "show_thumbnails_next_to_links": "Zobrazit miniatury vedle odkazů", "dont_show_thumbnails_next_to_links": "Nezobrazovat náhledy vedle odkazů", "show_thumbnails_based_on_community_media_preferences": "Zobrazit náhledy podle mediálních preferencí dané komunity", "media_previews": "Náhledy médií", "auto_expand_media_previews": "Automatické rozbalení náhledů médií", "dont_auto_expand_media_previews_on_comments_pages": "Neautomaticky rozšiřujte náhledy médií na stránkách komentářů", "video_player": "Přehrávač videa", "autoplay_videos_on_comments_page": "Automatické přehrávání videí na stránce komentářů", "mute_videos_by_default": "Zvuk videí vypnutý ve výchozím nastavení", "expand_media_previews_based_on_community_media_preferences": "Rozbalte náhledy médií na základě preferencí médií dané komunity", "show_all_nsfw": "Zobrazit vše NSFW", "hide_all_nsfw": "Skrýt vše NSFW", "tags": "Štítky", "moderator_of": "moderátor", "not_subscriber_nor_moderator": "Nejste odběratelem ani moderátorem žádné komunity.", "more_posts_last_year": "{{count}} příspěvků v {{currentTimeFilterName}}: <1>zobrazit více příspěvků z minulého roku", "editor_fallback_warning": "Pokročilý editor se nepodařilo načíst, jako záložní je použit základní textový editor.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Tuto komunitu již prohlížíte" } ================================================ FILE: public/translations/da/default.json ================================================ { "about": "Om", "comments": "kommentarer", "preferences": "Indstillinger", "submit": "Indsend", "dark": "Mørk", "light": "Lys", "my_communities": "Mine samfund", "home": "Hjem", "all": "Alle", "submitted": "Indsendt", "post_by": "Af", "post_to": "Til", "post_no_comments": "Kommenter", "post_comment": "Kommentar", "post_comments": "Kommentarer", "share": "Del", "save": "Gem", "hide": "Skjul", "report": "Rapporter", "crosspost": "Krydspost", "time_1_minute_ago": "1 minut siden", "time_x_minutes_ago": "{{count}} minutter siden", "time_1_hour_ago": "1 time siden", "time_x_hours_ago": "{{count}} timer siden", "time_1_day_ago": "1 dag siden", "time_x_days_ago": "{{count}} dage siden", "time_1_month_ago": "1 måned siden", "time_x_months_ago": "{{count}} måneder siden", "time_1_year_ago": "1 år siden", "time_x_years_ago": "{{count}} år siden", "spoiler": "Spoiler", "reply_reply": "Svar", "reply_sorted_by": "Sorteret efter", "all_comments": "Alle {{count}} kommentarer", "no_comments": "Ingen kommentarer (endnu)", "reply_score_singular": "1 point", "reply_score_plural": "{{score}} point", "removed": "Fjernet", "one_comment": "1 kommentar", "submit_url_description": "integrer medier ved at poste dens direkte link (slutter med .jpg, .gif, .mp4 osv.)", "title": "titel", "text": "tekst", "required": "krævet", "optional": "valgfri", "community_address": "fællesskabsadresse", "submit_choose": "Vælg, hvor du vil poste", "submit_notice": "Vær opmærksom på fællesskabets regler, seedit har ikke globale administratorer.", "challenge_from": "Challenge fra p/{{subplebbit}}", "challenge_for_post": "for opslag: \"{{publicationContent}}\"", "challenge_for_reply": "for svar til u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} af {{total}}", "cancel": "Annuller", "previous": "Forrige", "next": "Næste", "loading": "Indlæser", "pending": "Afventer", "submit_subscriptions_notice": "Foreslåede fællesskaber", "submit_subscriptions": "dine abonnerede fællesskaber", "rules_for": "regler for", "no_communities_found": "Ingen samfund fundet på <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "For at oprette forbindelse til et fællesskab, brug 🔎 øverst til højre", "options": "muligheder", "hide_options": "skjul muligheder", "failed": "fejlede", "time_1_minute": "1 minut", "time_x_minutes": "{{count}} minutter", "time_1_hour": "1 time", "time_x_hours": "{{count}} timer", "time_1_day": "1 dag", "time_x_days": "{{count}} dage", "time_1_month": "1 måned", "time_x_months": "{{count}} måneder", "time_1_year": "1 år", "time_x_years": "{{count}} år", "submit_post": "Indsend en ny post", "create_your_community": "Opret din egen fællesskab", "moderators": "moderatorer", "about_moderation": "om moderationsholdet", "join": "Deltag", "leave": "forlad", "created_by": "oprettet af {{creatorAddress}}", "community_for": "fællesskab i {{date}}", "post_submitted_on": "denne indsendt dette indlæg på {{postDate}}", "users_online": "{{count}} brugere her nu", "point": "punkt", "points": "point", "share_link": "del link", "upvoted": "stemt op", "announcement": "meddelelse", "child": "{{childrenCount}} barn", "children": "{{childrenCount}} børn", "moderation": "moderation", "interface_language": "grænsefladesprog", "theme": "tema", "account": "konto", "display_name": "visningsnavn", "crypto_address": "kryptoadresse", "check": "check", "crypto_address_verification": "hvis kryptoadressen er løst p2p", "create": "opret", "delete": "slet", "locked": "låst", "reason": "grund", "sorted_by": "sorteret efter", "downvoted": "stemt nedad", "hidden": "skjult", "saved": "gemt", "overview": "oversigt", "user_since": "Bruger siden mindst {{time}}", "post_karma": "indlægskarma", "comment_karma": "kommentarkarma", "full_comments": "alle kommentarer", "context": "kontekst", "block": "blokér", "post": "opslag", "unhide": "vis", "unblock": "fjern blokering", "undo": "fortryd", "post_hidden": "skjult indlæg", "link_copied": "link kopieret", "block_community": "blokér fællesskab", "unblock_community": "fjern blokering af fællesskab", "search_feed_post": "Søg efter et opslag på dette feed", "from": "fra", "via": "via", "sent": "sendt", "unread": "ulæst", "comment_replies": "kommentarsvar", "post_replies": "indlægssvar", "messages": "beskeder", "inbox": "indbakke", "mark_all_read": "markér alle som læst", "comment_reply": "svar på kommentar", "post_reply": "svar på indlæg", "show_parent": "vis den henviste post", "no_posts": "ingen indlæg", "media_url": "medie-URL", "post_locked_info": "Dette indlæg er {{state}}. Du vil ikke kunne kommentere.", "members_count": "{{count}} medlemmer", "communities": "fællesskab", "edit": "redigere", "moderator": "Moderator", "description": "Beskrivelse", "rules": "Regler", "save_options": "Gem indstillinger", "logo": "Logo", "address": "Adresse", "nothing_found": "Der ser ikke ud til at være noget her", "stickied_comment": "Fastgjort kommentar", "posts_last_synced": "Seneste opdatering af indlæg {{dateAgo}}", "community_settings": "Fællesskabsindstillinger", "moderation_tools": "Moderationsværktøjer", "submit_to": "Indsend til <1>{{link}}", "edit_subscriptions": "Rediger abonnementer", "delete_confirm": "Er du sikker på, at du vil slette {{value}}?", "saving": "Gemmer", "deleted": "Slettet", "online": "Online", "offline": "Offline", "subscriber": "Abonnent", "join_communities_notice": "Klik på knapperne <1>{{join}} eller <2>{{leave}} for at vælge, hvilke fællesskaber der skal vises på hjemmesiden.", "below_subscribed": "Nedenfor er de fællesskaber, du har tilmeldt dig.", "not_subscribed": "Du er ikke tilmeldt nogen fællesskab endnu.", "below_moderator_access": "Nedenfor er de fællesskaber, du har moderatoradgang til.", "not_moderator": "Du er ikke moderator på nogen fællesskab.", "create_community": "Opret fællesskab", "single_comment_notice": "Du ser en tråd med kun en kommentar", "single_comment_link": "Se resten af kommentarerne", "owner_settings_notice": "Kun ejer af fællesskabet kan redigere dets indstillinger.", "preview": "Forhåndsvisning", "shown_in_sidebar": "vist i sidepanelet for din samfund", "community_logo_info": "Indstil et fællesskabslogo ved hjælp af dets direkte billedlink (slutter i .jpg, .png)", "moderators_setting_info": "lad andre brugere moderere og poste uden udfordringer", "vote": "stemme", "passing": "bestået", "rejecting": "afvisning", "add_moderator": "tilføj en moderator", "add_rule": "tilføj en regel", "json_settings": "JSON indstillinger", "json_settings_info": "Hurtigt kopier eller indsæt fællesskabsindstillinger", "address_setting_info": "Indstil en læsbar fællesskabsadresse ved hjælp af en krypto-domæne", "enter_crypto_address": "Indtast venligst en gyldig krypto adresse.", "check_for_updates": "<1>Tjek for opdateringer", "refresh_to_update": "Opdater siden for at opdatere", "latest_development_version": "Du er på den nyeste udviklingsversion, commit {{commit}}. For at bruge den stabile version, gå til {{link}}.", "latest_stable_version": "Du er på den seneste stabile version, seedit v{{version}}.", "new_development_version": "Ny udviklingsversion tilgængelig, commit {{newCommit}}. Du bruger commit {{oldCommit}}.", "new_stable_version": "Ny stabil version tilgængelig, seedit v{{newVersion}}. Du bruger seedit v{{oldVersion}}.", "download_latest_desktop": "Download den seneste version til skrivebordet her: {{link}}", "contribute_on_github": "Bidrag på GitHub", "no_media_found": "Ingen medier fundet", "no_image_found": "Ingen billede fundet", "warning_spam": "Advarsel: Ingen udfordring valgt, fællesskabet er sårbart over for spam-angreb.", "hide_help": "Skjul hjælp", "formatting_help": "Formateringshjælp", "you_see": "Du ser", "you_type": "Du skriver", "italics": "kursiv", "bold": "fed", "quoted_text": "citeret tekst", "item": "vare", "delete_community": "slet fællesskab", "delete_community_description": "Slet denne fællesskab permanent. Dets indhold kan stadig være sået af ligemænd", "add": "tilføje", "owner": "ejeren", "admin": "administrator", "settings_saved": "Indstillinger gemt for p/{{subplebbitAddress}}", "continue_thread": "fortsæt denne tråd", "mod_edit_reason": "Mod redigeringsårsag", "double_confirm": "Er du virkelig sikker? Denne handling er uigenkaldelig.", "crypto_address_not_yours": "Crypto-adresse tilhører en anden konto.", "crypto_address_yours": "Crypto-adresse tilhører denne konto.", "crypto_address_not_resolved": "Crypto-adresse er endnu ikke løst.", "submit_to_string": "Indsend til {{string}}", "page_not_found": "Side ikke fundet", "not_found_description": "Den side, du har anmodet om, findes ikke", "last_edited": "Sidst redigeret {{timestamp}}", "view_spoiler": "vis spoiler", "default_communities": "standardfællesskaber", "avatar": "avatar", "pending_edit": "ventende redigering", "failed_edit": "mislykket redigering", "node_stats": "nodestatistikker", "version": "version", "edit_reason": "redigeringsgrund", "view_parent_comment": "vis oprindelig kommentar", "chain_ticker": "Kæde ticker", "token_address_whitelist": "Tokenadresse (<1>kun hvidliste)", "token_id": "Token ID", "paste_signature": "Indsæt underskrift", "copy_message_etherscan": "<1>{{copy}} besked at underskrive på <2>etherscan", "copy": "kopier", "copied": "kopieret", "missing_chain_ticker": "Manglende kæde ticker", "missing_token_address": "Manglende tokensadresse", "missing_token_id": "Manglende token-id", "missing_signature": "Manglende signatur", "edited_timestamp": "Redigeret {{timestamp}}", "ban_user_for": "Udeluk brugeren i <1> dag(e)", "crypto_wallets": "Crypto Wallets", "wallet_address": "Walletadresse", "remove": "Fjern", "add_wallet": "<1>Tilføj en crypto-wallet", "show_settings": "Vis indstillinger", "hide_settings": "Skjul indstillinger", "undelete": "Gendan sletning", "downloading_comments": "downloading kommentarer", "you_blocked_community": "Du har blokeret dette fællesskab", "show": "vise", "plebbit_options": "plebbit indstillinger", "general": "almindelig", "more_posts_last_week": "{{count}} indlæg sidste {{currentTimeFilterName}}: <1>vis flere indlæg fra sidste uge", "more_posts_last_month": "{{count}} indlæg sidste {{currentTimeFilterName}}: <1>vis flere indlæg fra sidste måned", "profile_info": "Din konto u/{{shortAddress}} blev oprettet. <1>Indstil visningsnavn, <2>eksporter sikkerhedskopi, <3>læs mere.", "show_all_instead": "Viser indlæg siden {{timeFilterName}}, <1>vis alle i stedet", "subplebbit_offline_info": "Fællesskabet kan være offline og udgivelse kan mislykkes.", "posts_last_synced_info": "Indlæg sidst synkroniseret {{time}}, fællesskabet kan være offline og publicering kan mislykkes.", "import_account_backup": "<1>importere kontosikkerhedskopi", "export_account_backup": "<1>eksportere kontosikkerhedskopi", "save_reset_changes": "<1>gem eller <2>nulstil ændringer", "delete_this_account": "<1>slet denne konto", "create_new_account": "<1>oprette en ny konto", "wallet_number": "tegneboks #{{index}}", "view_more": "se mere", "submit_community": "Indsend dit fællesskab", "hide_avatars_from_replies": "Skjul avatarer fra svar", "yes": "ja", "no": "nej", "are_you_sure": "Er du sikker?", "a_short_title": "En kort titel til dit fællesskab", "challenges": "Udfordringer", "challenges_subtitle": "Vælg en eller flere udfordringer for at forhindre spam", "add_a_challenge": "Tilføj en udfordring", "communities_you_moderate": "De samfund, du modererer", "blur_media": "Slør medier markeret som NSFW/18+", "nsfw_content": "NSFW indhold", "see_nsfw": "Klik for at se NSFW", "see_nsfw_spoiler": "Klik for at se NSFW spoiler", "always_show_nsfw": "Vil du altid vise NSFW medier?", "always_show_nsfw_notice": "Okay, vi har ændret dine præferencer til altid at vise NSFW medier.", "content_options": "Indholdsindstillinger", "over_18": "Over 18?", "must_be_over_18": "Du skal være over 18 år for at se dette fællesskab", "must_be_over_18_explanation": "Du skal være mindst 18 år gammel for at se dette indhold. Er du over 18 og villig til at se voksenindhold?", "no_thank_you": "Nej, tak tak", "continue": "Fortsæt", "download_latest_android": "Download den nyeste Android-version?", "submitter": "Indsender", "block_user": "Bloker bruger", "unblock_user": "Fjern blokering af bruger", "filtering_by_tag": "Filtrering efter tag: \"{{tag}}\"", "you_are_moderator": "Du er moderator i dette fællesskab", "you_are_admin": "Du er administrator af dette fællesskab", "you_are_owner": "Du er ejer af dette fællesskab", "looking_for_more_posts": "Leder efter flere indlæg", "loading_feed": "Indlæser feed", "downloading_posts": "Henter indlæg", "post_is_pending": "Indlægget er på vent", "post_has_failed": "Indlægget mislykkedes", "choose_file": "Vælg fil", "uploading": "Uploadering", "invalid_url_alert": "Det angivne link er ikke en gyldig URL.", "empty_comment_alert": "Kan ikke poste en tom kommentar.", "no_subscriptions_message": "<1>{{accountName}}, dette er dit hjem på Seedit<2>Når du finder et fællesskab, du kan lide, <3>tilmeld dig med <4>", "find_communities": "find fællesskaber på p/all", "community_deleted": "Fællesskabet blev slettet med succes.", "go_to_a_community": "Gå til et fællesskab", "enter_community_address": "Indtast en fællesskabsadresse", "all_communities": "alle samfund", "search_posts": "søg efter indlæg", "found_n_results_for": "fundet {{count}} indlæg for \"{{query}}\"", "clear_search": "ryd søgning", "no_matches_found_for": "der blev ikke fundet nogen matches for \"{{query}}\"", "searching": "søger", "hide_default_communities_from_topbar": "Skjul standardfællesskaber fra topbaren", "media": "medier", "hide_communities_tagged_as_nsfw": "Skjul fællesskaber mærket som NSFW/18+", "tagged_as_adult": "mærket som \"voksen\"", "tagged_as_gore": "mærket som \"gore\"", "tagged_as_anti": "mærket som \"anti\"", "tagged_as_vulgar": "mærket som \"vulgar\"", "drop_here_or": "Drop her eller", "upload_button_warning": "Auto-uploading er blokeret af din browsers CORS-politik, men det er tilgængeligt på Seedit Android-appen og desktopappen (Win/Mac/Linux).\n\nGå til downloadlinks-siden på GitHub?", "create_community_warning": "Oprettelse af et fællesskab kræver, at du kører en fuld node. Seedit desktop-appen (Win/Mac/Linux) kører automatisk en fuld node.\n\nGå til downloadlinks-siden på GitHub?", "avatars": "Avatarer", "filtering_by_nsfw": "Filtrering efter NSFW-fællesskaber", "notifications": "Notifikationer", "new_replies_received": "Nye svar modtaget", "private_key_warning_title": "Din private nøgle vil blive vist", "private_key_warning_description": "Du er ved at se dine kontodata, som inkluderer din private nøgle. Du bør aldrig dele din private nøgle med nogen.", "go_back": "Gå tilbage", "loading_editor": "Indlæser editor", "show_thumbnails_next_to_links": "Vis miniaturebilleder ved siden af links", "dont_show_thumbnails_next_to_links": "Vis ikke miniaturer ved siden af links", "show_thumbnails_based_on_community_media_preferences": "Vis miniaturebilleder baseret på det pågældende fællesskabs mediepræferencer", "media_previews": "Medieforhåndsvisninger", "auto_expand_media_previews": "Auto-udvid medie-forhåndsvisninger", "dont_auto_expand_media_previews_on_comments_pages": "Udvid ikke automatisk medievisninger på kommentarsider", "video_player": "Videospiller", "autoplay_videos_on_comments_page": "Autoplay videoer på kommentarsiden", "mute_videos_by_default": "Slå lyden fra videoer som standard", "expand_media_previews_based_on_community_media_preferences": "Udvid mediepræsentationer baseret på det fællesskabs mediepræferencer", "show_all_nsfw": "Vis alle NSFW", "hide_all_nsfw": "Skjul alle NSFW", "tags": "Tags", "moderator_of": "moderator af", "not_subscriber_nor_moderator": "Du er hverken abonnent eller moderator i nogen fællesskab.", "more_posts_last_year": "{{count}} indlæg sidste {{currentTimeFilterName}}: <1>vis flere indlæg fra sidste år", "editor_fallback_warning": "Avanceret editor kunne ikke indlæses, bruger grundlæggende teksteditor som fallback.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Du ser allerede denne fællesskab" } ================================================ FILE: public/translations/de/default.json ================================================ { "about": "Über", "comments": "Kommentare", "preferences": "Einstellungen", "submit": "Einreichen", "dark": "Dunkel", "light": "hell", "my_communities": "meine Communities", "home": "hauptseite", "all": "alle", "submitted": "eingereicht", "post_by": "von", "post_to": "an", "post_no_comments": "kommentieren", "post_comment": "Kommentar", "post_comments": "Kommentare", "share": "Weitersagen", "save": "Speichern", "hide": "Ausblenden", "report": "melden", "crosspost": "crosspost", "time_1_minute_ago": "vor 1 Minute", "time_x_minutes_ago": "vor {{count}} Minuten", "time_1_hour_ago": "vor 1 Stunde", "time_x_hours_ago": "vor {{count}} Stunden", "time_1_day_ago": "vor 1 Tag", "time_x_days_ago": "vor {{count}} Tagen", "time_1_month_ago": "vor 1 Monat", "time_x_months_ago": "vor {{count}} Monaten", "time_1_year_ago": "vor 1 Jahr", "time_x_years_ago": "vor {{count}} Jahren", "spoiler": "ausklappen", "reply_reply": "Antwort", "reply_sorted_by": "Sortiert nach", "all_comments": "Alle {{count}} kommentare", "no_comments": "Keine kommentare (noch)", "reply_score_singular": "1 Punkt", "reply_score_plural": "{{score}} Punkte", "removed": "Entfernt", "one_comment": "1 Kommentar", "submit_url_description": "medien einbetten, indem Sie den direkten Link posten (endet auf .jpg, .gif, .mp4 usw.)", "title": "Titel", "text": "Text", "required": "erforderlich", "optional": "optional", "community_address": "Gemeinschaftsadresse", "submit_choose": "Wählen Sie aus, wo Sie posten möchten", "submit_notice": "Bitte beachten Sie die Regeln der Gemeinschaft, seedit hat keine globalen Administratoren.", "challenge_from": "Challenge von p/{{subplebbit}}", "challenge_for_post": "für Beitrag: \"{{publicationContent}}\"", "challenge_for_reply": "für Antwort an u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} von {{total}}", "cancel": "Abbrechen", "previous": "Vorherige", "next": "Nächste", "loading": "Laden", "pending": "Ausstehend", "submit_subscriptions_notice": "Vorgeschlagene Communitys", "submit_subscriptions": "Ihre abonnierten Gemeinschaften", "rules_for": "Regeln für", "no_communities_found": "Keine Gemeinschaften gefunden auf <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "Um eine Verbindung zu einer Gemeinschaft herzustellen, verwenden Sie 🔎 oben rechts", "options": "Optionen", "hide_options": "Optionen ausblenden", "failed": "gescheitert", "time_1_minute": "1 Minute", "time_x_minutes": "{{count}} Minuten", "time_1_hour": "1 Stunde", "time_x_hours": "{{count}} Stunden", "time_1_day": "1 Tag", "time_x_days": "{{count}} Tage", "time_1_month": "1 Monat", "time_x_months": "{{count}} Monate", "time_1_year": "1 Jahr", "time_x_years": "{{count}} Jahre", "submit_post": "Einen neuen Beitrag veröffentlichen", "create_your_community": "Erstelle deine eigene Community", "moderators": "Moderatoren", "about_moderation": "über das Moderationsteam", "join": "Beitreten", "leave": "verlassen", "created_by": "erstellt von {{creatorAddress}}", "community_for": "eine Gemeinschaft seit {{date}}", "post_submitted_on": "dieser Beitrag wurde am {{postDate}} eingereicht", "users_online": "{{count}} Nutzer jetzt hier", "point": "Punkt", "points": "Punkte", "share_link": "Link teilen", "upvoted": "hat gevotet", "announcement": "Ankündigung", "child": "{{childrenCount}} Kind", "children": "{{childrenCount}} Kinder", "moderation": "Moderation", "interface_language": "Oberflächensprache", "theme": "Thema", "account": "Konto", "display_name": "Anzeigename", "crypto_address": "Krypto-Adresse", "check": "überprüfen", "crypto_address_verification": "wenn die Krypto-Adresse p2p aufgelöst ist", "create": "erstellen", "delete": "löschen", "locked": "gesperrt", "reason": "Grund", "sorted_by": "sortiert nach", "downvoted": "negativ bewertet", "hidden": "versteckt", "saved": "gespeichert", "overview": "Übersicht", "user_since": "Benutzer seit mindestens {{time}}", "post_karma": "Beitragskarma", "comment_karma": "Kommentarkarma", "full_comments": "alle Kommentare", "context": "Kontext", "block": "blockieren", "post": "Beitrag", "unhide": "anzeigen", "unblock": "Blockierung aufheben", "undo": "rückgängig machen", "post_hidden": "versteckter Beitrag", "link_copied": "Link kopiert", "block_community": "Community blockieren", "unblock_community": "Community-Blockierung aufheben", "search_feed_post": "Suche nach einem Beitrag in diesem Feed", "from": "von", "via": "über", "sent": "gesendet", "unread": "ungelesen", "comment_replies": "Antworten auf Kommentare", "post_replies": "Antworten auf Beiträge", "messages": "Nachrichten", "inbox": "Posteingang", "mark_all_read": "alle als gelesen markieren", "comment_reply": "Kommentar antworten", "post_reply": "Beitrag antworten", "show_parent": "zeige den verlinkten Beitrag", "no_posts": "keine Beiträge", "media_url": "Medien-URL", "post_locked_info": "Dieser Beitrag ist {{state}}. Sie können keinen Kommentar hinterlassen.", "members_count": "{{count}} Mitglieder", "communities": "Gemeinschaft", "edit": "bearbeiten", "moderator": "Moderator", "description": "Beschreibung", "rules": "Regeln", "save_options": "Optionen speichern", "logo": "Logo", "address": "Adresse", "nothing_found": "Hier scheint nichts zu sein", "stickied_comment": "Angehängter Kommentar", "posts_last_synced": "Zuletzt synchronisierte Beiträge {{dateAgo}}", "community_settings": "Community-Einstellungen", "moderation_tools": "Moderationstools", "submit_to": "Einreichen an <1>{{link}}", "edit_subscriptions": "Abonnements bearbeiten", "delete_confirm": "Möchten Sie {{value}} wirklich löschen?", "saving": "Speichern", "deleted": "Gelöscht", "online": "Online", "offline": "Offline", "subscriber": "Abonnent", "join_communities_notice": "Klicken Sie auf die Schaltflächen <1>{{join}} oder <2>{{leave}}, um auszuwählen, welche Communities auf der Startseite angezeigt werden sollen.", "below_subscribed": "Unten sind die Communities, denen du beigetreten bist.", "not_subscribed": "Du bist bisher in keiner Community angemeldet.", "below_moderator_access": "Hier sind die Gemeinschaften, auf die Sie als Moderator zugreifen können.", "not_moderator": "Du bist kein Moderator in einer Gemeinschaft.", "create_community": "Gemeinschaft erstellen", "single_comment_notice": "Sie sehen einen Thread mit nur einem Kommentar", "single_comment_link": "Den Rest der Kommentare anzeigen", "owner_settings_notice": "Nur der Besitzer der Community kann die Einstellungen bearbeiten.", "preview": "Vorschau", "shown_in_sidebar": "im Seitenbereich Ihrer Community angezeigt", "community_logo_info": "Legen Sie ein Gemeinschaftslogo mit seinem direkten Bildlink fest (endet in .jpg, .png)", "moderators_setting_info": "lassen Sie andere Benutzer moderieren und posten, ohne Herausforderungen", "vote": "abstimmen", "passing": "bestanden", "rejecting": "ablehnend", "add_moderator": "einen Moderator hinzufügen", "add_rule": "eine Regel hinzufügen", "json_settings": "JSON-Einstellungen", "json_settings_info": "Gemeinschaftseinstellungen schnell kopieren oder einfügen", "address_setting_info": "Setzen Sie eine lesbare Gemeindeadresse mit einer Krypto-Domäne", "enter_crypto_address": "Bitte geben Sie eine gültige Krypto-Adresse ein.", "check_for_updates": "<1>Überprüfen Sie auf Updates", "refresh_to_update": "Aktualisieren Sie die Seite, um zu aktualisieren", "latest_development_version": "Du befindest dich auf der neuesten Entwicklungsversion, Commit {{commit}}. Um die stabile Version zu verwenden, gehe zu {{link}}.", "latest_stable_version": "Du befindest dich auf der neuesten stabilen Version, seedit v{{version}}.", "new_development_version": "Neue Entwicklungsversion verfügbar, Commit {{newCommit}}. Du verwendest Commit {{oldCommit}}.", "new_stable_version": "Neue stabile Version verfügbar, seedit v{{newVersion}}. Du verwendest seedit v{{oldVersion}}.", "download_latest_desktop": "Laden Sie hier die neueste Desktop-Version herunter: {{link}}", "contribute_on_github": "Beitragen auf GitHub", "no_media_found": "Keine Medien gefunden", "no_image_found": "Kein Bild gefunden", "warning_spam": "Warnung: Keine Herausforderung ausgewählt, die Gemeinschaft ist anfällig für Spam-Angriffe.", "hide_help": "Hilfe ausblenden", "formatting_help": "Formatierungshilfe", "you_see": "Du siehst", "you_type": "Du tippst", "italics": "kursiv", "bold": "fett", "quoted_text": "zitierter Text", "item": "Artikel", "delete_community": "Gemeinschaft löschen", "delete_community_description": "Diese Gemeinschaft endgültig löschen. Ihr Inhalt kann immer noch von Peers geerntet werden", "add": "hinzufügen", "owner": "Besitzer", "admin": "Administrator", "settings_saved": "Einstellungen für p/{{subplebbitAddress}} gespeichert", "continue_thread": "diesen Thread fortsetzen", "mod_edit_reason": "Moderator Bearbeitungsgrund", "double_confirm": "Sind Sie wirklich sicher? Diese Aktion ist nicht rückgängig zu machen.", "crypto_address_not_yours": "Krypto-Adresse gehört zu einem anderen Konto.", "crypto_address_yours": "Krypto-Adresse gehört zu diesem Konto.", "crypto_address_not_resolved": "Krypto-Adresse ist noch nicht aufgelöst.", "submit_to_string": "Einreichen bei {{string}}", "page_not_found": "Seite nicht gefunden", "not_found_description": "Die von Ihnen angeforderte Seite existiert nicht", "last_edited": "Zuletzt bearbeitet am {{timestamp}}", "view_spoiler": "Spoiler anzeigen", "default_communities": "Standard-Communities", "avatar": "Avatar", "pending_edit": "ausstehende Bearbeitung", "failed_edit": "fehlgeschlagene Bearbeitung", "node_stats": "Knotenstatistiken", "version": "Version", "edit_reason": "Bearbeitungsgrund", "view_parent_comment": "ursprünglichen Kommentar anzeigen", "chain_ticker": "Blockchain-Ticker", "token_address_whitelist": "Tokenadresse (<1>nur Weiße Liste)", "token_id": "Token-ID", "paste_signature": "Unterschrift einfügen", "copy_message_etherscan": "<1>{{copy}} Nachricht zum Signieren auf <2>etherscan", "copy": "kopieren", "copied": "kopiert", "missing_chain_ticker": "Fehlender Blockchain-Ticker", "missing_token_address": "Fehlende Tokenadresse", "missing_token_id": "Fehlende Token-ID", "missing_signature": "Fehlende Signatur", "edited_timestamp": "Bearbeitet {{timestamp}}", "ban_user_for": "Benutzer für <1> Tag(e) sperren", "crypto_wallets": "Krypto-Wallets", "wallet_address": "Wallet-Adresse", "remove": "Entfernen", "add_wallet": "<1>Hinzufügen einer Krypto-Brieftasche", "show_settings": "Einstellungen anzeigen", "hide_settings": "Einstellungen ausblenden", "undelete": "Wiederherstellen", "downloading_comments": "Kommentare werden heruntergeladen", "you_blocked_community": "Du hast diese Gemeinschaft blockiert", "show": "zeigen", "plebbit_options": "plebbit optionen", "general": "allgemein", "more_posts_last_week": "{{count}} Beiträge letzte {{currentTimeFilterName}}: <1>zeige mehr Beiträge aus letzter Woche", "more_posts_last_month": "{{count}} Beiträge im {{currentTimeFilterName}}: <1>weitere Beiträge aus dem letzten Monat anzeigen", "profile_info": "Ihr Konto u/{{shortAddress}} wurde erstellt. <1>Anzeige Name festlegen, <2>Backup exportieren, <3>Erfahren Sie mehr.", "show_all_instead": "Zeigt Beiträge seit {{timeFilterName}}, <1>stattdessen alles anzeigen", "subplebbit_offline_info": "Die Community könnte offline sein und das Veröffentlichen könnte fehlschlagen.", "posts_last_synced_info": "Beiträge zuletzt synchronisiert {{time}}, die Gemeinschaft könnte offline sein und das Veröffentlichen könnte fehlschlagen.", "import_account_backup": "<1>importieren Sie die Kontosicherung", "export_account_backup": "<1>exportieren Sie die Kontosicherung", "save_reset_changes": "<1>speichern oder <2>zurücksetzen Änderungen", "delete_this_account": "<1>löschen Sie dieses Konto", "create_new_account": "<1>erstelle ein neues Konto", "wallet_number": "Wallet #{{index}}", "view_more": "mehr anzeigen", "submit_community": "Reichen Sie Ihre Gemeinschaft ein", "hide_avatars_from_replies": "Avatare in Antworten ausblenden", "yes": "ja", "no": "nein", "are_you_sure": "Bist du sicher?", "a_short_title": "Ein kurzer Titel für deine Gemeinschaft", "challenges": "Herausforderungen", "challenges_subtitle": "Wählen Sie eine oder mehrere Herausforderungen zur Vermeidung von Spam", "add_a_challenge": "Herausforderung hinzufügen", "communities_you_moderate": "Gemeinschaften, die du moderierst", "blur_media": "Unschärfe Medien, die als NSFW/18+ markiert sind", "nsfw_content": "NSFW-Inhalt", "see_nsfw": "Klicken Sie, um NSFW zu sehen", "see_nsfw_spoiler": "Klicken Sie, um den NSFW Spoiler zu sehen", "always_show_nsfw": "Möchten Sie immer NSFW-Medien anzeigen?", "always_show_nsfw_notice": "Okay, wir haben deine Präferenzen geändert, um immer NSFW-Medien anzuzeigen.", "content_options": "Inhaltsoptionen", "over_18": "Über 18?", "must_be_over_18": "Sie müssen über 18 Jahre alt sein, um diese Community zu sehen", "must_be_over_18_explanation": "Sie müssen mindestens 18 Jahre alt sein, um diesen Inhalt zu sehen. Sind Sie über 18 Jahre alt und bereit, Erwachsenen-Inhalte zu sehen?", "no_thank_you": "Nein, danke", "continue": "Weiter", "download_latest_android": "Laden Sie die neueste Android-Version herunter?", "submitter": "Einreicher", "block_user": "Benutzer blockieren", "unblock_user": "Benutzer entsperren", "filtering_by_tag": "Filtern nach Tag: \"{{tag}}\"", "you_are_moderator": "Du bist Moderator in dieser Community", "you_are_admin": "Du bist ein Administrator dieser Community", "you_are_owner": "Du bist der Eigentümer dieser Community", "looking_for_more_posts": "Suche nach weiteren Beiträgen", "loading_feed": "Lädt Feed", "downloading_posts": "Beitragsdownload", "post_is_pending": "Beitrag ist ausstehend", "post_has_failed": "Der Beitrag ist fehlgeschlagen", "choose_file": "Wählen Sie eine Datei", "uploading": "Hochladen", "invalid_url_alert": "Der bereitgestellte Link ist keine gültige URL.", "empty_comment_alert": "Kann keinen leeren Kommentar posten.", "no_subscriptions_message": "<1>{{accountName}}, dies ist dein Zuhause auf Seedit<2>Wenn du eine Community findest, die dir gefällt, <3>trete bei mit <4>", "find_communities": "Finde Communities auf p/all", "community_deleted": "Community wurde erfolgreich gelöscht.", "go_to_a_community": "Gehe zu einer Community", "enter_community_address": "Geben Sie eine Community-Adresse ein", "all_communities": "alle Gemeinschaften", "search_posts": "Beiträge suchen", "found_n_results_for": "Es wurden {{count}} Beiträge für \"{{query}}\" gefunden", "clear_search": "Suche löschen", "no_matches_found_for": "Keine Übereinstimmungen für \"{{query}}\" gefunden", "searching": "Suche", "hide_default_communities_from_topbar": "Standardgemeinschaften aus der oberen Leiste ausblenden", "media": "Medien", "hide_communities_tagged_as_nsfw": "Verstecke Communities, die als NSFW/18+ gekennzeichnet sind", "tagged_as_adult": "als \"Erwachsen\" markiert", "tagged_as_gore": "gekennzeichnet als \"gore\"", "tagged_as_anti": "als \"anti\" markiert", "tagged_as_vulgar": "als \"vulgär\" markiert", "drop_here_or": "Hier ablegen oder", "upload_button_warning": "Auto-Upload wird durch die CORS-Richtlinie Ihres Browsers blockiert, ist jedoch in der Seedit Android-App und Desktop-App (Win/Mac/Linux) verfügbar.\n\nGehen Sie zur Download-Link-Seite auf GitHub?", "create_community_warning": "Das Erstellen einer Community erfordert das Ausführen eines vollständigen Knotens. Die Seedit-Desktop-App (Win/Mac/Linux) führt automatisch einen vollständigen Knoten aus.\n\nGehen Sie zur Download-Link-Seite auf GitHub?", "avatars": "Avatare", "filtering_by_nsfw": "Filtern nach NSFW-Communities", "notifications": "Benachrichtigungen", "new_replies_received": "Neue Antworten erhalten", "private_key_warning_title": "Ihr privater Schlüssel wird angezeigt", "private_key_warning_description": "Sie sind dabei, Ihre Kontodaten anzuzeigen, die Ihren privaten Schlüssel enthalten. Sie sollten Ihren privaten Schlüssel niemals mit jemandem teilen.", "go_back": "Zurück", "loading_editor": "Editor wird geladen", "show_thumbnails_next_to_links": "Miniaturansichten neben Links anzeigen", "dont_show_thumbnails_next_to_links": "Miniaturansichten neben Links nicht anzeigen", "show_thumbnails_based_on_community_media_preferences": "Vorschaubilder basierend auf den Medienpräferenzen dieser Community anzeigen", "media_previews": "Medienvorschauen", "auto_expand_media_previews": "Medienvorschauen automatisch erweitern", "dont_auto_expand_media_previews_on_comments_pages": "Medienvorschauen auf Kommentarseiten nicht automatisch erweitern", "video_player": "Videoplayer", "autoplay_videos_on_comments_page": "Videos auf der Kommentarseite automatisch abspielen", "mute_videos_by_default": "Videos standardmäßig stummschalten", "expand_media_previews_based_on_community_media_preferences": "Erweitern Sie Medienvorschauen basierend auf den Medienpräferenzen dieser Community", "show_all_nsfw": "Alle NSFW anzeigen", "hide_all_nsfw": "Alle NSFW ausblenden", "tags": "Tags", "moderator_of": "Moderator von", "not_subscriber_nor_moderator": "Sie sind weder Abonnent noch Moderator einer Community.", "more_posts_last_year": "{{count}} Beiträge im letzten {{currentTimeFilterName}}: <1>zeige mehr Beiträge vom letzten Jahr", "editor_fallback_warning": "Erweiterter Editor konnte nicht geladen werden, grundlegender Texteditor wird als Ersatz verwendet.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Sie sehen diese Community bereits" } ================================================ FILE: public/translations/el/default.json ================================================ { "about": "Σχετικά", "comments": "σχόλια", "preferences": "Προτιμήσεις", "submit": "Υποβολή", "dark": "Σκοτεινός", "light": "Φωτεινό", "my_communities": "Οι κοινότητές μου", "home": "Αρχική", "all": "Όλα", "submitted": "Υποβλήθηκε", "post_by": "Από", "post_to": "Σε", "post_no_comments": "Σχολιάστε", "post_comment": "Σχόλιο", "post_comments": "Σχόλια", "share": "Μοιραστείτε", "save": "Αποθήκευση", "hide": "Απόκρυψη", "report": "Αναφορά", "crosspost": "Διασταυρούμενη δημοσίευση", "time_1_minute_ago": "Πριν από 1 λεπτό", "time_x_minutes_ago": "Πριν από {{count}} λεπτά", "time_1_hour_ago": "Πριν από 1 ώρα", "time_x_hours_ago": "Πριν από {{count}} ώρες", "time_1_day_ago": "Πριν από 1 ημέρα", "time_x_days_ago": "Πριν από {{count}} ημέρες", "time_1_month_ago": "Πριν από 1 μήνα", "time_x_months_ago": "Πριν από {{count}} μήνες", "time_1_year_ago": "Πριν από 1 έτος", "time_x_years_ago": "Πριν από {{count}} έτη", "spoiler": "Διαρροή", "reply_reply": "Απάντηση", "reply_sorted_by": "Ταξινομημένα κατά", "all_comments": "Όλα τα {{count}} σχόλια", "no_comments": "Κανένα σχόλιο (ακόμη)", "reply_score_singular": "1 βαθμός", "reply_score_plural": "{{score}} σημεία", "removed": "Αφαιρέθηκε", "one_comment": "1 σχόλιο", "submit_url_description": "ενσωματώστε πολυμέσα αναρτώντας τον άμεσο σύνδεσμό τους (τελειώνει σε .jpg, .gif, .mp4 κ.λπ.)", "title": "τίτλος", "text": "κείμενο", "required": "απαραίτητο", "optional": "προαιρετικό", "community_address": "διεύθυνση κοινότητας", "submit_choose": "Επιλέξτε πού θέλετε να δημοσιεύσετε", "submit_notice": "Παρακαλούμε να είστε προσεκτικοί με τους κανόνες της κοινότητας, το seedit δεν έχει παγκόσμιους διαχειριστές.", "challenge_from": "Challenge από p/{{subplebbit}}", "challenge_for_post": "για δημοσίευση: \"{{publicationContent}}\"", "challenge_for_reply": "για απάντηση σε u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} από {{total}}", "cancel": "Ακύρωση", "previous": "Προηγούμενο", "next": "Επόμενο", "loading": "Φόρτωση", "pending": "Εκκρεμεί", "submit_subscriptions_notice": "Προτεινόμενες κοινότητες", "submit_subscriptions": "οι κοινότητες στις οποίες έχετε συνδρομή", "rules_for": "κανόνες για", "no_communities_found": "Δεν βρέθηκαν κοινότητες στο <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "Για να συνδεθείτε με μια κοινότητα, χρησιμοποιήστε το 🔎 στην επάνω δεξιά γωνία", "options": "επιλογές", "hide_options": "απόκρυψη επιλογών", "failed": "απέτυχε", "time_1_minute": "1 λεπτό", "time_x_minutes": "{{count}} λεπτά", "time_1_hour": "1 ώρα", "time_x_hours": "{{count}} ώρες", "time_1_day": "1 μέρα", "time_x_days": "{{count}} μέρες", "time_1_month": "1 μήνας", "time_x_months": "{{count}} μήνες", "time_1_year": "1 έτος", "time_x_years": "{{count}} έτη", "submit_post": "Υποβάλετε μια νέα ανάρτηση", "create_your_community": "Δημιουργήστε τη δική σας κοινότητα", "moderators": "διαχειριστές", "about_moderation": "σχετικά με τη διαμεσολάβηση ομάδα", "join": "Συμμετοχή", "leave": "φύγετε", "created_by": "δημιουργήθηκε από {{creatorAddress}}", "community_for": "κοινότητα για {{date}}", "post_submitted_on": "αυτή η ανάρτηση κατατέθηκε στις {{postDate}}", "users_online": "{{count}} χρήστες εδώ τώρα", "point": "σημείο", "points": "σημεία", "share_link": "κοινοποίηση συνδέσμου", "upvoted": "ψήφισε", "announcement": "ανακοίνωση", "child": "{{childrenCount}} παιδί", "children": "{{childrenCount}} παιδιά", "moderation": "διαμεσολάβηση", "interface_language": "γλώσσα διεπαφής", "theme": "θέμα", "account": "λογαριασμός", "display_name": "όνομα εμφάνισης", "crypto_address": "διεύθυνση κρυπτονομίσματος", "check": "ελέγξτε", "crypto_address_verification": "εάν η διεύθυνση κρυπτονομίσματος είναι αναγνωρισμένη p2p", "create": "δημιουργήστε", "delete": "διαγραφή", "locked": "κλειδωμένο", "reason": "λόγος", "sorted_by": "ταξινομημένο κατά", "downvoted": "καταψήφιση", "hidden": "κρυφός", "saved": "αποθηκευμένο", "overview": "επισκόπηση", "user_since": "Χρήστης από τουλάχιστον {{time}}", "post_karma": "καρμα δημοσιεύσεων", "comment_karma": "καρμα σχολίων", "full_comments": "όλα τα σχόλια", "context": "πλαίσιο", "block": "φραγή", "post": "δημοσίευση", "unhide": "εμφάνιση", "unblock": "αναίρεση φραγής", "undo": "αναίρεση", "post_hidden": "κρυφή δημοσίευση", "link_copied": "ο σύνδεσμος αντιγράφηκε", "block_community": "φραγή κοινότητας", "unblock_community": "αναίρεση φραγής κοινότητας", "search_feed_post": "Ψάξτε για μια ανάρτηση σε αυτήν τη ροή", "from": "από", "via": "μέσω", "sent": "αποστάλθηκε", "unread": "αδιάβαστο", "comment_replies": "απαντήσεις σε σχόλια", "post_replies": "απαντήσεις σε δημοσιεύσεις", "messages": "μηνύματα", "inbox": "εισερχόμενα", "mark_all_read": "επισήμανση όλων ως διαβασμένα", "comment_reply": "απάντηση σε σχόλιο", "post_reply": "απάντηση στην ανάρτηση", "show_parent": "εμφάνιση της αναφερόμενης δημοσίευσης", "no_posts": "κανένα άρθρο", "media_url": "URL πολυμέσων", "post_locked_info": "Αυτή η ανάρτηση είναι {{state}}. Δεν θα μπορείτε να σχολιάσετε.", "members_count": "{{count}} μέλη", "communities": "κοινόνια", "edit": "επικοινωνιακό", "moderator": "Διαμεσολαβητής", "description": "Περιγραφή", "rules": "Κανόνες", "save_options": "Αποθήκευση επιλογών", "logo": "Λογότυπο", "address": "Διεύθυνση", "nothing_found": "Δεν φαίνεται να υπάρχει τίποτα εδώ", "stickied_comment": "Καρφωμένο σχόλιο", "posts_last_synced": "Τελευταία συγχρονισμένες δημοσιεύσεις {{dateAgo}}", "community_settings": "Ρυθμίσεις κοινότητας", "moderation_tools": "Εργαλεία διαμεσολάβησης", "submit_to": "Υποβολή σε <1>{{link}}", "edit_subscriptions": "Επεξεργασία συνδρομών", "delete_confirm": "Είστε σίγουροι ότι θέλετε να διαγράψετε το {{value}};", "saving": "Αποθήκευση", "deleted": "Διαγράφηκε", "online": "Σε απευθείας σύνδεση", "offline": "Εκτός σύνδεσης", "subscriber": "Συνδρομητής", "join_communities_notice": "Κάντε κλικ στα κουμπιά <1>{{join}} ή <2>{{leave}} για να επιλέξετε ποιες κοινότητες θα εμφανίζονται στην αρχική σελίδα.", "below_subscribed": "Παρακάτω είναι οι κοινότητες στις οποίες έχετε εγγραφεί.", "not_subscribed": "Δεν είστε ακόμα εγγεγραμμένος σε κοινότητα.", "below_moderator_access": "Παρακάτω βρίσκονται οι κοινότητες στις οποίες έχετε πρόσβαση ως διαχειριστής.", "not_moderator": "Δεν είστε διαχειριστής σε καμία κοινότητα.", "create_community": "Δημιουργία κοινότητας", "single_comment_notice": "Βλέπετε ένα νήμα με έναν μόνο σχολιασμό", "single_comment_link": "Προβολή των υπολοίπων σχολίων", "owner_settings_notice": "Μόνο ο ιδιοκτήτης της κοινότητας μπορεί να επεξεργαστεί τις ρυθμίσεις της.", "preview": "Προεπισκόπηση", "shown_in_sidebar": "εμφανίζεται στην πλευρική μπάρα της κοινότητάς σας", "community_logo_info": "Ορίστε ένα λογότυπο κοινότητας χρησιμοποιώντας τον απευθείας σύνδεσμο εικόνας του (τελειώνοντας σε .jpg, .png)", "moderators_setting_info": "αφήστε άλλους χρήστες να διαμεσολαβούν και να δημοσιεύουν χωρίς προκλήσεις", "vote": "ψηφίστε", "passing": "πέρασμα", "rejecting": "απόρριψη", "add_moderator": "προσθέστε έναν διαχειριστή", "add_rule": "προσθέστε μια κανόνα", "json_settings": "Ρυθμίσεις JSON", "json_settings_info": "Γρήγορη αντιγραφή ή επικόλληση των ρυθμίσεων της κοινότητας", "address_setting_info": "Ορίστε μια αναγνώσιμη διεύθυνση κοινότητας χρησιμοποιώντας ένα κρυπτο-τομέα", "enter_crypto_address": "Παρακαλώ εισαγάγετε μια έγκυρη διεύθυνση κρυπτονομίσματος.", "check_for_updates": "<1>Ελέγξτε για ενημερώσεις", "refresh_to_update": "Ανανεώστε τη σελίδα για να ενημερωθεί", "latest_development_version": "Βρίσκεστε στην πιο πρόσφατη έκδοση ανάπτυξης, commit {{commit}}. Για να χρησιμοποιήσετε την σταθερή έκδοση, πηγαίνετε στη διεύθυνση {{link}}.", "latest_stable_version": "Βρίσκεστε στην πιο πρόσφατη σταθερή έκδοση, seedit v{{version}}.", "new_development_version": "Νέα έκδοση ανάπτυξης διαθέσιμη, commit {{newCommit}}. Χρησιμοποιείτε commit {{oldCommit}}.", "new_stable_version": "Νέα σταθερή έκδοση διαθέσιμη, seedit v{{newVersion}}. Χρησιμοποιείτε seedit v{{oldVersion}}.", "download_latest_desktop": "Κατεβάστε την πιο πρόσφατη έκδοση για επιτραπέζιο υπολογιστή εδώ: {{link}}", "contribute_on_github": "Συνεισφέρετε στο GitHub", "no_media_found": "Δεν βρέθηκαν πολυμέσα", "no_image_found": "Δεν βρέθηκε εικόνα", "warning_spam": "Προειδοποίηση: Δεν επιλέχθηκε πρόκληση, η κοινότητα είναι ευάλωτη στις επιθέσεις ανεπιθύμητων μηνυμάτων.", "hide_help": "Απόκρυψη βοήθειας", "formatting_help": "Βοήθεια μορφοποίησης", "you_see": "Βλέπεις", "you_type": "Πληκτρολογείς", "italics": "πλάγια", "bold": "έντονη", "quoted_text": "επικυρωμένο κείμενο", "item": "στοιχείο", "delete_community": "διαγραφή κοινότητας", "delete_community_description": "Διαγράψτε μόνιμα αυτήν την κοινότητα. Το περιεχόμενό του ενδέχεται ακόμη να είναι επισπευδόμενο από ομότιμους", "add": "προσθήκη", "owner": "κάτοχος", "admin": "διαχειριστής", "settings_saved": "Οι ρυθμίσεις αποθηκεύτηκαν για το p/{{subplebbitAddress}}", "continue_thread": "συνεχίστε αυτό το θέμα", "mod_edit_reason": "Λόγος επεξεργασίας από συντονιστή", "double_confirm": "Είστε σίγουροι; Αυτή η ενέργεια είναι αναίρεση.", "crypto_address_not_yours": "Η διεύθυνση κρυπτονομίσματος ανήκει σε άλλο λογαριασμό.", "crypto_address_yours": "Η διεύθυνση κρυπτονομίσματος ανήκει σε αυτόν τον λογαριασμό.", "crypto_address_not_resolved": "Η διεύθυνση κρυπτονομίσματος δεν έχει ακόμη επιλυθεί.", "submit_to_string": "Υποβολή στο {{string}}", "page_not_found": "Η σελίδα δεν βρέθηκε", "not_found_description": "Η σελίδα που ζητήσατε δεν υπάρχει", "last_edited": "Τελευταία επεξεργασία {{timestamp}}", "view_spoiler": "προβολή spoiler", "default_communities": "προεπιλεγμένες κοινότητες", "avatar": "εικόνα προφίλ", "pending_edit": "εκκρεμής επεξεργασία", "failed_edit": "αποτυχημένη επεξεργασία", "node_stats": "στατιστικές κόμβων", "version": "έκδοση", "edit_reason": "λόγος επεξεργασίας", "view_parent_comment": "προβολή αρχικού σχολίου", "chain_ticker": "Αλυσιδωτό ticker", "token_address_whitelist": "Διεύθυνση του token (<1>μόνο λευκή λίστα)", "token_id": "Token ID", "paste_signature": "Επικόλληση υπογραφής", "copy_message_etherscan": "<1>{{copy}} μήνυμα για υπογραφή στο <2>etherscan", "copy": "αντιγραφή", "copied": "αντιγράφηκε", "missing_chain_ticker": "Ελλειπτικός αλυσιδωτός ticker", "missing_token_address": "Ελλειπτική διεύθυνση του token", "missing_token_id": "Ελλειπτικό αναγνωριστικό token", "missing_signature": "Ελλειπτική υπογραφή", "edited_timestamp": "Επεξεργάστηκε {{timestamp}}", "ban_user_for": "Αποκλεισμός χρήστη για <1> ημέρα(ες)", "crypto_wallets": "Πορτοφόλια κρυπτονομισμάτων", "wallet_address": "Διεύθυνση πορτοφολιού", "remove": "Αφαίρεση", "add_wallet": "<1>Προσθήκη ενός κρυπτονομισματικού πορτοφολιού", "show_settings": "Εμφάνιση ρυθμίσεων", "hide_settings": "Απόκρυψη ρυθμίσεων", "undelete": "Ανάκτηση διαγραφής", "downloading_comments": "κατέβασμα σχολίων", "you_blocked_community": "Έχετε αποκλείσει αυτή την κοινότητα", "show": "εμφάνιση", "plebbit_options": "επιλογές plebbit", "general": "γενικός", "more_posts_last_week": "{{count}} αναρτήσεις την περασμένη {{currentTimeFilterName}}: <1>δείτε περισσότερες αναρτήσεις από την περασμένη εβδομάδα", "more_posts_last_month": "{{count}} δημοσιεύσεις στο {{currentTimeFilterName}}: <1>δείτε περισσότερες δημοσιεύσεις από τον τελευταίο μήνα", "profile_info": "Ο λογαριασμός σας u/{{shortAddress}} δημιουργήθηκε. <1>Ορίστε το όνομα εμφάνισης, <2>εξαγωγή αντιγράφου ασφαλείας, <3>μάθετε περισσότερα.", "show_all_instead": "Εμφανίζονται αναρτήσεις από {{timeFilterName}}, <1>εμφάνιση όλων αντί αυτού", "subplebbit_offline_info": "Η κοινότητα ενδέχεται να είναι χωρίς σύνδεση και η δημοσίευση ενδέχεται να αποτύχει.", "posts_last_synced_info": "Δημοσιεύσεις τελευταία συγχρονισμένες {{time}}, η κοινότητα μπορεί να είναι σε κατάσταση offline και η δημοσίευση μπορεί να αποτύχει.", "import_account_backup": "<1>εισαγωγή αντιγράφου ασφαλείας λογαριασμού", "export_account_backup": "<1>εξαγωγή αντιγράφου ασφαλείας λογαριασμού", "save_reset_changes": "<1>αποθήκευση ή <2>επανεκκίνηση αλλαγών", "delete_this_account": "<1>διαγραφή αυτού του λογαριασμού", "create_new_account": "<1>δημιουργία νέου λογαριασμού", "wallet_number": "πορτοφόλι #{{index}}", "view_more": "δείτε περισσότερα", "submit_community": "Υποβάλετε την κοινότητά σας", "hide_avatars_from_replies": "Απόκρυψη avatar από τις απαντήσεις", "yes": "ναι", "no": "όχι", "are_you_sure": "Είσαι σίγουρος;", "a_short_title": "Ένας σύντομος τίτλος για την κοινότητά σας", "challenges": "Προκλήσεις", "challenges_subtitle": "Επιλέξτε μία ή περισσότερες προκλήσεις για την αποτροπή των spam", "add_a_challenge": "Προσθήκη πρόκλησης", "communities_you_moderate": "Κοινότητες που moderates", "blur_media": "Θολώστε τα μέσα που είναι επισημασμένα ως NSFW/18+", "nsfw_content": "Περιεχόμενο NSFW", "see_nsfw": "Κλικ για να δείτε το NSFW", "see_nsfw_spoiler": "Κλικ για να δείτε το NSFW spoiler", "always_show_nsfw": "Θέλετε να εμφανίζετε πάντα τα μέσα NSFW;", "always_show_nsfw_notice": "Εντάξει, αλλάξαμε τις προτιμήσεις σας για να εμφανίζετε πάντα τα μέσα NSFW.", "content_options": "Επιλογές περιεχομένου", "over_18": "Άνω των 18;", "must_be_over_18": "Πρέπει να είστε άνω των 18 για να δείτε αυτήν την κοινότητα", "must_be_over_18_explanation": "Πρέπει να είστε τουλάχιστον 18 ετών για να δείτε αυτό το περιεχόμενο. Είστε άνω των 18 και πρόθυμοι να δείτε περιεχόμενο για ενήλικες;", "no_thank_you": "Όχι, ευχαριστώ", "continue": "Συνέχεια", "download_latest_android": "Κατεβάστε την τελευταία έκδοση Android;", "submitter": "Υποβολέας", "block_user": "Αποκλεισμός χρήστη", "unblock_user": "Ξεκλείδωμα χρήστη", "filtering_by_tag": "Φιλτράρισμα με tag: \"{{tag}}\"", "you_are_moderator": "Είσαι συντονιστής αυτής της κοινότητας", "you_are_admin": "Είσαι διαχειριστής αυτής της κοινότητας", "you_are_owner": "Είσαι ο ιδιοκτήτης αυτής της κοινότητας", "looking_for_more_posts": "Ψάχνει για περισσότερες αναρτήσεις", "loading_feed": "Φόρτωση ροής", "downloading_posts": "Κατέβασμα δημοσιεύσεων", "post_is_pending": "Η ανάρτηση εκκρεμεί", "post_has_failed": "Η ανάρτηση απέτυχε", "choose_file": "Επιλέξτε αρχείο", "uploading": "Ανεβάζοντας", "invalid_url_alert": "Ο παρεχόμενος σύνδεσμος δεν είναι έγκυρη διεύθυνση URL.", "empty_comment_alert": "Δεν μπορεί να δημοσιευτεί κενό σχόλιο.", "no_subscriptions_message": "<1>{{accountName}}, αυτή είναι η αρχική σελίδα σας στο Seedit<2>Όταν βρείτε μια κοινότητα που σας αρέσει, <3>ενταχθείτε με το <4>", "find_communities": "βρείτε κοινότητες στο p/all", "community_deleted": "Η κοινότητα διαγράφηκε επιτυχώς.", "go_to_a_community": "Μεταβείτε σε μια κοινότητα", "enter_community_address": "Εισαγάγετε μια διεύθυνση κοινότητας", "all_communities": "όλες οι κοινότητες", "search_posts": "αναζήτηση αναρτήσεων", "found_n_results_for": "βρέθηκαν {{count}} δημοσιεύσεις για \"{{query}}\"", "clear_search": "καθαρισμός αναζήτησης", "no_matches_found_for": "δεν βρέθηκαν αποτελέσματα για \"{{query}}\"", "searching": "αναζήτηση", "hide_default_communities_from_topbar": "Απόκρυψη προεπιλεγμένων κοινοτήτων από την πάνω μπάρα", "media": "μέσα", "hide_communities_tagged_as_nsfw": "Απόκρυψη κοινοτήτων με ετικέτα NSFW/18+", "tagged_as_adult": "σημειώθηκε ως \"ενήλικας\"", "tagged_as_gore": "επισημασμένο ως \"gore\"", "tagged_as_anti": "επισημασμένο ως \"αντι\"", "tagged_as_vulgar": "επισημάνθηκε ως \"χονδροειδές\"", "drop_here_or": "Μεταφέρετε εδώ ή", "upload_button_warning": "Η αυτόματη αποστολή είναι αποκλεισμένη από την πολιτική CORS του προγράμματος περιήγησής σας, αλλά είναι διαθέσιμη στην εφαρμογή Seedit Android και στην επιτραπέζια εφαρμογή (Win/Mac/Linux).\n\nΜεταβείτε στη σελίδα συνδέσμων λήψης στο GitHub;", "create_community_warning": "Η δημιουργία μιας κοινότητας απαιτεί τη λειτουργία ενός πλήρους κόμβου. Η εφαρμογή Seedit για επιτραπέζιους υπολογιστές (Win/Mac/Linux) εκτελεί αυτόματα έναν πλήρη κόμβο.\n\nΜεταβείτε στη σελίδα συνδέσμων λήψης στο GitHub;", "avatars": "Εικονίδια", "filtering_by_nsfw": "Φιλτράρισμα κατά κοινοτήτων NSFW", "notifications": "Ειδοποιήσεις", "new_replies_received": "Λήφθηκαν νέες απαντήσεις", "private_key_warning_title": "Το ιδιωτικό σας κλειδί θα εμφανιστεί", "private_key_warning_description": "Ετοιμάζεστε να δείτε τα δεδομένα του λογαριασμού σας, τα οποία περιλαμβάνουν το ιδιωτικό σας κλειδί. Δεν πρέπει ποτέ να μοιράζεστε το ιδιωτικό σας κλειδί με κανέναν.", "go_back": "Επιστροφή", "loading_editor": "Φόρτωση επεξεργαστή", "show_thumbnails_next_to_links": "Εμφάνιση μικρογραφιών δίπλα σε συνδέσμους", "dont_show_thumbnails_next_to_links": "Μην εμφανίζετε μικρογραφίες δίπλα σε συνδέσμους", "show_thumbnails_based_on_community_media_preferences": "Εμφάνιση μικρογραφιών βάσει των προτιμήσεων μέσων της κοινότητας", "media_previews": "Προεπισκοπήσεις μέσων", "auto_expand_media_previews": "Αυτόματη επέκταση προεπισκοπήσεων μέσων", "dont_auto_expand_media_previews_on_comments_pages": "Μην επεκτείνετε αυτόματα τις προεπισκοπήσεις μέσων στις σελίδες σχολίων", "video_player": "Προβολέας βίντεο", "autoplay_videos_on_comments_page": "Αυτόματη αναπαραγωγή βίντεο στη σελίδα σχολίων", "mute_videos_by_default": "Σίγαση βίντεο από προεπιλογή", "expand_media_previews_based_on_community_media_preferences": "Επεκτείνετε τις προεπισκοπήσεις μέσων βάσει των προτιμήσεων μέσων της κοινότητας", "show_all_nsfw": "Εμφάνιση όλων NSFW", "hide_all_nsfw": "Απόκρυψη όλων των NSFW", "tags": "Ετικέτες", "moderator_of": "διαχειριστής του", "not_subscriber_nor_moderator": "Δεν είστε συνδρομητής ούτε διαχειριστής σε καμία κοινότητα.", "more_posts_last_year": "{{count}} αναρτήσεις στο {{currentTimeFilterName}}: <1>δείτε περισσότερες αναρτήσεις από το περασμένο έτος", "editor_fallback_warning": "Ο προηγμένος επεξεργαστής απέτυχε να φορτωθεί, χρησιμοποιείται βασικός επεξεργαστής κειμένου ως εναλλακτική λύση.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Εμφανίζετε ήδη αυτήν την κοινότητα" } ================================================ FILE: public/translations/en/default.json ================================================ { "active": "active", "best": "best", "because_open_source_rulez": "...because open source rulez.", "because_privacy_matters": "...because privacy matters.", "because_you_love_freedom": "...because you love freedom.", "cant_stop_the_signal": "...can't stop the signal.", "centralization_is_boring": "...centralization is boring.", "crypto_certified_community": "...crypto-certified community.", "cryptographic_playground": "... cryptographic playground.", "decentralized_but_for_real": "...decentralized, but for real.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "for_digital_sovereignty": "...for digital sovereignty.", "for_reddits_downfall": "...for Reddit's downfall.", "for_text_only_wonders": "...for text-only wonders.", "for_your_movement": "...for your movement.", "for_your_peace_of_mind": "...for your peace of mind.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "fully_yours_forever": "...fully yours, forever.", "hot": "hot", "join_the_decentralution": "...join the decentralution.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "new": "new", "no_corporation_to_answer_to": "...no corporation to answer to.", "no_gods_no_global_admins": "...no gods, no global admins.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "no_middleman_here": "...no middleman here.", "old": "old", "powered_by_caffeine": "...powered by caffeine.", "servers_are_overrated": "...servers are overrated.", "speech_wants_to_be_free": "...speech wants to be free.", "take_ownership_literally": "...take ownership literally.", "top": "top", "truly_peer_to_peer": "...truly peer to peer.", "unstoppable_by_design": "...unstoppable by design.", "where_you_own_the_keys": "...where you own the keys.", "your_community_your_rules": "...your community, your rules.", "your_ideas_decentralized": "...your ideas, decentralized.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "about": "about", "comments": "comments", "preferences": "preferences", "submit": "submit", "dark": "dark", "light": "light", "my_communities": "my communities", "home": "home", "all": "all", "submitted": "submitted", "post_by": "by", "post_to": "to", "post_no_comments": "comment", "post_comment": "comment", "post_comments": "comments", "share": "share", "save": "save", "hide": "hide", "report": "report", "crosspost": "crosspost", "time_1_minute_ago": "1 minute ago", "time_x_minutes_ago": "{{count}} minutes ago", "time_1_hour_ago": "1 hour ago", "time_x_hours_ago": "{{count}} hours ago", "time_1_day_ago": "1 day ago", "time_x_days_ago": "{{count}} days ago", "time_1_month_ago": "1 month ago", "time_x_months_ago": "{{count}} months ago", "time_1_year_ago": "1 year ago", "time_x_years_ago": "{{count}} years ago", "spoiler": "spoiler", "reply_reply": "reply", "reply_sorted_by": "sorted by", "all_comments": "all {{count}} comments", "no_comments": "no comments (yet)", "reply_score_singular": "1 point", "reply_score_plural": "{{score}} points", "removed": "Removed", "one_comment": "1 comment", "submit_url_description": "embed media by posting its direct link (ending in .jpg, .gif, .mp4, etc)", "title": "title", "text": "text", "required": "required", "optional": "optional", "community_address": "community address", "submit_choose": "choose where to post", "submit_notice": "please be mindful of the community's rules, seedit does not have global admins.", "challenge_from": "Challenge from p/{{subplebbit}}", "challenge_for_post": "for post: \"{{publicationContent}}\"", "challenge_for_reply": "for reply to u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} of {{total}}", "cancel": "Cancel", "previous": "prev", "next": "Next", "loading": "Loading", "pending": "Pending", "submit_subscriptions_notice": "Suggested Communities", "submit_subscriptions": "your subscribed communities", "rules_for": "rules for", "no_communities_found": "No communities found on <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "To connect to a community, use 🔎 in the top right", "options": "options", "hide_options": "hide options", "failed": "failed", "time_1_minute": "1 minute", "time_x_minutes": "{{count}} minutes", "time_1_hour": "1 hour", "time_x_hours": "{{count}} hours", "time_1_day": "1 day", "time_x_days": "{{count}} days", "time_1_month": "1 month", "time_x_months": "{{count}} months", "time_1_year": "1 year", "time_x_years": "{{count}} years", "submit_post": "Submit a new post", "create_your_community": "Create your own community", "moderators": "moderators", "about_moderation": "about moderation team", "join": "Join", "leave": "leave", "created_by": "created by {{creatorAddress}}", "community_for": "a community for {{date}}", "post_submitted_on": "this post was submitted on {{postDate}}", "users_online": "{{count}} users here now", "point": "point", "points": "points", "share_link": "share link", "upvoted": "upvoted", "announcement": "announcement", "child": "{{childrenCount}} child", "children": "{{childrenCount}} children", "moderation": "mod", "interface_language": "interface language", "theme": "theme", "account": "account", "display_name": "display name", "crypto_address": "crypto address", "check": "check", "crypto_address_verification": "if the crypto address is resolved p2p", "create": "create", "delete": "delete", "locked": "locked", "reason": "reason", "sorted_by": "sorted by", "downvoted": "downvoted", "hidden": "hidden", "saved": "saved", "overview": "overview", "user_since": "User since at least {{time}}", "post_karma": "post karma", "comment_karma": "comment karma", "full_comments": "full comments", "context": "context", "block": "block", "post": "post", "unhide": "unhide", "unblock": "unblock", "undo": "undo", "post_hidden": "post hidden", "link_copied": "link copied", "block_community": "block community", "unblock_community": "unblock community", "search_feed_post": "Search a post in this feed", "from": "from", "via": "via", "sent": "sent", "unread": "unread", "comment_replies": "comment replies", "post_replies": "post replies", "messages": "message", "inbox": "inbox", "mark_all_read": "mark all as read", "comment_reply": "comment reply", "post_reply": "post reply", "show_parent": "show parent", "no_posts": "no posts", "media_url": "media url", "post_locked_info": "This post is {{state}}. You won't be able to comment.", "members_count": "{{count}} members", "communities": "communities", "edit": "edit", "moderator": "Moderator", "description": "Description", "rules": "Rules", "save_options": "Save Options", "logo": "Logo", "address": "Address", "nothing_found": "There doesn't seem to be anything here", "stickied_comment": "Stickied Comment", "posts_last_synced": "Posts last synced {{dateAgo}}", "community_settings": "Community Settings", "moderation_tools": "Moderation Tools", "submit_to": "Submit to <1>{{link}}", "edit_subscriptions": "Edit Subscriptions", "delete_confirm": "Are you sure you want to delete {{value}}?", "saving": "Saving", "deleted": "Deleted", "online": "Online", "offline": "Offline", "subscriber": "Subscriber", "join_communities_notice": "Click the <1>{{join}} or <2>{{leave}} buttons to choose which communities appear on the home feed.", "below_subscribed": "Below are communities you have subscribed to.", "not_subscribed": "You are not subscribed to any community.", "below_moderator_access": "Below are the communities that you have moderator access to.", "not_moderator": "You are not a moderator on any community.", "create_community": "Create community", "single_comment_notice": "You are viewing a single comment's thread", "single_comment_link": "View the rest of the comments", "owner_settings_notice": "Only the owner of the community can edit its settings.", "preview": "preview", "shown_in_sidebar": "shown in the sidebar of your community", "community_logo_info": "set a community logo using its direct image link (ending in .jpg, .png)", "moderators_setting_info": "let other users moderate and post without challenges", "vote": "vote", "passing": "passing", "rejecting": "rejecting", "add_moderator": "add a moderator", "add_rule": "add a rule", "json_settings": "JSON settings", "json_settings_info": "quickly copy and paste the community settings", "address_setting_info": "Set a readable community address using a crypto domain", "enter_crypto_address": "Please enter a valid crypto address.", "check_for_updates": "<1>Check for updates", "refresh_to_update": "Refresh the page to update", "latest_development_version": "You're on the latest development version, commit {{commit}}. To use the stable version, go to {{link}}.", "latest_stable_version": "You are on the latest stable version, seedit v{{version}}.", "new_development_version": "New development version available, commit {{newCommit}}. You are using commit {{oldCommit}}.", "new_stable_version": "New stable version available, seedit v{{newVersion}}. You are using seedit v{{oldVersion}}.", "download_latest_desktop": "Download the latest desktop version here: {{link}}", "contribute_on_github": "Contribute on GitHub", "no_media_found": "No media found", "no_image_found": "No image found", "warning_spam": "Warning: no challenge selected, the community is vulnerable to spam attacks.", "hide_help": "Hide help", "formatting_help": "Formatting help", "you_see": "you see", "you_type": "You type", "italics": "italics", "bold": "bold", "quoted_text": "quoted text", "item": "item", "delete_community": "delete community", "delete_community_description": "Permanently delete this community. its content might still be seeded by peers", "add": "add", "owner": "owner", "admin": "admin", "settings_saved": "Settings saved for p/{{subplebbitAddress}}", "continue_thread": "continue this thread", "mod_edit_reason": "Mod edit reason", "double_confirm": "Are you really sure? This action is irreversible.", "crypto_address_not_yours": "Crypto address belongs to another account.", "crypto_address_yours": "Crypto address belongs to this account.", "crypto_address_not_resolved": "Crypto address is not resolved yet.", "submit_to_string": "Submit to {{string}}", "page_not_found": "Page not found", "not_found_description": "The page you requested does not exist", "last_edited": "last edited {{timestamp}}", "view_spoiler": "view spoiler", "default_communities": "default communities", "avatar": "avatar", "pending_edit": "pending edit", "failed_edit": "failed edit", "node_stats": "node stats", "version": "version", "edit_reason": "edit reason", "view_parent_comment": "view parent comment", "chain_ticker": "Chain ticker", "token_address_whitelist": "Token address (<1>whitelist only)", "token_id": "token id", "paste_signature": "paste signature", "copy_message_etherscan": "<1>{{copy}} message to sign on <2>etherscan", "copy": "copy", "copied": "copied", "missing_chain_ticker": "Missing chain ticker", "missing_token_address": "Missing token address", "missing_token_id": "Missing token ID", "missing_signature": "Missing signature", "edited_timestamp": "Edited {{timestamp}}", "ban_user_for": "Ban user for <1> day(s)", "crypto_wallets": "Crypto Wallets", "wallet_address": "Wallet address", "remove": "Remove", "add_wallet": "<1>Add a crypto wallet", "show_settings": "Show settings", "hide_settings": "Hide settings", "undelete": "Undelete", "downloading_comments": "downloading comments", "you_blocked_community": "You blocked this community", "show": "show", "plebbit_options": "plebbit options", "general": "general", "more_posts_last_week": "{{count}} posts last {{currentTimeFilterName}}: <1>show more posts from last week", "more_posts_last_month": "{{count}} posts last {{currentTimeFilterName}}: <1>show more posts from last month", "profile_info": "Your account u/{{shortAddress}} was created. <1>Set display name, <2>export backup, <3>learn more.", "show_all_instead": "Showing posts since {{timeFilterName}}, <1>show all instead", "subplebbit_offline_info": "The community might be offline and publishing might fail.", "posts_last_synced_info": "Posts last synced {{time}}, the community might be offline and publishing might fail.", "import_account_backup": "<1>import account backup", "export_account_backup": "<1>export account backup", "save_reset_changes": "<1>save or <2>reset changes", "delete_this_account": "<1>delete this account", "create_new_account": "<1>create a new account", "wallet_number": "wallet #{{index}}", "view_more": "view more", "submit_community": "Submit your community", "hide_avatars_from_replies": "Hide avatars from replies", "yes": "yes", "no": "no", "are_you_sure": "Are you sure?", "a_short_title": "A short title for your community", "challenges": "Challenges", "challenges_subtitle": "Choose one or more challenges to prevent spam", "add_a_challenge": "Add a challenge", "communities_you_moderate": "Communities you moderate", "blur_media": "Blur media marked as NSFW/18+", "nsfw_content": "NSFW content", "see_nsfw": "Click to see nsfw", "see_nsfw_spoiler": "Click to see nsfw spoiler", "always_show_nsfw": "Always show NSFW media?", "always_show_nsfw_notice": "Ok, we changed your preferences to always show NSFW media.", "content_options": "Content options", "over_18": "Over 18?", "must_be_over_18": "You must be 18+ to view this community", "must_be_over_18_explanation": "You must be at least eighteen years old to view this content. Are you over eighteen and willing to see adult content?", "no_thank_you": "No thank you", "continue": "Continue", "download_latest_android": "Download the latest android version?", "submitter": "Submitter", "block_user": "Block user", "unblock_user": "Unblock user", "filtering_by_tag": "Filtering by tag: \"{{tag}}\"", "you_are_moderator": "You are a moderator of this community.", "you_are_admin": "You are an admin of this community.", "you_are_owner": "You are the owner of this community.", "looking_for_more_posts": "Looking for more posts", "loading_feed": "Loading feed", "downloading_posts": "Downloading posts", "post_is_pending": "Post is pending", "post_has_failed": "Post has failed", "choose_file": "Choose file", "uploading": "Uploading", "invalid_url_alert": "The provided link is not a valid URL.", "empty_comment_alert": "Cannot post empty comment.", "no_subscriptions_message": "<1>{{accountName}}, this is your home on Seedit<2>When you find a community that you like, <3>join with the <4>", "find_communities": "find communities on p/all", "community_deleted": "Community deleted successfully.", "go_to_a_community": "Go to a community", "enter_community_address": "Enter a community address", "all_communities": "all communities", "search_posts": "search posts", "found_n_results_for": "found {{count}} posts for \"{{query}}\"", "clear_search": "clear search", "no_matches_found_for": "no matches found for \"{{query}}\"", "searching": "searching", "hide_default_communities_from_topbar": "Hide default communities from topbar", "media": "media", "hide_communities_tagged_as_nsfw": "Hide communities tagged as NSFW/18+", "tagged_as_adult": "tagged as \"adult\"", "tagged_as_gore": "tagged as \"gore\"", "tagged_as_anti": "tagged as \"anti\"", "tagged_as_vulgar": "tagged as \"vulgar\"", "drop_here_or": "Drop here or", "upload_button_warning": "Auto-uploading is blocked by your browser's CORS policy, but it is available on the Seedit Android app and desktop app (Win/Mac/Linux).\n\nGo to the download links page on GitHub?", "create_community_warning": "Creating a community requires running a full node. The Seedit desktop app (Win/Mac/Linux) runs a full node automatically.\n\nGo to the download links page on GitHub?", "avatars": "Avatars", "filtering_by_nsfw": "Filtering by NSFW communities", "notifications": "Notifications", "new_replies_received": "new replies received", "private_key_warning_title": "Your private key will be displayed", "private_key_warning_description": "You're about to view your account data, which includes your private key. You should never share your private key with anyone.", "go_back": "Go back", "loading_editor": "Loading editor", "editor_fallback_warning": "advanced editor failed to load, using basic text editor as fallback.", "show_thumbnails_next_to_links": "Show thumbnails next to links", "dont_show_thumbnails_next_to_links": "Don't show thumbnails next to links", "show_thumbnails_based_on_community_media_preferences": "Show thumbnails based on that community's media preferences", "media_previews": "media previews", "auto_expand_media_previews": "Auto-expand media previews", "dont_auto_expand_media_previews_on_comments_pages": "Don't auto-expand media previews on comments pages", "video_player": "Video Player", "autoplay_videos_on_comments_page": "Autoplay videos on the comments page", "mute_videos_by_default": "Mute videos by default", "expand_media_previews_based_on_community_media_preferences": "Expand media previews based on that community's media preferences", "show_all_nsfw": "show all nsfw", "hide_all_nsfw": "hide all nsfw", "tags": "Tags", "moderator_of": "moderator of", "not_subscriber_nor_moderator": "You are not a subscriber nor a moderator of any community.", "more_posts_last_year": "{{count}} posts last {{currentTimeFilterName}}: <1>show more posts from last year", "already_in_community": "You're already viewing this community" } ================================================ FILE: public/translations/es/default.json ================================================ { "about": "acerca de", "comments": "comentarios", "preferences": "preferencias", "submit": "enviar", "dark": "oscuro", "light": "claro", "my_communities": "mis comunidades", "home": "inicio", "all": "todos", "submitted": "enviado", "post_by": "por", "post_to": "a", "post_no_comments": "comentar", "post_comment": "comentario", "post_comments": "comentarios", "share": "compartir", "save": "guardar", "hide": "ocultar", "report": "reportar", "crosspost": "crosspost", "time_1_minute_ago": "hace 1 minuto", "time_x_minutes_ago": "hace {{count}} minutos", "time_1_hour_ago": "hace 1 hora", "time_x_hours_ago": "hace {{count}} horas", "time_1_day_ago": "hace 1 día", "time_x_days_ago": "hace {{count}} días", "time_1_month_ago": "hace 1 mes", "time_x_months_ago": "hace {{count}} meses", "time_1_year_ago": "hace 1 año", "time_x_years_ago": "hace {{count}} años", "spoiler": "spoiler", "reply_reply": "responder", "reply_sorted_by": "ordenado por", "all_comments": "todos los {{count}} comentarios", "no_comments": "sin comentarios (aún)", "reply_score_singular": "1 punto", "reply_score_plural": "{{score}} puntos", "removed": "Eliminado", "one_comment": "1 comentario", "submit_url_description": "inserta medios publicando su enlace directo (terminando en .jpg, .gif, .mp4, etc.)", "title": "título", "text": "texto", "required": "requerido", "optional": "opcional", "community_address": "dirección de la comunidad", "submit_choose": "elige dónde publicar", "submit_notice": "por favor tenga en cuenta las reglas de la comunidad, seedit no tiene administradores globales.", "challenge_from": "Reto de p/{{subplebbit}}", "challenge_for_post": "para la publicación: \"{{publicationContent}}\"", "challenge_for_reply": "para la respuesta a u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} de {{total}}", "cancel": "Cancelar", "previous": "Anterior", "next": "Siguiente", "loading": "Cargando", "pending": "Pendiente", "submit_subscriptions_notice": "Comunidades sugeridas", "submit_subscriptions": "tus comunidades suscritas", "rules_for": "reglas para", "no_communities_found": "No se encontraron comunidades en <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "Para conectarte a una comunidad, usa 🔎 en la parte superior derecha", "options": "opciones", "hide_options": "ocultar opciones", "failed": "falló", "time_1_minute": "1 minuto", "time_x_minutes": "{{count}} minutos", "time_1_hour": "1 hora", "time_x_hours": "{{count}} horas", "time_1_day": "1 día", "time_x_days": "{{count}} días", "time_1_month": "1 mes", "time_x_months": "{{count}} meses", "time_1_year": "1 año", "time_x_years": "{{count}} años", "submit_post": "Enviar una nueva publicación", "create_your_community": "Crea tu propia comunidad", "moderators": "moderadores", "about_moderation": "sobre el equipo de moderación", "join": "Unirse", "leave": "salir", "created_by": "creado por {{creatorAddress}}", "community_for": "una comunidad por {{date}}", "post_submitted_on": "esta publicación se presentó el {{postDate}}", "users_online": "{{count}} usuarios aquí ahora", "point": "punto", "points": "puntos", "share_link": "compartir enlace", "upvoted": "ha dado un voto positivo", "announcement": "anuncio", "child": "{{childrenCount}} niño/niña", "children": "{{childrenCount}} niños/niñas", "moderation": "moderación", "interface_language": "idioma de interfaz", "theme": "tema", "account": "cuenta", "display_name": "nombre visible", "crypto_address": "dirección de cripto", "check": "verificar", "crypto_address_verification": "si la dirección de cripto se resuelve p2p", "create": "crear", "delete": "eliminar", "locked": "bloqueado", "reason": "motivo", "sorted_by": "ordenado por", "downvoted": "voto negativo", "hidden": "oculto", "saved": "guardado", "overview": "vista general", "user_since": "Usuario desde al menos {{time}}", "post_karma": "karma de publicaciones", "comment_karma": "karma de comentarios", "full_comments": "todos los comentarios", "context": "contexto", "block": "bloquear", "post": "publicación", "unhide": "mostrar", "unblock": "desbloquear", "undo": "deshacer", "post_hidden": "publicación oculta", "link_copied": "enlace copiado", "block_community": "bloquear comunidad", "unblock_community": "desbloquear comunidad", "search_feed_post": "Buscar una publicación en este feed", "from": "de", "via": "a través de", "sent": "enviado", "unread": "no leído", "comment_replies": "respuestas a comentarios", "post_replies": "respuestas a publicaciones", "messages": "mensajes", "inbox": "bandeja de entrada", "mark_all_read": "marcar todos como leídos", "comment_reply": "responder al comentario", "post_reply": "responder al post", "show_parent": "mostrar el post al que se hace referencia", "no_posts": "sin publicaciones", "media_url": "URL de medios", "post_locked_info": "Esta publicación está {{state}}. No podrás comentar.", "members_count": "{{count}} miembros", "communities": "comunidades", "edit": "editar", "moderator": "Moderador", "description": "Descripción", "rules": "Reglas", "save_options": "Guardar opciones", "logo": "Logotipo", "address": "Dirección", "nothing_found": "No parece haber nada aquí", "stickied_comment": "Comentario fijado", "posts_last_synced": "Últimas publicaciones sincronizadas {{dateAgo}}", "community_settings": "Configuración de la comunidad", "moderation_tools": "Herramientas de moderación", "submit_to": "Enviar a <1>{{link}}", "edit_subscriptions": "Editar suscripciones", "delete_confirm": "¿Estás seguro de que quieres eliminar {{value}}?", "saving": "Guardando", "deleted": "Eliminado", "online": "En línea", "offline": "Sin conexión", "subscriber": "Suscriptor", "join_communities_notice": "Haz clic en los botones <1>{{join}} o <2>{{leave}} para elegir qué comunidades aparecen en la página de inicio.", "below_subscribed": "A continuación se muestran las comunidades a las que te has suscrito.", "not_subscribed": "Todavía no estás suscrito a ninguna comunidad.", "below_moderator_access": "A continuación se muestran las comunidades a las que tienes acceso como moderador.", "not_moderator": "No eres moderador en ninguna comunidad.", "create_community": "Crear comunidad", "single_comment_notice": "Estás viendo un hilo de un solo comentario", "single_comment_link": "Ver el resto de los comentarios", "owner_settings_notice": "Solo el propietario de la comunidad puede editar sus configuraciones.", "preview": "vista previa", "shown_in_sidebar": "mostrado en la barra lateral de tu comunidad", "community_logo_info": "establecer un logotipo de comunidad utilizando su enlace de imagen directa (terminando en .jpg, .png)", "moderators_setting_info": "permita que otros usuarios moderen y publiquen sin desafíos", "vote": "votar", "passing": "aprobado", "rejecting": "rechazo", "add_moderator": "agregar un moderador", "add_rule": "agregar una regla", "json_settings": "Configuración JSON", "json_settings_info": "copiar o pegar rápidamente la configuración de la comunidad", "address_setting_info": "Establezca una dirección comunitaria legible utilizando un dominio cripto", "enter_crypto_address": "Por favor, introduzca una dirección de cripto válida.", "check_for_updates": "<1>Verifique las actualizaciones", "refresh_to_update": "Actualiza la página para actualizar", "latest_development_version": "Estás en la última versión de desarrollo, commit {{commit}}. Para usar la versión estable, ve a {{link}}.", "latest_stable_version": "Estás en la última versión estable, seedit v{{version}}.", "new_development_version": "Nueva versión de desarrollo disponible, commit {{newCommit}}. Estás usando commit {{oldCommit}}.", "new_stable_version": "Nueva versión estable disponible, seedit v{{newVersion}}. Estás usando seedit v{{oldVersion}}.", "download_latest_desktop": "Descarga la última versión de escritorio aquí: {{link}}", "contribute_on_github": "Contribuir en GitHub", "no_media_found": "No se encontraron medios", "no_image_found": "No se encontró imagen", "warning_spam": "Advertencia: no se ha seleccionado ningún desafío, la comunidad es vulnerable a los ataques de spam.", "hide_help": "Ocultar ayuda", "formatting_help": "Ayuda de formato", "you_see": "ves", "you_type": "Tú escribes", "italics": "cursiva", "bold": "negrita", "quoted_text": "texto citado", "item": "elemento", "delete_community": "eliminar comunidad", "delete_community_description": "Eliminar permanentemente esta comunidad. Su contenido aún podría ser sembrado por pares", "add": "añadir", "owner": "propietario", "admin": "administrador", "settings_saved": "Ajustes guardados para p/{{subplebbitAddress}}", "continue_thread": "continuar este hilo", "mod_edit_reason": "Razón de edición del moderador", "double_confirm": "¿Estás realmente seguro? Esta acción es irreversible.", "crypto_address_not_yours": "La dirección de criptomoneda pertenece a otra cuenta.", "crypto_address_yours": "La dirección de criptomoneda pertenece a esta cuenta.", "crypto_address_not_resolved": "La dirección de criptomoneda aún no está resuelta.", "submit_to_string": "Enviar a {{string}}", "page_not_found": "Página no encontrada", "not_found_description": "La página que solicitaste no existe", "last_edited": "última edición {{timestamp}}", "view_spoiler": "ver spoiler", "default_communities": "comunidades predeterminadas", "avatar": "avatar", "pending_edit": "edición pendiente", "failed_edit": "edición fallida", "node_stats": "estadísticas del nodo", "version": "versión", "edit_reason": "motivo de la edición", "view_parent_comment": "ver comentario padre", "chain_ticker": "Ticker de blockchain", "token_address_whitelist": "Dirección del token (<1>solo lista blanca)", "token_id": "ID de token", "paste_signature": "pegar firma", "copy_message_etherscan": "<1>{{copy}} mensaje para firmar en <2>etherscan", "copy": "copiar", "copied": "copiado", "missing_chain_ticker": "Falta de ticker de blockchain", "missing_token_address": "Falta de dirección de token", "missing_token_id": "Falta de ID de token", "missing_signature": "Falta de firma", "edited_timestamp": "Editado {{timestamp}}", "ban_user_for": "Prohibir al usuario durante <1> día(s)", "crypto_wallets": "Billeteras cripto", "wallet_address": "Dirección de la billetera", "remove": "Eliminar", "add_wallet": "<1>Agregar una billetera cripto", "show_settings": "Mostrar ajustes", "hide_settings": "Ocultar ajustes", "undelete": "Recuperar", "downloading_comments": "descargando comentarios", "you_blocked_community": "Has bloqueado esta comunidad", "show": "mostrar", "plebbit_options": "opciones plebbit", "general": "general", "more_posts_last_week": "{{count}} publicaciones la última {{currentTimeFilterName}}: <1>ver más publicaciones de la semana pasada", "more_posts_last_month": "{{count}} publicaciones en {{currentTimeFilterName}}: <1>mostrar más publicaciones del mes pasado", "profile_info": "Tu cuenta u/{{shortAddress}} fue creada. <1>Establecer nombre para mostrar, <2>exportar copia de seguridad, <3>más información.", "show_all_instead": "Mostrando publicaciones desde {{timeFilterName}}, <1>mostrar todo en su lugar", "subplebbit_offline_info": "La comunidad podría estar fuera de línea y la publicación podría fallar.", "posts_last_synced_info": "Últimas publicaciones sincronizadas {{time}}, la comunidad podría estar desconectada y la publicación podría fallar.", "import_account_backup": "<1>importar copia de seguridad de la cuenta", "export_account_backup": "<1>exportar copia de seguridad de la cuenta", "save_reset_changes": "<1>guardar o <2>restablecer cambios", "delete_this_account": "<1>eliminar esta cuenta", "create_new_account": "<1>crear una nueva cuenta", "wallet_number": "billetera #{{index}}", "view_more": "ver más", "submit_community": "Envía tu comunidad", "hide_avatars_from_replies": "Ocultar avatares de las respuestas", "yes": "sí", "no": "no", "are_you_sure": "¿Estás seguro?", "a_short_title": "Un título corto para tu comunidad", "challenges": "Desafíos", "challenges_subtitle": "Elige uno o más desafíos para prevenir el spam", "add_a_challenge": "Añadir un desafío", "communities_you_moderate": "Comunidades que moderas", "blur_media": "Difuminar los medios marcados como NSFW/18+", "nsfw_content": "Contenido NSFW", "see_nsfw": "Haz clic para ver NSFW", "see_nsfw_spoiler": "Haz clic para ver el spoiler NSFW", "always_show_nsfw": "¿Siempre mostrar medios NSFW?", "always_show_nsfw_notice": "Ok, cambiamos tus preferencias para mostrar siempre medios NSFW.", "content_options": "Opciones de contenido", "over_18": "¿Más de 18?", "must_be_over_18": "Debes tener más de 18 años para ver esta comunidad", "must_be_over_18_explanation": "Debe tener al menos dieciocho años para ver este contenido. ¿Tienes más de dieciocho años y estás dispuesto a ver contenido para adultos?", "no_thank_you": "No gracias", "continue": "Continuar", "download_latest_android": "¿Descargar la última versión de Android?", "submitter": "Remitente", "block_user": "Bloquear usuario", "unblock_user": "Desbloquear usuario", "filtering_by_tag": "Filtrando por etiqueta: \"{{tag}}\"", "you_are_moderator": "Eres moderador de esta comunidad", "you_are_admin": "Eres un administrador de esta comunidad", "you_are_owner": "Eres el dueño de esta comunidad", "looking_for_more_posts": "Buscando más publicaciones", "loading_feed": "Cargando feed", "downloading_posts": "Descargando publicaciones", "post_is_pending": "La publicación está pendiente", "post_has_failed": "La publicación ha fallado", "choose_file": "Elegir archivo", "uploading": "Subiendo", "invalid_url_alert": "El enlace proporcionado no es una URL válida.", "empty_comment_alert": "No se puede publicar un comentario vacío.", "no_subscriptions_message": "<1>{{accountName}}, esta es tu página de inicio en Seedit<2>Cuando encuentres una comunidad que te guste, <3>únete con el <4>", "find_communities": "encontrar comunidades en p/all", "community_deleted": "Comunidad eliminada con éxito.", "go_to_a_community": "Ir a una comunidad", "enter_community_address": "Introduce una dirección de comunidad", "all_communities": "todas las comunidades", "search_posts": "buscar publicaciones", "found_n_results_for": "se encontraron {{count}} publicaciones para \"{{query}}\"", "clear_search": "borrar búsqueda", "no_matches_found_for": "no se encontraron coincidencias para \"{{query}}\"", "searching": "buscando", "hide_default_communities_from_topbar": "Ocultar comunidades predeterminadas de la barra superior", "media": "medios", "hide_communities_tagged_as_nsfw": "Ocultar comunidades etiquetadas como NSFW/18+", "tagged_as_adult": "etiquetado como \"adulto\"", "tagged_as_gore": "etiquetado como \"gore\"", "tagged_as_anti": "etiquetado como \"anti\"", "tagged_as_vulgar": "etiquetado como \"vulgar\"", "drop_here_or": "Suelta aquí o", "upload_button_warning": "La carga automática está bloqueada por la política CORS de su navegador, pero está disponible en la aplicación Seedit para Android y en la aplicación de escritorio (Win/Mac/Linux).\n\n¿Vaya a la página de enlaces de descarga en GitHub?", "create_community_warning": "Crear una comunidad requiere ejecutar un nodo completo. La aplicación de escritorio Seedit (Win/Mac/Linux) ejecuta automáticamente un nodo completo.\n\n¿Vaya a la página de enlaces de descarga en GitHub?", "avatars": "Avatares", "filtering_by_nsfw": "Filtrando por comunidades NSFW", "notifications": "Notificaciones", "new_replies_received": "nuevas respuestas recibidas", "private_key_warning_title": "Su clave privada será mostrada", "private_key_warning_description": "Estás a punto de ver los datos de tu cuenta, que incluyen tu clave privada. Nunca debes compartir tu clave privada con nadie.", "go_back": "Volver", "loading_editor": "Cargando editor", "show_thumbnails_next_to_links": "Mostrar miniaturas junto a los enlaces", "dont_show_thumbnails_next_to_links": "No mostrar miniaturas junto a los enlaces", "show_thumbnails_based_on_community_media_preferences": "Mostrar miniaturas basadas en las preferencias de medios de esa comunidad", "media_previews": "previsualizaciones de medios", "auto_expand_media_previews": "Expansión automática de vistas previas de medios", "dont_auto_expand_media_previews_on_comments_pages": "No expandir automáticamente las vistas previas de medios en las páginas de comentarios", "video_player": "Reproductor de video", "autoplay_videos_on_comments_page": "Reproducción automática de videos en la página de comentarios", "mute_videos_by_default": "Silenciar videos por defecto", "expand_media_previews_based_on_community_media_preferences": "Expande las vistas previas de medios según las preferencias de medios de esa comunidad", "show_all_nsfw": "mostrar todo NSFW", "hide_all_nsfw": "ocultar todo NSFW", "tags": "Etiquetas", "moderator_of": "moderador de", "not_subscriber_nor_moderator": "No eres suscriptor ni moderador de ninguna comunidad.", "more_posts_last_year": "{{count}} publicaciones en {{currentTimeFilterName}}: <1>mostrar más publicaciones del año pasado", "editor_fallback_warning": "No se pudo cargar el editor avanzado, se está usando el editor de texto básico como alternativa.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Ya estás viendo esta comunidad" } ================================================ FILE: public/translations/fa/default.json ================================================ { "about": "درباره", "comments": "نظرات", "preferences": "تنظیمات", "submit": "ارسال", "dark": "تاریک", "light": "روشن", "my_communities": "جوامع من", "home": "خانه", "all": "همه", "submitted": "ارسال شده", "post_by": "توسط", "post_to": "به", "post_no_comments": "نظر", "post_comment": "نظر", "post_comments": "نظرات", "share": "اشتراک گذاری", "save": "ذخیره", "hide": "پنهان کردن", "report": "گزارش", "crosspost": "پست مشترک", "time_1_minute_ago": "1 دقیقه پیش", "time_x_minutes_ago": "{{count}} دقیقه پیش", "time_1_hour_ago": "1 ساعت پیش", "time_x_hours_ago": "{{count}} ساعت پیش", "time_1_day_ago": "1 روز پیش", "time_x_days_ago": "{{count}} روز پیش", "time_1_month_ago": "1 ماه پیش", "time_x_months_ago": "{{count}} ماه پیش", "time_1_year_ago": "1 سال پیش", "time_x_years_ago": "{{count}} سال پیش", "spoiler": "اسپویلر", "reply_reply": "پاسخ", "reply_sorted_by": "مرتب‌شده بر اساس", "all_comments": "همه {{count}} نظرات", "no_comments": "بدون نظر (هنوز)", "reply_score_singular": "1 امتیاز", "reply_score_plural": "{{score}} امتیاز", "removed": "حذف شد", "one_comment": "1 نظر", "submit_url_description": "رسانه را با ارسال پیوند مستقیم آن جاسازی کنید (پایان یافته در .jpg، .gif، .mp4، و غیره)", "title": "عنوان", "text": "متن", "required": "الزامی", "optional": "اختیاری", "community_address": "آدرس جامعه", "submit_choose": "انتخاب محل ارسال", "submit_notice": "لطفاً از قوانین جامعه رعایت کنید ، seedit مدیران جهانی ندارد.", "challenge_from": "چالش از p/{{subplebbit}}", "challenge_for_post": "برای پست: \"{{publicationContent}}\"", "challenge_for_reply": "برای پاسخ به u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} از {{total}}", "cancel": "لغو", "previous": "قبلی", "next": "بعدی", "loading": "بارگذاری", "pending": "در انتظار تایید", "submit_subscriptions_notice": "جوامع پیشنهادی", "submit_subscriptions": "جوامع مشترک شده شما", "rules_for": "قوانین برای", "no_communities_found": "هیچ انجمنی در <1>https://github.com/bitsocialhq/lists یافت نشد", "connect_community_notice": "برای اتصال به یک انجمن، از 🔎 در بالا سمت راست استفاده کنید", "options": "گزینه‌ها", "hide_options": "مخفی کردن گزینه‌ها", "failed": "ناموفق", "time_1_minute": "1 دقیقه", "time_x_minutes": "{{count}} دقیقه", "time_1_hour": "1 ساعت", "time_x_hours": "{{count}} ساعت", "time_1_day": "1 روز", "time_x_days": "{{count}} روز", "time_1_month": "1 ماه", "time_x_months": "{{count}} ماه", "time_1_year": "1 سال", "time_x_years": "{{count}} سال", "submit_post": "ثبت یک پست جدید", "create_your_community": "ایجاد جامعه خودتان", "moderators": "مدیران", "about_moderation": "درباره تیم نظارت", "join": "پیوستن", "leave": "ترک", "created_by": "ساخته شده توسط {{creatorAddress}}", "community_for": "یک جامعه برای {{date}}", "post_submitted_on": "این پست در {{postDate}} ارسال شده است", "users_online": "کاربران {{count}} در حال حاضر اینجا هستند", "point": "نقطه", "points": "امتیازها", "share_link": "پیوند به اشتراک گذاری", "upvoted": "رای مثبت داده شده", "announcement": "اعلان", "child": "{{childrenCount}} کودک", "children": "{{childrenCount}} کودکان", "moderation": "مدیریت", "interface_language": "زبان رابط", "theme": "تم", "account": "حساب", "display_name": "نام نمایشی", "crypto_address": "آدرس رمزارز", "check": "بررسی کنید", "crypto_address_verification": "اگر آدرس رمزارز به صورت p2p حل شود", "create": "ایجاد کنید", "delete": "حذف کنید", "locked": "قفل شده", "reason": "دلیل", "sorted_by": "مرتب شده بر اساس", "downvoted": "رای منفی داده شده", "hidden": "مخفی", "saved": "ذخیره شده", "overview": "بررسی کلی", "user_since": "کاربر از حداقل {{time}}", "post_karma": "کارما پست", "comment_karma": "کارما نظرات", "full_comments": "تمام نظرات", "context": "زمینه", "block": "مسدود کنید", "post": "پست", "unhide": "نمایش دادن", "unblock": "لغو مسدودیت", "undo": "لغو", "post_hidden": "پست مخفی", "link_copied": "لینک کپی شد", "block_community": "بلاک جامعه", "unblock_community": "لغو مسدود کردن جامعه", "search_feed_post": "در این خوراک یک پست جستجو کنید", "from": "از", "via": "توسط", "sent": "ارسال شده", "unread": "خوانده نشده", "comment_replies": "پاسخ‌های نظرات", "post_replies": "پاسخ‌های ارسالی", "messages": "پیام‌ها", "inbox": "صندوق دریافت", "mark_all_read": "نشان دادن همه به عنوان خوانده شده", "comment_reply": "پاسخ به نظر", "post_reply": "پاسخ به پست", "show_parent": "نمایش پست مرجع داده شده", "no_posts": "بدون پست", "media_url": "آدرس رسانه", "post_locked_info": "این پست {{state}} است. شما نمی‌توانید نظر دهید.", "members_count": "{{count}} عضو", "communities": "انجمن", "edit": "ویرایش", "moderator": "مدیر", "description": "توضیحات", "rules": "قوانین", "save_options": "ذخیره گزینه‌ها", "logo": "آرم", "address": "آدرس", "nothing_found": "به نظر نمی رسد که چیزی وجود داشته باشد", "stickied_comment": "نظر ثابت", "posts_last_synced": "آخرین باری که پست‌ها همگام‌سازی شدند {{dateAgo}}", "community_settings": "تنظیمات اجتماعی", "moderation_tools": "ابزارهای نظارت", "submit_to": "ارسال به <1>{{link}}", "edit_subscriptions": "ویرایش اشتراک‌ها", "delete_confirm": "آیا مطمئن هستید که می‌خواهید {{value}} را حذف کنید؟", "saving": "ذخیره", "deleted": "حذف شده", "online": "آنلاین", "offline": "آفلاین", "subscriber": "مشترک", "join_communities_notice": "برای انتخاب کمیته‌هایی که در صفحه خانه نمایش داده می‌شوند، روی دکمه‌های <1>{{join}} یا <2>{{leave}} کلیک کنید.", "below_subscribed": "در زیر، جوامعی که در آن‌ها مشترک شده‌اید نمایش داده شده است.", "not_subscribed": "تاکنون در هیچ جامعه‌ای مشترک نشده‌اید.", "below_moderator_access": "در زیر جوامعی که به عنوان مدیر دسترسی دارید، نمایش داده می‌شوند.", "not_moderator": "شما مدیر در هیچ جامعه نیستید.", "create_community": "ایجاد اجتماع", "single_comment_notice": "شما در حال مشاهده تاییده یک نظر هستید", "single_comment_link": "مشاهده بقیه نظرات", "owner_settings_notice": "فقط صاحب جامعه می‌تواند تنظیمات آن را ویرایش کند.", "preview": "پیش‌نمایش", "shown_in_sidebar": "در نوار کناری اجتماع شما نشان داده می‌شود", "community_logo_info": "یک لوگوی اجتماعی با استفاده از پیوند تصویر مستقیم آن (پایان یافته به .jpg یا .png) تنظیم کنید", "moderators_setting_info": "به کاربران دیگر اجازه دهید که بدون چالش ها مدیریت و ارسال کنند", "vote": "رأی دادن", "passing": "گذراندن", "rejecting": "رد کردن", "add_moderator": "افزودن یک ناظر", "add_rule": "افزودن یک قانون", "json_settings": "تنظیمات JSON", "json_settings_info": "سریعاً تنظیمات اجتماعی را کپی یا پیست کنید", "address_setting_info": "تنظیم یک آدرس مشترک قابل خواندن با استفاده از یک دامنه رمزنگاری", "enter_crypto_address": "لطفاً یک آدرس کریپتو صحیح وارد کنید.", "check_for_updates": "<1>بررسی برای به‌روزرسانی‌ها", "refresh_to_update": "برای به‌روزرسانی صفحه را رفرش کنید", "latest_development_version": "شما در نسخه توسعه‌ی جدیدتر هستید، کامیت {{commit}}. برای استفاده از نسخه پایدار، به {{link}} بروید.", "latest_stable_version": "شما در آخرین نسخه پایدار، seedit v{{version}} هستید.", "new_development_version": "نسخه توسعه جدید موجود است، کامیت {{newCommit}}. شما کامیت {{oldCommit}} را استفاده می‌کنید.", "new_stable_version": "نسخه پایدار جدید موجود است، seedit v{{newVersion}}. شما seedit v{{oldVersion}} را استفاده می‌کنید.", "download_latest_desktop": "نسخه‌ی جدید سطح میز کامپیوتر را از اینجا دانلود کنید: {{link}}", "contribute_on_github": "مشارکت در GitHub", "no_media_found": "هیچ رسانه‌ای پیدا نشد", "no_image_found": "هیچ تصویری پیدا نشد", "warning_spam": "هشدار: چالشی انتخاب نشده است، جامعه در معرض حملات اسپم قرار دارد.", "hide_help": "پنهان کردن راهنما", "formatting_help": "راهنمای قالب بندی", "you_see": "می‌بینید", "you_type": "شما تایپ می‌کنید", "italics": "ایتالیک", "bold": "ضخیم", "quoted_text": "متن نقل شده", "item": "مورد", "delete_community": "حذف جامعه", "delete_community_description": "این جامعه را بطور دائمی حذف کنید. ممکن است محتوای آن هنوز توسط همتایان تکثیر شود", "add": "افزودن", "owner": "صاحب", "admin": "مدیر", "settings_saved": "تنظیمات برای p/{{subplebbitAddress}} ذخیره شد", "continue_thread": "ادامه این موضوع", "mod_edit_reason": "دلیل ویرایش مدیر", "double_confirm": "آیا مطمئن هستید؟ این عمل غیرقابل برگشت است.", "crypto_address_not_yours": "آدرس رمزارز به حساب دیگری تعلق دارد.", "crypto_address_yours": "آدرس رمزارز به این حساب تعلق دارد.", "crypto_address_not_resolved": "آدرس رمزارز هنوز حل نشده است.", "submit_to_string": "ارسال به {{string}}", "page_not_found": "صفحه یافت نشد", "not_found_description": "صفحه‌ای که درخواست کرده‌اید وجود ندارد", "last_edited": "آخرین ویرایش {{timestamp}}", "view_spoiler": "نمایش اسپویلر", "default_communities": "جوامع پیش‌فرض", "avatar": "آواتار", "pending_edit": "ویرایش در انتظار", "failed_edit": "ویرایش ناموفق", "node_stats": "آمار گره", "version": "نسخه", "edit_reason": "دلیل ویرایش", "view_parent_comment": "نمایش نظر والد", "chain_ticker": "نماد زنجیره", "token_address_whitelist": "آدرس توکن (<1>فقط سفیدپوشان)", "token_id": "شناسه توکن", "paste_signature": "چسباندن امضا", "copy_message_etherscan": "<1>{{copy}} پیامی برای امضا در <2>etherscan", "copy": "کپی", "copied": "کپی شد", "missing_chain_ticker": "تیکر زنجیره ای گم شده", "missing_token_address": "آدرس توکن گم شده", "missing_token_id": "شناسه توکن گم شده", "missing_signature": "امضای گم شده", "edited_timestamp": "ویرایش شده {{timestamp}}", "ban_user_for": "بستن کاربر برای <1> روز", "crypto_wallets": "کیف پول رمز ارز", "wallet_address": "آدرس کیف پول", "remove": "حذف", "add_wallet": "<1>افزودن یک کیف پول رمز ارز", "show_settings": "نمایش تنظیمات", "hide_settings": "مخفی کردن تنظیمات", "undelete": "بازیابی", "downloading_comments": "در حال بارگیری نظرات", "you_blocked_community": "شما این انجمن را مسدود کرده‌اید", "show": "نمایش", "plebbit_options": "گزینه های plebbit", "general": "عمومی", "more_posts_last_week": "{{count}} پست‌ها هفته گذشته {{currentTimeFilterName}}: <1>نمایش پست‌های بیشتر از هفته گذشته", "more_posts_last_month": "{{count}} پست در {{currentTimeFilterName}}: <1>نمایش پست‌های بیشتر از ماه گذشته", "profile_info": "حساب کاربری شما u/{{shortAddress}} ایجاد شد. <1>تنظیم نام نمایشی, <2>پشتیبان گیری صادر کنید, <3>بیشتر بدانید.", "show_all_instead": "نمایش پست‌ها از {{timeFilterName}}، <1>به‌جای آن همه را نشان بده", "subplebbit_offline_info": "جامعه ممکن است آفلاین باشد و انتشار ممکن است ناموفق شود.", "posts_last_synced_info": "پست ها آخرین بار در {{time}} همگام سازی شدند، جامعه ممکن است آفلاین باشد و انتشار ممکن است ناموفق باشد.", "import_account_backup": "<1>وارد کردن پشتیبان حساب", "export_account_backup": "<1>خروجی پشتیبان حساب", "save_reset_changes": "<1>ذخیره یا <2>بازنشانی تغییرات", "delete_this_account": "<1>حذف این حساب", "create_new_account": "<1>ایجاد یک حساب جدید", "wallet_number": "کیف پول #{{index}}", "view_more": "مشاهده بیشتر", "submit_community": "جامعه خود را ارسال کنید", "hide_avatars_from_replies": "تصاویر پروفایل را از پاسخ‌ها پنهان کن", "yes": "بله", "no": "نه", "are_you_sure": "آیا مطمئن هستید؟", "a_short_title": "یک عنوان کوتاه برای جامعه شما", "challenges": "چالش‌ها", "challenges_subtitle": "یک یا چند چالش برای جلوگیری از هرزنامه انتخاب کنید", "add_a_challenge": "یک چالش اضافه کنید", "communities_you_moderate": "انجمن‌هایی که شما مدیریت می‌کنید", "blur_media": "پوشاندن رسانه‌های علامت‌گذاری شده به عنوان NSFW/18+", "nsfw_content": "محتوای NSFW", "see_nsfw": "برای مشاهده NSFW کلیک کنید", "see_nsfw_spoiler": "برای مشاهده NSFW اسپویلر کلیک کنید", "always_show_nsfw": "آیا می‌خواهید همیشه رسانه‌های NSFW را نمایش دهید؟", "always_show_nsfw_notice": "باشه، ما تنظیمات شما را برای نمایش دائمی رسانه‌های NSFW تغییر دادیم.", "content_options": "گزینه‌های محتوا", "over_18": "بالای 18؟", "must_be_over_18": "برای مشاهده این جامعه باید بالای ۱۸ سال باشید", "must_be_over_18_explanation": "برای مشاهده این محتوا باید حداقل هجده سال داشته باشید. آیا شما بالای هجده سال دارید و آماده مشاهده محتوای بزرگسالان هستید؟", "no_thank_you": "نه، ممنون", "continue": "ادامه بده", "download_latest_android": "دانلود آخرین نسخه اندروید؟", "submitter": "ارسال‌کننده", "block_user": "مسدود کردن کاربر", "unblock_user": "باز کردن قفل کاربر", "filtering_by_tag": "فیلتر کردن بر اساس برچسب: \"{{tag}}\"", "you_are_moderator": "شما مدیر این جامعه هستید", "you_are_admin": "شما مدیر این جامعه هستید", "you_are_owner": "شما مالک این جامعه هستید", "looking_for_more_posts": "در جستجوی پست‌های بیشتر", "loading_feed": "در حال بارگذاری فید", "downloading_posts": "در حال دانلود پست‌ها", "post_is_pending": "پست در انتظار است", "post_has_failed": "ارسال پست با شکست مواجه شد", "choose_file": "فایل را انتخاب کنید", "uploading": "در حال بارگذاری", "invalid_url_alert": "لینک ارائه شده یک URL معتبر نیست.", "empty_comment_alert": "نمی‌توان نظر خالی ارسال کرد.", "no_subscriptions_message": "<1>{{accountName}}, این خانه شما در Seedit است<2>وقتی جامعه‌ای که دوست دارید پیدا کردید، <3>با <4> به آن بپیوندید", "find_communities": "یافتن جوامع در p/all", "community_deleted": "جامعه با موفقیت حذف شد.", "go_to_a_community": "برو به یک جامعه", "enter_community_address": "آدرس جامعه را وارد کنید", "all_communities": "تمام جوامع", "search_posts": "جستجو در پست‌ها", "found_n_results_for": "پست‌های {{count}} برای \"{{query}}\" پیدا شد", "clear_search": "پاک کردن جستجو", "no_matches_found_for": "هیچ تطبیقی برای \"{{query}}\" پیدا نشد", "searching": "در حال جستجو", "hide_default_communities_from_topbar": "پنهان کردن جوامع پیش‌فرض از نوار بالای صفحه", "media": "رسانه‌ها", "hide_communities_tagged_as_nsfw": "پنهان کردن جوامع برچسب خورده به عنوان NSFW/18+", "tagged_as_adult": "برچسب زده شده به عنوان \"بالغ\"", "tagged_as_gore": "برچسب‌گذاری شده به عنوان \"گور\"", "tagged_as_anti": "برچسب خورده به عنوان \"مخالف\"", "tagged_as_vulgar": "برچسب‌گذاری شده به عنوان \"زشت\"", "drop_here_or": "اینجا رها کنید یا", "upload_button_warning": "بارگذاری خودکار توسط سیاست CORS مرورگر شما مسدود شده است، اما در اپلیکیشن Seedit برای Android و اپلیکیشن دسکتاپ (Win/Mac/Linux) در دسترس است.\n\nبه صفحه لینک‌های دانلود در GitHub بروید؟", "create_community_warning": "ایجاد یک جامعه نیاز به اجرای یک گره کامل دارد. اپلیکیشن دسکتاپ Seedit (Win/Mac/Linux) به‌طور خودکار یک گره کامل اجرا می‌کند.\n\nبه صفحه لینک‌های دانلود در GitHub بروید؟", "avatars": "آواتار", "filtering_by_nsfw": "فیلتر کردن توسط جوامع NSFW", "notifications": "اطلاعیه‌ها", "new_replies_received": "پاسخ‌های جدید دریافت شد", "private_key_warning_title": "کلید خصوصی شما نمایش داده خواهد شد", "private_key_warning_description": "شما در آستانه مشاهده داده‌های حساب خود هستید که شامل کلید خصوصی شما می‌شود. هرگز نباید کلید خصوصی خود را با کسی به اشتراک بگذارید.", "go_back": "برگشت", "loading_editor": "در حال بارگذاری ویرایشگر", "show_thumbnails_next_to_links": "نمایش تصاویر کوچک کنار لینک‌ها", "dont_show_thumbnails_next_to_links": "نمایش تصاویر کوچک کنار لینک‌ها را غیرفعال کن", "show_thumbnails_based_on_community_media_preferences": "نمایش تصاویر کوچک بر اساس تنظیمات رسانه‌ای آن جامعه", "media_previews": "پیش‌نمایش رسانه", "auto_expand_media_previews": "گسترش خودکار پیش‌نمایش رسانه‌ها", "dont_auto_expand_media_previews_on_comments_pages": "نمایش پیش‌نمایش رسانه را در صفحات نظرات به‌طور خودکار باز نکنید", "video_player": "پخش‌کننده ویدیو", "autoplay_videos_on_comments_page": "پخش خودکار ویدیوها در صفحه نظرات", "mute_videos_by_default": "بی‌صدا کردن ویدیوها به طور پیش‌فرض", "expand_media_previews_based_on_community_media_preferences": "پیش‌نمایش‌های رسانه‌ای را بر اساس ترجیحات رسانه‌ای آن جامعه گسترش دهید", "show_all_nsfw": "نمایش همه NSFW", "hide_all_nsfw": "مخفی کردن همه محتوای NSFW", "tags": "برچسب‌ها", "moderator_of": "مدیر", "not_subscriber_nor_moderator": "شما نه عضو مشترک هستید و نه مدیر هیچ جامعه‌ای.", "more_posts_last_year": "{{count}} پست در {{currentTimeFilterName}}: <1>نمایش پست‌های بیشتر از سال گذشته", "editor_fallback_warning": "ویرایشگر پیشرفته بارگیری نشد، از ویرایشگر متن ساده به عنوان جایگزین استفاده می‌شود.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "شما در حال مشاهده این انجمن هستید" } ================================================ FILE: public/translations/fi/default.json ================================================ { "about": "Tietoja", "comments": "kommentit", "preferences": "Asetukset", "submit": "Lähetä", "dark": "Tumma", "light": "Vaalea", "my_communities": "Omat yhteisöt", "home": "Etusivu", "all": "Kaikki", "submitted": "Lähetetty", "post_by": "Tekijä", "post_to": "Kohteeseen", "post_no_comments": "Kommentoi", "post_comment": "Kommentti", "post_comments": "Kommentit", "share": "Jaa", "save": "Tallenna", "hide": "Piilota", "report": "Ilmoita", "crosspost": "Ristipostitus", "time_1_minute_ago": "1 minuutti sitten", "time_x_minutes_ago": "{{count}} minuuttia sitten", "time_1_hour_ago": "1 tunti sitten", "time_x_hours_ago": "{{count}} tuntia sitten", "time_1_day_ago": "1 päivä sitten", "time_x_days_ago": "{{count}} päivää sitten", "time_1_month_ago": "1 kuukausi sitten", "time_x_months_ago": "{{count}} kuukautta sitten", "time_1_year_ago": "1 vuosi sitten", "time_x_years_ago": "{{count}} vuotta sitten", "spoiler": "Juonipaljastus", "reply_reply": "Vastaus", "reply_sorted_by": "Lajiteltu", "all_comments": "Kaikki {{count}} kommentit", "no_comments": "Ei kommentteja (vielä)", "reply_score_singular": "1 piste", "reply_score_plural": "{{score}} pistettä", "removed": "Poistettu", "one_comment": "1 kommentti", "submit_url_description": "upota mediaa lähettämällä sen suora linkki (päättyy .jpg, .gif, .mp4, jne.)", "title": "otsikko", "text": "teksti", "required": "vaadittu", "optional": "valinnainen", "community_address": "yhteisön osoite", "submit_choose": "valitse, minne haluat lähettää", "submit_notice": "Ole tietoinen yhteisön säännöistä, seeditillä ei ole maailmanlaajuisia ylläpitäjiä.", "challenge_from": "Challenge p/{{subplebbit}}:lta", "challenge_for_post": "julkaisulle: \"{{publicationContent}}\"", "challenge_for_reply": "vastauksena u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}}/{{total}}", "cancel": "Peruuta", "previous": "Edellinen", "next": "Seuraava", "loading": "Ladataan", "pending": "Odottaa hyväksyntää", "submit_subscriptions_notice": "Ehdotetut yhteisöt", "submit_subscriptions": "tilaamasi yhteisöt", "rules_for": "säännöt", "no_communities_found": "Yhteisöjä ei löytynyt osoitteesta <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "Yhteisöön liittymiseksi käytä 🔎 oikeassa yläkulmassa", "options": "vaihtoehdot", "hide_options": "piilota vaihtoehdot", "failed": "epäonnistui", "time_1_minute": "1 minuutti", "time_x_minutes": "{{count}} minuuttia", "time_1_hour": "1 tunti", "time_x_hours": "{{count}} tuntia", "time_1_day": "1 päivä", "time_x_days": "{{count}} päivää", "time_1_month": "1 kuukausi", "time_x_months": "{{count}} kuukautta", "time_1_year": "1 vuosi", "time_x_years": "{{count}} vuotta", "submit_post": "Lähetä uusi viesti", "create_your_community": "Luo oma yhteisösi", "moderators": "moderaattorit", "about_moderation": "tietoa moderaatiotiimistä", "join": "Liity", "leave": "poistu", "created_by": "luonut {{creatorAddress}}", "community_for": "yhteisössä {{date}}", "post_submitted_on": "tämä viesti on toimitettu {{postDate}}", "users_online": "{{count}} käyttäjää täällä nyt", "point": "piste", "points": "pisteet", "share_link": "jaa linkki", "upvoted": "on antanut äänen", "announcement": "ilmoitus", "child": "{{childrenCount}} lapsi", "children": "{{childrenCount}} lapset", "moderation": "moderointi", "interface_language": "käyttöliittymäkieli", "theme": "teema", "account": "tili", "display_name": "näyttönimi", "crypto_address": "krypto-osoite", "check": "tarkista", "crypto_address_verification": "jos krypto-osoite on ratkaistu p2p", "create": "luo", "delete": "poista", "locked": "lukittu", "reason": "syy", "sorted_by": "lajiteltu", "downvoted": "äänestetty alas", "hidden": "piilotettu", "saved": "tallennettu", "overview": "yleiskatsaus", "user_since": "Käyttäjä vähintään {{time}}", "post_karma": "viestikarma", "comment_karma": "kommenttikarma", "full_comments": "kaikki kommentit", "context": "yhteys", "block": "estää", "post": "viesti", "unhide": "näytä", "unblock": "poista esto", "undo": "peruuta", "post_hidden": "piilotettu viesti", "link_copied": "linkki kopioitu", "block_community": "estä yhteisö", "unblock_community": "poista yhteisön esto", "search_feed_post": "Etsi viesti tästä syötteestä", "from": "lähettäjältä", "via": "kautta", "sent": "lähetetty", "unread": "lukemattomat", "comment_replies": "kommenttivastaukset", "post_replies": "viestivastaukset", "messages": "viestit", "inbox": "saapuneet", "mark_all_read": "merkitse kaikki luetuiksi", "comment_reply": "vastaa kommenttiin", "post_reply": "vastaa viestiin", "show_parent": "näytä viitattu viesti", "no_posts": "ei viestejä", "media_url": "medialinkki", "post_locked_info": "Tämä viesti on {{state}}. Et voi kommentoida.", "members_count": "{{count}} jäsentä", "communities": "yhteisö", "edit": "muokata", "moderator": "Moderaattori", "description": "Kuvaus", "rules": "Säännöt", "save_options": "Tallenna asetukset", "logo": "Logo", "address": "Osoite", "nothing_found": "Täällä ei näytä olevan mitään", "stickied_comment": "Kiinnitetty kommentti", "posts_last_synced": "Viimeksi synkronoidut viestit {{dateAgo}}", "community_settings": "Yhteisön asetukset", "moderation_tools": "Moderointityökalut", "submit_to": "Lähetä osoitteeseen <1>{{link}}", "edit_subscriptions": "Muokkaa tilauksia", "delete_confirm": "Haluatko varmasti poistaa {{value}}?", "saving": "Tallentaa", "deleted": "Poistettu", "online": "Verkossa", "offline": "Poissa verkosta", "subscriber": "Tilaaja", "join_communities_notice": "Valitse, mitkä yhteisöt näkyvät etusivulla napsauttamalla painikkeita <1>{{join}} tai <2>{{leave}}.", "below_subscribed": "Alla ovat yhteisöt, joihin olet tilannut.", "not_subscribed": "Et ole vielä tilannut yhteenkään yhteisöön.", "below_moderator_access": "Alla ovat yhteisöt, joissa sinulla on moderaattoripääsy.", "not_moderator": "Et ole moderaattori missään yhteisössä.", "create_community": "Luo yhteisö", "single_comment_notice": "Katsotte yhden kommentin keskustelua", "single_comment_link": "Näytä loput kommentit", "owner_settings_notice": "Vain yhteisön omistaja voi muokata sen asetuksia.", "preview": "esikatselu", "shown_in_sidebar": "näytetään yhteisösi sivupalkissa", "community_logo_info": "aseta yhteisön logo sen suoran kuvan linkin avulla (päättyen .jpg, .png)", "moderators_setting_info": "anna muiden käyttäjien moderoida ja lähettää ilman haasteita", "vote": "äänestää", "passing": "läpäisy", "rejecting": "hylkääminen", "add_moderator": "lisää moderaattori", "add_rule": "lisää sääntö", "json_settings": "JSON-asetukset", "json_settings_info": "kopioi tai liitä yhteisön asetukset nopeasti", "address_setting_info": "Aseta luettava yhteisön osoite käyttämällä kryptoaluetta", "enter_crypto_address": "Syötä voimassa oleva krypto-osoite.", "check_for_updates": "<1>Tarkista päivitykset", "refresh_to_update": "Päivitä sivu päivittääksesi", "latest_development_version": "Olet uusimmassa kehitysversion, commit {{commit}}. Käyttääksesi vakaa versio, siirry osoitteeseen {{link}}.", "latest_stable_version": "Olet viimeisimmässä vakaa versio, seedit v{{version}}.", "new_development_version": "Uusi kehitysversion saatavilla, commit {{newCommit}}. Käytät commit {{oldCommit}}.", "new_stable_version": "Uusi vakaa versio saatavilla, seedit v{{newVersion}}. Käytät seedit v{{oldVersion}}.", "download_latest_desktop": "Lataa uusin työpöytäversio täältä: {{link}}", "contribute_on_github": "Osallistu GitHubissa", "no_media_found": "Ei löydettyjä medioita", "no_image_found": "Ei löytynyt kuvaa", "warning_spam": "Varoitus: haastetta ei ole valittu, yhteisö on altis roskapostihyökkäyksille.", "hide_help": "Piilota ohje", "formatting_help": "Muotoiluohjeet", "you_see": "näet", "you_type": "Kirjoitat", "italics": "kursiivi", "bold": "lihavoitu", "quoted_text": "lainattu teksti", "item": "kohde", "delete_community": "poista yhteisö", "delete_community_description": "Poista tämä yhteisö pysyvästi. Sen sisältö voi silti olla siemenenä vertaisverkossa", "add": "lisää", "owner": "omistaja", "admin": "ylläpitäjä", "settings_saved": "Asetukset tallennettu p/{{subplebbitAddress}} varten", "continue_thread": "jatka tätä säiettä", "mod_edit_reason": "Moderaattorin muokkausperuste", "double_confirm": "Oletko varma? Tämä toiminto on peruuttamaton.", "crypto_address_not_yours": "Krypto-osoite kuuluu toiseen tiliin.", "crypto_address_yours": "Krypto-osoite kuuluu tähän tiliin.", "crypto_address_not_resolved": "Krypto-osoitetta ei ole vielä ratkaistu.", "submit_to_string": "Lähetä kohteeseen {{string}}", "page_not_found": "Sivua ei löytynyt", "not_found_description": "Pyytämääsi sivua ei löydy", "last_edited": "Viimeksi muokattu {{timestamp}}", "view_spoiler": "näytä spoiler", "default_communities": "oletusyhteisöt", "avatar": "avatar", "pending_edit": "odottava muokkaus", "failed_edit": "epäonnistunut muokkaus", "node_stats": "solmustatistiikka", "version": "versio", "edit_reason": "muokkaussyy", "view_parent_comment": "näytä alkuperäinen kommentti", "chain_ticker": "Ketjuticker", "token_address_whitelist": "Token-osoite (<1>vain valkoinen lista)", "token_id": "Token-id", "paste_signature": "Liitä allekirjoitus", "copy_message_etherscan": "<1>{{copy}} viesti allekirjoitettavaksi <2>etherscan:ssa", "copy": "kopioi", "copied": "kopioitu", "missing_chain_ticker": "Puuttuva ketjuticker", "missing_token_address": "Puuttuva token-osoite", "missing_token_id": "Puuttuva token-id", "missing_signature": "Puuttuva allekirjoitus", "edited_timestamp": "Muokattu {{timestamp}}", "ban_user_for": "Estä käyttäjä <1> päiväksi", "crypto_wallets": "Krypto-lompakot", "wallet_address": "Lompakon osoite", "remove": "Poista", "add_wallet": "<1>Lisää krypto-lompakko", "show_settings": "Näytä asetukset", "hide_settings": "Piilota asetukset", "undelete": "Palauta", "downloading_comments": "lataamassa kommentteja", "you_blocked_community": "Olet estänyt tämän yhteisön", "show": "näyttää", "plebbit_options": "plebbit-vaihtoehdot", "general": "yleinen", "more_posts_last_week": "{{count}} viestiä viime {{currentTimeFilterName}}: <1>näytä lisää viestejä viime viikolta", "more_posts_last_month": "{{count}} julkaisua viimeisimmässä {{currentTimeFilterName}}: <1>näytä lisää julkaisuja viime kuukaudelta", "profile_info": "Tilitilisi u/{{shortAddress}} on luotu. <1>Aseta näyttönimi, <2>vienti varmuuskopio, <3>lue lisää.", "show_all_instead": "Näytetään viestejä ajasta {{timeFilterName}}, <1>näytä kaikki sen sijaan", "subplebbit_offline_info": "Yhteisö saattaa olla offline-tilassa ja julkaiseminen saattaa epäonnistua.", "posts_last_synced_info": "Viestit synkronoitu viimeksi {{time}}, yhteisö saattaa olla offline-tilassa ja julkaisu voi epäonnistua.", "import_account_backup": "<1>tuoda tilin varmuuskopio", "export_account_backup": "<1>viedä tilin varmuuskopio", "save_reset_changes": "<1>tallenna tai <2>nollaa muutokset", "delete_this_account": "<1>poista tämä tili", "create_new_account": "<1>luo uusi tili", "wallet_number": "lompakko #{{index}}", "view_more": "näytä lisää", "submit_community": "Lähetä yhteisösi", "hide_avatars_from_replies": "Piilota avatarit vastauksista", "yes": "kyllä", "no": "ei", "are_you_sure": "Oletko varma?", "a_short_title": "Lyhyt otsikko yhteisöllesi", "challenges": "Haasteet", "challenges_subtitle": "Valitse yksi tai useampi haaste estämään roskapostia", "add_a_challenge": "Lisää haaste", "communities_you_moderate": "Yhteisöt, joita moderoinnit", "blur_media": "Sumenna media, jotka on merkitty NSFW/18+", "nsfw_content": "NSFW-sisältö", "see_nsfw": "Napsauta nähdäksesi NSFW", "see_nsfw_spoiler": "Napsauta nähdäksesi NSFW-spoilerin", "always_show_nsfw": "Haluatko aina näyttää NSFW-mediaa?", "always_show_nsfw_notice": "Ok, muutimme asetuksesi aina näyttääksesi NSFW-mediaa.", "content_options": "Sisältöasetukset", "over_18": "Yli 18?", "must_be_over_18": "Sinun täytyy olla yli 18-vuotias nähdäksesi tämän yhteisön", "must_be_over_18_explanation": "Sinun täytyy olla vähintään kahdeksantoista vuotta vanha nähdäksesi tämän sisällön. Oletko yli 18-vuotias ja halukas katsomaan aikuisille tarkoitettua sisältöä?", "no_thank_you": "Ei kiitos", "continue": "Jatka", "download_latest_android": "Lataa uusin Android-versio?", "submitter": "Lähettäjä", "block_user": "Estä käyttäjä", "unblock_user": "Poista käyttäjän esto", "filtering_by_tag": "Suodattaminen tagilla: \"{{tag}}\"", "you_are_moderator": "Olet tämän yhteisön moderaattori", "you_are_admin": "Olet tämän yhteisön ylläpitäjä", "you_are_owner": "Olet tämän yhteisön omistaja", "looking_for_more_posts": "Etsii lisää viestejä", "loading_feed": "Ladataan syöte", "downloading_posts": "Ladataan postauksia", "post_is_pending": "Postaus on odottamassa", "post_has_failed": "Postaus epäonnistui", "choose_file": "Valitse tiedosto", "uploading": "Ladataan", "invalid_url_alert": "Annettu linkki ei ole voimassa oleva URL.", "empty_comment_alert": "Ei voi julkaista tyhjää kommenttia.", "no_subscriptions_message": "<1>{{accountName}}, tämä on kotisi Seeditissä<2>Kun löydät yhteisön, josta pidät, <3>liity siihen <4>", "find_communities": "etsi yhteisöjä p/all:lla", "community_deleted": "Yhteisö poistettiin onnistuneesti.", "go_to_a_community": "Mene yhteisöön", "enter_community_address": "Syötä yhteisön osoite", "all_communities": "kaikki yhteisöt", "search_posts": "etsi viestejä", "found_n_results_for": "löytyi {{count}} viestiä hakusanalla \"{{query}}\"", "clear_search": "tyhjennä haku", "no_matches_found_for": "ei löytynyt osumia hakusanalla \"{{query}}\"", "searching": "etsitään", "hide_default_communities_from_topbar": "Piilota oletusyhteisöt yläpalkista", "media": "media", "hide_communities_tagged_as_nsfw": "Piilota yhteisöt, jotka on merkitty NSFW/18+", "tagged_as_adult": "merkitty \"aikuiseksi\"", "tagged_as_gore": "merkitty \"gore\" -tunnisteella", "tagged_as_anti": "merkitty \"anti\"-tunnisteeksi", "tagged_as_vulgar": "merkitty \"vulgaariseksi\"", "drop_here_or": "Pudota tänne tai", "upload_button_warning": "Automaattinen lataus on estetty selaimesi CORS-politiikalla, mutta se on saatavilla Seedit Android -sovelluksessa ja työpöytäsovelluksessa (Win/Mac/Linux).\n\nMene GitHubin latauslinkkisivulle?", "create_community_warning": "Yhteisön luominen vaatii täyden solmun ajamisen. Seeditin työpöytäsovellus (Win/Mac/Linux) ajaa automaattisesti täyden solmun.\n\nMene GitHubin latauslinkkisivulle?", "avatars": "Avatarit", "filtering_by_nsfw": "Suodatus NSFW-yhteisöjen mukaan", "notifications": "Ilmoitukset", "new_replies_received": "uusia vastauksia saatu", "private_key_warning_title": "Yksityinen avaimesi näytetään", "private_key_warning_description": "Olet katsomassa tilisi tietoja, jotka sisältävät yksityisen avaimesi. Älä koskaan jaa yksityistä avaintasi kenellekään.", "go_back": "Palaa", "loading_editor": "Ladataan editoria", "show_thumbnails_next_to_links": "Näytä pikkukuvat linkkien vieressä", "dont_show_thumbnails_next_to_links": "Älä näytä pikkukuvia linkkien vieressä", "show_thumbnails_based_on_community_media_preferences": "Näytä pikkukuvat kyseisen yhteisön median mieltymysten perusteella", "media_previews": "mediasisällöt", "auto_expand_media_previews": "Laajenna median esikatselut automaattisesti", "dont_auto_expand_media_previews_on_comments_pages": "Älä laajenna mediasisältöjen esikatseluja automaattisesti kommenttisivuilla", "video_player": "Videon toistin", "autoplay_videos_on_comments_page": "Toista videot automaattisesti kommenttisivulla", "mute_videos_by_default": "Mykistä videot oletuksena", "expand_media_previews_based_on_community_media_preferences": "Laajenna mediakatsauksia kyseisen yhteisön mediatoiveiden perusteella", "show_all_nsfw": "näytä kaikki NSFW", "hide_all_nsfw": "piilota kaikki NSFW", "tags": "Tagit", "moderator_of": "moderaattori", "not_subscriber_nor_moderator": "Et ole tilaaja etkä moderaattori missään yhteisössä.", "more_posts_last_year": "{{count}} julkaisua viime {{currentTimeFilterName}}: <1>näytä lisää julkaisuja viime vuodelta", "editor_fallback_warning": "edistynyt editori epäonnistui latautumaan, perus tekstieditori käytössä varatoimintona.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Katsot jo tätä yhteisöä" } ================================================ FILE: public/translations/fil/default.json ================================================ { "about": "Tungkol sa", "comments": "mga komento", "preferences": "Mga Kagustuhan", "submit": "Ipadala", "dark": "Madilim", "light": "Maliwanag", "my_communities": "Aking mga Komunidad", "home": "Bahay", "all": "Lahat", "submitted": "Naipadala", "post_by": "Ni", "post_to": "Sa", "post_no_comments": "Magkomento", "post_comment": "Komento", "post_comments": "Mga Komento", "share": "Ibahagi", "save": "I-save", "hide": "Itago", "report": "I-ulat", "crosspost": "Crosspost", "time_1_minute_ago": "1 minuto ang nakalipas", "time_x_minutes_ago": "{{count}} minuto ang nakalipas", "time_1_hour_ago": "1 oras ang nakalipas", "time_x_hours_ago": "{{count}} oras ang nakalipas", "time_1_day_ago": "1 araw ang nakalipas", "time_x_days_ago": "{{count}} araw ang nakalipas", "time_1_month_ago": "1 buwan ang nakalipas", "time_x_months_ago": "{{count}} buwan ang nakalipas", "time_1_year_ago": "1 taon ang nakalipas", "time_x_years_ago": "{{count}} taon ang nakalipas", "spoiler": "Spoiler", "reply_reply": "Tumugon", "reply_sorted_by": "Naayos ayon sa", "all_comments": "Lahat ng {{count}} mga komento", "no_comments": "Walang komento (pa)", "reply_score_singular": "1 punto", "reply_score_plural": "{{score}} puntos", "removed": "Tinanggal", "one_comment": "1 komento", "submit_url_description": "i-embed ang media sa pamamagitan ng pag-post ng direktang link nito (nagtatapos sa .jpg, .gif, .mp4, atbp.)", "title": "pamagat", "text": "teksto", "required": "kailangan", "optional": "opsyonal", "community_address": "address ng komunidad", "submit_choose": "pumili kung saan mag-post", "submit_notice": "mangyaring maging maingat sa mga patakaran ng komunidad, walang pangkalahatang mga admin ang seedit.", "challenge_from": "Challenge mula sa p/{{subplebbit}}", "challenge_for_post": "para sa post: \"{{publicationContent}}\"", "challenge_for_reply": "para sa tugon kay u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} ng {{total}}", "cancel": "Kanselahin", "previous": "Nakaraan", "next": "Susunod", "loading": "Naglo-load", "pending": "Nakabinbin", "submit_subscriptions_notice": "Mga Inirerekomendang Komunidad", "submit_subscriptions": "iyong mga sinubskribang komunidad", "rules_for": "mga patakaran para sa", "no_communities_found": "Walang natagpuang mga komunidad sa <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "Upang kumonekta sa isang komunidad, gamitin ang 🔎 sa itaas na kanan", "options": "mga opsyon", "hide_options": "itago ang mga opsyon", "failed": "nabigo", "time_1_minute": "1 minuto", "time_x_minutes": "{{count}} minuto", "time_1_hour": "1 oras", "time_x_hours": "{{count}} oras", "time_1_day": "1 araw", "time_x_days": "{{count}} araw", "time_1_month": "1 buwan", "time_x_months": "{{count}} buwan", "time_1_year": "1 taon", "time_x_years": "{{count}} taon", "submit_post": "Magsumite ng bagong post", "create_your_community": "Lumikha ng sariling komunidad", "moderators": "moderators", "about_moderation": "tungkol sa koponan ng moderation", "join": "Sumali", "leave": "iwanan", "created_by": "likha ni {{creatorAddress}}", "community_for": "isang komunidad para sa {{date}}", "post_submitted_on": "ang post na ito ay isinumite noong {{postDate}}", "users_online": "{{count}} mga gumagamit dito ngayon", "point": "punto", "points": "mga punto", "share_link": "magbahagi ng link", "upvoted": "nagbigay ng upvote", "announcement": "pahayag", "child": "{{childrenCount}} bata", "children": "{{childrenCount}} mga bata", "moderation": "moderasyon", "interface_language": "wika ng interface", "theme": "tema", "account": "account", "display_name": "display name", "crypto_address": "crypto address", "check": "suriin", "crypto_address_verification": "kung nairesolba ang crypto address p2p", "create": "gumawa", "delete": "burahin", "locked": "nakalock", "reason": "dahilan", "sorted_by": "inurutan ayon sa", "downvoted": "binoto ng negatibo", "hidden": "nakatagong", "saved": "itinago", "overview": "buod", "user_since": "Gumagamit mula noong hindi bababa sa {{time}}", "post_karma": "karma ng post", "comment_karma": "karma ng komento", "full_comments": "kumpletong mga komento", "context": "konteksto", "block": "blocked", "post": "post", "unhide": "ibalik", "unblock": "ibinuka", "undo": "ibalik", "post_hidden": "post na itinago", "link_copied": "nakopya ang link", "block_community": "i-block ang komunidad", "unblock_community": "i-unblock ang komunidad", "search_feed_post": "Maghanap ng post sa feed na ito", "from": "mula sa", "via": "sa pamamagitan ng", "sent": "ipinadala", "unread": "hindi pa nababasa", "comment_replies": "mga reply sa komento", "post_replies": "mga reply sa post", "messages": "mensahe", "inbox": "inbox", "mark_all_read": "tandaan ang lahat bilang nabasa", "comment_reply": "sagot sa komento", "post_reply": "sagot sa post", "show_parent": "ipakita ang tinutukoy na post", "no_posts": "walang post", "media_url": "media url", "post_locked_info": "Ang post na ito ay {{state}}. Hindi ka makakapagkomento.", "members_count": "{{count}} miyembro", "communities": "komunidad", "edit": "ipunin", "moderator": "Moderator", "description": "Deskripsyon", "rules": "Mga Alituntunin", "save_options": "I-save ang mga Opsyon", "logo": "Logo", "address": "Address", "nothing_found": "Wala yatang nandito", "stickied_comment": "Naka-pinned na Komento", "posts_last_synced": "Mga huling na-synchronize na mga post {{dateAgo}}", "community_settings": "Mga Setting ng Komunidad", "moderation_tools": "Mga Kasangkapan sa Moderasyon", "submit_to": "Isumite sa <1>{{link}}", "edit_subscriptions": "I-edit ang mga Subskripsyon", "delete_confirm": "Sigurado ka bang nais mong burahin ang {{value}}?", "saving": "Nag-i-save", "deleted": "Nadelete", "online": "Online", "offline": "Offline", "subscriber": "Subscriber", "join_communities_notice": "I-click ang mga pindutan <1>{{join}} o <2>{{leave}} upang pumili kung aling mga komunidad ang magpapakita sa home feed.", "below_subscribed": "Narito ang mga komunidad na iyong sinubaybayan.", "not_subscribed": "Hindi ka pa nakasubok sa alinmang komunidad.", "below_moderator_access": "Narito ang mga komunidad na mayroon kang access bilang moderator.", "not_moderator": "Hindi ka moderator sa anumang komunidad.", "create_community": "Lumikha ng komunidad", "single_comment_notice": "Nakikita mo ang isang thread ng isang komento lamang", "single_comment_link": "Tingnan ang iba pang mga komento", "owner_settings_notice": "Tanging ang may-ari ng komunidad ang makakapag-edit ng mga setting nito.", "preview": "preview", "shown_in_sidebar": "ipinapakita sa sidebar ng iyong komunidad", "community_logo_info": "itakda ang logo ng komunidad gamit ang direktang link ng larawan nito (natatapos sa .jpg, .png)", "moderators_setting_info": "pabayaang mag-moderate at mag-post ang iba pang mga gumagamit nang walang mga hamon", "vote": "bumoto", "passing": "pumapasa", "rejecting": "tanggihan", "add_moderator": "magdagdag ng isang moderator", "add_rule": "magdagdag ng isang patakaran", "json_settings": "Mga setting ng JSON", "json_settings_info": "mabilis na kopya o i-paste ang mga setting ng komunidad", "address_setting_info": "Itakda ang isang mababasa ang komunidad na address gamit ang isang crypto domain", "enter_crypto_address": "Mangyaring magpasok ng wastong crypto address.", "check_for_updates": "<1>Tingnan para sa mga update", "refresh_to_update": "I-refresh ang pahina upang i-update", "latest_development_version": "Nasa pinakabagong bersyon ng pag-unlad, commit {{commit}}. Upang gamitin ang stable na bersyon, pumunta sa {{link}}.", "latest_stable_version": "Nasa pinakabagong stable na bersyon, seedit v{{version}}.", "new_development_version": "Bagong development version na magagamit, commit {{newCommit}}. Ginagamit mo ang commit {{oldCommit}}.", "new_stable_version": "Bagong stable na bersyon na magagamit, seedit v{{newVersion}}. Ginagamit mo ang seedit v{{oldVersion}}.", "download_latest_desktop": "I-download ang pinakabagong bersyon ng desktop dito: {{link}}", "contribute_on_github": "Mag-contribute sa GitHub", "no_media_found": "Walang natagpuang midya", "no_image_found": "Walang natagpuang larawan", "warning_spam": "Babala: walang piniling hamon, ang komunidad ay madaling sakupin ng mga atake ng spam.", "hide_help": "Itago ang tulong", "formatting_help": "Tulong sa format", "you_see": "nakikita mo", "you_type": "Ikaw ay nagsusulat", "italics": "italics", "bold": "bold", "quoted_text": "quoted text", "item": "item", "delete_community": "alisin ang komunidad", "delete_community_description": "Permanenteng burahin ang komunidad na ito. Maaaring ang nilalaman nito ay patuloy na iniisip ng mga kapwa", "add": "magdagdag", "owner": "may-ari", "admin": "admin", "settings_saved": "Naisilbi ang mga setting para sa p/{{subplebbitAddress}}", "continue_thread": "ituloy ang thread na ito", "mod_edit_reason": "Dahilan ng pag-edit ng mod", "double_confirm": "Sigurado ka ba talaga? Ang aksyon na ito ay hindi mababawi.", "crypto_address_not_yours": "Ang crypto address ay nauugnay sa ibang account.", "crypto_address_yours": "Ang crypto address ay nauugnay sa account na ito.", "crypto_address_not_resolved": "Hindi pa naresolba ang crypto address.", "submit_to_string": "Isusumite sa {{string}}", "page_not_found": "Hindi makita ang pahina", "not_found_description": "Ang pahinang hiniling mo ay hindi umiiral", "last_edited": "huling inedit {{timestamp}}", "view_spoiler": "tingnan ang spoiler", "default_communities": "default na mga komunidad", "avatar": "avatar", "pending_edit": "naka-pending na edit", "failed_edit": "nakabigong edit", "node_stats": "stats ng node", "version": "bersyon", "edit_reason": "dahilan ng pag-edit", "view_parent_comment": "tingnan ang orihinal na komento", "chain_ticker": "Ticker ng chain", "token_address_whitelist": "Address ng token (<1>whitelist lang)", "token_id": "Token ID", "paste_signature": "I-paste ang lagda", "copy_message_etherscan": "<1>{{copy}} mensahe na pipirmahan sa <2>etherscan", "copy": "kopya", "copied": "nakopya", "missing_chain_ticker": "Kulang na ticker ng chain", "missing_token_address": "Kulang na address ng token", "missing_token_id": "Kulang na ID ng token", "missing_signature": "Kulang na lagda", "edited_timestamp": "Na-edit na ang {{timestamp}}", "ban_user_for": "I-ban ang user para sa <1> araw", "crypto_wallets": "Mga Wallet ng Crypto", "wallet_address": "Address ng wallet", "remove": "Alisin", "add_wallet": "<1>Magdagdag ng isang crypto wallet", "show_settings": "Ipakita ang mga setting", "hide_settings": "Itago ang mga setting", "undelete": "I-undelete", "downloading_comments": "nagda-download na mga komento", "you_blocked_community": "I-block mo ang komunidad na ito", "show": "ipakita", "plebbit_options": "mga pagpipilian ng plebbit", "general": "pangkalahatan", "more_posts_last_week": "{{count}} mga post huling {{currentTimeFilterName}}: <1>ipakita ang higit pang mga post mula sa nakaraang linggo", "more_posts_last_month": "{{count}} mga post sa {{currentTimeFilterName}}: <1>ipakita ang higit pang mga post mula sa nakaraang buwan", "profile_info": "Ang iyong account u/{{shortAddress}} ay nalikha. <1>I-set ang display name, <2>I-export ang backup, <3>alamin pa.", "show_all_instead": "Ipinapakita ang mga post mula {{timeFilterName}}, <1>ipakita ang lahat sa halip", "subplebbit_offline_info": "Ang komunidad ay maaaring offline at ang paglalathala ay maaaring magbigo.", "posts_last_synced_info": "Ang mga post ay na-sync na huling {{time}}, ang komunidad ay maaaring offline at ang paglalathala ay maaaring magbigo.", "import_account_backup": "<1>i-import ang backup ng account", "export_account_backup": "<1>ilabas ang backup ng account", "save_reset_changes": "<1>i-save o <2>i-reset ang mga pagbabago", "delete_this_account": "<1>tanggalin ang account na ito", "create_new_account": "<1>lumikha ng bagong account", "wallet_number": "wallet #{{index}}", "view_more": "tingnan pa", "submit_community": "I-submit ang iyong komunidad", "hide_avatars_from_replies": "Itago ang mga avatar mula sa mga sagot", "yes": "oo", "no": "hindi", "are_you_sure": "Sigurado ka ba?", "a_short_title": "Isang maikling pamagat para sa iyong komunidad", "challenges": "Mga Hamon", "challenges_subtitle": "Pumili ng isa o higit pang mga hamon upang maiwasan ang spam", "add_a_challenge": "Magdagdag ng hamon", "communities_you_moderate": "Mga komunidad na iyong mino-moderate", "blur_media": "I-blur ang media na minarkahan bilang NSFW/18+", "nsfw_content": "Nilalaman ng NSFW", "see_nsfw": "I-click upang makita ang NSFW", "see_nsfw_spoiler": "I-click upang makita ang NSFW spoiler", "always_show_nsfw": "Palaging ipakita ang mga media ng NSFW?", "always_show_nsfw_notice": "Okay, binago namin ang iyong mga preference upang palaging ipakita ang NSFW media.", "content_options": "Mga opsyon sa nilalaman", "over_18": "Higit sa 18?", "must_be_over_18": "Dapat kang 18+ upang makita ang komunidad na ito", "must_be_over_18_explanation": "Dapat kang hindi bababa sa labing walong taon upang makita ang nilalamang ito. Ikaw ba ay higit sa labing walong taon at handang makita ang nilalamang pang-adulto?", "no_thank_you": "Hindi, salamat", "continue": "Magpatuloy", "download_latest_android": "I-download ang pinakabagong bersyon ng Android?", "submitter": "Nagpadala", "block_user": "I-block ang gumagamit", "unblock_user": "I-unblock ang gumagamit", "filtering_by_tag": "Nag-filter ayon sa tag: \"{{tag}}\"", "you_are_moderator": "Ikaw ay isang moderator ng komunidad na ito", "you_are_admin": "Ikaw ay isang admin ng komunidad na ito", "you_are_owner": "Ikaw ang may-ari ng komunidad na ito", "looking_for_more_posts": "Naghahanap ng higit pang mga post", "loading_feed": "Naglo-load ng feed", "downloading_posts": "Nagda-download ng mga post", "post_is_pending": "Ang post ay pending", "post_has_failed": "Nabigo ang post", "choose_file": "Pumili ng file", "uploading": "Nag-upload", "invalid_url_alert": "Ang ibinigay na link ay hindi isang wastong URL.", "empty_comment_alert": "Hindi makapag-post ng walang laman na komento.", "no_subscriptions_message": "<1>{{accountName}}, ito ang iyong tahanan sa Seedit<2>Kapag nakakita ka ng isang komunidad na gusto mo, <3>sumali gamit ang <4>", "find_communities": "maghanap ng mga komunidad sa p/all", "community_deleted": "Matagumpay na natanggal ang komunidad.", "go_to_a_community": "Pumunta sa isang komunidad", "enter_community_address": "Ilagay ang isang address ng komunidad", "all_communities": "lahat ng komunidad", "search_posts": "maghanap ng mga post", "found_n_results_for": "nakita ang {{count}} mga post para sa \"{{query}}\"", "clear_search": "i-clear ang paghahanap", "no_matches_found_for": "walang nahanap na tugma para sa \"{{query}}\"", "searching": "naghahanap", "hide_default_communities_from_topbar": "Itago ang mga default na komunidad mula sa topbar", "media": "midya", "hide_communities_tagged_as_nsfw": "Itago ang mga komunidad na may label na NSFW/18+", "tagged_as_adult": "tinag na bilang \"adulto\"", "tagged_as_gore": "tinag na \"gore\"", "tagged_as_anti": "minarkahan bilang \"anti\"", "tagged_as_vulgar": "tinag na \"vulgar\"", "drop_here_or": "I-drag dito o", "upload_button_warning": "Ang awtomatikong pag-upload ay naharang ng CORS policy ng iyong browser, ngunit ito ay magagamit sa Seedit Android app at desktop app (Win/Mac/Linux).\n\nPumunta sa page ng download links sa GitHub?", "create_community_warning": "Ang paggawa ng komunidad ay nangangailangan ng pagpapatakbo ng isang buong node. Ang Seedit desktop app (Win/Mac/Linux) ay awtomatikong nagpapatakbo ng isang buong node.\n\nPumunta sa page ng download links sa GitHub?", "avatars": "Mga Avatar", "filtering_by_nsfw": "Pag-filter ayon sa mga komunidad ng NSFW", "notifications": "Mga Notipikasyon", "new_replies_received": "may bagong natanggap na mga sagot", "private_key_warning_title": "Ipapakita ang iyong pribadong susi", "private_key_warning_description": "Malapit mo nang makita ang iyong account data, na kasama ang iyong private key. Hindi mo dapat ibahagi ang iyong private key sa kahit kanino.", "go_back": "Bumalik", "loading_editor": "Naglo-load ng editor", "show_thumbnails_next_to_links": "Ipakita ang mga thumbnail sa tabi ng mga link", "dont_show_thumbnails_next_to_links": "Huwag ipakita ang mga thumbnail sa tabi ng mga link", "show_thumbnails_based_on_community_media_preferences": "Ipakita ang mga thumbnail batay sa mga kagustuhan sa media ng komunidad na iyon", "media_previews": "mga preview ng media", "auto_expand_media_previews": "Awtomatikong palawakin ang mga preview ng media", "dont_auto_expand_media_previews_on_comments_pages": "Huwag awtomatikong palawakin ang media preview sa mga pahina ng komento", "video_player": "Video Player", "autoplay_videos_on_comments_page": "Awtomatikong pag-play ng mga video sa pahina ng mga komento", "mute_videos_by_default": "I-mute ang mga video bilang default", "expand_media_previews_based_on_community_media_preferences": "Palawakin ang mga preview ng media batay sa mga kagustuhan ng media ng komunidad na iyon", "show_all_nsfw": "ipakita lahat ng NSFW", "hide_all_nsfw": "Itago lahat ng NSFW", "tags": "Mga tag", "moderator_of": "moderator ng", "not_subscriber_nor_moderator": "Hindi ka subscriber ni moderator ng anumang komunidad.", "more_posts_last_year": "{{count}} post sa huling {{currentTimeFilterName}}: <1>ipakita ang mas maraming post mula sa nakaraang taon", "editor_fallback_warning": "Nabigong mag-load ang advanced editor, gamit ang basic text editor bilang fallback.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Nakikita mo na ang komunidad na ito" } ================================================ FILE: public/translations/fr/default.json ================================================ { "about": "à propos", "comments": "commentaires", "preferences": "préférences", "submit": "soumettre", "dark": "sombre", "light": "clair", "my_communities": "mes communautés", "home": "accueil", "all": "tous", "submitted": "soumis", "post_by": "par", "post_to": "dans", "post_no_comments": "commenter", "post_comment": "commentaire", "post_comments": "commentaires", "share": "partager", "save": "enregistrer", "hide": "masquer", "report": "signaler", "crosspost": "crosspost", "time_1_minute_ago": "il y a 1 minute", "time_x_minutes_ago": "il y a {{count}} minutes", "time_1_hour_ago": "il y a 1 heure", "time_x_hours_ago": "il y a {{count}} heures", "time_1_day_ago": "il y a 1 jour", "time_x_days_ago": "il y a {{count}} jours", "time_1_month_ago": "il y a 1 mois", "time_x_months_ago": "il y a {{count}} mois", "time_1_year_ago": "il y a 1 an", "time_x_years_ago": "il y a {{count}} ans", "spoiler": "spoiler", "reply_reply": "répondre", "reply_sorted_by": "trié par", "all_comments": "tous les {{count}} commentaires", "no_comments": "aucun commentaire (encore)", "reply_score_singular": "1 point", "reply_score_plural": "{{score}} points", "removed": "Supprimé", "one_comment": "1 commentaire", "submit_url_description": "intégrez des médias en postant son lien direct (se terminant par .jpg, .gif, .mp4, etc.)", "title": "titre", "text": "texte", "required": "requis", "optional": "facultatif", "community_address": "adresse de la communauté", "submit_choose": "choisissez où poster", "submit_notice": "veuillez respecter les règles de la communauté, seedit n’a pas d’administrateurs globaux.", "challenge_from": "Défi de p/{{subplebbit}}", "challenge_for_post": "pour la publication : \"{{publicationContent}}\"", "challenge_for_reply": "pour la réponse à u/{{parentAddress}} : \"{{publicationContent}}\"", "challenge_counter": "{{index}} sur {{total}}", "cancel": "Annuler", "previous": "Précédent", "next": "Suivant", "loading": "Chargement", "pending": "En attente", "submit_subscriptions_notice": "Communautés suggérées", "submit_subscriptions": "vos communautés abonnées", "rules_for": "règles pour", "no_communities_found": "Aucune communauté trouvée sur <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "Pour vous connecter à une communauté, utilisez 🔎 en haut à droite", "options": "options", "hide_options": "cacher les options", "failed": "échoué", "time_1_minute": "1 minute", "time_x_minutes": "{{count}} minutes", "time_1_hour": "1 heure", "time_x_hours": "{{count}} heures", "time_1_day": "1 jour", "time_x_days": "{{count}} jours", "time_1_month": "1 mois", "time_x_months": "{{count}} mois", "time_1_year": "1 an", "time_x_years": "{{count}} ans", "submit_post": "Soumettre une nouvelle publication", "create_your_community": "Créez votre propre communauté", "moderators": "modérateurs", "about_moderation": "à propos de l'équipe de modération", "join": "Rejoindre", "leave": "quitter", "created_by": "créé par {{creatorAddress}}", "community_for": "une communauté depuis {{date}}", "post_submitted_on": "cette publication a été soumise le {{postDate}}", "users_online": "{{count}} utilisateurs ici maintenant", "point": "point", "points": "points", "share_link": "partager le lien", "upvoted": "a voté positivement", "announcement": "annonce", "child": "{{childrenCount}} enfant", "children": "{{childrenCount}} enfants", "moderation": "modération", "interface_language": "langue de l'interface", "theme": "thème", "account": "compte", "display_name": "nom d'affichage", "crypto_address": "adresse crypto", "check": "vérifier", "crypto_address_verification": "si l’adresse crypto est résolue en p2p", "create": "créer", "delete": "supprimer", "locked": "verrouillé", "reason": "raison", "sorted_by": "trié par", "downvoted": "vote négatif", "hidden": "caché", "saved": "enregistré", "overview": "aperçu", "user_since": "Utilisateur depuis au moins {{time}}", "post_karma": "karma des publications", "comment_karma": "karma des commentaires", "full_comments": "tous les commentaires", "context": "contexte", "block": "bloquer", "post": "publication", "unhide": "afficher", "unblock": "débloquer", "undo": "annuler", "post_hidden": "publication masquée", "link_copied": "lien copié", "block_community": "bloquer la communauté", "unblock_community": "débloquer la communauté", "search_feed_post": "Rechercher un article dans ce flux", "from": "de", "via": "via", "sent": "envoyé", "unread": "non lu", "comment_replies": "réponses aux commentaires", "post_replies": "réponses aux publications", "messages": "messages", "inbox": "boîte de réception", "mark_all_read": "marquer tout comme lu", "comment_reply": "répondre au commentaire", "post_reply": "répondre au post", "show_parent": "afficher le post référencé", "no_posts": "pas de publications", "media_url": "URL multimédia", "post_locked_info": "Ce post est {{state}}. Vous ne pourrez pas commenter.", "members_count": "{{count}} membres", "communities": "communauté", "edit": "modifier", "moderator": "Modérateur", "description": "Description", "rules": "Règles", "save_options": "Enregistrer les options", "logo": "Logo", "address": "Adresse", "nothing_found": "Il ne semble pas y avoir de contenu ici", "stickied_comment": "Commentaire épinglé", "posts_last_synced": "Dernières publications synchronisées {{dateAgo}}", "community_settings": "Paramètres de la communauté", "moderation_tools": "Outils de modération", "submit_to": "Soumettre à <1>{{link}}", "edit_subscriptions": "Modifier les abonnements", "delete_confirm": "Êtes-vous sûr de vouloir supprimer {{value}}?", "saving": "Enregistrement", "deleted": "Supprimé", "online": "En ligne", "offline": "Hors ligne", "subscriber": "Abonné", "join_communities_notice": "Cliquez sur les boutons <1>{{join}} ou <2>{{leave}} pour choisir quelles communautés apparaissent sur la page d'accueil.", "below_subscribed": "Ci-dessous se trouvent les communautés auxquelles vous êtes abonné.", "not_subscribed": "Vous n'êtes abonné à aucune communauté pour le moment.", "below_moderator_access": "Ci-dessous se trouvent les communautés auxquelles vous avez accès en tant que modérateur.", "not_moderator": "Vous n'êtes pas modérateur dans aucune communauté.", "create_community": "Créer une communauté", "single_comment_notice": "Vous regardez le fil d'un seul commentaire", "single_comment_link": "Voir le reste des commentaires", "owner_settings_notice": "Seul le propriétaire de la communauté peut modifier ses paramètres.", "preview": "aperçu", "shown_in_sidebar": "affiché dans la barre latérale de votre communauté", "community_logo_info": "définir un logo de communauté à l'aide de son lien direct vers une image (se terminant par .jpg, .png)", "moderators_setting_info": "laissez d'autres utilisateurs modérer et publier sans défis", "vote": "voter", "passing": "passage", "rejecting": "rejet", "add_moderator": "ajouter un modérateur", "add_rule": "ajouter une règle", "json_settings": "Paramètres JSON", "json_settings_info": "copier ou coller rapidement les paramètres de la communauté", "address_setting_info": "Définir une adresse de communauté lisible à l'aide d'un domaine cryptographique", "enter_crypto_address": "Veuillez entrer une adresse crypto valide.", "check_for_updates": "<1>Vérifiez les mises à jour", "refresh_to_update": "Actualisez la page pour mettre à jour", "latest_development_version": "Vous êtes sur la dernière version de développement, commit {{commit}}. Pour utiliser la version stable, allez sur {{link}}.", "latest_stable_version": "Vous êtes sur la dernière version stable, seedit v{{version}}.", "new_development_version": "Nouvelle version de développement disponible, commit {{newCommit}}. Vous utilisez commit {{oldCommit}}.", "new_stable_version": "Nouvelle version stable disponible, seedit v{{newVersion}}. Vous utilisez seedit v{{oldVersion}}.", "download_latest_desktop": "Téléchargez la dernière version de bureau ici : {{link}}", "contribute_on_github": "Contribuer sur GitHub", "no_media_found": "Aucun média trouvé", "no_image_found": "Aucune image trouvée", "warning_spam": "Attention : aucun défi n'a été sélectionné, la communauté est vulnérable aux attaques de spam.", "hide_help": "Masquer l'aide", "formatting_help": "Aide à la mise en forme", "you_see": "tu vois", "you_type": "Tu tapes", "italics": "italique", "bold": "gras", "quoted_text": "texte cité", "item": "article", "delete_community": "supprimer la communauté", "delete_community_description": "Supprimer définitivement cette communauté. Son contenu pourrait encore être semé par des pairs", "add": "ajouter", "owner": "propriétaire", "admin": "administrateur", "settings_saved": "Paramètres enregistrés pour p/{{subplebbitAddress}}", "continue_thread": "continuer ce fil de discussion", "mod_edit_reason": "Raison de modification du modérateur", "double_confirm": "Êtes-vous vraiment sûr? Cette action est irréversible.", "crypto_address_not_yours": "L'adresse crypto appartient à un autre compte.", "crypto_address_yours": "L'adresse crypto appartient à ce compte.", "crypto_address_not_resolved": "L'adresse crypto n'est pas encore résolue.", "submit_to_string": "Soumettre à {{string}}", "page_not_found": "Page non trouvée", "not_found_description": "La page que vous avez demandée n'existe pas", "last_edited": "dernière édition {{timestamp}}", "view_spoiler": "voir le spoiler", "default_communities": "communautés par défaut", "avatar": "avatar", "pending_edit": "modification en attente", "failed_edit": "modification échouée", "node_stats": "statistiques du nœud", "version": "version", "edit_reason": "motif de la modification", "view_parent_comment": "voir le commentaire parent", "chain_ticker": "Ticker de blockchain", "token_address_whitelist": "Adresse du token (<1>liste blanche seulement)", "token_id": "Identifiant de jeton", "paste_signature": "Coller la signature", "copy_message_etherscan": "<1>{{copy}} message à signer sur <2>etherscan", "copy": "copier", "copied": "copié", "missing_chain_ticker": "Ticker de blockchain manquant", "missing_token_address": "Adresse de token manquante", "missing_token_id": "ID de token manquant", "missing_signature": "Signature manquante", "edited_timestamp": "Édité {{timestamp}}", "ban_user_for": "Bannir l'utilisateur pendant <1> jour(s)", "crypto_wallets": "Portefeuilles de crypto", "wallet_address": "Adresse de portefeuille", "remove": "Retirer", "add_wallet": "<1>Ajouter un portefeuille crypto", "show_settings": "Afficher les paramètres", "hide_settings": "Masquer les paramètres", "undelete": "Récupérer", "downloading_comments": "téléchargement des commentaires", "you_blocked_community": "Vous avez bloqué cette communauté", "show": "montrer", "plebbit_options": "options plebbit", "general": "général", "more_posts_last_week": "{{count}} publications la semaine dernière {{currentTimeFilterName}}: <1>afficher plus de publications de la semaine dernière", "more_posts_last_month": "{{count}} publications dans {{currentTimeFilterName}}: <1>voir plus de publications du mois dernier", "profile_info": "Votre compte u/{{shortAddress}} a été créé. <1>Définir le nom d'affichage, <2>exporter la sauvegarde, <3>en savoir plus.", "show_all_instead": "Affichage des publications depuis {{timeFilterName}}, <1>afficher tout à la place", "subplebbit_offline_info": "La communauté pourrait être hors ligne et la publication pourrait échouer.", "posts_last_synced_info": "Derniers messages synchronisés {{time}}, la communauté pourrait être hors ligne et la publication pourrait échouer.", "import_account_backup": "<1>importer la sauvegarde du compte", "export_account_backup": "<1>exporter la sauvegarde du compte", "save_reset_changes": "<1>enregistrer ou <2>réinitialiser les modifications", "delete_this_account": "<1>supprimer ce compte", "create_new_account": "<1>créer un nouveau compte", "wallet_number": "portefeuille #{{index}}", "view_more": "voir plus", "submit_community": "Soumettez votre communauté", "hide_avatars_from_replies": "Cacher les avatars des réponses", "yes": "oui", "no": "non", "are_you_sure": "Êtes-vous sûr?", "a_short_title": "Un titre court pour votre communauté", "challenges": "Défis", "challenges_subtitle": "Choisissez un ou plusieurs défis pour prévenir le spam", "add_a_challenge": "Ajouter un défi", "communities_you_moderate": "Communautés que vous modérez", "blur_media": "Flouter les médias marqués comme NSFW/18+", "nsfw_content": "Contenu NSFW", "see_nsfw": "Cliquez pour voir le NSFW", "see_nsfw_spoiler": "Cliquez pour voir le spoiler NSFW", "always_show_nsfw": "Voulez-vous toujours afficher les médias NSFW ?", "always_show_nsfw_notice": "D'accord, nous avons modifié vos préférences pour afficher toujours les médias NSFW.", "content_options": "Options de contenu", "over_18": "Plus de 18?", "must_be_over_18": "Vous devez avoir 18 ans ou plus pour voir cette communauté", "must_be_over_18_explanation": "Vous devez avoir au moins dix-huit ans pour voir ce contenu. Avez-vous plus de dix-huit ans et êtes-vous prêt à voir du contenu pour adultes ?", "no_thank_you": "Non merci", "continue": "Continuer", "download_latest_android": "Télécharger la dernière version d'Android ?", "submitter": "Soumetteur", "block_user": "Bloquer l'utilisateur", "unblock_user": "Débloquer l'utilisateur", "filtering_by_tag": "Filtrage par tag : \"{{tag}}\"", "you_are_moderator": "Vous êtes modérateur de cette communauté", "you_are_admin": "Vous êtes un administrateur de cette communauté", "you_are_owner": "Vous êtes le propriétaire de cette communauté", "looking_for_more_posts": "Recherche de plus de publications", "loading_feed": "Chargement du flux", "downloading_posts": "Téléchargement des publications", "post_is_pending": "Le post est en attente", "post_has_failed": "Le post a échoué", "choose_file": "Choisir un fichier", "uploading": "Téléchargement", "invalid_url_alert": "Le lien fourni n'est pas une URL valide.", "empty_comment_alert": "Impossible de publier un commentaire vide.", "no_subscriptions_message": "<1>{{accountName}}, ceci est votre maison sur Seedit<2>Lorsque vous trouvez une communauté qui vous plaît, <3>rejoignez avec le <4>", "find_communities": "trouver des communautés sur p/all", "community_deleted": "Communauté supprimée avec succès.", "go_to_a_community": "Aller à une communauté", "enter_community_address": "Entrez une adresse de communauté", "all_communities": "toutes les communautés", "search_posts": "chercher des publications", "found_n_results_for": "trouvé {{count}} publications pour \"{{query}}\"", "clear_search": "effacer la recherche", "no_matches_found_for": "aucune correspondance trouvée pour \"{{query}}\"", "searching": "recherche", "hide_default_communities_from_topbar": "Masquer les communautés par défaut de la barre supérieure", "media": "média", "hide_communities_tagged_as_nsfw": "Cacher les communautés étiquetées comme NSFW/18+", "tagged_as_adult": "étiqueté comme \"adulte\"", "tagged_as_gore": "étiqueté comme \"gore\"", "tagged_as_anti": "étiqueté comme \"anti\"", "tagged_as_vulgar": "étiqueté comme \"vulgaire\"", "drop_here_or": "Déposez ici ou", "upload_button_warning": "Le téléchargement automatique est bloqué par la politique CORS de votre navigateur, mais il est disponible sur l'application Seedit Android et l'application de bureau (Win/Mac/Linux).\n\nAllez à la page des liens de téléchargement sur GitHub?", "create_community_warning": "Créer une communauté nécessite l'exécution d'un nœud complet. L'application Seedit pour bureau (Win/Mac/Linux) exécute automatiquement un nœud complet.\n\nAllez à la page des liens de téléchargement sur GitHub?", "avatars": "Avatars", "filtering_by_nsfw": "Filtrage par communautés NSFW", "notifications": "Notifications", "new_replies_received": "nouvelles réponses reçues", "private_key_warning_title": "Votre clé privée sera affichée", "private_key_warning_description": "Vous êtes sur le point de voir les données de votre compte, qui incluent votre clé privée. Vous ne devez jamais partager votre clé privée avec qui que ce soit.", "go_back": "Retour", "loading_editor": "Chargement de l'éditeur", "show_thumbnails_next_to_links": "Afficher les vignettes à côté des liens", "dont_show_thumbnails_next_to_links": "Ne pas afficher les miniatures à côté des liens", "show_thumbnails_based_on_community_media_preferences": "Afficher les vignettes en fonction des préférences médias de cette communauté", "media_previews": "aperçus des médias", "auto_expand_media_previews": "Extension automatique des aperçus médias", "dont_auto_expand_media_previews_on_comments_pages": "Ne pas développer automatiquement les aperçus médias sur les pages de commentaires", "video_player": "Lecteur vidéo", "autoplay_videos_on_comments_page": "Lecture automatique des vidéos sur la page des commentaires", "mute_videos_by_default": "Mettre les vidéos en sourdine par défaut", "expand_media_previews_based_on_community_media_preferences": "Développez les aperçus des médias en fonction des préférences médias de cette communauté", "show_all_nsfw": "afficher tout NSFW", "hide_all_nsfw": "masquer tout NSFW", "tags": "Tags", "moderator_of": "modérateur de", "not_subscriber_nor_moderator": "Vous n'êtes ni abonné ni modérateur d'aucune communauté.", "more_posts_last_year": "{{count}} publications lors du dernier {{currentTimeFilterName}} : <1>afficher plus de publications de l'année dernière", "editor_fallback_warning": "Le éditeur avancé n'a pas pu se charger, utilisation de l'éditeur de texte basique en remplacement.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Vous consultez déjà cette communauté" } ================================================ FILE: public/translations/he/default.json ================================================ { "about": "אודות", "comments": "תגובות", "preferences": "העדפות", "submit": "שלח", "dark": "כהה", "light": "בהיר", "my_communities": "הקהילות שלי", "home": "בית", "all": "הכל", "submitted": "נשלח", "post_by": "על ידי", "post_to": "אל", "post_no_comments": "הוסף תגובה", "post_comment": "תגובה", "post_comments": "תגובות", "share": "שתף", "save": "שמור", "hide": "הסתר", "report": "דווח", "crosspost": "פוסט משולב", "time_1_minute_ago": "לפני דקה", "time_x_minutes_ago": "לפני {{count}} דקות", "time_1_hour_ago": "לפני שעה", "time_x_hours_ago": "לפני {{count}} שעות", "time_1_day_ago": "לפני יום", "time_x_days_ago": "לפני {{count}} ימים", "time_1_month_ago": "לפני חודש", "time_x_months_ago": "לפני {{count}} חודשים", "time_1_year_ago": "לפני שנה", "time_x_years_ago": "לפני {{count}} שנים", "spoiler": "ספוילר", "reply_reply": "תגובה", "reply_sorted_by": "ממוין לפי", "all_comments": "כל {{count}} התגובות", "no_comments": "אין תגובות (עדיין)", "reply_score_singular": "1 נקודה", "reply_score_plural": "{{score}} נקודות", "removed": "הוסר", "one_comment": "1 הערה", "submit_url_description": "הטמע מדיה על ידי פרסום הקישור הישיר שלה (מסתיים ב-.jpg, .gif, .mp4, וכו')", "title": "כותרת", "text": "טקסט", "required": "נדרש", "optional": "אופציונלי", "community_address": "כתובת הקהילה", "submit_choose": "בחר היכן לפרסם", "submit_notice": "אנא היה מודע לכללי הקהילה, ל-seedit אין מנהלים גלובליים.", "challenge_from": "האתגר מ-p/{{subplebbit}}", "challenge_for_post": "לפוסט: \"{{publicationContent}}\"", "challenge_for_reply": "לתגובה ל-u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} מתוך {{total}}", "cancel": "ביטול", "previous": "קודם", "next": "הבא", "loading": "טוען", "pending": "ממתין לאישור", "submit_subscriptions_notice": "קהילות מומלצות", "submit_subscriptions": "הקהילות שאתה מנוי עליהן", "rules_for": "כללים עבור", "no_communities_found": "לא נמצאו קהילות ב-<1>https://github.com/bitsocialhq/lists", "connect_community_notice": "לקישור לקהילה, השתמש ב-🔎 בפינה הימנית העליונה", "options": "אפשרויות", "hide_options": "הסתר אפשרויות", "failed": "נכשל", "time_1_minute": "דקה אחת", "time_x_minutes": "{{count}} דקות", "time_1_hour": "שעה אחת", "time_x_hours": "{{count}} שעות", "time_1_day": "יום אחד", "time_x_days": "{{count}} ימים", "time_1_month": "חודש אחד", "time_x_months": "{{count}} חודשים", "time_1_year": "שנה אחת", "time_x_years": "{{count}} שנים", "submit_post": "שלח פוסט חדש", "create_your_community": "צור את הקהילה שלך", "moderators": "מנהלים", "about_moderation": "אודות צוות ההנהלה", "join": "הצטרף", "leave": "לצאת", "created_by": "נוצר על ידי {{creatorAddress}}", "community_for": "קהילה למשך {{date}}", "post_submitted_on": "הפוסט הזה הוגש בתאריך {{postDate}}", "users_online": "{{count}} משתמשים כאן עכשיו", "point": "נקודה", "points": "נקודות", "share_link": "שתף קישור", "upvoted": "הצביע למעלה", "announcement": "הודעה", "child": "{{childrenCount}} ילד", "children": "{{childrenCount}} ילדים", "moderation": "הגבלה", "interface_language": "שפת ממשק", "theme": "ערכת נושא", "account": "חשבון", "display_name": "שם התצוגה", "crypto_address": "כתובת קריפטו", "check": "בדוק", "crypto_address_verification": "אם כתובת הקריפטו פתרה p2p", "create": "צור", "delete": "מחק", "locked": "נעול", "reason": "סיבה", "sorted_by": "ממוין לפי", "downvoted": "קיבל דירוג שלילי", "hidden": "מוסתר", "saved": "נשמר", "overview": "סקירה", "user_since": "משתמש מאז לפחות {{time}}", "post_karma": "כרמה של הפוסטים", "comment_karma": "כרמה של התגובות", "full_comments": "כל התגובות", "context": "הקשר", "block": "חסום", "post": "פוסט", "unhide": "הצג", "unblock": "ביטול חסימה", "undo": "בטל", "post_hidden": "הפוסט מוסתר", "link_copied": "הקישור הועתק", "block_community": "חסום קהל", "unblock_community": "ביטול חסימת הקהל", "search_feed_post": "חפש פוסט בפיד זה", "from": "מאת", "via": "דרך", "sent": "נשלח", "unread": "לא נקרא", "comment_replies": "תגובות לתגובות", "post_replies": "תגובות לפוסטים", "messages": "הודעות", "inbox": "תיבת דואר נכנס", "mark_all_read": "סמן הכל כנקרא", "comment_reply": "הגב לתגובה", "post_reply": "הגב לפוסט", "show_parent": "הצג את הפוסט המתייחס אליו", "no_posts": "אין פוסטים", "media_url": "כתובת מדיה", "post_locked_info": "הפוסט הזה הוא {{state}}. לא תוכל להגיב.", "members_count": "{{count}} חברים", "communities": "קהילה", "edit": "עריכה", "moderator": "מנהל", "description": "תיאור", "rules": "כללים", "save_options": "שמירת האפשרויות", "logo": "לוגו", "address": "כתובת", "nothing_found": "נראה שאין כאן שום דבר", "stickied_comment": "תגובה מוצבת", "posts_last_synced": "פוסטים אחרונים שנסנכרנו {{dateAgo}}", "community_settings": "הגדרות הקהילה", "moderation_tools": "כלי ניטור", "submit_to": "שלח אל <1>{{link}}", "edit_subscriptions": "ערוך מנויים", "delete_confirm": "האם אתה בטוח שברצונך למחוק את {{value}}?", "saving": "שמירה", "deleted": "נמחק", "online": "מקוון", "offline": "מנותק", "subscriber": "מנוי", "join_communities_notice": "לחץ על הכפתורים <1>{{join}} או <2>{{leave}} כדי לבחור אילו קהילות יוצגו בעמוד הבית.", "below_subscribed": "למטה הן הקהילות שנרשמת אליהן.", "not_subscribed": "אתה עדיין לא רשום לשום קהילה.", "below_moderator_access": "למטה תוכלו למצוא את הקהילות בהם יש לך גישה כמנהל.", "not_moderator": "אינך מודרטור בקהילה אחת.", "create_community": "צור קהילה", "single_comment_notice": "אתה צופה בנושא של תגובה אחת בלבד", "single_comment_link": "צפייה בשאר התגובות", "owner_settings_notice": "רק בעל הקהילה יכול לערוך את ההגדרות שלה.", "preview": "תצוגה מקדימה", "shown_in_sidebar": "מוצג בסרגל הצד של הקהילה שלך", "community_logo_info": "הגדר לוגו של הקהילה באמצעות הקישור הישיר לתמונה (מסתיים ב-.jpg, .png)", "moderators_setting_info": "תאפשר למשתמשים אחרים להנהיג ולפרסם בלי אתגרים", "vote": "להצביע", "passing": "עובר", "rejecting": "דחיה", "add_moderator": "הוסף מנהל", "add_rule": "הוסף כלל", "json_settings": "הגדרות JSON", "json_settings_info": "העתיק או הדביק מהר את ההגדרות של הקהילה", "address_setting_info": "הגדר כתובת קהילה נקראת באמצעות תחום קריפטוגרפי", "enter_crypto_address": "אנא הזן כתובת קריפטו תקף.", "check_for_updates": "<1>בדוק עבור עדכונים", "refresh_to_update": "רענן את העמוד כדי לעדכן", "latest_development_version": "אתה נמצא בגרסת הפיתוח האחרונה, קומיט {{commit}}. כדי להשתמש בגרסה יציבה, עבור אל {{link}}.", "latest_stable_version": "אתה נמצא בגרסה היציבה האחרונה, seedit v{{version}}.", "new_development_version": "גרסת פיתוח חדשה זמינה, קומיט {{newCommit}}. אתה משתמש בקומיט {{oldCommit}}.", "new_stable_version": "גרסה יציבה חדשה זמינה, seedit v{{newVersion}}. אתה משתמש seedit v{{oldVersion}}.", "download_latest_desktop": "הורד את הגרסה האחרונה לשולחן העבודה כאן: {{link}}", "contribute_on_github": "לתרום ב-GitHub", "no_media_found": "לא נמצאו מדיה", "no_image_found": "לא נמצאה תמונה", "warning_spam": "אזהרה: לא נבחר אף אתגר, הקהילה חשופה לתקיפות דואר זבל.", "hide_help": "הסתר עזרה", "formatting_help": "עזרה בעיצוב", "you_see": "אתה רואה", "you_type": "אתה כותב", "italics": "נטוי", "bold": "מודגש", "quoted_text": "טקסט מובא", "item": "פריט", "delete_community": "מחק את הקהילה", "delete_community_description": "מחק את הקהילה הזו לצמיתות. התוכן שלו עדיין עשוי להיות מזורע על ידי עמיתים", "add": "הוסף", "owner": "בעלים", "admin": "מנהל", "settings_saved": "הגדרות נשמרו עבור p/{{subplebbitAddress}}", "continue_thread": "המשך את השרשור הזה", "mod_edit_reason": "סיבת עריכת המנהל", "double_confirm": "האם אתה באמת בטוח? הפעולה הזו היא לא הפיכה.", "crypto_address_not_yours": "כתובת המטבע הקריפטוגרפי שייכת לחשבון אחר.", "crypto_address_yours": "כתובת המטבע הקריפטוגרפי שייכת לחשבון זה.", "crypto_address_not_resolved": "כתובת המטבע הקריפטוגרפית עדיין לא נפתרה.", "submit_to_string": "שליחה אל {{string}}", "page_not_found": "הדף לא נמצא", "not_found_description": "הדף שביקשת אינו קיים", "last_edited": "עריכה אחרונה {{timestamp}}", "view_spoiler": "הצג ספוילר", "default_communities": "קהילות ברירת מחדל", "avatar": "אוואטר", "pending_edit": "עריכה ממתינה", "failed_edit": "עריכה נכשלה", "node_stats": "סטטיסטיקות הצומת", "version": "גרסה", "edit_reason": "סיבת העריכה", "view_parent_comment": "הצג תגובה הורה", "chain_ticker": "ציון בלוקצ'יין", "token_address_whitelist": "כתובת הטוקן (<1>רק רשימה לבנה)", "token_id": "מזהה טוקן", "paste_signature": "הדבק חתימה", "copy_message_etherscan": "<1>{{copy}} הודעה לחתימה ב-<2>etherscan", "copy": "העתק", "copied": "הועתק", "missing_chain_ticker": "ציון בלוקצ'יין חסר", "missing_token_address": "כתובת הטוקן חסרה", "missing_token_id": "מזהה הטוקן חסר", "missing_signature": "חתימה חסרה", "edited_timestamp": "נערך {{timestamp}}", "ban_user_for": "אסור למשתמש למשך <1> יום", "crypto_wallets": "ארנק קריפטו", "wallet_address": "כתובת הארנק", "remove": "הסר", "add_wallet": "<1>הוסף ארנק קריפטו", "show_settings": "הצג הגדרות", "hide_settings": "הסתר הגדרות", "undelete": "שחזור מחיקה", "downloading_comments": "מוריד תגובות", "you_blocked_community": "חסמת את הקהילה הזו", "show": "תצוגה", "plebbit_options": "אפשרויות plebbit", "general": "כללי", "more_posts_last_week": "{{count}} פוסטים בשבוע האחרון {{currentTimeFilterName}}: <1>הצג פוסטים נוספים מהשבוע שעבר", "more_posts_last_month": "{{count}} פוסטים ב{{currentTimeFilterName}}: <1>הראה פוסטים נוספים מהחודש שעבר", "profile_info": "החשבון שלך u/{{shortAddress}} נוצר. <1>קבע שם תצוגה, <2>ייצא גיבוי, <3>למד עוד.", "show_all_instead": "מראה פוסטים מאז {{timeFilterName}}, <1>הצג הכל במקום זאת", "subplebbit_offline_info": "הקהילה עלולה להיות במצב לא מחובר והפרסום עלול להיכשל.", "posts_last_synced_info": "הפוסטים סנכרנו לאחרונה {{time}}, הקהילה עשויה להיות במצב offline וההפרסום עלול להיכשל.", "import_account_backup": "<1>יבוא גיבוי חשבון", "export_account_backup": "<1>ייצוא גיבוי חשבון", "save_reset_changes": "<1>שמור או <2>אפס שינויים", "delete_this_account": "<1>מחק את החשבון הזה", "create_new_account": "<1>צור חשבון חדש", "wallet_number": "ארנק #{{index}}", "view_more": "ראה עוד", "submit_community": "שלח את הקהילה שלך", "hide_avatars_from_replies": "הסתרת תמונות פרופיל בתשובות", "yes": "כן", "no": "לא", "are_you_sure": "האם אתה בטוח?", "a_short_title": "כותרת קצרה עבור הקהילה שלך", "challenges": "אתגרים", "challenges_subtitle": "בחר אתגר אחד או יותר כדי למנוע דואר זבל", "add_a_challenge": "הוסף אתגר", "communities_you_moderate": "קהילות שאתה מנהל", "blur_media": "הטשטש מדיה שסומנה כ-NSFW/18+", "nsfw_content": "תוכן NSFW", "see_nsfw": "לחץ כדי לראות NSFW", "see_nsfw_spoiler": "לחץ כדי לראות את ה-NSFW ספוילר", "always_show_nsfw": "האם תמיד להציג מדיה NSFW?", "always_show_nsfw_notice": "אוקי, שינינו את ההעדפות שלך להציג תמיד מדיה NSFW.", "content_options": "אפשרויות תוכן", "over_18": "מעל גיל 18?", "must_be_over_18": "אתה חייב להיות מעל גיל 18 כדי לראות את הקהילה הזאת", "must_be_over_18_explanation": "עליך להיות לפחות בן 18 על מנת לצפות בתוכן הזה. האם אתה מעל גיל 18 ומוכן לראות תוכן למבוגרים?", "no_thank_you": "לא תודה", "continue": "המשך", "download_latest_android": "להוריד את הגרסה האחרונה של אנדרואיד?", "submitter": "שולח", "block_user": "לחסום משתמש", "unblock_user": "שחרר חסימה של משתמש", "filtering_by_tag": "מיון לפי תג: \"{{tag}}\"", "you_are_moderator": "אתה מנהל קהילה זו", "you_are_admin": "אתה מנהל מערכת של קהילה זו", "you_are_owner": "אתה הבעלים של קהילה זו", "looking_for_more_posts": "מחפש פוסטים נוספים", "loading_feed": "טוען פיד", "downloading_posts": "מוריד פוסטים", "post_is_pending": "הפוסט ממתין", "post_has_failed": "הפוסט נכשל", "choose_file": "בחר קובץ", "uploading": "מעלה", "invalid_url_alert": "הלינק שסופק אינו כתובת URL חוקית.", "empty_comment_alert": "לא ניתן לפרסם תגובה ריקה.", "no_subscriptions_message": "<1>{{accountName}}, זו הבית שלך ב-Seedit<2>כשאתה מוצא קהילה שאתה אוהב, <3>הצטרף עם ה<4>", "find_communities": "מצא קהילות ב-p/all", "community_deleted": "הקהילה נמחקה בהצלחה.", "go_to_a_community": "עבור לקהילה", "enter_community_address": "הזן כתובת קהילה", "all_communities": "כל הקהילות", "search_posts": "חפש פוסטים", "found_n_results_for": "נמצאו {{count}} פוסטים עבור \"{{query}}\"", "clear_search": "נקה חיפוש", "no_matches_found_for": "לא נמצאו תוצאות עבור \"{{query}}\"", "searching": "מחפש", "hide_default_communities_from_topbar": "הסתר קהילות ברירת מחדל מהסרגל העליון", "media": "מדיה", "hide_communities_tagged_as_nsfw": "הסתר קהילות שסומנו כ-NSFW/18+", "tagged_as_adult": "סווג כ\"מותאם לבוגרים\"", "tagged_as_gore": "מסומן כ-\"גורה\"", "tagged_as_anti": "מתויג כ\"נגד\"", "tagged_as_vulgar": "סומן כ-\"גס\"", "drop_here_or": "הנח כאן או", "upload_button_warning": "העלאה אוטומטית חסומה על ידי מדיניות ה-CORS של הדפדפן שלך, אך היא זמינה באפליקציית Seedit לאנדרואיד ובאפליקציית הדסקטופ (Win/Mac/Linux).\n\nעבור לדף קישורי ההורדה ב-GitHub?", "create_community_warning": "יצירת קהילה דורשת הפעלת צומת מלא. אפליקציית שולחן העבודה של Seedit (Win/Mac/Linux) מפעילה צומת מלא באופן אוטומטי.\n\nעבור לדף קישורי ההורדה ב-GitHub?", "avatars": "תמונות פרופיל", "filtering_by_nsfw": "סינון לפי קהילות NSFW", "notifications": "הודעות", "new_replies_received": "תגובות חדשות התקבלו", "private_key_warning_title": "המפתח הפרטי שלך יוצג", "private_key_warning_description": "אתה עומד לצפות בנתוני החשבון שלך, הכוללים את המפתח הפרטי שלך. לעולם לא כדאי לשתף את המפתח הפרטי שלך עם אף אחד.", "go_back": "חזור", "loading_editor": "טוען עורך", "show_thumbnails_next_to_links": "הצג תמונות ממוזערות לצד קישורים", "dont_show_thumbnails_next_to_links": "אל תציג תמונות ממוזערות ליד קישורים", "show_thumbnails_based_on_community_media_preferences": "הצג תמונות ממוזערות בהתאם להעדפות המדיה של הקהילה", "media_previews": "תצוגות מדיה", "auto_expand_media_previews": "הרחבת תצוגות מקדימות של מדיה אוטומטית", "dont_auto_expand_media_previews_on_comments_pages": "אל תפתח אוטומטית תצוגות מדיה מקדימות בדפי תגובות", "video_player": "נגן וידאו", "autoplay_videos_on_comments_page": "השמעת וידאו אוטומטית בדף ההערות", "mute_videos_by_default": "כיבוי קול לסרטונים כבררת מחדל", "expand_media_previews_based_on_community_media_preferences": "הרחב תצוגות מדיה בהתאם להעדפות המדיה של הקהילה", "show_all_nsfw": "הצג הכל NSFW", "hide_all_nsfw": "הסתר את כל התוכן הלא בטוח", "tags": "תגיות", "moderator_of": "מנהל של", "not_subscriber_nor_moderator": "אתה לא מנוי ולא מפקח על שום קהילה.", "more_posts_last_year": "{{count}} פוסטים ב{{currentTimeFilterName}} האחרון: <1>הצג עוד פוסטים מהשנה שעברה", "editor_fallback_warning": "העורך המתקדם נכשל בטעינה, משתמשים בעורך טקסט בסיסי כפתרון חלופי.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "אתה כבר צופה בקהילה זו" } ================================================ FILE: public/translations/hi/default.json ================================================ { "about": "के बारे में", "comments": "टिप्पणियां", "preferences": "प्राथमिकताएँ", "submit": "भेजें", "dark": "अंधेरा", "light": "हल्का", "my_communities": "मेरे समुदाय", "home": "होम", "all": "सब", "submitted": "भेजा गया", "post_by": "द्वारा", "post_to": "को", "post_no_comments": "टिप्पणी करें", "post_comment": "टिप्पणी", "post_comments": "टिप्पणियां", "share": "शेयर करें", "save": "सहेजें", "hide": "छिपाएं", "report": "रिपोर्ट करें", "crosspost": "क्रॉसपोस्ट", "time_1_minute_ago": "1 मिनट पहले", "time_x_minutes_ago": "{{count}} मिनट पहले", "time_1_hour_ago": "1 घंटा पहले", "time_x_hours_ago": "{{count}} घंटे पहले", "time_1_day_ago": "1 दिन पहले", "time_x_days_ago": "{{count}} दिन पहले", "time_1_month_ago": "1 महीना पहले", "time_x_months_ago": "{{count}} महीने पहले", "time_1_year_ago": "1 साल पहले", "time_x_years_ago": "{{count}} साल पहले", "spoiler": "स्पॉयलर", "reply_reply": "उत्तर", "reply_sorted_by": "इसके अनुसार क्रमबद्ध", "all_comments": "सभी {{count}} टिप्पणियां", "no_comments": "कोई टिप्पणी नहीं (अब तक)", "reply_score_singular": "1 अंक", "reply_score_plural": "{{score}} अंक", "removed": "हटा दिया गया", "one_comment": "1 टिप्पणी", "submit_url_description": ".jpg, .gif, .mp4 आदि में समाप्त होने वाले सीधे लिंक को पोस्ट करके मीडिया एम्बेड करें", "title": "शीर्षक", "text": "पाठ", "required": "आवश्यक", "optional": "वैकल्पिक", "community_address": "समुदाय का पता", "submit_choose": "पोस्ट करने का स्थान चुनें", "submit_notice": "कृपया समुदाय के नियमों का पालन करें, seedit में वैश्विक प्रशासक नहीं हैं।", "challenge_from": "p/{{subplebbit}} से चैलेंज", "challenge_for_post": "पोस्ट के लिए: \"{{publicationContent}}\"", "challenge_for_reply": "u/{{parentAddress}} के जवाब के लिए: \"{{publicationContent}}\"", "challenge_counter": "{{index}} में से {{total}}", "cancel": "रद्द करें", "previous": "पिछला", "next": "अगला", "loading": "लोड हो रहा है", "pending": "लंबित", "submit_subscriptions_notice": "सुझाई गई कम्युनिटीज़", "submit_subscriptions": "आपके सब्सक्राइब किए गए समुदाय", "rules_for": "के लिए नियम", "no_communities_found": "<1>https://github.com/bitsocialhq/lists पर कोई समुदाय नहीं मिला", "connect_community_notice": "किसी समुदाय से जुड़ने के लिए, ऊपर दाईं ओर 🔎 का उपयोग करें", "options": "विकल्प", "hide_options": "विकल्प छुपाएँ", "failed": "विफल", "time_1_minute": "1 मिनट", "time_x_minutes": "{{count}} मिनट", "time_1_hour": "1 घंटा", "time_x_hours": "{{count}} घंटे", "time_1_day": "1 दिन", "time_x_days": "{{count}} दिन", "time_1_month": "1 महीना", "time_x_months": "{{count}} महीने", "time_1_year": "1 वर्ष", "time_x_years": "{{count}} वर्ष", "submit_post": "नई पोस्ट सबमिट करें", "create_your_community": "अपनी खुद की समुदाय बनाएं", "moderators": "मॉडरेटर्स", "about_moderation": "मॉडरेशन टीम के बारे में", "join": "शामिल हों", "leave": "छोड़ो", "created_by": "द्वारा बनाई गई {{creatorAddress}}", "community_for": "{{date}} के लिए एक समुदाय", "post_submitted_on": "इस पोस्ट को {{postDate}} को जमा किया गया था", "users_online": "{{count}} यहां अभी {{count}} उपयोगकर्ता हैं", "point": "बिंदु", "points": "बिंदु", "share_link": "लिंक साझा करें", "upvoted": "ने ऊपर मत दिया", "announcement": "घोषणा", "child": "{{childrenCount}} बच्चा", "children": "{{childrenCount}} बच्चे", "moderation": "संयंत्रणा", "interface_language": "इंटरफेस भाषा", "theme": "थीम", "account": "खाता", "display_name": "प्रदर्शन नाम", "crypto_address": "क्रिप्टो पता", "check": "जाँच करें", "crypto_address_verification": "यदि क्रिप्टो पता p2p द्वारा हल किया गया है", "create": "बनाएँ", "delete": "हटाएँ", "locked": "लॉक किया गया", "reason": "कारण", "sorted_by": "क्रमित द्वारा", "downvoted": "नकारात्मक वोट दिया गया", "hidden": "छुपा हुआ", "saved": "सहेजा गया", "overview": "अवलोकन", "user_since": "कम से कम {{time}} से उपयोगकर्ता", "post_karma": "पोस्ट कर्मा", "comment_karma": "कमेंट कर्मा", "full_comments": "सभी टिप्पणियाँ", "context": "संदर्भ", "block": "ब्लॉक", "post": "पोस्ट", "unhide": "दिखाएं", "unblock": "ब्लॉक को खोलें", "undo": "पूर्ववत करें", "post_hidden": "पोस्ट छुपी हुई", "link_copied": "लिंक कॉपी किया गया", "block_community": "समुदाय को ब्लॉक करें", "unblock_community": "समुदाय अवरोध को हटाएं", "search_feed_post": "इस फ़ीड में एक पोस्ट खोजें", "from": "से", "via": "के माध्यम से", "sent": "भेजा गया", "unread": "अपठित", "comment_replies": "टिप्पणियों के जवाब", "post_replies": "पोस्ट के जवाब", "messages": "संदेश", "inbox": "इनबॉक्स", "mark_all_read": "सभी को पढ़ा हुआ चिह्नित करें", "comment_reply": "कमेंट का जवाब दें", "post_reply": "पोस्ट का जवाब दें", "show_parent": "संदर्भित पोस्ट दिखाएं", "no_posts": "कोई पोस्ट नहीं", "media_url": "मीडिया यूआरएल", "post_locked_info": "यह पोस्ट {{state}} है। आप टिप्पणी नहीं कर पाएंगे।", "members_count": "{{count}} सदस्य", "communities": "समुदाय", "edit": "संपादित करें", "moderator": "मॉडरेटर", "description": "विवरण", "rules": "नियम", "save_options": "विकल्प सहेजें", "logo": "लोगो", "address": "पता", "nothing_found": "ऐसा कुछ नहीं दिखता है कि यहां कुछ है", "stickied_comment": "पिन किया गया टिप्पणी", "posts_last_synced": "पोस्ट्स अंतिम बार {{dateAgo}} को सिंक की गईं", "community_settings": "समुदाय सेटिंग्स", "moderation_tools": "मॉडरेशन टूल्स", "submit_to": "जमा करें <1>{{link}}", "edit_subscriptions": "सदस्यता संपादित करें", "delete_confirm": "क्या आप निश्चित हैं कि आप {{value}} को हटाना चाहते हैं?", "saving": "सहेज रहा है", "deleted": "हटा दिया गया", "online": "ऑनलाइन", "offline": "ऑफ़लाइन", "subscriber": "सदस्य", "join_communities_notice": "होम फीड पर कौन सी कम्युनिटी दिखाई देनी चाहिए, इसे चुनने के लिए <1>{{join}} या <2>{{leave}} बटन पर क्लिक करें।", "below_subscribed": "नीचे वे समुदाय हैं जिनमें आपने सदस्य बनाया है।", "not_subscribed": "आप अब तक किसी समुदाय के सदस्य नहीं हैं।", "below_moderator_access": "नीचे वे समुदाय हैं जिनकी आपके पास मॉडरेटर एक्सेस है।", "not_moderator": "आप किसी भी समुदाय में मॉडरेटर नहीं हैं।", "create_community": "समुदाय बनाएं", "single_comment_notice": "आप केवल एक टिप्पणी की थ्रेड देख रहे हैं", "single_comment_link": "बाकी टिप्पणियों को देखें", "owner_settings_notice": "सिर्फ समुदाय के मालिक ही इसकी सेटिंग्स को संपादित कर सकते हैं।", "preview": "पूर्वावलोकन", "shown_in_sidebar": "आपके समुदाय के साइडबार में दिखाया जाता है", "community_logo_info": "अपने समुदाय का लोगो सीधे छवि लिंक का उपयोग करके सेट करें (जो .jpg, .png में समाप्त होता है)", "moderators_setting_info": "अन्य उपयोगकर्ताओं को बिना चुनौतियों के मॉडरेट और पोस्ट करने दें", "vote": "वोट दें", "passing": "बरताना", "rejecting": "अस्वीकृत करना", "add_moderator": "मॉडरेटर जोड़ें", "add_rule": "नियम जोड़ें", "json_settings": "JSON सेटिंग्स", "json_settings_info": "समुदाय की सेटिंग्स को तेजी से कॉपी या पेस्ट करें", "address_setting_info": "क्रिप्टो डोमेन का उपयोग करके एक पठनीय समुदाय पता सेट करें", "enter_crypto_address": "कृपया एक मान्य क्रिप्टो पता दर्ज करें।", "check_for_updates": "<1>जाँचें अपडेट के लिए", "refresh_to_update": "अपडेट करने के लिए पृष्ठ को रिफ्रेश करें", "latest_development_version": "आप नवीनतम विकास संस्करण पर हैं, कमिट {{commit}}। स्थिर संस्करण का उपयोग करने के लिए, {{link}} पर जाएं।", "latest_stable_version": "आप नवीनतम स्थिर संस्करण पर हैं, seedit v{{version}}।", "new_development_version": "नई डेवलपमेंट संस्करण उपलब्ध है, कमिट {{newCommit}}। आप कमिट {{oldCommit}} का उपयोग कर रहे हैं।", "new_stable_version": "नई स्थिर संस्करण उपलब्ध है, seedit v{{newVersion}}। आप seedit v{{oldVersion}} का उपयोग कर रहे हैं।", "download_latest_desktop": "यहां सबसे नवीन डेस्कटॉप संस्करण डाउनलोड करें: {{link}}", "contribute_on_github": "GitHub पर सहयोग करें", "no_media_found": "कोई मीडिया नहीं मिला", "no_image_found": "कोई चित्र नहीं मिला", "warning_spam": "चेतावनी: कोई चुनौती चयनित नहीं की गई, समुदाय स्पैम हमलों के लिए आश्वस्त है।", "hide_help": "मदद छुपाएं", "formatting_help": "स्वरूपण सहायता", "you_see": "आप देखें", "you_type": "आप टाइप करते हैं", "italics": "तिरछी", "bold": "मोटा", "quoted_text": "उद्धृत पाठ", "item": "आइटम", "delete_community": "समुदाय को हटाएं", "delete_community_description": "इस समुदाय को स्थायी रूप से हटा दें। इसकी सामग्री अभी भी सहपीर्स द्वारा बीजित हो सकती है", "add": "जोड़ें", "owner": "मालिक", "admin": "व्यवस्थापक", "settings_saved": "प/{{subplebbitAddress}} के लिए सेटिंग्स सहेजी गईं", "continue_thread": "इस धागे को जारी रखें", "mod_edit_reason": "मॉड संपादन कारण", "double_confirm": "क्या आप वास्तव में सुनिश्चित हैं? यह क्रिया अपरिवर्तनीय है।", "crypto_address_not_yours": "क्रिप्टो पता दूसरे खाते से संबंधित है।", "crypto_address_yours": "क्रिप्टो पता इस खाते से संबंधित है।", "crypto_address_not_resolved": "क्रिप्टो पता अभी तक हल नहीं किया गया है।", "submit_to_string": "{{string}} को सबमिट करें", "page_not_found": "पृष्ठ नहीं मिला", "not_found_description": "आपके द्वारा अनुरोधित पृष्ठ मौजूद नहीं है", "last_edited": "अंतिम संशोधन {{timestamp}}", "view_spoiler": "स्पॉइलर देखें", "default_communities": "डिफ़ॉल्ट समुदाय", "avatar": "अवतार", "pending_edit": "अपूर्ण संपादन", "failed_edit": "विफल संपादन", "node_stats": "नोड आंकड़े", "version": "संस्करण", "edit_reason": "संपादन का कारण", "view_parent_comment": "मूल टिप्पणी देखें", "chain_ticker": "श्रृंखला टिकर", "token_address_whitelist": "टोकन पता (<1>केवल सफेद सूची)", "token_id": "टोकन आईडी", "paste_signature": "हस्ताक्षर पेस्ट करें", "copy_message_etherscan": "<1>{{copy}} संदेश को <2>etherscan पर हस्ताक्षर करें", "copy": "कॉपी", "copied": "कॉपी किया गया", "missing_chain_ticker": "गायब श्रृंखला टिकर", "missing_token_address": "गायब टोकन पता", "missing_token_id": "गायब टोकन आईडी", "missing_signature": "गायब हस्ताक्षर", "edited_timestamp": "संपादित {{timestamp}}", "ban_user_for": "उपयोगकर्ता को <1> दिनों के लिए प्रतिबंधित करें", "crypto_wallets": "क्रिप्टो वॉलेट्स", "wallet_address": "वॉलेट पता", "remove": "हटाएं", "add_wallet": "<1>को जोड़ें एक क्रिप्टो वॉलेट", "show_settings": "सेटिंग्स दिखाएं", "hide_settings": "सेटिंग्स छुपाएं", "undelete": "डिलीट को वापस लाओ", "downloading_comments": "टिप्पणियाँ डाउनलोड हो रही हैं", "you_blocked_community": "आपने इस समुदाय को ब्लॉक कर दिया है", "show": "दिखाएँ", "plebbit_options": "plebbit विकल्प", "general": "सामान्य", "more_posts_last_week": "{{count}} पोस्ट पिछले {{currentTimeFilterName}}: <1>और अधिक पोस्ट पिछले सप्ताह से दिखाएं", "more_posts_last_month": "{{count}} पोस्ट {{currentTimeFilterName}} में: <1>दूसरे महीने के और पोस्ट दिखाएं", "profile_info": "आपका खाता u/{{shortAddress}} बनाया गया था। <1>प्रदर्शन नाम सेट करें, <2>बैकअप निर्यात करें, <3>अधिक जानें.", "show_all_instead": "आप {{timeFilterName}} से पोस्ट देख रहे हैं, <1>इसके बजाय सभी दिखाएं", "subplebbit_offline_info": "समुदाय ऑफलाइन हो सकता है और प्रकाशन विफल हो सकता है।", "posts_last_synced_info": "पोस्ट आखिरी बार {{time}} को सिंक किए गए थे, समुदाय ऑफ़लाइन हो सकता है और प्रकाशन विफल हो सकता है।", "import_account_backup": "<1>आयात खाता बैकअप", "export_account_backup": "<1>निर्यात खाता बैकअप", "save_reset_changes": "<1>सहेजें या <2>रीसेट परिवर्तन", "delete_this_account": "<1>हटाएँ यह खाता", "create_new_account": "<1>नया बनाएं खाता", "wallet_number": "वॉलेट #{{index}}", "view_more": "और देखें", "submit_community": "अपनी समुदाय सबमिट करें", "hide_avatars_from_replies": "उत्तर से अवतार छुपाएं", "yes": "हां", "no": "नहीं", "are_you_sure": "क्या आप सुनिश्चित हैं?", "a_short_title": "आपके समुदाय के लिए एक छोटा शीर्षक", "challenges": "चुनौतियाँ", "challenges_subtitle": "स्पैम को रोकने के लिए एक या अधिक चुनौतियाँ चुनें", "add_a_challenge": "एक चुनौती जोड़ें", "communities_you_moderate": "आप जो समुदाय मॉडरेट करते हैं", "blur_media": "NSFW/18+ के रूप में चिह्नित मीडिया को ब्लर करें", "nsfw_content": "NSFW सामग्री", "see_nsfw": "NSFW देखने के लिए क्लिक करें", "see_nsfw_spoiler": "NSFW स्पॉयलर देखने के लिए क्लिक करें", "always_show_nsfw": "क्या आप हमेशा NSFW मीडिया दिखाना चाहते हैं?", "always_show_nsfw_notice": "ठीक है, हमने आपकी प्राथमिकताएँ हमेशा NSFW मीडिया दिखाने के लिए बदल दी हैं।", "content_options": "सामग्री विकल्प", "over_18": "18 से ऊपर?", "must_be_over_18": "आपको इस समुदाय को देखने के लिए 18+ होना चाहिए", "must_be_over_18_explanation": "इस सामग्री को देखने के लिए आपको कम से कम अठारह साल का होना चाहिए। क्या आप अठारह साल से ऊपर हैं और वयस्क सामग्री देखने के इच्छुक हैं?", "no_thank_you": "नहीं, धन्यवाद", "continue": "जारी रखें", "download_latest_android": "नवीनतम एंड्रॉइड संस्करण डाउनलोड करें?", "submitter": "प्रस्तावक", "block_user": "उपयोगकर्ता को ब्लॉक करें", "unblock_user": "उपयोगकर्ता को अनब्लॉक करें", "filtering_by_tag": "टैग द्वारा फ़िल्टरिंग: \"{{tag}}\"", "you_are_moderator": "आप इस समुदाय के मॉडरेटर हैं", "you_are_admin": "आप इस समुदाय के व्यवस्थापक हैं", "you_are_owner": "आप इस समुदाय के मालिक हैं", "looking_for_more_posts": "अधिक पोस्ट ढूंढ रहे हैं", "loading_feed": "लोडिंग फीड", "downloading_posts": "पोस्ट डाउनलोड हो रहे हैं", "post_is_pending": "पोस्ट लंबित है", "post_has_failed": "पोस्ट विफल हो गया", "choose_file": "फाइल चुनें", "uploading": "अपलोड हो रहा है", "invalid_url_alert": "प्रदत्त लिंक एक वैध URL नहीं है।", "empty_comment_alert": "खाली टिप्पणी पोस्ट नहीं कर सकते।", "no_subscriptions_message": "<1>{{accountName}}, यह Seedit पर आपका घर है<2>जब आप कोई समुदाय पाते हैं जो आपको पसंद आए, <3>उससे जुड़ें <4>", "find_communities": "p/all पर समुदाय खोजें", "community_deleted": "समुदाय सफलतापूर्वक हटा दिया गया।", "go_to_a_community": "एक समुदाय पर जाएं", "enter_community_address": "एक समुदाय का पता दर्ज करें", "all_communities": "सभी समुदाय", "search_posts": "पोस्ट खोजें", "found_n_results_for": " \"{{query}}\" के लिए {{count}} पोस्ट मिलीं", "clear_search": "खोज साफ करें", "no_matches_found_for": "\"{{query}}\" के लिए कोई मेल नहीं मिला", "searching": "खोज रहा है", "hide_default_communities_from_topbar": "टॉपबार से डिफ़ॉल्ट समुदायों को छिपाएं", "media": "मीडिया", "hide_communities_tagged_as_nsfw": "NSFW/18+ के रूप में टैग की गई समुदायों को छिपाएं", "tagged_as_adult": "\"एडल्ट\" के रूप में टैग किया गया", "tagged_as_gore": "\"गोर\" के रूप में चिह्नित", "tagged_as_anti": "\"एंटी\" के रूप में टैग किया गया", "tagged_as_vulgar": "को \"वुल्गर\" के रूप में टैग किया गया", "drop_here_or": "यहां छोड़ें या", "upload_button_warning": "ऑटो-अपलोड आपके ब्राउज़र की CORS नीति द्वारा अवरुद्ध है, लेकिन यह Seedit Android ऐप और डेस्कटॉप ऐप (Win/Mac/Linux) पर उपलब्ध है।\n\nGitHub पर डाउनलोड लिंक पृष्ठ पर जाएं?", "create_community_warning": "एक समुदाय बनाने के लिए एक पूर्ण नोड चलाना आवश्यक है। Seedit डेस्कटॉप ऐप (Win/Mac/Linux) स्वचालित रूप से एक पूर्ण नोड चलाता है।\n\nGitHub पर डाउनलोड लिंक पृष्ठ पर जाएं?", "avatars": "अवतार", "filtering_by_nsfw": "NSFW समुदायों द्वारा फ़िल्टरिंग", "notifications": "सूचनाएँ", "new_replies_received": "नई प्रतिक्रियाएँ प्राप्त हुईं", "private_key_warning_title": "आपकी निजी कुंजी प्रदर्शित होगी", "private_key_warning_description": "आप अपने खाते का डेटा देखने वाले हैं, जिसमें आपका निजी कुंजी शामिल है। आपको अपनी निजी कुंजी किसी के साथ कभी साझा नहीं करनी चाहिए।", "go_back": "वापस जाएं", "loading_editor": "एडिटर लोड हो रहा है", "show_thumbnails_next_to_links": "लिंक के बगल में थंबनेल दिखाएं", "dont_show_thumbnails_next_to_links": "लिंक के पास थंबनेल न दिखाएं", "show_thumbnails_based_on_community_media_preferences": "उस समुदाय की मीडिया प्राथमिकताओं के आधार पर थंबनेल दिखाएं", "media_previews": "मीडिया पूर्वावलोकन", "auto_expand_media_previews": "मीडिया प्रीव्यू स्वतः विस्तारित करें", "dont_auto_expand_media_previews_on_comments_pages": "टिप्पणी पृष्ठों पर मीडिया पूर्वावलोकन को स्वचालित रूप से विस्तार न करें", "video_player": "वीडियो प्लेयर", "autoplay_videos_on_comments_page": "टिप्पणियों के पृष्ठ पर वीडियो स्वचालित रूप से चलाएं", "mute_videos_by_default": "वीडियो को डिफ़ॉल्ट रूप से म्यूट करें", "expand_media_previews_based_on_community_media_preferences": "उस समुदाय की मीडिया प्राथमिकताओं के आधार पर मीडिया पूर्वावलोकन का विस्तार करें", "show_all_nsfw": "सभी NSFW दिखाएं", "hide_all_nsfw": "सभी NSFW छुपाएं", "tags": "टैग", "moderator_of": "मॉडरेटर", "not_subscriber_nor_moderator": "आप किसी भी समुदाय के सदस्य या मॉडरेटर नहीं हैं।", "more_posts_last_year": "{{count}} पोस्ट पिछले {{currentTimeFilterName}} में: <1>पिछले साल के और पोस्ट दिखाएं", "editor_fallback_warning": "उन्नत संपादक लोड करने में विफल, बैकअप के रूप में मूल पाठ संपादक का उपयोग कर रहे हैं।", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "आप पहले से ही इस समुदाय को देख रहे हैं" } ================================================ FILE: public/translations/hu/default.json ================================================ { "about": "Ról", "comments": "hozzászólások", "preferences": "Beállítások", "submit": "Küldés", "dark": "Sötét", "light": "Világos", "my_communities": "Saját közösségeim", "home": "Főoldal", "all": "Összes", "submitted": "Beküldve", "post_by": "Által", "post_to": "Címzett", "post_no_comments": "Hozzászólás", "post_comment": "Hozzászólás", "post_comments": "Hozzászólások", "share": "Megosztás", "save": "Mentés", "hide": "Elrejtés", "report": "Jelentés", "crosspost": "Keresztposzt", "time_1_minute_ago": "1 perce", "time_x_minutes_ago": "{{count}} perce", "time_1_hour_ago": "1 órája", "time_x_hours_ago": "{{count}} órája", "time_1_day_ago": "1 napja", "time_x_days_ago": "{{count}} napja", "time_1_month_ago": "1 hónapja", "time_x_months_ago": "{{count}} hónapja", "time_1_year_ago": "1 éve", "time_x_years_ago": "{{count}} éve", "spoiler": "Spoiler", "reply_reply": "Válasz", "reply_sorted_by": "Sorrend", "all_comments": "Mind a {{count}} hozzászólások", "no_comments": "Nincsenek hozzászólások (még)", "reply_score_singular": "1 pont", "reply_score_plural": "{{score}} pont", "removed": "Eltávolítva", "one_comment": "1 megjegyzés", "submit_url_description": "ágyazza be a médiát a közvetlen linkjének közzétételével (vége .jpg, .gif, .mp4 stb.)", "title": "cím", "text": "szöveg", "required": "kötelező", "optional": "opcionális", "community_address": "közösség címe", "submit_choose": "válaszd ki, hova szeretnél posztolni", "submit_notice": "Kérjük, legyen tekintettel a közösség szabályaira, a seeditnek nincsenek globális adminisztrátorai.", "challenge_from": "Kihívás p/{{subplebbit}}-tól", "challenge_for_post": "a bejegyzéshez: \"{{publicationContent}}\"", "challenge_for_reply": "a válasz u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} a(z) {{total}}-ból/ből", "cancel": "Mégse", "previous": "Előző", "next": "Következő", "loading": "Betöltés", "pending": "Függőben", "submit_subscriptions_notice": "Ajánlott közösségek", "submit_subscriptions": "az Ön által feliratkozott közösségek", "rules_for": "szabályok a", "no_communities_found": "Nem található közösségek a <1>https://github.com/bitsocialhq/lists-en", "connect_community_notice": "Közösséghez való csatlakozáshoz használja a 🔎 gombot a jobb felső sarokban", "options": "opciók", "hide_options": "opciók elrejtése", "failed": "meghiúsult", "time_1_minute": "1 perc", "time_x_minutes": "{{count}} perc", "time_1_hour": "1 óra", "time_x_hours": "{{count}} óra", "time_1_day": "1 nap", "time_x_days": "{{count}} nap", "time_1_month": "1 hónap", "time_x_months": "{{count}} hónap", "time_1_year": "1 év", "time_x_years": "{{count}} év", "submit_post": "Új bejegyzés beküldése", "create_your_community": "Hozd létre saját közösséged", "moderators": "moderátorok", "about_moderation": "a moderációs csapatról", "join": "Csatlakozás", "leave": "elhagy", "created_by": "készítette {{creatorAddress}}", "community_for": "egy közösség {{date}}", "post_submitted_on": "ez a bejegyzés {{postDate}} n lett benyújtva", "users_online": "{{count}} felhasználó itt most", "point": "pont", "points": "pontok", "share_link": "link megosztása", "upvoted": "szavazott felfelé", "announcement": "bejelentés", "child": "{{childrenCount}} gyerek", "children": "{{childrenCount}} gyerekek", "moderation": "mérséklés", "interface_language": "felhasználói felület nyelve", "theme": "téma", "account": "fiók", "display_name": "megjelenítendő név", "crypto_address": "kriptovaluta cím", "check": "ellenőriz", "crypto_address_verification": "ha a kriptocím p2p felbontású", "create": "készít", "delete": "töröl", "locked": "lezárt", "reason": "ok", "sorted_by": "rendezve", "downvoted": "leértékelt", "hidden": "rejtett", "saved": "elmentve", "overview": "áttekintés", "user_since": "Felhasználó legalább {{time}} óta", "post_karma": "poszt karma", "comment_karma": "hozzászólás-karma", "full_comments": "összes hozzászólás", "context": "környezet", "block": "blokkol", "post": "poszt", "unhide": "megjelenít", "unblock": "blokk feloldása", "undo": "visszavon", "post_hidden": "elrejtett poszt", "link_copied": "link másolva", "block_community": "közösség blokkolása", "unblock_community": "közösség tiltásának feloldása", "search_feed_post": "Keresse meg a hírt ebben az összefoglalóban", "from": "tőle", "via": "könnyen", "sent": "küldött", "unread": "olvasatlan", "comment_replies": "válaszok a kommentekre", "post_replies": "válaszok a posztokra", "messages": "üzenetek", "inbox": "beérkezett üzenetek", "mark_all_read": "összes megjelölése olvasottként", "comment_reply": "válasz a hozzászólásra", "post_reply": "válasz a posztra", "show_parent": "mutassa a hivatkozott bejegyzést", "no_posts": "nincsenek hozzászólások", "media_url": "média URL", "post_locked_info": "Ez a bejegyzés {{state}}. Nem fogsz tudni kommentálni.", "members_count": "{{count}} tag", "communities": "közösség", "edit": "szerkesztés", "moderator": "Moderátor", "description": "Leírás", "rules": "Szabályok", "save_options": "Beállítások mentése", "logo": "Logó", "address": "Cím", "nothing_found": "Úgy tűnik, nincs itt semmi", "stickied_comment": "Kitűzött hozzászólás", "posts_last_synced": "Legutóbb szinkronizált bejegyzések {{dateAgo}}", "community_settings": "Közösségi beállítások", "moderation_tools": "Moderációs eszközök", "submit_to": "Küldés ide: <1>{{link}}", "edit_subscriptions": "Előfizetések szerkesztése", "delete_confirm": "Biztosan törölni szeretné {{value}}?", "saving": "Mentés", "deleted": "Törölve", "online": "Online", "offline": "Offline", "subscriber": "Előfizető", "join_communities_notice": "Kattints a <1>{{join}} vagy <2>{{leave}} gombokra, hogy kiválaszd, mely közösségek jelenjenek meg a főoldalon.", "below_subscribed": "Az alábbiakban azok a közösségek találhatók, amelyekhez csatlakoztál.", "not_subscribed": "Még nincs előfizetése egyetlen közösségre sem.", "below_moderator_access": "Lent láthatók azok a közösségek, amelyekhez moderátorként hozzáférhet.", "not_moderator": "Nem vagy moderátor egyetlen közösségben sem.", "create_community": "Közösség létrehozása", "single_comment_notice": "Egyetlen hozzászólás szála van megtekintés alatt", "single_comment_link": "Tekintse meg a többi megjegyzést", "owner_settings_notice": "Csak a közösség tulajdonosa szerkesztheti annak beállításait.", "preview": "előnézet", "shown_in_sidebar": "megjelenik a közösséged oldalsávjában", "community_logo_info": "állítsa be a közösség logóját a közvetlen képlinkjének használatával (.jpg, .png befejezése)", "moderators_setting_info": "engedje meg más felhasználóknak a moderálást és a bejegyzést kihívások nélkül", "vote": "szavaz", "passing": "átmenő", "rejecting": "elutasítás", "add_moderator": "moderátort hozzáad", "add_rule": "szabály hozzáadása", "json_settings": "JSON beállítások", "json_settings_info": "gyorsan másolja vagy illessze be a közösség beállításait", "address_setting_info": "Állítson be olvasható közösségi címet egy kripto-doménnel", "enter_crypto_address": "Kérjük, adjon meg egy érvényes kripto címet.", "check_for_updates": "<1>Ellenőrizd a frissítéseket", "refresh_to_update": "Frissítse az oldalt az frissítéshez", "latest_development_version": "A legújabb fejlesztői verziót használod, commit {{commit}}. A stabil verzió használatához látogass el ide: {{link}}.", "latest_stable_version": "A legújabb stabil verziót használod, seedit v{{version}}.", "new_development_version": "Új fejlesztési verzió elérhető, commit {{newCommit}}. A commit {{oldCommit}}-t használod.", "new_stable_version": "Új stabil verzió elérhető, seedit v{{newVersion}}. A seedit v{{oldVersion}}-t használod.", "download_latest_desktop": "Töltsd le a legújabb asztali verziót itt: {{link}}", "contribute_on_github": "Hozzájárulás a GitHubon", "no_media_found": "Nincs talált média", "no_image_found": "Nincs talált kép", "warning_spam": "Figyelem: nem választottak kihívást, a közösség sebezhetővé vált a spam-támadásokkal szemben.", "hide_help": "Súgó elrejtése", "formatting_help": "Formázási súgó", "you_see": "látod", "you_type": "Írod", "italics": "dőlt", "bold": "félkövér", "quoted_text": "idézett szöveg", "item": "tétel", "delete_community": "közösség törlése", "delete_community_description": "Véglegesen törölje ezt a közösséget. A tartalma továbbra is terjedhet a peer-ek által", "add": "hozzáad", "owner": "tulajdonos", "admin": "adminisztrátor", "settings_saved": "Beállítások mentve p/{{subplebbitAddress}} esetén", "continue_thread": "folytassa ezt a témát", "mod_edit_reason": "Moderátor szerkesztési indoklás", "double_confirm": "Biztos vagy benne? Ez a művelet visszafordíthatatlan.", "crypto_address_not_yours": "A kripto-cím egy másik fiókhoz tartozik.", "crypto_address_yours": "A kripto-cím ehhez a fiókhoz tartozik.", "crypto_address_not_resolved": "A kripto cím még nem oldódott meg.", "submit_to_string": "Beküldés ide: {{string}}", "page_not_found": "Az oldal nem található", "not_found_description": "Az általad kért oldal nem létezik", "last_edited": "utoljára szerkesztve: {{timestamp}}", "view_spoiler": "spoiler megtekintése", "default_communities": "alapértelmezett közösségek", "avatar": "avatár", "pending_edit": "folyamatban lévő szerkesztés", "failed_edit": "sikertelen szerkesztés", "node_stats": "csomópont statisztikák", "version": "verzió", "edit_reason": "szerkesztés okának", "view_parent_comment": "szülő megjegyzés megtekintése", "chain_ticker": "Lánc ticker", "token_address_whitelist": "Token cím (<1>csak fehérlista)", "token_id": "Token azonosító", "paste_signature": "Aláírás beillesztése", "copy_message_etherscan": "<1>{{copy}} üzenet aláírásához az <2>etherscan-en", "copy": "másolás", "copied": "másolva", "missing_chain_ticker": "Hiányzó lánc ticker", "missing_token_address": "Hiányzó token cím", "missing_token_id": "Hiányzó token azonosító", "missing_signature": "Hiányzó aláírás", "edited_timestamp": "Szerkesztve {{timestamp}}", "ban_user_for": "Felhasználó letiltása <1> napra", "crypto_wallets": "Kriptopénztárcák", "wallet_address": "Pénztárca címe", "remove": "Eltávolítás", "add_wallet": "<1>Kriptopénztárca hozzáadása", "show_settings": "Beállítások megjelenítése", "hide_settings": "Beállítások elrejtése", "undelete": "Visszaállítás", "downloading_comments": "kommentárok letöltése", "you_blocked_community": "Blokkoltad ezt a közösséget", "show": "mutat", "plebbit_options": "plebbit lehetőségek", "general": "általános", "more_posts_last_week": "{{count}} bejegyzések múlt {{currentTimeFilterName}}: <1>több bejegyzés megjelenítése a múlt héten", "more_posts_last_month": "{{count}} bejegyzés a {{currentTimeFilterName}}-ben: <1>több bejegyzés megtekintése a múlt hónapból", "profile_info": "A fiókod u/{{shortAddress}} létrejött. <1>Állítsd be a megjelenítő nevet, <2>biztonsági mentés exportálása, <3>tudj meg többet.", "show_all_instead": "A {{timeFilterName}} óta látható bejegyzések, <1>helyette mindent mutass", "subplebbit_offline_info": "A közösség lehet, hogy offline és a közzététel meghiúsulhat.", "posts_last_synced_info": "Bejegyzések utoljára szinkronizálva {{time}}, a közösség lehet offline, és a közzététel meghiúsulhat.", "import_account_backup": "<1>importálás fiók biztonsági másolat", "export_account_backup": "<1>exportálás fiók biztonsági másolat", "save_reset_changes": "<1>mentés vagy <2>visszaállítás a változtatásokat", "delete_this_account": "<1>törölni ezt a fiókot", "create_new_account": "<1>hozzon létre egy új fiókot", "wallet_number": "tárca #{{index}}", "view_more": "több megtekintése", "submit_community": "Küldje el közösségét", "hide_avatars_from_replies": "Rejtse el az avatarokat a válaszokból", "yes": "igen", "no": "nem", "are_you_sure": "Biztos vagy benne?", "a_short_title": "Egy rövid cím a közösségednek", "challenges": "Kihívások", "challenges_subtitle": "Válasszon egy vagy több kihívást a spam megelőzésére", "add_a_challenge": "Hozzáad egy kihívást", "communities_you_moderate": "Közösségek, amelyeket moderálsz", "blur_media": "Elhomályosítja az NSFW/18+ jelöléssel ellátott médiát", "nsfw_content": "NSFW tartalom", "see_nsfw": "Kattintson a NSFW megtekintéséhez", "see_nsfw_spoiler": "Kattintson a NSFW spoiler megtekintéséhez", "always_show_nsfw": "Mindig meg szeretné jeleníteni az NSFW médiát?", "always_show_nsfw_notice": "Rendben, megváltoztattuk az preferenciáit, hogy mindig megjelenítse az NSFW médiát.", "content_options": "Tartalombeállítások", "over_18": "18 felett?", "must_be_over_18": "18 évesnek kell lenned ahhoz, hogy megnézd ezt a közösséget", "must_be_over_18_explanation": "Legalább tizennyolc évesnek kell lenned ahhoz, hogy megtekinthesd ezt a tartalmat. Több mint tizennyolc éves vagy, és hajlandó vagy felnőtteknek szóló tartalmat nézni?", "no_thank_you": "Nem, köszönöm", "continue": "Folytatás", "download_latest_android": "Töltse le a legújabb Android verziót?", "submitter": "Beküldő", "block_user": "Felhasználó blokkolása", "unblock_user": "Felhasználó feloldása", "filtering_by_tag": "Szűrés címke szerint: \"{{tag}}\"", "you_are_moderator": "Moderátor vagy ennek a közösségnek", "you_are_admin": "Adminisztrátor vagy ennek a közösségnek", "you_are_owner": "Te vagy a közösség tulajdonosa", "looking_for_more_posts": "Több bejegyzés keresése", "loading_feed": "Betöltés a hírcsatornára", "downloading_posts": "Bejegyzések letöltése", "post_is_pending": "A bejegyzés függőben van", "post_has_failed": "A bejegyzés meghiúsult", "choose_file": "Válassza ki a fájlt", "uploading": "Feltöltés", "invalid_url_alert": "A megadott hivatkozás nem érvényes URL.", "empty_comment_alert": "Üres hozzászólást nem lehet közzétenni.", "no_subscriptions_message": "<1>{{accountName}}, ez a te otthonod a Seedit-en<2>Amikor találsz egy közösséget, amit szeretsz, <3>csatlakozz a <4>", "find_communities": "keressen közösségeket a p/all-on", "community_deleted": "A közösség sikeresen törölve lett.", "go_to_a_community": "Menj egy közösségbe", "enter_community_address": "Adjon meg egy közösségi címet", "all_communities": "minden közösség", "search_posts": "hozzászólások keresése", "found_n_results_for": "talált {{count}} bejegyzést \"{{query}}\" számára", "clear_search": "törölni keresést", "no_matches_found_for": "nem található egyezés \"{{query}}\" számára", "searching": "keresés", "hide_default_communities_from_topbar": "Alapértelmezett közösségek elrejtése a felső sávból", "media": "médiák", "hide_communities_tagged_as_nsfw": "Rejtse el a NSFW/18+ címkézett közösségeket", "tagged_as_adult": "\"felnőtt\"-ként megjelölve", "tagged_as_gore": "címkézve mint \"gore\"", "tagged_as_anti": "címkézve \"anti\" néven", "tagged_as_vulgar": "megjegyezve mint \"vulgáris\"", "drop_here_or": "Húzza ide, vagy", "upload_button_warning": "Az automatikus feltöltés a böngészője CORS irányelvei által blokkolva van, de elérhető a Seedit Android alkalmazásban és asztali alkalmazásban (Win/Mac/Linux).\n\nMenjen a letöltési linkek oldalára a GitHub-on?", "create_community_warning": "Közösség létrehozása teljes csomópont futtatását igényli. A Seedit asztali alkalmazás (Win/Mac/Linux) automatikusan futtat egy teljes csomópontot.\n\nMenjen a letöltési linkek oldalára a GitHub-on?", "avatars": "Avatarok", "filtering_by_nsfw": "Szűrés NSFW közösségek szerint", "notifications": "Értesítések", "new_replies_received": "új válaszok érkeztek", "private_key_warning_title": "A privát kulcsod meg lesz jelenítve", "private_key_warning_description": "Meg fogod tekinteni a fiókod adatait, amelyek tartalmazzák a privát kulcsodat. Soha ne oszd meg a privát kulcsodat senkivel.", "go_back": "Vissza", "loading_editor": "Szerkesztő betöltése", "show_thumbnails_next_to_links": "Miniatűrök megjelenítése a linkek mellett", "dont_show_thumbnails_next_to_links": "Ne jelenjenek meg bélyegképek a linkek mellett", "show_thumbnails_based_on_community_media_preferences": "Közösség média preferenciái alapján jelenítse meg a bélyegképeket", "media_previews": "médiabelnézetek", "auto_expand_media_previews": "Média előnézetek automatikus kibontása", "dont_auto_expand_media_previews_on_comments_pages": "Ne bontsa automatikusan a média előnézeteket a hozzászólásoldalakon", "video_player": "Videolejátszó", "autoplay_videos_on_comments_page": "Videók automatikus lejátszása a hozzászólások oldalán", "mute_videos_by_default": "Videók alapértelmezett némítása", "expand_media_previews_based_on_community_media_preferences": "Bővítse a média előnézeteket a közösség média preferenciái alapján", "show_all_nsfw": "mutasd az összes NSFW-t", "hide_all_nsfw": "Minden NSFW elrejtése", "tags": "Címkék", "moderator_of": "moderátora", "not_subscriber_nor_moderator": "Nem vagy előfizető vagy moderátor egyetlen közösségben sem.", "more_posts_last_year": "{{count}} bejegyzés a múlt {{currentTimeFilterName}}: <1>több bejegyzés mutatása a múlt évből", "editor_fallback_warning": "A fejlett szerkesztő betöltése sikertelen, alap szövegszerkesztő használata tartalék megoldásként.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Már ezt a közösséget nézed" } ================================================ FILE: public/translations/id/default.json ================================================ { "about": "Tentang", "comments": "komentar", "preferences": "Preferensi", "submit": "Kirim", "dark": "Gelap", "light": "Terang", "my_communities": "Komunitas Saya", "home": "Beranda", "all": "Semua", "submitted": "Dikirim", "post_by": "Oleh", "post_to": "Ke", "post_no_comments": "Komentar", "post_comment": "Komentar", "post_comments": "Komentar", "share": "Bagikan", "save": "Simpan", "hide": "Sembunyikan", "report": "Laporkan", "crosspost": "Crosspost", "time_1_minute_ago": "1 menit yang lalu", "time_x_minutes_ago": "{{count}} menit yang lalu", "time_1_hour_ago": "1 jam yang lalu", "time_x_hours_ago": "{{count}} jam yang lalu", "time_1_day_ago": "1 hari yang lalu", "time_x_days_ago": "{{count}} hari yang lalu", "time_1_month_ago": "1 bulan yang lalu", "time_x_months_ago": "{{count}} bulan yang lalu", "time_1_year_ago": "1 tahun yang lalu", "time_x_years_ago": "{{count}} tahun yang lalu", "spoiler": "Spoiler", "reply_reply": "Balasan", "reply_sorted_by": "Diurutkan berdasarkan", "all_comments": "Semua {{count}} komentar", "no_comments": "Tidak ada komentar (belum)", "reply_score_singular": "1 poin", "reply_score_plural": "{{score}} poin", "removed": "Dihapus", "one_comment": "1 komentar", "submit_url_description": "tanamkan media dengan memposting tautan langsungnya (berakhir dengan .jpg, .gif, .mp4, dll.)", "title": "judul", "text": "teks", "required": "wajib", "optional": "opsional", "community_address": "alamat komunitas", "submit_choose": "pilih di mana untuk memposting", "submit_notice": "harap berhati-hati dengan aturan komunitas, seedit tidak memiliki admin global.", "challenge_from": "Challenge dari p/{{subplebbit}}", "challenge_for_post": "untuk pos: \"{{publicationContent}}\"", "challenge_for_reply": "untuk balasan u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} dari {{total}}", "cancel": "Batal", "previous": "Sebelumnya", "next": "Berikutnya", "loading": "Memuat", "pending": "Tertunda", "submit_subscriptions_notice": "Komunitas yang Disarankan", "submit_subscriptions": "komunitas yang Anda langgani", "rules_for": "aturan untuk", "no_communities_found": "Tidak ada komunitas yang ditemukan di <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "Untuk terhubung ke komunitas, gunakan 🔎 di kanan atas", "options": "opsi", "hide_options": "sembunyikan opsi", "failed": "gagal", "time_1_minute": "1 menit", "time_x_minutes": "{{count}} menit", "time_1_hour": "1 jam", "time_x_hours": "{{count}} jam", "time_1_day": "1 hari", "time_x_days": "{{count}} hari", "time_1_month": "1 bulan", "time_x_months": "{{count}} bulan", "time_1_year": "1 tahun", "time_x_years": "{{count}} tahun", "submit_post": "Kirim postingan baru", "create_your_community": "Buat komunitas sendiri", "moderators": "moderator", "about_moderation": "tentang tim moderasi", "join": "Gabung", "leave": "tinggalkan", "created_by": "dibuat oleh {{creatorAddress}}", "community_for": "sebuah komunitas selama {{date}}", "post_submitted_on": "posting ini diajukan pada {{postDate}}", "users_online": "{{count}} pengguna di sini sekarang", "point": "titik", "points": "poin", "share_link": "bagikan tautan", "upvoted": "memberikan suara positif", "announcement": "pengumuman", "child": "{{childrenCount}} anak", "children": "{{childrenCount}} anak-anak", "moderation": "moderasi", "interface_language": "bahasa antarmuka", "theme": "tema", "account": "akun", "display_name": "nama tampilan", "crypto_address": "alamat kripto", "check": "periksa", "crypto_address_verification": "jika alamat kripto diselesaikan p2p", "create": "buat", "delete": "hapus", "locked": "terkunci", "reason": "alasan", "sorted_by": "diurutkan berdasarkan", "downvoted": "disundul", "hidden": "tersembunyi", "saved": "tersimpan", "overview": "ikhtisar", "user_since": "Pengguna sejak setidaknya {{time}}", "post_karma": "karma postingan", "comment_karma": "karma komentar", "full_comments": "semua komentar", "context": "konteks", "block": "blokir", "post": "postingan", "unhide": "tampilkan", "unblock": "batalkan blokir", "undo": "batalkan", "post_hidden": "postingan tersembunyi", "link_copied": "tautan disalin", "block_community": "blokir komunitas", "unblock_community": "buka blokir komunitas", "search_feed_post": "Cari postingan di umpan ini", "from": "dari", "via": "melalui", "sent": "dikirim", "unread": "belum dibaca", "comment_replies": "balasan komentar", "post_replies": "balasan pos", "messages": "pesan", "inbox": "kotak masuk", "mark_all_read": "tandai semua sebagai telah dibaca", "comment_reply": "balas komentar", "post_reply": "balas postingan", "show_parent": "tampilkan posting yang dirujuk", "no_posts": "tidak ada posting", "media_url": "URL media", "post_locked_info": "Postingan ini {{state}}. Anda tidak akan dapat berkomentar.", "members_count": "{{count}} anggota", "communities": "komunitas", "edit": "mengedit", "moderator": "Moderator", "description": "Deskripsi", "rules": "Aturan", "save_options": "Simpan Opsi", "logo": "Logo", "address": "Alamat", "nothing_found": "Tidak ada yang tampaknya di sini", "stickied_comment": "Komentar yang Dipasang", "posts_last_synced": "Postingan yang terakhir disinkronkan {{dateAgo}}", "community_settings": "Pengaturan Komunitas", "moderation_tools": "Alat Moderasi", "submit_to": "Kirim ke <1>{{link}}", "edit_subscriptions": "Edit Langganan", "delete_confirm": "Apakah Anda yakin ingin menghapus {{value}}?", "saving": "Menyimpan", "deleted": "Dihapus", "online": "Online", "offline": "Offline", "subscriber": "Pelanggan", "join_communities_notice": "Klik tombol <1>{{join}} atau <2>{{leave}} untuk memilih komunitas mana yang akan muncul di beranda.", "below_subscribed": "Di bawah ini adalah komunitas yang telah Anda berlangganan.", "not_subscribed": "Anda belum berlangganan ke komunitas mana pun.", "below_moderator_access": "Di bawah ini adalah komunitas yang Anda miliki akses moderator.", "not_moderator": "Anda bukan moderator di komunitas mana pun.", "create_community": "Buat komunitas", "single_comment_notice": "Anda sedang melihat benang komentar tunggal", "single_comment_link": "Lihat sisa komentar", "owner_settings_notice": "Hanya pemilik komunitas yang dapat mengedit pengaturannya.", "preview": "pratinjau", "shown_in_sidebar": "ditampilkan di bilah samping komunitas Anda", "community_logo_info": "setel logo komunitas menggunakan tautan gambar langsungnya (berakhir dengan .jpg, .png)", "moderators_setting_info": "biarkan pengguna lain memoderasi dan memposting tanpa tantangan", "vote": "memilih", "passing": "lulus", "rejecting": "menolak", "add_moderator": "tambahkan moderator", "add_rule": "tambahkan aturan", "json_settings": "Pengaturan JSON", "json_settings_info": "salin atau tempel cepat pengaturan komunitas", "address_setting_info": "Atur alamat komunitas yang dapat dibaca menggunakan domain crypto", "enter_crypto_address": "Harap masukkan alamat kripto yang valid.", "check_for_updates": "<1>Periksa pembaruan", "refresh_to_update": "Segarkan halaman untuk memperbarui", "latest_development_version": "Anda menggunakan versi pengembangan terbaru, commit {{commit}}. Untuk menggunakan versi stabil, pergi ke {{link}}.", "latest_stable_version": "Anda menggunakan versi stabil terbaru, seedit v{{version}}.", "new_development_version": "Versi pengembangan baru tersedia, commit {{newCommit}}. Anda menggunakan commit {{oldCommit}}.", "new_stable_version": "Versi stabil baru tersedia, seedit v{{newVersion}}. Anda menggunakan seedit v{{oldVersion}}.", "download_latest_desktop": "Unduh versi desktop terbaru di sini: {{link}}", "contribute_on_github": "Berkontribusi di GitHub", "no_media_found": "Tidak ada media ditemukan", "no_image_found": "Tidak ada gambar ditemukan", "warning_spam": "Peringatan: tidak ada tantangan yang dipilih, komunitas rentan terhadap serangan spam.", "hide_help": "Sembunyikan bantuan", "formatting_help": "Bantuan formatting", "you_see": "Anda melihat", "you_type": "Anda mengetik", "italics": "miring", "bold": "tebal", "quoted_text": "teks kutipan", "item": "item", "delete_community": "hapus komunitas", "delete_community_description": "Hapus komunitas ini secara permanen. Isinya masih mungkin disebarkan oleh rekan sebaya", "add": "tambahkan", "owner": "pemilik", "admin": "admin", "settings_saved": "Pengaturan disimpan untuk p/{{subplebbitAddress}}", "continue_thread": "lanjutkan utas ini", "mod_edit_reason": "Alasan edit mod", "double_confirm": "Apakah Anda benar-benar yakin? Tindakan ini tidak dapat diurungkan.", "crypto_address_not_yours": "Alamat kripto milik akun lain.", "crypto_address_yours": "Alamat kripto milik akun ini.", "crypto_address_not_resolved": "Alamat kripto belum terpecahkan.", "submit_to_string": "Kirim ke {{string}}", "page_not_found": "Halaman tidak ditemukan", "not_found_description": "Halaman yang Anda minta tidak ada", "last_edited": "terakhir diubah {{timestamp}}", "view_spoiler": "lihat spoiler", "default_communities": "komunitas default", "avatar": "avatar", "pending_edit": "pengeditan tertunda", "failed_edit": "edit gagal", "node_stats": "statistik node", "version": "versi", "edit_reason": "alasan sunting", "view_parent_comment": "lihat komentar induk", "chain_ticker": "Ticker blockchain", "token_address_whitelist": "Alamat token (<1>hanya daftar putih)", "token_id": "ID token", "paste_signature": "Tempelkan tanda tangan", "copy_message_etherscan": "<1>{{copy}} pesan untuk ditandatangani di <2>etherscan", "copy": "salin", "copied": "disalin", "missing_chain_ticker": "Ticker blockchain yang hilang", "missing_token_address": "Alamat token yang hilang", "missing_token_id": "ID token yang hilang", "missing_signature": "Tanda tangan yang hilang", "edited_timestamp": "Diedit {{timestamp}}", "ban_user_for": "Blokir pengguna selama <1> hari", "crypto_wallets": "Dompet Crypto", "wallet_address": "Alamat dompet", "remove": "Hapus", "add_wallet": "<1>Tambahkan dompet kripto", "show_settings": "Tampilkan pengaturan", "hide_settings": "Sembunyikan pengaturan", "undelete": "Batalkan penghapusan", "downloading_comments": "mengunduh komentar", "you_blocked_community": "Anda telah memblokir komunitas ini", "show": "menunjukkan", "plebbit_options": "opsi plebbit", "general": "umum", "more_posts_last_week": "{{count}} pos terakhir {{currentTimeFilterName}}: <1>tampilkan lebih banyak pos dari minggu lalu", "more_posts_last_month": "{{count}} postingan di {{currentTimeFilterName}}: <1>tampilkan lebih banyak postingan dari bulan lalu", "profile_info": "Akun Anda u/{{shortAddress}} dibuat. <1>Atur nama tampilan, <2>ekspor cadangan, <3>pelajari lebih lanjut.", "show_all_instead": "Menampilkan pos sejak {{timeFilterName}}, <1>tampilkan semua sebagai gantinya", "subplebbit_offline_info": "Komunitas mungkin offline dan penerbitan mungkin gagal.", "posts_last_synced_info": "Posting terakhir disinkronkan {{time}}, subplebbit mungkin offline dan penerbitan mungkin gagal.", "import_account_backup": "<1>impor cadangan akun", "export_account_backup": "<1>ekspor cadangan akun", "save_reset_changes": "<1>simpan atau <2>reset perubahan", "delete_this_account": "<1>hapus akun ini", "create_new_account": "<1>buat akun baru", "wallet_number": "dompet #{{index}}", "view_more": "lihat lebih banyak", "submit_community": "Kirim komunitas Anda", "hide_avatars_from_replies": "Sembunyikan avatar dari balasan", "yes": "iya", "no": "tidak", "are_you_sure": "Apakah Anda yakin?", "a_short_title": "Judul singkat untuk komunitas Anda", "challenges": "Tantangan", "challenges_subtitle": "Pilih satu atau lebih tantangan untuk mencegah spam", "add_a_challenge": "Tambahkan tantangan", "communities_you_moderate": "Komunitas yang Anda moderasi", "blur_media": "Blur media yang ditandai sebagai NSFW/18+", "nsfw_content": "Konten NSFW", "see_nsfw": "Klik untuk melihat NSFW", "see_nsfw_spoiler": "Klik untuk melihat NSFW spoiler", "always_show_nsfw": "Apakah Anda ingin selalu menampilkan media NSFW?", "always_show_nsfw_notice": "Oke, kami mengubah preferensi Anda untuk selalu menampilkan media NSFW.", "content_options": "Opsi konten", "over_18": "Di atas 18?", "must_be_over_18": "Anda harus berusia 18+ untuk melihat komunitas ini", "must_be_over_18_explanation": "Anda harus berusia minimal delapan belas tahun untuk melihat konten ini. Apakah Anda berusia lebih dari delapan belas tahun dan bersedia melihat konten dewasa?", "no_thank_you": "Tidak, terima kasih", "continue": "Lanjutkan", "download_latest_android": "Unduh versi Android terbaru?", "submitter": "Pengirim", "block_user": "Blokir pengguna", "unblock_user": "Buka blokir pengguna", "filtering_by_tag": "Penyaringan berdasarkan tag: \"{{tag}}\"", "you_are_moderator": "Anda adalah moderator komunitas ini", "you_are_admin": "Anda adalah admin komunitas ini", "you_are_owner": "Anda adalah pemilik komunitas ini", "looking_for_more_posts": "Mencari lebih banyak pos", "loading_feed": "Memuat feed", "downloading_posts": "Mengunduh postingan", "post_is_pending": "Postingan sedang menunggu", "post_has_failed": "Posting gagal", "choose_file": "Pilih file", "uploading": "Mengunggah", "invalid_url_alert": "Tautan yang diberikan bukan URL yang valid.", "empty_comment_alert": "Tidak dapat memposting komentar kosong.", "no_subscriptions_message": "<1>{{accountName}}, ini adalah rumah Anda di Seedit<2>Ketika Anda menemukan komunitas yang Anda suka, <3>bergabunglah dengan <4>", "find_communities": "temukan komunitas di p/all", "community_deleted": "Komunitas berhasil dihapus.", "go_to_a_community": "Pergi ke komunitas", "enter_community_address": "Masukkan alamat komunitas", "all_communities": "semua komunitas", "search_posts": "cari pos", "found_n_results_for": "ditemukan {{count}} pos untuk \"{{query}}\"", "clear_search": "hapus pencarian", "no_matches_found_for": "tidak ditemukan kecocokan untuk \"{{query}}\"", "searching": "mencari", "hide_default_communities_from_topbar": "Sembunyikan komunitas default dari topbar", "media": "media", "hide_communities_tagged_as_nsfw": "Sembunyikan komunitas yang ditandai sebagai NSFW/18+", "tagged_as_adult": "ditandai sebagai \"dewasa\"", "tagged_as_gore": "ditandai sebagai \"gore\"", "tagged_as_anti": "ditandai sebagai \"anti\"", "tagged_as_vulgar": "ditandai sebagai \"vulgar\"", "drop_here_or": "Seretkan di sini atau", "upload_button_warning": "Pengunggahan otomatis diblokir oleh kebijakan CORS browser Anda, tetapi tersedia di aplikasi Seedit Android dan aplikasi desktop (Win/Mac/Linux).\n\nPergi ke halaman tautan unduhan di GitHub?", "create_community_warning": "Membuat komunitas memerlukan menjalankan node penuh. Aplikasi desktop Seedit (Win/Mac/Linux) secara otomatis menjalankan node penuh.\n\nPergi ke halaman tautan unduhan di GitHub?", "avatars": "Avatar", "filtering_by_nsfw": "Penyaringan berdasarkan komunitas NSFW", "notifications": "Notifikasi", "new_replies_received": "balasan baru diterima", "private_key_warning_title": "Kunci pribadi Anda akan ditampilkan", "private_key_warning_description": "Anda akan melihat data akun Anda, yang mencakup kunci pribadi Anda. Anda tidak boleh pernah membagikan kunci pribadi Anda dengan siapa pun.", "go_back": "Kembali", "loading_editor": "Memuat editor", "show_thumbnails_next_to_links": "Tampilkan thumbnail di samping tautan", "dont_show_thumbnails_next_to_links": "Jangan tampilkan thumbnail di samping tautan", "show_thumbnails_based_on_community_media_preferences": "Tampilkan thumbnail berdasarkan preferensi media komunitas tersebut", "media_previews": "pratinjau media", "auto_expand_media_previews": "Perluas pratinjau media secara otomatis", "dont_auto_expand_media_previews_on_comments_pages": "Jangan otomatis memperluas pratinjau media di halaman komentar", "video_player": "Pemutar Video", "autoplay_videos_on_comments_page": "Putar otomatis video di halaman komentar", "mute_videos_by_default": "Diamkan video secara default", "expand_media_previews_based_on_community_media_preferences": "Perluas pratinjau media berdasarkan preferensi media komunitas tersebut", "show_all_nsfw": "tampilkan semua NSFW", "hide_all_nsfw": "sembunyikan semua NSFW", "tags": "Tag", "moderator_of": "moderator dari", "not_subscriber_nor_moderator": "Anda bukan pelanggan maupun moderator komunitas manapun.", "more_posts_last_year": "{{count}} postingan pada {{currentTimeFilterName}} terakhir: <1>tampilkan lebih banyak postingan dari tahun lalu", "editor_fallback_warning": "editor lanjutan gagal dimuat, menggunakan editor teks dasar sebagai fallback.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Anda sudah melihat komunitas ini" } ================================================ FILE: public/translations/it/default.json ================================================ { "about": "info", "comments": "commenti", "preferences": "preferenze", "submit": "invia", "dark": "scuro", "light": "chiaro", "my_communities": "le mie comunità", "home": "home", "all": "tutti", "submitted": "inviato", "post_by": "da", "post_to": "su", "post_no_comments": "commenta", "post_comment": "commento", "post_comments": "commenti", "share": "condividi", "save": "salva", "hide": "nascondi", "report": "segnala", "crosspost": "crosspost", "time_1_minute_ago": "1 minuto fa", "time_x_minutes_ago": "{{count}} minuti fa", "time_1_hour_ago": "1 ora fa", "time_x_hours_ago": "{{count}} ore fa", "time_1_day_ago": "1 giorno fa", "time_x_days_ago": "{{count}} giorni fa", "time_1_month_ago": "1 mese fa", "time_x_months_ago": "{{count}} mesi fa", "time_1_year_ago": "1 anno fa", "time_x_years_ago": "{{count}} anni fa", "spoiler": "spoiler", "reply_reply": "rispondi", "reply_sorted_by": "ordinato per", "all_comments": "tutti i {{count}} commenti", "no_comments": "nessun commento (ancora)", "reply_score_singular": "1 punto", "reply_score_plural": "{{score}} punti", "removed": "Rimosso", "one_comment": "1 commento", "submit_url_description": "incorpora i media postando il suo link diretto (che termina in .jpg, .gif, .mp4, ecc.)", "title": "titolo", "text": "testo", "required": "richiesto", "optional": "opzionale", "community_address": "indirizzo della comunità", "submit_choose": "scegli dove postare", "submit_notice": "per favore, rispetta le regole della comunità, seedit non ha amministratori globali.", "challenge_from": "Challenge da p/{{subplebbit}}", "challenge_for_post": "per il post: \"{{publicationContent}}\"", "challenge_for_reply": "per la risposta a u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} di {{total}}", "cancel": "Annulla", "previous": "Precedente", "next": "Successivo", "loading": "Caricamento", "pending": "In attesa", "submit_subscriptions_notice": "Comunità consigliate", "submit_subscriptions": "le tue comunità sottoscritte", "rules_for": "regole per", "no_communities_found": "nessuna comunità trovata su <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "Per connetterti a una comunità, utilizza 🔎 in alto a destra", "options": "opzioni", "hide_options": "nascondi opzioni", "failed": "fallito", "time_1_minute": "1 minuto", "time_x_minutes": "{{count}} minuti", "time_1_hour": "1 ora", "time_x_hours": "{{count}} ore", "time_1_day": "1 giorno", "time_x_days": "{{count}} giorni", "time_1_month": "1 mese", "time_x_months": "{{count}} mesi", "time_1_year": "1 anno", "time_x_years": "{{count}} anni", "submit_post": "Invia un nuovo post", "create_your_community": "Crea la tua comunità", "moderators": "moderatori", "about_moderation": "info sul team dei moderatori", "join": "Unisciti", "leave": "lascia", "created_by": "creata da {{creatorAddress}}", "community_for": "una comunità da {{date}}", "post_submitted_on": "questo post è stato inviato il {{postDate}}", "users_online": "{{count}} utenti qui ora", "point": "punto", "points": "punti", "share_link": "link di condivisione", "upvoted": "ha dato un upvote", "announcement": "annuncio", "child": "{{childrenCount}} figlio", "children": "{{childrenCount}} figli", "moderation": "moderazione", "interface_language": "lingua interfaccia", "theme": "tema", "account": "account", "display_name": "nome visualizzato", "crypto_address": "indirizzo crypto", "check": "controlla", "crypto_address_verification": "se l'indirizzo cripto è risolto p2p", "create": "crea", "delete": "elimina", "locked": "bloccato", "reason": "motivo", "sorted_by": "ordinato per", "downvoted": "hai dato un downvote", "hidden": "nascosto", "saved": "salvato", "overview": "panoramica", "user_since": "Utente da almeno {{time}}", "post_karma": "karma post", "comment_karma": "karma commenti", "full_comments": "tutti i commenti", "context": "contesto", "block": "blocca", "post": "post", "unhide": "mostra", "unblock": "sblocca", "undo": "annulla", "post_hidden": "post nascosto", "link_copied": "link copiato", "block_community": "blocca comunità", "unblock_community": "sblocca comunità", "search_feed_post": "Cerca un post in questa pagina", "from": "da", "via": "via", "sent": "inviato", "unread": "non letti", "comment_replies": "risposte ai commenti", "post_replies": "risposte ai post", "messages": "messaggi", "inbox": "posta in arrivo", "mark_all_read": "segna tutti come letti", "comment_reply": "rispondi al commento", "post_reply": "rispondi al post", "show_parent": "mostra il post a cui è riferito", "no_posts": "nessun post", "media_url": "URL media", "post_locked_info": "Questo post è stato {{state}}. Non potrai commentarlo.", "members_count": "{{count}} membri", "communities": "comunità", "edit": "modifica", "moderator": "Moderatore", "description": "Descrizione", "rules": "Regole", "save_options": "Salva opzioni", "logo": "Logo", "address": "Indirizzo", "nothing_found": "Sembra che qui non ci sia nulla", "stickied_comment": "Commento fissato", "posts_last_synced": "Post sincronizzati l'ultima volta {{dateAgo}}", "community_settings": "Impostazioni della comunità", "moderation_tools": "Strumenti di moderazione", "submit_to": "Invia a <1>{{link}}", "edit_subscriptions": "Modifica sottoscrizioni", "delete_confirm": "Confermi di voler cancellare {{value}}?", "saving": "Salvataggio", "deleted": "Cancellato", "online": "Online", "offline": "Offline", "subscriber": "Iscritto", "join_communities_notice": "Clicca i bottoni <1>{{join}} o <2>{{leave}} per scegliere quali comunità debbano apparire nella schermata home.", "below_subscribed": "Di seguito sono elencate le comunità a cui sei iscritto.", "not_subscribed": "Non sei iscritto a nessuna comunità.", "below_moderator_access": "Di seguito sono elencate le comunità alle quali hai accesso come moderatore.", "not_moderator": "Non sei un moderatore in nessuna comunità.", "create_community": "Crea comunità", "single_comment_notice": "Stai vedendo una discussione derivante da un commento", "single_comment_link": "Guarda il resto dei commenti", "owner_settings_notice": "Solo il proprietario della comunità può modificarne le impostazioni.", "preview": "anteprima", "shown_in_sidebar": "mostrato nella barra laterale della tua comunità", "community_logo_info": "imposta un logo di comunità utilizzando il suo link diretto all'immagine (che termina in .jpg, .png)", "moderators_setting_info": "lascia che altri utenti moderino e pubblichino senza challenge", "vote": "vota", "passing": "in approvazione", "rejecting": "in rifiuto", "add_moderator": "aggiungi un moderatore", "add_rule": "aggiungi una regola", "json_settings": "impostazioni JSON", "json_settings_info": "copia o incolla rapidamente le impostazioni della comunità", "address_setting_info": "Imposta un indirizzo di comunità leggibile utilizzando un dominio crypto", "enter_crypto_address": "Inserisci un indirizzo cripto valido.", "check_for_updates": "<1>Controlla aggiornamenti", "refresh_to_update": "Ricarica la pagina per aggiornare", "latest_development_version": "Stai utilizzando la versione per sviluppatori più recente, commit {{commit}}. Per utilizzare la versione stabile, vai su {{link}}.", "latest_stable_version": "Stai utilizzando l'ultima versione stabile, seedit v{{version}}.", "new_development_version": "Nuova versione di sviluppo disponibile, commit {{newCommit}}. Stai utilizzando commit {{oldCommit}}.", "new_stable_version": "Nuova versione stabile disponibile, seedit v{{newVersion}}. Stai utilizzando seedit v{{oldVersion}}.", "download_latest_desktop": "Scarica l'ultima versione desktop qui: {{link}}", "contribute_on_github": "Contribuisci su GitHub", "no_media_found": "Nessun media trovato", "no_image_found": "Nessuna immagine trovata", "warning_spam": "Attenzione: nessun challenge selezionato, la comunità è vulnerabile agli attacchi spam.", "hide_help": "Nascondi aiuto", "formatting_help": "Aiuto con la formattazione", "you_see": "vedrai", "you_type": "Se scrivi", "italics": "corsivo", "bold": "grassetto", "quoted_text": "testo citato", "item": "oggetto", "delete_community": "elimina comunità", "delete_community_description": "Elimina definitivamente questa comunità. Il suo contenuto potrebbe ancora essere diffuso dai peer", "add": "aggiungi", "owner": "proprietario", "admin": "amministratore", "settings_saved": "Impostazioni salvate per p/{{subplebbitAddress}}", "continue_thread": "continua questa discussione", "mod_edit_reason": "Motivo modifica moderatore", "double_confirm": "Sei davvero sicuro? Questa azione è irreversibile.", "crypto_address_not_yours": "L'indirizzo cripto appartiene a un altro account.", "crypto_address_yours": "L'indirizzo cripto appartiene a questo account.", "crypto_address_not_resolved": "L'indirizzo cripto non è ancora risolto.", "submit_to_string": "Invia a {{string}}", "page_not_found": "Pagina non trovata", "not_found_description": "La pagina che hai richiesto non esiste", "last_edited": "ultima modifica {{timestamp}}", "view_spoiler": "mostra spoiler", "default_communities": "comunità predefinite", "avatar": "avatar", "pending_edit": "modifica in attesa", "failed_edit": "modifica fallita", "node_stats": "statistiche del nodo", "version": "versione", "edit_reason": "motivo della modifica", "view_parent_comment": "vai al post a cui è riferito", "chain_ticker": "Ticker blockchain", "token_address_whitelist": "Indirizzo del token (solo se sulla <1>whitelist)", "token_id": "token id", "paste_signature": "incolla firma", "copy_message_etherscan": "<1>{{copy}} messaggio da firmare su <2>etherscan", "copy": "copia", "copied": "copiato", "missing_chain_ticker": "Ticker blockchain mancante", "missing_token_address": "Indirizzo del token mancante", "missing_token_id": "ID del token mancante", "missing_signature": "Firma mancante", "edited_timestamp": "Modificato {{timestamp}}", "ban_user_for": "Banna l'utente per <1> giorno/i", "crypto_wallets": "Wallet crypto", "wallet_address": "Indirizzo wallet", "remove": "Rimuovi", "add_wallet": "<1>Aggiungi un wallet crypto", "show_settings": "Mostra impostazioni", "hide_settings": "Nascondi impostazioni", "undelete": "Annulla eliminazione", "downloading_comments": "scaricando i commenti", "you_blocked_community": "Hai bloccato questa comunità", "show": "mostra", "plebbit_options": "opzioni plebbit", "general": "generali", "more_posts_last_week": "{{count}} post da {{currentTimeFilterName}}: <1>mostra più post della settimana scorsa", "more_posts_last_month": "{{count}} post da {{currentTimeFilterName}}: <1>mostra più post dal mese scorso", "profile_info": "Il tuo account u/{{shortAddress}} è stato creato. <1>Imposta nome visualizzato, <2>esporta backup, <3>scopri di più.", "show_all_instead": "Stai visualizzando post da {{timeFilterName}}, <1>visualizza tutto invece", "subplebbit_offline_info": "La comunità potrebbe essere offline e la pubblicazione potrebbe non riuscire.", "posts_last_synced_info": "Post sincronizzati per l'ultima volta {{time}}, la comunità potrebbe essere offline e la pubblicazione potrebbe fallire.", "import_account_backup": "<1>importa backup dell'account", "export_account_backup": "<1>esporta backup dell'account", "save_reset_changes": "<1>salva o <2>ripristina modifiche", "delete_this_account": "<1>elimina questo account", "create_new_account": "<1>crea un nuovo account", "wallet_number": "wallet #{{index}}", "view_more": "altri", "submit_community": "Invia la tua comunità", "hide_avatars_from_replies": "Nascondi avatar da commenti", "yes": "sì", "no": "no", "are_you_sure": "Sei sicuro?", "a_short_title": "Un titolo breve per la tua comunità", "challenges": "Sfide", "challenges_subtitle": "Scegli una o più challenge per prevenire lo spam", "add_a_challenge": "Aggiungi un challenge", "communities_you_moderate": "Comunità che moderi", "blur_media": "Offusca media contrassegnati come NSFW/18+", "nsfw_content": "Contenuti NSFW", "see_nsfw": "Clicca per vedere NSFW", "see_nsfw_spoiler": "Clicca per vedere il spoiler NSFW", "always_show_nsfw": "Mostrare sempre i media NSFW?", "always_show_nsfw_notice": "Ok, abbiamo cambiato le tue preferenze per mostrare sempre i media NSFW.", "content_options": "Opzioni dei contenuti", "over_18": "Sopra i 18?", "must_be_over_18": "Devi avere più di 18 anni per visualizzare questa comunità", "must_be_over_18_explanation": "Devi avere almeno diciotto anni per visualizzare questo contenuto. Hai più di diciotto anni e sei disposto a vedere contenuti per adulti?", "no_thank_you": "No, grazie", "continue": "Continua", "download_latest_android": "Scarica l'ultima versione di Android?", "submitter": "Inviatore", "block_user": "Blocca utente", "unblock_user": "Sblocca utente", "filtering_by_tag": "Filtraggio per tag: \"{{tag}}\"", "you_are_moderator": "Sei un moderatore di questa comunità", "you_are_admin": "Sei un admin di questa comunità", "you_are_owner": "Sei il proprietario di questa comunità", "looking_for_more_posts": "Cercando più post", "loading_feed": "Caricamento feed", "downloading_posts": "Scaricando i post", "post_is_pending": "Il post è in sospeso", "post_has_failed": "Il post è fallito", "choose_file": "Scegli file", "uploading": "Caricamento", "invalid_url_alert": "Il link fornito non è un URL valido.", "empty_comment_alert": "Impossibile pubblicare un commento vuoto.", "no_subscriptions_message": "<1>{{accountName}}, questa è la tua home su Seedit<2>Quando trovi una comunità che ti piace, <3>unisciti con il <4>", "find_communities": "trova comunità su p/all", "community_deleted": "Comunità eliminata con successo.", "go_to_a_community": "Vai a una comunità", "enter_community_address": "Inserisci un indirizzo della comunità", "all_communities": "tutte le comunità", "search_posts": "cerca post", "found_n_results_for": "trovati {{count}} post per \"{{query}}\"", "clear_search": "cancella ricerca", "no_matches_found_for": "nessuna corrispondenza trovata per \"{{query}}\"", "searching": "cerca", "hide_default_communities_from_topbar": "Nascondi comunità di default dalla topbar", "media": "media", "hide_communities_tagged_as_nsfw": "Nascondi comunità taggate come NSFW/18+", "tagged_as_adult": "taggate come \"adult\"", "tagged_as_gore": "taggate come \"gore\"", "tagged_as_anti": "taggate come \"anti\"", "tagged_as_vulgar": "taggate come \"vulgar\"", "drop_here_or": "Trascina qui o", "upload_button_warning": "Il caricamento automatico è bloccato dalla politica CORS del tuo browser, ma è disponibile nell'app Seedit per Android e nell'app desktop (Win/Mac/Linux).\n\nVai alla pagina dei link per il download su GitHub?", "create_community_warning": "Creare una comunità richiede l'esecuzione di un nodo completo. L'app Seedit per desktop (Win/Mac/Linux) esegue automaticamente un nodo completo.\n\nVai alla pagina dei link per il download su GitHub?", "avatars": "Avatar", "filtering_by_nsfw": "Filtraggio per comunità NSFW", "notifications": "Notifiche", "new_replies_received": "nuove risposte ricevute", "private_key_warning_title": "La tua chiave privata verrà mostrata", "private_key_warning_description": "Stai per visualizzare i dati del tuo account, che includono la tua chiave privata. Non dovresti mai condividere la tua chiave privata con nessuno.", "go_back": "Torna indietro", "loading_editor": "Caricamento editor", "show_thumbnails_next_to_links": "Mostra le anteprime accanto ai link", "dont_show_thumbnails_next_to_links": "Non mostrare le miniature accanto ai link", "show_thumbnails_based_on_community_media_preferences": "Mostra le miniature basate sulle preferenze dei media di quella comunità", "media_previews": "anteprime media", "auto_expand_media_previews": "Espansione automatica delle anteprime multimediali", "dont_auto_expand_media_previews_on_comments_pages": "Non espandere automaticamente le anteprime multimediali nelle pagine dei commenti", "video_player": "Lettore video", "autoplay_videos_on_comments_page": "Riproduci automaticamente i video nella pagina dei commenti", "mute_videos_by_default": "Disattiva l’audio dei video per impostazione predefinita", "expand_media_previews_based_on_community_media_preferences": "Espandi le anteprime multimediali in base alle preferenze multimediali di quella comunità", "show_all_nsfw": "mostra tutto NSFW", "hide_all_nsfw": "nascondi tutto NSFW", "tags": "Tag", "moderator_of": "moderatore di", "not_subscriber_nor_moderator": "Non sei né iscritto né moderatore di nessuna community.", "more_posts_last_year": "{{count}} post nell'ultimo {{currentTimeFilterName}}: <1>mostra più post dell'anno scorso", "editor_fallback_warning": "il editor avanzato non è riuscito a caricare, utilizzo dell'editor di testo di base come fallback.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Stai già visualizzando questa comunità" } ================================================ FILE: public/translations/ja/default.json ================================================ { "about": "について", "comments": "コメント", "preferences": "設定", "submit": "送信", "dark": "暗い", "light": "明るい", "my_communities": "マイコミュニティ", "home": "ホーム", "all": "すべて", "submitted": "送信済み", "post_by": "投稿者", "post_to": "へ", "post_no_comments": "コメントする", "post_comment": "コメント", "post_comments": "コメント数", "share": "シェア", "save": "保存", "hide": "非表示", "report": "報告", "crosspost": "クロスポスト", "time_1_minute_ago": "1分前", "time_x_minutes_ago": "{{count}}分前", "time_1_hour_ago": "1時間前", "time_x_hours_ago": "{{count}}時間前", "time_1_day_ago": "1日前", "time_x_days_ago": "{{count}}日前", "time_1_month_ago": "1ヶ月前", "time_x_months_ago": "{{count}}ヶ月前", "time_1_year_ago": "1年前", "time_x_years_ago": "{{count}}年前", "spoiler": "ネタバレ", "reply_reply": "返信", "reply_sorted_by": "ソート条件", "all_comments": "すべての{{count}}コメント", "no_comments": "コメントはありません(まだ)", "reply_score_singular": "1 ポイント", "reply_score_plural": "{{score}} ポイント", "removed": "削除されました", "one_comment": "1つのコメント", "submit_url_description": "直接のリンク(.jpg、.gif、.mp4などで終わる)を投稿してメディアを埋め込む", "title": "タイトル", "text": "テキスト", "required": "必須", "optional": "オプショナル", "community_address": "コミュニティのアドレス", "submit_choose": "投稿先を選択してください", "submit_notice": "コミュニティのルールを尊重してください、seeditにはグローバルな管理者はいません。", "challenge_from": "p/{{subplebbit}} からのチャレンジ", "challenge_for_post": "投稿に対して: \"{{publicationContent}}\"", "challenge_for_reply": "u/{{parentAddress}}への返信に対して: \"{{publicationContent}}\"", "challenge_counter": "{{index}} / {{total}}", "cancel": "キャンセル", "previous": "前", "next": "次", "loading": "読み込み中", "pending": "保留中", "submit_subscriptions_notice": "おすすめコミュニティ", "submit_subscriptions": "購読しているコミュニティ", "rules_for": "のルール", "no_communities_found": "<1>https://github.com/bitsocialhq/listsにコミュニティは見つかりませんでした", "connect_community_notice": "コミュニティに接続するには、右上の🔎を使用してください", "options": "オプション", "hide_options": "オプションを隠す", "failed": "失敗した", "time_1_minute": "1分", "time_x_minutes": "{{count}}分", "time_1_hour": "1時間", "time_x_hours": "{{count}}時間", "time_1_day": "1日", "time_x_days": "{{count}}日", "time_1_month": "1ヶ月", "time_x_months": "{{count}}ヶ月", "time_1_year": "1年", "time_x_years": "{{count}}年", "submit_post": "新しい投稿を送信", "create_your_community": "独自のコミュニティを作成", "moderators": "モデレーター", "about_moderation": "モデレーションチームについて", "join": "参加", "leave": "退出", "created_by": "作成者:{{creatorAddress}}", "community_for": "{{date}} のコミュニティ", "post_submitted_on": "この投稿は{{postDate}}に投稿されました", "users_online": "現在{{count}}人のユーザーがここにいます", "point": "ポイント", "points": "ポイント", "share_link": "リンクを共有", "upvoted": "アップボートされました", "announcement": "お知らせ", "child": "{{childrenCount}} 子供", "children": "{{childrenCount}} 子供たち", "moderation": "モデレーション", "interface_language": "インターフェース言語", "theme": "テーマ", "account": "アカウント", "display_name": "表示名", "crypto_address": "暗号通貨アドレス", "check": "チェック", "crypto_address_verification": "暗号通貨アドレスがp2pで解決されている場合", "create": "作成", "delete": "削除", "locked": "ロックされました", "reason": "理由", "sorted_by": "並び替え", "downvoted": "ダウンボートされました", "hidden": "非表示", "saved": "保存済み", "overview": "概要", "user_since": "少なくとも{{time}}からのユーザー", "post_karma": "ポストカルマ", "comment_karma": "コメントカルマ", "full_comments": "すべてのコメント", "context": "コンテキスト", "block": "ブロック", "post": "投稿", "unhide": "表示", "unblock": "ブロック解除", "undo": "取り消し", "post_hidden": "非表示の投稿", "link_copied": "リンクがコピーされました", "block_community": "コミュニティをブロック", "unblock_community": "コミュニティのブロック解除", "search_feed_post": "このフィード内の投稿を検索", "from": "から", "via": "経由で", "sent": "送信済み", "unread": "未読", "comment_replies": "コメントへの返信", "post_replies": "投稿への返信", "messages": "メッセージ", "inbox": "受信トレイ", "mark_all_read": "すべてを既読にする", "comment_reply": "コメントに返信", "post_reply": "投稿に返信", "show_parent": "参照されている投稿を表示", "no_posts": "投稿はありません", "media_url": "メディア URL", "post_locked_info": "この投稿は{{state}}です。コメントできません。", "members_count": "{{count}} メンバー", "communities": "コミュニティ", "edit": "編集", "moderator": "モデレーター", "description": "説明", "rules": "ルール", "save_options": "オプションを保存", "logo": "ロゴ", "address": "住所", "nothing_found": "ここには何もないようです", "stickied_comment": "固定されたコメント", "posts_last_synced": "最後に同期された投稿 {{dateAgo}}", "community_settings": "コミュニティの設定", "moderation_tools": "モデレーションツール", "submit_to": "<1>{{link}}に提出する", "edit_subscriptions": "購読の編集", "delete_confirm": "{{value}} を削除してもよろしいですか?", "saving": "保存中", "deleted": "削除されました", "online": "オンライン", "offline": "オフライン", "subscriber": "購読者", "join_communities_notice": "ホームフィードに表示されるコミュニティを選択するには、<1>{{join}} または <2>{{leave}} ボタンをクリックしてください。", "below_subscribed": "以下は、購読しているコミュニティです。", "not_subscribed": "まだコミュニティに参加していません。", "below_moderator_access": "以下は、あなたがモデレーターアクセス権を持つコミュニティです。", "not_moderator": "あなたはどのコミュニティでもモデレーターではありません。", "create_community": "コミュニティを作成", "single_comment_notice": "1つのコメントのスレッドを表示しています", "single_comment_link": "他のコメントを表示", "owner_settings_notice": "コミュニティのオーナーのみが設定を編集できます。", "preview": "プレビュー", "shown_in_sidebar": "あなたのコミュニティのサイドバーに表示されます", "community_logo_info": "直接の画像リンクを使用してコミュニティのロゴを設定します(.jpg、.pngで終了)", "moderators_setting_info": "他のユーザーにチャレンジなしでモデレートおよび投稿を許可", "vote": "投票する", "passing": "合格", "rejecting": "拒否", "add_moderator": "モデレーターを追加", "add_rule": "ルールを追加", "json_settings": "JSON設定", "json_settings_info": "コミュニティの設定を素早くコピーまたは貼り付ける", "address_setting_info": "暗号ドメインを使用して読み取り可能なコミュニティアドレスを設定します", "enter_crypto_address": "有効な暗号通貨アドレスを入力してください。", "check_for_updates": "<1>更新 を確認", "refresh_to_update": "更新するにはページを更新してください", "latest_development_version": "最新の開発バージョン、コミット{{commit}}を使用しています。安定版を使用するには、{{link}}に移動してください。", "latest_stable_version": "最新の安定版、seedit v{{version}}を使用しています。", "new_development_version": "新しい開発バージョンが利用可能です、コミット {{newCommit}}。あなたはコミット {{oldCommit}} を使用しています。", "new_stable_version": "新しい安定版が利用可能です、seedit v{{newVersion}}。あなたはseedit v{{oldVersion}} を使用しています。", "download_latest_desktop": "最新のデスクトップバージョンをこちらからダウンロード: {{link}}", "contribute_on_github": "GitHub で貢献する", "no_media_found": "メディアが見つかりませんでした", "no_image_found": "画像が見つかりませんでした", "warning_spam": "警告: チャレンジが選択されていません。コミュニティはスパム攻撃の対象となります。", "hide_help": "ヘルプを非表示", "formatting_help": "フォーマットのヘルプ", "you_see": "見ます", "you_type": "入力中", "italics": "イタリック", "bold": "太字", "quoted_text": "引用されたテキスト", "item": "アイテム", "delete_community": "コミュニティを削除", "delete_community_description": "このコミュニティを永久に削除します。そのコンテンツは依然としてピアによってシードされている可能性があります", "add": "追加", "owner": "オーナー", "admin": "管理者", "settings_saved": "p/{{subplebbitAddress}} の設定が保存されました", "continue_thread": "このスレッドを続ける", "mod_edit_reason": "モデレータ編集理由", "double_confirm": "本当によろしいですか?このアクションは取り消せません。", "crypto_address_not_yours": "暗号通貨アドレスは別のアカウントに属しています。", "crypto_address_yours": "暗号通貨アドレスはこのアカウントに属しています。", "crypto_address_not_resolved": "暗号通貨アドレスはまだ解決されていません。", "submit_to_string": "{{string}} に提出", "page_not_found": "ページが見つかりません", "not_found_description": "要求されたページは存在しません", "last_edited": "最終編集 {{timestamp}}", "view_spoiler": "スポイラーを表示", "default_communities": "デフォルトコミュニティ", "avatar": "アバター", "pending_edit": "保留中の編集", "failed_edit": "失敗した編集", "node_stats": "ノードの統計", "version": "バージョン", "edit_reason": "編集理由", "view_parent_comment": "親コメントを表示", "chain_ticker": "チェーンティッカー", "token_address_whitelist": "トークンアドレス(<1>ホワイトリストのみ)", "token_id": "トークンID", "paste_signature": "署名を貼り付ける", "copy_message_etherscan": "<1>{{copy}} メッセージを<2>etherscanでサイン", "copy": "コピー", "copied": "コピー済み", "missing_chain_ticker": "不足しているチェーンティッカー", "missing_token_address": "不足しているトークンアドレス", "missing_token_id": "不足しているトークンID", "missing_signature": "不足している署名", "edited_timestamp": "編集済み {{timestamp}}", "ban_user_for": "ユーザーを<1>日間禁止する", "crypto_wallets": "暗号通貨ウォレット", "wallet_address": "ウォレットアドレス", "remove": "削除", "add_wallet": "<1>追加 クリプトウォレット", "show_settings": "設定を表示", "hide_settings": "設定を非表示", "undelete": "削除を取り消す", "downloading_comments": "コメントをダウンロード中", "you_blocked_community": "このコミュニティをブロックしました", "show": "表示", "plebbit_options": "plebbitのオプション", "general": "一般的な", "more_posts_last_week": "{{count}} 件の投稿先週 {{currentTimeFilterName}}: <1>先週の投稿をもっと表示", "more_posts_last_month": "{{count}} 件の投稿 {{currentTimeFilterName}}: <1>先月の他の投稿を表示", "profile_info": "あなたのアカウント u/{{shortAddress}} が作成されました。 <1>表示名を設定, <2>バックアップをエクスポート, <3>詳細はこちら.", "show_all_instead": "{{timeFilterName}} からの投稿を表示しています。<1>その代わりにすべて表示", "subplebbit_offline_info": "コミュニティがオフラインの可能性があり、公開に失敗する可能性があります。", "posts_last_synced_info": "投稿は最後に{{time}}に同期されました。コミュニティがオフラインの可能性があり、投稿に失敗する可能性があります。", "import_account_backup": "<1>インポート アカウントバックアップ", "export_account_backup": "<1>エクスポート アカウントバックアップ", "save_reset_changes": "<1>保存または<2>リセット変更", "delete_this_account": "<1>削除このアカウント", "create_new_account": "<1>新しいアカウントを作成", "wallet_number": "ウォレット #{{index}}", "view_more": "もっと見る", "submit_community": "コミュニティを提出してください", "hide_avatars_from_replies": "返信からアバターを非表示にする", "yes": "はい", "no": "いいえ", "are_you_sure": "本当にそうですか?", "a_short_title": "あなたのコミュニティのための短いタイトル", "challenges": "チャレンジ", "challenges_subtitle": "スパムを防ぐために1つ以上のチャレンジを選択してください", "add_a_challenge": "チャレンジを追加", "communities_you_moderate": "あなたが管理するコミュニティ", "blur_media": "NSFW/18+としてマークされたメディアをぼかす", "nsfw_content": "NSFWコンテンツ", "see_nsfw": "NSFWを見るにはクリック", "see_nsfw_spoiler": "NSFWのネタバレを見るにはクリック", "always_show_nsfw": "常にNSFWメディアを表示しますか?", "always_show_nsfw_notice": "はい、NSFWメディアを常に表示するように設定を変更しました。", "content_options": "コンテンツオプション", "over_18": "18歳以上?", "must_be_over_18": "このコミュニティを見るには18歳以上でなければなりません", "must_be_over_18_explanation": "このコンテンツを見るには少なくとも18歳でなければなりません。あなたは18歳以上で、成人向けコンテンツを見る準備ができていますか?", "no_thank_you": "いいえ、ありがとう", "continue": "続ける", "download_latest_android": "最新のAndroidバージョンをダウンロードしますか?", "submitter": "提出者", "block_user": "ユーザーをブロック", "unblock_user": "ユーザーのブロック解除", "filtering_by_tag": "タグでフィルタリング: \"{{tag}}\"", "you_are_moderator": "あなたはこのコミュニティのモデレーターです", "you_are_admin": "あなたはこのコミュニティの管理者です", "you_are_owner": "あなたはこのコミュニティのオーナーです", "looking_for_more_posts": "さらに投稿を探しています", "loading_feed": "フィードを読み込んでいます", "downloading_posts": "投稿をダウンロード中", "post_is_pending": "投稿は保留中です", "post_has_failed": "投稿に失敗しました", "choose_file": "ファイルを選択", "uploading": "アップロード中", "invalid_url_alert": "提供されたリンクは有効なURLではありません。", "empty_comment_alert": "空のコメントは投稿できません。", "no_subscriptions_message": "<1>{{accountName}}, これはSeeditのあなたのホームです<2>好きなコミュニティを見つけたら、<3>そのコミュニティに参加してください <4>", "find_communities": "p/allでコミュニティを探す", "community_deleted": "コミュニティは正常に削除されました。", "go_to_a_community": "コミュニティに行く", "enter_community_address": "コミュニティのアドレスを入力してください", "all_communities": "すべてのコミュニティ", "search_posts": "投稿を検索", "found_n_results_for": "「{{query}}」に対して{{count}}件の投稿が見つかりました", "clear_search": "検索をクリア", "no_matches_found_for": "\"{{query}}\" に対する一致は見つかりませんでした", "searching": "検索中", "hide_default_communities_from_topbar": "トップバーからデフォルトのコミュニティを隠す", "media": "メディア", "hide_communities_tagged_as_nsfw": "NSFW/18+としてタグ付けされたコミュニティを非表示にする", "tagged_as_adult": "\"成人\"としてタグ付けされました", "tagged_as_gore": "\"gore\"としてタグ付けされました", "tagged_as_anti": "\"anti\" としてタグ付けされた", "tagged_as_vulgar": "\"vulgar\"としてタグ付けされました", "drop_here_or": "ここにドロップまたは", "upload_button_warning": "自動アップロードはブラウザのCORSポリシーでブロックされていますが、SeeditのAndroidアプリおよびデスクトップアプリ(Win/Mac/Linux)では利用可能です。\n\nGitHubのダウンロードリンクページに移動しますか?", "create_community_warning": "コミュニティを作成するには、フルノードを実行する必要があります。Seeditのデスクトップアプリ(Win/Mac/Linux)は自動的にフルノードを実行します。\n\nGitHubのダウンロードリンクページに移動しますか?", "avatars": "アバター", "filtering_by_nsfw": "NSFW コミュニティによるフィルタリング", "notifications": "通知", "new_replies_received": "新しい返信を受信しました", "private_key_warning_title": "あなたの秘密鍵が表示されます", "private_key_warning_description": "あなたは自分のアカウントデータ(秘密鍵を含む)を表示しようとしています。秘密鍵を誰とも共有してはいけません。", "go_back": "戻る", "loading_editor": "エディターを読み込み中", "show_thumbnails_next_to_links": "リンクの横にサムネイルを表示する", "dont_show_thumbnails_next_to_links": "リンクの横にサムネイルを表示しない", "show_thumbnails_based_on_community_media_preferences": "そのコミュニティのメディア設定に基づいてサムネイルを表示する", "media_previews": "メディアプレビュー", "auto_expand_media_previews": "メディアプレビューを自動で展開", "dont_auto_expand_media_previews_on_comments_pages": "コメントページでメディアプレビューを自動展開しない", "video_player": "ビデオプレーヤー", "autoplay_videos_on_comments_page": "コメントページで動画を自動再生", "mute_videos_by_default": "動画をデフォルトでミュートにする", "expand_media_previews_based_on_community_media_preferences": "そのコミュニティのメディアの好みに基づいてメディアプレビューを展開する", "show_all_nsfw": "すべてのNSFWを表示", "hide_all_nsfw": "すべてのNSFWを非表示", "tags": "タグ", "moderator_of": "のモデレーター", "not_subscriber_nor_moderator": "あなたはどのコミュニティの購読者でもモデレーターでもありません。", "more_posts_last_year": "{{count}} 件の投稿(直近の{{currentTimeFilterName}}): <1>昨年の投稿をもっと見る", "editor_fallback_warning": "高度なエディタの読み込みに失敗したため、基本的なテキストエディタを代替として使用しています。", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "このコミュニティは既に表示中です" } ================================================ FILE: public/translations/ko/default.json ================================================ { "about": "대하여", "comments": "댓글", "preferences": "설정", "submit": "제출", "dark": "어두운", "light": "밝은", "my_communities": "내 커뮤니티", "home": "홈", "all": "모두", "submitted": "제출됨", "post_by": "작성자", "post_to": "대상", "post_no_comments": "댓글", "post_comment": "댓글", "post_comments": "댓글들", "share": "공유", "save": "저장", "hide": "숨기기", "report": "신고", "crosspost": "크로스포스트", "time_1_minute_ago": "1분 전", "time_x_minutes_ago": "{{count}}분 전", "time_1_hour_ago": "1시간 전", "time_x_hours_ago": "{{count}}시간 전", "time_1_day_ago": "1일 전", "time_x_days_ago": "{{count}}일 전", "time_1_month_ago": "1개월 전", "time_x_months_ago": "{{count}}개월 전", "time_1_year_ago": "1년 전", "time_x_years_ago": "{{count}}년 전", "spoiler": "스포일러", "reply_reply": "답장", "reply_sorted_by": "정렬 기준", "all_comments": "모든 {{count}} 댓글", "no_comments": "댓글 없음 (아직)", "reply_score_singular": "1 점", "reply_score_plural": "{{score}} 포인트", "removed": "제거됨", "one_comment": "1 댓글", "submit_url_description": "직접 링크를 게시하여 미디어 포함 (.jpg, .gif, .mp4 등으로 끝남)", "title": "제목", "text": "텍스트", "required": "필수", "optional": "선택", "community_address": "커뮤니티 주소", "submit_choose": "게시할 위치 선택", "submit_notice": "커뮤니티의 규칙을 준수해 주세요, seedit에는 전역 관리자가 없습니다.", "challenge_from": "p/{{subplebbit}}에서의 챌린지", "challenge_for_post": "게시물에 대하여: \"{{publicationContent}}\"", "challenge_for_reply": "u/{{parentAddress}}에 대한 답변: \"{{publicationContent}}\"", "challenge_counter": "{{index}} 중 {{total}}", "cancel": "취소", "previous": "이전", "next": "다음", "loading": "로딩 중", "pending": "승인 대기 중", "submit_subscriptions_notice": "추천 커뮤니티", "submit_subscriptions": "구독한 커뮤니티", "rules_for": "규칙", "no_communities_found": "<1>https://github.com/bitsocialhq/lists에 커뮤니티를 찾을 수 없습니다", "connect_community_notice": "커뮤니티에 연결하려면 오른쪽 상단의 🔎를 사용하세요", "options": "옵션", "hide_options": "옵션 숨기기", "failed": "실패한", "time_1_minute": "1분", "time_x_minutes": "{{count}}분", "time_1_hour": "1시간", "time_x_hours": "{{count}}시간", "time_1_day": "1일", "time_x_days": "{{count}}일", "time_1_month": "1개월", "time_x_months": "{{count}}개월", "time_1_year": "1년", "time_x_years": "{{count}}년", "submit_post": "새로운 게시물 제출", "create_your_community": "나만의 커뮤니티 만들기", "moderators": "모더레이터", "about_moderation": "모더레이션 팀 정보", "join": "가입", "leave": "나가기", "created_by": "만든 사람: {{creatorAddress}}", "community_for": "{{date}}에 대한 커뮤니티", "post_submitted_on": "이 게시물은 {{postDate}}에 게시되었습니다", "users_online": "지금 여기 {{count}} 명의 사용자", "point": "포인트", "points": "포인트", "share_link": "링크 공유", "upvoted": "추천했습니다", "announcement": "공지", "child": "{{childrenCount}} 아이", "children": "{{childrenCount}} 아이들", "moderation": "중재", "interface_language": "인터페이스 언어", "theme": "테마", "account": "계정", "display_name": "표시 이름", "crypto_address": "암호 화폐 주소", "check": "확인", "crypto_address_verification": "암호 화폐 주소가 p2p로 해결되었을 때", "create": "만들기", "delete": "삭제", "locked": "잠금", "reason": "이유", "sorted_by": "정렬 기준", "downvoted": "다운보트", "hidden": "숨겨진", "saved": "저장됨", "overview": "개요", "user_since": "최소 {{time}}부터 사용자", "post_karma": "게시물 카르마", "comment_karma": "댓글 카르마", "full_comments": "모든 댓글", "context": "맥락", "block": "차단", "post": "게시물", "unhide": "보이기", "unblock": "차단 해제", "undo": "실행 취소", "post_hidden": "숨겨진 게시물", "link_copied": "링크 복사됨", "block_community": "커뮤니티 차단", "unblock_community": "커뮤니티 차단 해제", "search_feed_post": "이 피드에서 게시물 검색", "from": "보낸 사람", "via": "을 통해", "sent": "보냄", "unread": "읽지 않음", "comment_replies": "댓글 답글", "post_replies": "게시물 답글", "messages": "메시지", "inbox": "받은 편지함", "mark_all_read": "모두 읽은 상태로 표시", "comment_reply": "댓글 답글", "post_reply": "게시물 답글", "show_parent": "참조된 게시물 표시", "no_posts": "게시물이 없습니다", "media_url": "미디어 URL", "post_locked_info": "이 게시물은 {{state}} 상태입니다. 댓글을 달 수 없습니다.", "members_count": "{{count}} 회원", "communities": "커뮤니티", "edit": "편집", "moderator": "모더레이터", "description": "설명", "rules": "규칙", "save_options": "옵션 저장", "logo": "로고", "address": "주소", "nothing_found": "여기에는 아무것도 없는 것 같습니다", "stickied_comment": "고정된 댓글", "posts_last_synced": "마지막 동기화된 게시물 {{dateAgo}}", "community_settings": "커뮤니티 설정", "moderation_tools": "모더레이션 도구", "submit_to": "<1>{{link}}(으)로 제출하기", "edit_subscriptions": "구독 편집", "delete_confirm": "{{value}}를 삭제하시겠습니까?", "saving": "저장 중", "deleted": "삭제됨", "online": "온라인", "offline": "오프라인", "subscriber": "구독자", "join_communities_notice": "홈 피드에 표시되는 커뮤니티를 선택하려면 <1>{{join}} 또는 <2>{{leave}} 버튼을 클릭하세요.", "below_subscribed": "아래는 가입한 커뮤니티입니다.", "not_subscribed": "아직 어떤 커뮤니티에도 가입하지 않았습니다.", "below_moderator_access": "아래에서는 관리자로 액세스 할 수있는 커뮤니티가 나열되어 있습니다.", "not_moderator": "어떤 커뮤니티에서도 모더레이터가 아닙니다.", "create_community": "커뮤니티 만들기", "single_comment_notice": "하나의 댓글 스레드를 보고 있습니다", "single_comment_link": "나머지 댓글 보기", "owner_settings_notice": "커뮤니티의 소유자만 설정을 편집할 수 있습니다.", "preview": "미리보기", "shown_in_sidebar": "귀하의 커뮤니티 사이드바에 표시됩니다", "community_logo_info": "직접 이미지 링크를 사용하여 커뮤니티 로고를 설정하세요 (.jpg, .png 로 끝남)", "moderators_setting_info": "다른 사용자가 도전 없이 중재하고 게시하도록 허용합니다", "vote": "투표", "passing": "통과", "rejecting": "거부", "add_moderator": "모더레이터 추가", "add_rule": "규칙 추가", "json_settings": "JSON 설정", "json_settings_info": "커뮤니티 설정을 빠르게 복사 또는 붙여넣기", "address_setting_info": "암호 도메인을 사용하여 읽기 가능한 커뮤니티 주소 설정", "enter_crypto_address": "유효한 암호 주소를 입력하세요.", "check_for_updates": "<1>업데이트 확인", "refresh_to_update": "업데이트를 위해 페이지를 새로 고칩니다", "latest_development_version": "최신 개발 버전, 커밋 {{commit}}을 사용 중입니다. 안정 버전을 사용하려면 {{link}}로 이동하세요.", "latest_stable_version": "최신 안정 버전, seedit v{{version}}을 사용 중입니다.", "new_development_version": "새로운 개발 버전이 사용 가능합니다, 커밋 {{newCommit}}. 커밋 {{oldCommit}}을(를) 사용 중입니다.", "new_stable_version": "새로운 안정 버전이 사용 가능합니다, seedit v{{newVersion}}. seedit v{{oldVersion}}을(를) 사용 중입니다.", "download_latest_desktop": "최신 데스크톱 버전을 여기에서 다운로드하세요: {{link}}", "contribute_on_github": "GitHub에서 기여하기", "no_media_found": "미디어를 찾을 수 없습니다", "no_image_found": "이미지를 찾을 수 없습니다", "warning_spam": "경고: 도전 선택 안 함. 커뮤니티는 스팸 공격에 취약합니다.", "hide_help": "도움말 숨기기", "formatting_help": "서식 도움말", "you_see": "보이는", "you_type": "입력 중", "italics": "이탤릭", "bold": "굵게", "quoted_text": "인용된 텍스트", "item": "항목", "delete_community": "커뮤니티 삭제", "delete_community_description": "이 커뮤니티를 영구적으로 삭제하십시오. 해당 콘텐츠는 여전히 동료에 의해 씨앗이 될 수 있습니다", "add": "추가", "owner": "소유자", "admin": "관리자", "settings_saved": "p/{{subplebbitAddress}}의 설정이 저장되었습니다", "continue_thread": "이 스레드 계속하기", "mod_edit_reason": "모드 편집 이유", "double_confirm": "정말로 확실합니까? 이 작업은 되돌릴 수 없습니다.", "crypto_address_not_yours": "암호 주소는 다른 계정에 속합니다.", "crypto_address_yours": "암호 주소는이 계정에 속합니다.", "crypto_address_not_resolved": "암호 주소가 아직 해결되지 않았습니다.", "submit_to_string": "{{string}} 로 제출", "page_not_found": "페이지를 찾을 수 없음", "not_found_description": "요청하신 페이지가 존재하지 않습니다", "last_edited": "마지막으로 편집한 날짜: {{timestamp}}", "view_spoiler": "스포일러 보기", "default_communities": "기본 커뮤니티", "avatar": "아바타", "pending_edit": "대기 중인 편집", "failed_edit": "실패한 편집", "node_stats": "노드 통계", "version": "버전", "edit_reason": "편집 이유", "view_parent_comment": "상위 댓글 보기", "chain_ticker": "블록체인 티커", "token_address_whitelist": "토큰 주소 (<1>화이트리스트만)", "token_id": "토큰 ID", "paste_signature": "서명 붙여넣기", "copy_message_etherscan": "<1>{{copy}} 메시지를 <2>etherscan에서 서명", "copy": "복사", "copied": "복사됨", "missing_chain_ticker": "부재중인 블록체인 티커", "missing_token_address": "부재중인 토큰 주소", "missing_token_id": "부재중인 토큰 ID", "missing_signature": "부재중인 서명", "edited_timestamp": "편집됨 {{timestamp}}", "ban_user_for": "사용자를 <1>일 동안 차단하기", "crypto_wallets": "암호 화폐 지갑", "wallet_address": "지갑 주소", "remove": "삭제", "add_wallet": "<1>추가 암호 화폐 지갑", "show_settings": "설정 표시", "hide_settings": "설정 숨기기", "undelete": "삭제 취소", "downloading_comments": "댓글을 다운로드하는 중", "you_blocked_community": "이 커뮤니티를 차단했습니다", "show": "보여주다", "plebbit_options": "plebbit 옵션", "general": "일반", "more_posts_last_week": "{{count}} 게시물 지난 {{currentTimeFilterName}}: <1>지난 주의 게시물을 더 보기", "more_posts_last_month": "{{count}}개의 게시물 {{currentTimeFilterName}}: <1>지난 달의 더 많은 게시물 보기", "profile_info": "당신의 계정 u/{{shortAddress}}가 생성되었습니다. <1>표시 이름 설정, <2>백업 내보내기, <3>자세히 알아보기.", "show_all_instead": "{{timeFilterName}} 이후의 게시물이 표시됩니다. <1>대신 모두 표시", "subplebbit_offline_info": "커뮤니티가 오프라인일 수 있으며 게시에 실패할 수 있습니다.", "posts_last_synced_info": "게시물이 마지막으로 {{time}}에 동기화되었습니다. 커뮤니티가 오프라인 상태일 수 있으며 게시가 실패할 수 있습니다.", "import_account_backup": "<1>가져오기 계정 백업", "export_account_backup": "<1>내보내기 계정 백업", "save_reset_changes": "<1>저장하거나 <2>재설정 변경 사항", "delete_this_account": "<1>삭제 이 계정", "create_new_account": "<1>새로 만들기 계정", "wallet_number": "지갑 #{{index}}", "view_more": "더보기", "submit_community": "커뮤니티를 제출하세요", "hide_avatars_from_replies": "답글에서 아바타 숨기기", "yes": "네", "no": "아니요", "are_you_sure": "정말 확실합니까?", "a_short_title": "귀하의 커뮤니티를 위한 짧은 제목", "challenges": "도전", "challenges_subtitle": "스팸을 방지하기 위해 하나 이상의 챌린지를 선택하세요", "add_a_challenge": "도전 추가", "communities_you_moderate": "당신이 관리하는 커뮤니티", "blur_media": "NSFW/18+로 표시된 미디어 흐리게 처리", "nsfw_content": "NSFW 콘텐츠", "see_nsfw": "NSFW를 보려면 클릭", "see_nsfw_spoiler": "NSFW 스포일러를 보려면 클릭", "always_show_nsfw": "항상 NSFW 미디어를 표시하시겠습니까?", "always_show_nsfw_notice": "알겠습니다, 항상 NSFW 미디어를 표시하도록 기본 설정을 변경했습니다.", "content_options": "콘텐츠 옵션", "over_18": "18세 이상?", "must_be_over_18": "이 커뮤니티를 보려면 18세 이상이어야 합니다", "must_be_over_18_explanation": "이 콘텐츠를 보려면 최소한 18세 이상이어야 합니다. 당신은 18세 이상이며 성인 콘텐츠를 볼 준비가 되셨나요?", "no_thank_you": "아니요, 감사합니다", "continue": "계속", "download_latest_android": "최신 Android 버전을 다운로드하시겠습니까?", "submitter": "제출자", "block_user": "사용자 차단", "unblock_user": "사용자 차단 해제", "filtering_by_tag": "태그로 필터링: \"{{tag}}\"", "you_are_moderator": "당신은 이 커뮤니티의 관리자입니다", "you_are_admin": "당신은 이 커뮤니티의 관리자입니다", "you_are_owner": "당신은 이 커뮤니티의 소유자입니다", "looking_for_more_posts": "더 많은 게시물을 찾고 있습니다", "loading_feed": "피드를 로딩 중", "downloading_posts": "게시물 다운로드 중", "post_is_pending": "게시물이 보류 중입니다", "post_has_failed": "게시물이 실패했습니다", "choose_file": "파일 선택", "uploading": "업로드 중", "invalid_url_alert": "제공된 링크는 유효한 URL이 아닙니다.", "empty_comment_alert": "빈 댓글을 게시할 수 없습니다.", "no_subscriptions_message": "<1>{{accountName}}, 이것은 Seedit에서의 당신의 집입니다<2>당신이 좋아하는 커뮤니티를 찾으면, <3>그 커뮤니티에 가입하세요 <4>", "find_communities": "p/all에서 커뮤니티 찾기", "community_deleted": "커뮤니티가 성공적으로 삭제되었습니다.", "go_to_a_community": "커뮤니티로 이동", "enter_community_address": "커뮤니티 주소를 입력하세요", "all_communities": "모든 커뮤니티", "search_posts": "게시물 검색", "found_n_results_for": "\"{{query}}\"에 대해 {{count}}개의 게시물이 검색되었습니다", "clear_search": "검색 지우기", "no_matches_found_for": "\"{{query}}\"에 대한 일치 항목을 찾을 수 없습니다", "searching": "검색 중", "hide_default_communities_from_topbar": "상단바에서 기본 커뮤니티 숨기기", "media": "미디어", "hide_communities_tagged_as_nsfw": "NSFW/18+로 태그된 커뮤니티 숨기기", "tagged_as_adult": "\"성인\"으로 태그됨", "tagged_as_gore": "\"gore\"로 태그됨", "tagged_as_anti": "\"anti\"로 태그됨", "tagged_as_vulgar": "\"vulgar\"로 태그됨", "drop_here_or": "여기에 드롭 또는", "upload_button_warning": "자동 업로드는 브라우저의 CORS 정책에 의해 차단되었지만 Seedit Android 앱과 데스크탑 앱(Win/Mac/Linux)에서 사용할 수 있습니다.\n\nGitHub의 다운로드 링크 페이지로 이동하시겠습니까?", "create_community_warning": "커뮤니티를 만들려면 전체 노드를 실행해야 합니다. Seedit 데스크탑 앱 (Win/Mac/Linux)은 자동으로 전체 노드를 실행합니다.\n\nGitHub의 다운로드 링크 페이지로 이동하시겠습니까?", "avatars": "아바타", "filtering_by_nsfw": "NSFW 커뮤니티별 필터링", "notifications": "알림", "new_replies_received": "새로운 답글이 도착했습니다", "private_key_warning_title": "개인 키가 표시됩니다", "private_key_warning_description": "계정 데이터를 보려고 합니다. 여기에는 개인 키가 포함되어 있습니다. 개인 키를 누구와도 공유해서는 안 됩니다.", "go_back": "뒤로 가기", "loading_editor": "에디터 로딩 중", "show_thumbnails_next_to_links": "링크 옆에 썸네일 표시", "dont_show_thumbnails_next_to_links": "링크 옆에 썸네일 표시 안 함", "show_thumbnails_based_on_community_media_preferences": "해당 커뮤니티의 미디어 선호도에 따라 썸네일 표시", "media_previews": "미디어 미리보기", "auto_expand_media_previews": "미디어 미리보기를 자동 확장", "dont_auto_expand_media_previews_on_comments_pages": "댓글 페이지에서 미디어 미리보기를 자동 확장하지 않음", "video_player": "비디오 플레이어", "autoplay_videos_on_comments_page": "댓글 페이지에서 동영상 자동 재생", "mute_videos_by_default": "기본적으로 동영상 음소거", "expand_media_previews_based_on_community_media_preferences": "해당 커뮤니티의 미디어 선호도에 따라 미디어 미리보기를 확장합니다", "show_all_nsfw": "모든 NSFW 보기", "hide_all_nsfw": "모든 NSFW 숨기기", "tags": "태그", "moderator_of": "의 관리자", "not_subscriber_nor_moderator": "당신은 어떤 커뮤니티의 구독자도 아니고 중재자도 아닙니다.", "more_posts_last_year": "{{count}} 개 게시물 지난 {{currentTimeFilterName}}: <1>작년 게시물 더 보기", "editor_fallback_warning": "고급 편집기 로드에 실패하여 기본 텍스트 편집기를 대체로 사용합니다.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "이미 이 커뮤니티를 보고 있습니다" } ================================================ FILE: public/translations/mr/default.json ================================================ { "about": "बद्दल", "comments": "टिप्पण्या", "preferences": "प्राथमिकता", "submit": "सबमिट करा", "dark": "गडद", "light": "पांढरा", "my_communities": "माझ्या समुदायांतील", "home": "मुख्यपृष्ठ", "all": "सर्व", "submitted": "सबमिट केले", "post_by": "कडून", "post_to": "करीता", "post_no_comments": "टिप्पणी", "post_comment": "टिप्पणी", "post_comments": "टिप्पण्या", "share": "सामायिक करा", "save": "जतन करा", "hide": "लपवा", "report": "अहवाल", "crosspost": "क्रॉसपोस्ट", "time_1_minute_ago": "१ मिनिटांपूर्वी", "time_x_minutes_ago": "{{count}} मिनिटांपूर्वी", "time_1_hour_ago": "१ तासांपूर्वी", "time_x_hours_ago": "{{count}} तासांपूर्वी", "time_1_day_ago": "१ दिवसांपूर्वी", "time_x_days_ago": "{{count}} दिवसांपूर्वी", "time_1_month_ago": "१ महिन्यांपूर्वी", "time_x_months_ago": "{{count}} महिन्यांपूर्वी", "time_1_year_ago": "१ वर्षांपूर्वी", "time_x_years_ago": "{{count}} वर्षांपूर्वी", "spoiler": "स्पॉयलर", "reply_reply": "उत्तर", "reply_sorted_by": "याप्रमाणे क्रमवारीत", "all_comments": "सर्व {{count}} टिप्पण्या", "no_comments": "कोणत्याही टिप्पण्या नाहीत (अजून)", "reply_score_singular": "1 गुण", "reply_score_plural": "{{score}} पॉइंट्स", "removed": "काढून टाकला", "one_comment": "1 टिप्पणी", "submit_url_description": ".jpg, .gif, .mp4 इत्यादीत समाप्त होणार्या थेट लिंकच्या माध्यमातून माध्यमाची एम्बेड करा", "title": "शीर्षक", "text": "मजकूर", "required": "आवश्यक", "optional": "वैकल्पिक", "community_address": "समुदाय पत्ता", "submit_choose": "पोस्ट कुठे करावे हे निवडा", "submit_notice": "कृपया समुदायाच्या नियमांची पालना करा, seedit मध्ये जागतिक प्रशासक नाहीत.", "challenge_from": "p/{{subplebbit}} मधून चॅलेंज", "challenge_for_post": "पोस्टसाठी: \"{{publicationContent}}\"", "challenge_for_reply": "u/{{parentAddress}} ला प्रतिसाद: \"{{publicationContent}}\"", "challenge_counter": "{{index}} पैकी {{total}}", "cancel": "रद्द करा", "previous": "मागील", "next": "पुढील", "loading": "लोड करीत आहे", "pending": "प्रलंबित", "submit_subscriptions_notice": "सुचविलेले संघटने", "submit_subscriptions": "आपण सदस्यता घेतलेली समुदाय", "rules_for": "साठीचे नियम", "no_communities_found": "<1>https://github.com/bitsocialhq/lists वर कोणत्याही समुदायाचा शोध लागलेला नाही", "connect_community_notice": "समुदायाशी जोडण्यासाठी, उजव्या वरील कोपर्यात 🔎 वापरा", "options": "पर्याय", "hide_options": "पर्याय लपवा", "failed": "अयशस्वी", "time_1_minute": "1 मिनिट", "time_x_minutes": "{{count}} मिनिटे", "time_1_hour": "1 तास", "time_x_hours": "{{count}} तास", "time_1_day": "1 दिवस", "time_x_days": "{{count}} दिवस", "time_1_month": "1 महिना", "time_x_months": "{{count}} महिने", "time_1_year": "1 वर्ष", "time_x_years": "{{count}} वर्षे", "submit_post": "नवीन पोस्ट सबमिट करा", "create_your_community": "तुमचं स्वत: संघ तयार करा", "moderators": "मॉडरेटर्स", "about_moderation": "मॉडरेशन टीमविषयी", "join": "सामील होऊ", "leave": "सोडा", "created_by": "द्वारे तयार केले {{creatorAddress}}", "community_for": "{{date}}साठी एक समुदाय", "post_submitted_on": "हा पोस्ट {{postDate}} रोजी सबमिट केला गेला होता", "users_online": "{{count}} युजर्स इथे आत्ता", "point": "बिंदू", "points": "बिंदू", "share_link": "लिंक सामायिक करा", "upvoted": "अपवोट दिला", "announcement": "सूचना", "child": "{{childrenCount}} मुलगे", "children": "{{childrenCount}} मुलगा/मुलगी", "moderation": "शांतता", "interface_language": "इंटरफेस भाषा", "theme": "थीम", "account": "खाता", "display_name": "प्रदर्शन नाव", "crypto_address": "क्रिप्टो पत्ता", "check": "तपासा", "crypto_address_verification": "क्रिप्टो पत्ता p2p द्वारे सोडला आहे कि नाही", "create": "तयार करा", "delete": "काढा", "locked": "लॉक केला", "reason": "कारण", "sorted_by": "वर्गीकृत केलं", "downvoted": "खाली दिलेला मत", "hidden": "लपवला", "saved": "साचला", "overview": "वर्गीकरण", "user_since": "किमान {{time}} पासून वापरकर्ता", "post_karma": "पोस्ट कर्मा", "comment_karma": "कॉमेंट कर्मा", "full_comments": "संपूर्ण टिप्पण्या", "context": "संदर्भ", "block": "ब्लॉक", "post": "पोस्ट", "unhide": "दाखवा", "unblock": "ब्लॉक काढा", "undo": "रद्द करा", "post_hidden": "पोस्ट लपविली", "link_copied": "लिंक कॉपी केला गेला", "block_community": "समुदाय अवरोधित करा", "unblock_community": "समुदाय अवरोधन काढा", "search_feed_post": "ह्या फीडमध्ये एक पोस्ट शोधा", "from": "पासून", "via": "मार्फत", "sent": "पाठविला", "unread": "अपठित", "comment_replies": "टिप्पणी उत्तरे", "post_replies": "पोस्ट उत्तरे", "messages": "संदेश", "inbox": "इनबॉक्स", "mark_all_read": "सर्व कोणत्याही वाचल्याचं दर्जा", "comment_reply": "कॉमेंटचा उत्तर", "post_reply": "पोस्टचा उत्तर", "show_parent": "संदर्भित पोस्ट दाखवा", "no_posts": "कोणतेही पोस्ट नाहीत", "media_url": "मिडिया URL", "post_locked_info": "हा पोस्ट {{state}} आहे. आपण टिप्पणी करू शकणार नाही.", "members_count": "{{count}} सदस्य", "communities": "संघा", "edit": "संपादन", "moderator": "संचालक", "description": "वर्णन", "rules": "नियम", "save_options": "विकल्प साठवा", "logo": "लोगो", "address": "पत्ता", "nothing_found": "काहीतरी दिसत नाही आहे", "stickied_comment": "टाळलेला टिप्पणी", "posts_last_synced": "शेवटी सिंक केलेले पोस्ट्स {{dateAgo}}", "community_settings": "समुदाय सेटिंग्स", "moderation_tools": "निरीक्षण साधने", "submit_to": "<1>{{link}} कडे पाठवा", "edit_subscriptions": "सदस्यता संपादने", "delete_confirm": "तुम्हाला खात्री आहे का की तुम्ही {{value}} काढून टाकणार आहात?", "saving": "सेवा करत आहे", "deleted": "काढले आहे", "online": "ऑनलाइन", "offline": "ऑफलाइन", "subscriber": "सदस्य", "join_communities_notice": "होम फीडवर कोणत्या संस्था दाखवायला आवश्यक आहे, ते निवडण्यासाठी <1>{{join}} किंवा <2>{{leave}} बटणे दाबा.", "below_subscribed": "खाली तुम्ही सदस्य झालेल्या समुदाये आहेत.", "not_subscribed": "तुम्ही अद्याप कोणत्याही समुदायाला सदस्य नाहीत.", "below_moderator_access": "खाली तुम्ही मॉडरेटर ऍक्सेस असलेल्या कम्युनिटीस दिलेली आहे.", "not_moderator": "तुम्ही कोणत्याही संघटनेत मॉडरेटर नाही.", "create_community": "समुदाय तयार करा", "single_comment_notice": "तुम्ही एक टिप्पणीच्या थ्रेडला पहात आहात", "single_comment_link": "शिल्लक टिप्पण्यांची तपासणी करा", "owner_settings_notice": "फक्त समुदायाचा मालकच त्याच्या सेटिंग्ज संपादित करू शकतो.", "preview": "पूर्वावलोकन", "shown_in_sidebar": "तुमच्या समुदायाच्या साइडबारमध्ये दर्शविले जाते", "community_logo_info": "सीध्या चित्र लिंक वापरून एक समुदाय लोगो सेट करा (जे .jpg, .png ने समाप्त होते)", "moderators_setting_info": "इतर वापरकर्त्यांना चॅलेंज न करून मॉडरेट आणि पोस्ट करू द्या", "vote": "वोट द्या", "passing": "अशीत करणे", "rejecting": "अस्वीकृत करणारे", "add_moderator": "मॉडरेटर जोडा", "add_rule": "नियम जोडा", "json_settings": "JSON सेटिंग्ज", "json_settings_info": "समुदाय सेटिंग्ज कॉपी किंवा पेस्ट करा", "address_setting_info": "क्रिप्टो डोमेन वापरून वाचण्यायोग्य समुदाय पत्ता सेट करा", "enter_crypto_address": "कृपया मान्य क्रिप्टो पत्ता प्रविष्ट करा.", "check_for_updates": "<1>चेक अपडेट्ससाठी", "refresh_to_update": "अपडेट करण्यासाठी पृष्ठ पुन्हा लोड करा", "latest_development_version": "तुम्ही आधुनिक विकास संस्करणावर आहात, कमिट {{commit}}. स्थिर संस्करण वापरण्यासाठी, {{link}} जा.", "latest_stable_version": "तुम्ही आधुनिक स्थिर संस्करणावर आहात, seedit v{{version}}.", "new_development_version": "नवीन विकास संस्करण उपलब्ध आहे, कमिट {{newCommit}}. आपण कमिट {{oldCommit}} वापरत आहात.", "new_stable_version": "नवीन स्थिर संस्करण उपलब्ध आहे, seedit v{{newVersion}}. आपण seedit v{{oldVersion}} वापरत आहात.", "download_latest_desktop": "येथे नवीन डेस्कटॉप संस्करण डाउनलोड करा: {{link}}", "contribute_on_github": "GitHub वर सहय्यक करा", "no_media_found": "कोणत्याही मीडिया सापडलेली नाही", "no_image_found": "कोणत्याही चित्रपट आढळला नाही", "warning_spam": "सावध: कोणत्याही चॅलेंज निवडलेला नाही, समुदाय अस्पष्टतेत आहे.", "hide_help": "मदत लपवा", "formatting_help": "स्वरूपण मदत", "you_see": "तुम्ही पहा", "you_type": "तुम्ही टाइप करत आहात", "italics": "इटॅलिक", "bold": "बोल्ड", "quoted_text": "नुदंबित मजकूर", "item": "आयटम", "delete_community": "समुदाय मिटवा", "delete_community_description": "हे समुदाय कायमपणे हटवा. त्याची सामग्री हल्लामध्ये असू शकते", "add": "जोडा", "owner": "मालक", "admin": "व्यवस्थापक", "settings_saved": "p/{{subplebbitAddress}} साठी सेटिंग्ज सेव्ह केल्या", "continue_thread": "हा थ्रेड सुरू ठेवा", "mod_edit_reason": "मॉड संपादन कारण", "double_confirm": "खात्री आहात का? हा क्रियेचा परत न लागणारा आहे.", "crypto_address_not_yours": "क्रिप्टो पत्ता इतर खात्याशी संबंधित आहे.", "crypto_address_yours": "क्रिप्टो पत्ता हा खात्याकडे संबंधित आहे.", "crypto_address_not_resolved": "क्रिप्टो पत्ता अजून सोपवला नाही.", "submit_to_string": "{{string}} वर सबमिट करा", "page_not_found": "पृष्ठ सापडला नाही", "not_found_description": "आपण विनंती केलेला पृष्ठ अस्तित्वात नाही", "last_edited": "शेवटचा संपादन {{timestamp}}", "view_spoiler": "स्पॉईलर पहा", "default_communities": "डिफॉल्ट समुदाय", "avatar": "अवतार", "pending_edit": "प्रलंबित संपादन", "failed_edit": "अयशस्वी संपादन", "node_stats": "नोड स्टॅट्स", "version": "आवृत्ती", "edit_reason": "संपादनाचे कारण", "view_parent_comment": "मूळ टिप्पणी पहा", "chain_ticker": "श्रृंखला टिकर", "token_address_whitelist": "टोकन पत्ता (<1>केवळ सफेद सूची)", "token_id": "टोकन आयडी", "paste_signature": "हस्ताक्षर पेस्ट करा", "copy_message_etherscan": "<1>{{copy}} संदेश <2>etherscan वर हस्ताक्षर करण्यासाठी", "copy": "कॉपी", "copied": "कॉपी केली", "missing_chain_ticker": "गुमलेला श्रृंखला टिकर", "missing_token_address": "गुमलेला टोकन पत्ता", "missing_token_id": "गुमलेला टोकन आयडी", "missing_signature": "गुमलेली स्वाक्षरे", "edited_timestamp": "{{timestamp}} संपादित", "ban_user_for": "वापरकर्ता ब्लॉक करा <1> दिवस", "crypto_wallets": "क्रिप्टो बटव्या", "wallet_address": "बटव्या पत्ता", "remove": "काढा", "add_wallet": "<1>जोडा एक क्रिप्टो बटवा", "show_settings": "सेटिंग्ज दाखवा", "hide_settings": "सेटिंग्ज लपवा", "undelete": "डिलीट करा", "downloading_comments": "टिप्पणी डाऊनलोड करत आहे", "you_blocked_community": "तुम्ही ह्या समुदायाला ब्लॉक केलं आहे", "show": "दाखवा", "plebbit_options": "प्लेबिट पर्याय", "general": "सामान्य", "more_posts_last_week": "{{count}} पोस्ट मागील {{currentTimeFilterName}}: <1>गेल्या आठवड्यातील अधिक पोस्ट दर्शवा", "more_posts_last_month": "{{count}} पोस्ट {{currentTimeFilterName}} मध्ये: <1>गत महिन्याचे अधिक पोस्ट दर्शवा", "profile_info": "तुमचा खाता u/{{shortAddress}} तयार केला गेला. <1>प्रदर्शन नाव सेट करा, <2>बॅकअप निर्यात करा, <3>अधिक जाणून घ्या.", "show_all_instead": "{{timeFilterName}} पासून पोस्ट दर्शवित आहेत, <1>त्याऐवजी सर्व दाखवा", "subplebbit_offline_info": "समुदाय ऑफलाइन असू शकते आणि प्रकाशन अयशस्वी होऊ शकते.", "posts_last_synced_info": "पोस्ट्स शेवटच्या {{time}}ला सिंक केल्या गेले होते, समुदाय ऑफलाइन असू शकतो आणि प्रकाशन अयशस्वी होऊ शकते.", "import_account_backup": "<1>आयात खातीचा बॅकअप", "export_account_backup": "<1>निर्यात खातीचा बॅकअप", "save_reset_changes": "<1>जतन करा किंवा <2>रीसेट करा बदल", "delete_this_account": "<1>हटवा हा खाता", "create_new_account": "<1>नवीन तयार करा खाता", "wallet_number": "वॉलेट #{{index}}", "view_more": "अधिक पाहा", "submit_community": "तुमच्या समुदायाला सबमिट करा", "hide_avatars_from_replies": "उत्तरांमधून अवतार लपवा", "yes": "होय", "no": "नाही", "are_you_sure": "तुम्हाला खात्री आहे का?", "a_short_title": "तुमच्या समुदायासाठी एक छोटा शीर्षक", "challenges": "आव्हाने", "challenges_subtitle": "स्पॅम रोखण्यासाठी एक किंवा अधिक आव्हाने निवडा", "add_a_challenge": "एक आव्हान जोडा", "communities_you_moderate": "तुम्ही ज्या समुदायाचे व्यवस्थापन करता", "blur_media": "NSFW/18+ म्हणून चिन्हांकित केलेली मीडिया धूसर करा", "nsfw_content": "NSFW सामग्री", "see_nsfw": "NSFW पाहण्यासाठी क्लिक करा", "see_nsfw_spoiler": "NSFW स्पॉयलर पाहण्यासाठी क्लिक करा", "always_show_nsfw": "तुम्ही नेहमी NSFW मीडिया दाखवू इच्छिता का?", "always_show_nsfw_notice": "ठीक आहे, आम्ही तुमची प्राधान्ये नेहमी NSFW मीडिया दर्शवण्यासाठी बदलली आहेत.", "content_options": "सामग्री पर्याय", "over_18": "१८ वर्षांपेक्षा जास्त?", "must_be_over_18": "या समुदायाला पाहण्यासाठी तुम्ही १८+ असणे आवश्यक आहे", "must_be_over_18_explanation": "या सामग्रीला पाहण्यासाठी तुम्हाला किमान अठरा वर्षे वयाचे असावे लागेल. तुम्ही अठरा वर्षे वयाच्या वरील आहात का आणि प्रौढ सामग्री पाहण्यास तयार आहात?", "no_thank_you": "नाही, धन्यवाद", "continue": "सुरू ठेवा", "download_latest_android": "ताज्या Android आवृत्तीचे डाउनलोड करा?", "submitter": "समीक्षक", "block_user": "वापरकर्त्याला ब्लॉक करा", "unblock_user": "वापरकर्त्याचा ब्लॉक अनब्लॉक करा", "filtering_by_tag": "टॅगद्वारे फिल्टर करणे: \"{{tag}}\"", "you_are_moderator": "तुम्ही या समुदायाचे मॉडरेटर आहात", "you_are_admin": "तुम्ही या समुदायाचे प्रशासक आहात", "you_are_owner": "तुम्ही या समुदायाचे मालक आहात", "looking_for_more_posts": "अधिक पोस्ट शोधत आहे", "loading_feed": "फीड लोड करत आहे", "downloading_posts": "पोस्ट डाउनलोड होत आहे", "post_is_pending": "पोस्ट प्रलंबित आहे", "post_has_failed": "पोस्ट अयशस्वी झाला", "choose_file": "फाइल निवडा", "uploading": "अपलोड करत आहे", "invalid_url_alert": "दिलेला लिंक वैध URL नाही.", "empty_comment_alert": "रिक्त टिप्पणी पोस्ट करू शकत नाही.", "no_subscriptions_message": "<1>{{accountName}}, हा तुमचा घर Seedit वर आहे<2>जेव्हा तुम्हाला एक समुदाय आवडेल, <3>त्यात सामील व्हा <4>", "find_communities": "p/all वर समुदाय शोधा", "community_deleted": "समुदाय यशस्वीपणे हटवले गेले.", "go_to_a_community": "एका समुदायावर जा", "enter_community_address": "एक समुदायाचा पत्ता प्रविष्ट करा", "all_communities": "सर्व समुदाय", "search_posts": "पोस्ट शोधा", "found_n_results_for": "\"{{query}}\" साठी {{count}} पोस्ट्स सापडल्या", "clear_search": "शोध साफ करा", "no_matches_found_for": "\"{{query}}\" साठी कोणताही जुळवून मिळाला नाही", "searching": "शोध करत आहे", "hide_default_communities_from_topbar": "टॉपबारमधून डिफॉल्ट समुदाय लपवा", "media": "मीडिया", "hide_communities_tagged_as_nsfw": "NSFW/18+ म्हणून टॅग केलेल्या समुदायांना लपवा", "tagged_as_adult": "\"एडल्ट\" म्हणून टॅग केले", "tagged_as_gore": "\"गोर\" म्हणून टॅग केले", "tagged_as_anti": "\"एंटी\" म्हणून टॅग केलेले", "tagged_as_vulgar": "\"vulgar\" म्हणून टॅग केले", "drop_here_or": "इथे ड्रॉप करा किंवा", "upload_button_warning": "ऑटो-अपलोड आपल्या ब्राउझरच्या CORS धोरणामुळे अवरुद्ध आहे, परंतु ते Seedit Android अॅप आणि डेस्कटॉप अॅप (Win/Mac/Linux) वर उपलब्ध आहे.\n\nGitHub वर डाउनलोड लिंक पृष्ठावर जा?", "create_community_warning": "एक समुदाय तयार करण्यासाठी एक पूर्ण नोड चालवणे आवश्यक आहे. Seedit डेस्कटॉप अॅप (Win/Mac/Linux) स्वयंचलितपणे एक पूर्ण नोड चालवते.\n\nGitHub वर डाउनलोड लिंक पृष्ठावर जा?", "avatars": "अवतार", "filtering_by_nsfw": "NSFW समुदायांद्वारे फिल्टरिंग", "notifications": "सूचनाएँ", "new_replies_received": "नवीन प्रतिक्रिया प्राप्त", "private_key_warning_title": "तुमची खासगी कळी दर्शविली जाईल", "private_key_warning_description": "तुम्ही तुमच्या खात्याचा डेटा पाहणार आहात, ज्यामध्ये तुमची खाजगी कळी समाविष्ट आहे. तुम्ही कधीही तुमची खाजगी कळी कोणासही शेअर करू नये.", "go_back": "परत जा", "loading_editor": "एडिटर लोड करत आहे", "show_thumbnails_next_to_links": "दुव्यांबाजूला थंबनेल दर्शवा", "dont_show_thumbnails_next_to_links": "दुव्यांच्या बाजूला थंबनेल दाखवू नका", "show_thumbnails_based_on_community_media_preferences": "त्या समुदायाच्या मीडिया प्राधान्यांवर आधारित थंबनेल दर्शवा", "media_previews": "मिडिया पूर्वावलोकने", "auto_expand_media_previews": "मीडिया प्रिव्ह्यू स्वयंचलितपणे वाढवा", "dont_auto_expand_media_previews_on_comments_pages": "टिप्पणी पृष्ठांवर मीडिया पूर्वावलोकन आपोआप विस्तृत करू नका", "video_player": "व्हिडिओ प्लेयर", "autoplay_videos_on_comments_page": "टिप्पण्यांच्या पृष्ठावर व्हिडिओ ऑटोप्ले करा", "mute_videos_by_default": "व्हिडिओ डिफॉल्टने म्यूट करा", "expand_media_previews_based_on_community_media_preferences": "त्या समुदायाच्या मीडिया प्राधान्यांनुसार मीडिया प्रीव्ह्यू विस्तारा", "show_all_nsfw": "सर्व NSFW दाखवा", "hide_all_nsfw": "सर्व NSFW लपवा", "tags": "टॅग", "moderator_of": "मॉडरेटर", "not_subscriber_nor_moderator": "तुम कोणत्याही समुदायाचे सदस्य किंवा मॉडरेटर नाही.", "more_posts_last_year": "{{count}} पोस्ट मागील {{currentTimeFilterName}}: <1>मागील वर्षीचे अधिक पोस्ट दाखवा", "editor_fallback_warning": "प्रगत संपादक लोड करण्यात अयशस्वी, फallback म्हणून मूलभूत टेक्स्ट संपादक वापरत आहे.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "तुम्ही आधीच हे समुदाय पाहत आहात" } ================================================ FILE: public/translations/nl/default.json ================================================ { "about": "Over", "comments": "reacties", "preferences": "Voorkeuren", "submit": "Indienen", "dark": "Donker", "light": "Licht", "my_communities": "Mijn gemeenschappen", "home": "Thuis", "all": "Alle", "submitted": "Ingediend", "post_by": "Door", "post_to": "Naar", "post_no_comments": "Reageer", "post_comment": "Reactie", "post_comments": "Reacties", "share": "Delen", "save": "Opslaan", "hide": "Verbergen", "report": "Rapporteren", "crosspost": "Crosspost", "time_1_minute_ago": "1 minuut geleden", "time_x_minutes_ago": "{{count}} minuten geleden", "time_1_hour_ago": "1 uur geleden", "time_x_hours_ago": "{{count}} uur geleden", "time_1_day_ago": "1 dag geleden", "time_x_days_ago": "{{count}} dagen geleden", "time_1_month_ago": "1 maand geleden", "time_x_months_ago": "{{count}} maanden geleden", "time_1_year_ago": "1 jaar geleden", "time_x_years_ago": "{{count}} jaar geleden", "spoiler": "Spoiler", "reply_reply": "Antwoord", "reply_sorted_by": "Gesorteerd op", "all_comments": "Alle {{count}} reacties", "no_comments": "Geen reacties (nog)", "reply_score_singular": "1 punt", "reply_score_plural": "{{score}} punten", "removed": "Verwijderd", "one_comment": "1 opmerking", "submit_url_description": "media insluiten door de directe link te posten (eindigend op .jpg, .gif, .mp4, etc.)", "title": "titel", "text": "tekst", "required": "vereist", "optional": "optioneel", "community_address": "gemeenschapsadres", "submit_choose": "kies waar te posten", "submit_notice": "wees alsjeblieft bewust van de regels van de gemeenschap, seedit heeft geen wereldwijde beheerders.", "challenge_from": "Uitdaging van p/{{subplebbit}}", "challenge_for_post": "voor post: \"{{publicationContent}}\"", "challenge_for_reply": "voor antwoord aan u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} van {{total}}", "cancel": "Annuleren", "previous": "Vorige", "next": "Volgende", "loading": "Laden", "pending": "In afwachting", "submit_subscriptions_notice": "Aanbevolen gemeenschappen", "submit_subscriptions": "uw geabonneerde gemeenschappen", "rules_for": "regels voor", "no_communities_found": "Geen gemeenschappen gevonden op <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "Gebruik 🔎 rechtsboven om verbinding te maken met een gemeenschap", "options": "opties", "hide_options": "opties verbergen", "failed": "mislukt", "time_1_minute": "1 minuut", "time_x_minutes": "{{count}} minuten", "time_1_hour": "1 uur", "time_x_hours": "{{count}} uur", "time_1_day": "1 dag", "time_x_days": "{{count}} dagen", "time_1_month": "1 maand", "time_x_months": "{{count}} maanden", "time_1_year": "1 jaar", "time_x_years": "{{count}} jaar", "submit_post": "Een nieuwe post indienen", "create_your_community": "Maak je eigen gemeenschap", "moderators": "moderators", "about_moderation": "over het moderatieteam", "join": "Lid worden", "leave": "vertrekken", "created_by": "gemaakt door {{creatorAddress}}", "community_for": "een gemeenschap voor {{date}}", "post_submitted_on": "deze post is ingediend op {{postDate}}", "users_online": "{{count}} gebruikers hier nu", "point": "punt", "points": "punten", "share_link": "deel link", "upvoted": "heeft een upvote gegeven", "announcement": "aankondiging", "child": "{{childrenCount}} kinderen", "children": "{{childrenCount}} kind", "moderation": "moderatie", "interface_language": "interface taal", "theme": "thema", "account": "account", "display_name": "weergavenaam", "crypto_address": "crypto adres", "check": "controleren", "crypto_address_verification": "als het crypto adres p2p is opgelost", "create": "maken", "delete": "verwijderen", "locked": "vergrendeld", "reason": "reden", "sorted_by": "gesorteerd op", "downvoted": "negatief gestemd", "hidden": "verborgen", "saved": "opgeslagen", "overview": "overzicht", "user_since": "Gebruiker sinds ten minste {{time}}", "post_karma": "post karma", "comment_karma": "commentaar-karma", "full_comments": "alle reacties", "context": "context", "block": "blokkeren", "post": "bericht", "unhide": "toon", "unblock": "deblokkeren", "undo": "ongedaan maken", "post_hidden": "verborgen bericht", "link_copied": "link gekopieerd", "block_community": "gemeenschap blokkeren", "unblock_community": "gemeenschapsblokkering opheffen", "search_feed_post": "Zoek een bericht in deze feed", "from": "van", "via": "via", "sent": "verzonden", "unread": "ongelezen", "comment_replies": "reacties op opmerkingen", "post_replies": "reacties op berichten", "messages": "berichten", "inbox": "inbox", "mark_all_read": "markeer alles als gelezen", "comment_reply": "reageren op reactie", "post_reply": "reageren op bericht", "show_parent": "toon de verwezen post", "no_posts": "geen berichten", "media_url": "media-url", "post_locked_info": "Dit bericht is {{state}}. U kunt geen opmerking plaatsen.", "members_count": "{{count}} leden", "communities": "gemeenschap", "edit": "bewerken", "moderator": "Moderator", "description": "Beschrijving", "rules": "Regels", "save_options": "Opties opslaan", "logo": "Logo", "address": "Adres", "nothing_found": "Het lijkt erop dat hier niets is", "stickied_comment": "Vastgezette opmerking", "posts_last_synced": "Laatst gesynchroniseerde berichten {{dateAgo}}", "community_settings": "Community-instellingen", "moderation_tools": "Moderatiehulpmiddelen", "submit_to": "Verzenden naar <1>{{link}}", "edit_subscriptions": "Abonnementen bewerken", "delete_confirm": "Weet je zeker dat je {{value}} wilt verwijderen?", "saving": "Opslaan", "deleted": "Verwijderd", "online": "Online", "offline": "Offline", "subscriber": "Abonnee", "join_communities_notice": "Klik op de knoppen <1>{{join}} of <2>{{leave}} om te kiezen welke gemeenschappen op de startpagina verschijnen.", "below_subscribed": "Hieronder vind je de gemeenschappen waarop je geabonneerd bent.", "not_subscribed": "Je bent nog niet geabonneerd op een gemeenschap.", "below_moderator_access": "Hieronder staan de gemeenschappen waarop u moderator toegang heeft.", "not_moderator": "Je bent geen moderator in een gemeenschap.", "create_community": "Gemeenschap creëren", "single_comment_notice": "Je bekijkt een draad van slechts één opmerking", "single_comment_link": "Bekijk de rest van de opmerkingen", "owner_settings_notice": "Alleen de eigenaar van de community kan de instellingen bewerken.", "preview": "voorbeeld", "shown_in_sidebar": "getoond in de zijbalk van uw gemeenschap", "community_logo_info": "stel een gemeenschapslogo in met behulp van de directe afbeeldingslink (eindigend op .jpg, .png)", "moderators_setting_info": "laat andere gebruikers modereren en posten zonder uitdagingen", "vote": "stemmen", "passing": "slagen", "rejecting": "afwijzing", "add_moderator": "een moderator toevoegen", "add_rule": "een regel toevoegen", "json_settings": "JSON-instellingen", "json_settings_info": "snel de gemeenschapsinstellingen kopiëren of plakken", "address_setting_info": "Stel een leesbaar gemeenschapsadres in met behulp van een crypto-domein", "enter_crypto_address": "Voer alstublieft een geldig crypto-adres in.", "check_for_updates": "<1>Controleer op updates", "refresh_to_update": "Vernieuw de pagina om bij te werken", "latest_development_version": "Je gebruikt de nieuwste ontwikkelingsversie, commit {{commit}}. Ga naar {{link}} om de stabiele versie te gebruiken.", "latest_stable_version": "Je gebruikt de nieuwste stabiele versie, seedit v{{version}}.", "new_development_version": "Nieuwe ontwikkelingsversie beschikbaar, commit {{newCommit}}. Je gebruikt commit {{oldCommit}}.", "new_stable_version": "Nieuwe stabiele versie beschikbaar, seedit v{{newVersion}}. Je gebruikt seedit v{{oldVersion}}.", "download_latest_desktop": "Download de nieuwste desktopversie hier: {{link}}", "contribute_on_github": "Bijdragen op GitHub", "no_media_found": "Geen media gevonden", "no_image_found": "Geen afbeelding gevonden", "warning_spam": "Waarschuwing: geen uitdaging geselecteerd, gemeenschap is kwetsbaar voor spam-aanvallen.", "hide_help": "Help verbergen", "formatting_help": "Opmaakhulp", "you_see": "je ziet", "you_type": "Je typt", "italics": "cursief", "bold": "vet", "quoted_text": "geciteerde tekst", "item": "item", "delete_community": "gemeenschap verwijderen", "delete_community_description": "Verwijder deze community permanent. De inhoud kan nog steeds door peers worden gezaaid", "add": "toevoegen", "owner": "eigenaar", "admin": "beheerder", "settings_saved": "Instellingen opgeslagen voor p/{{subplebbitAddress}}", "continue_thread": "ga verder in deze thread", "mod_edit_reason": "Reden van mod-bewerking", "double_confirm": "Weet u het zeker? Deze actie is onomkeerbaar.", "crypto_address_not_yours": "Crypto-adres behoort tot een andere account.", "crypto_address_yours": "Crypto-adres behoort tot deze account.", "crypto_address_not_resolved": "Crypto-adres is nog niet opgelost.", "submit_to_string": "Indienen bij {{string}}", "page_not_found": "Pagina niet gevonden", "not_found_description": "De pagina die je hebt opgevraagd, bestaat niet", "last_edited": "laatst bewerkt {{timestamp}}", "view_spoiler": "bekijk spoiler", "default_communities": "standaardgemeenschappen", "avatar": "avatar", "pending_edit": "in afwachting van bewerking", "failed_edit": "mislukte bewerking", "node_stats": "knoopstatistieken", "version": "versie", "edit_reason": "reden van bewerking", "view_parent_comment": "bekijk ouder commentaar", "chain_ticker": "Blockchain ticker", "token_address_whitelist": "Tokenadres (<1>alleen whitelist)", "token_id": "Token-ID", "paste_signature": "Plak handtekening", "copy_message_etherscan": "<1>{{copy}} bericht om te ondertekenen op <2>etherscan", "copy": "kopiëren", "copied": "gekopieerd", "missing_chain_ticker": "Ontbrekende blockchain ticker", "missing_token_address": "Ontbrekend tokenadres", "missing_token_id": "Ontbrekend token-ID", "missing_signature": "Ontbrekende handtekening", "edited_timestamp": "Bewerkt {{timestamp}}", "ban_user_for": "Gebruiker verbannen voor <1> dag(en)", "crypto_wallets": "Crypto-portefeuilles", "wallet_address": "Wallet adres", "remove": "Verwijderen", "add_wallet": "<1>Voeg toe een cryptoportemonnee toe", "show_settings": "Instellingen weergeven", "hide_settings": "Instellingen verbergen", "undelete": "Herstellen", "downloading_comments": "reacties downloaden", "you_blocked_community": "U hebt deze gemeenschap geblokkeerd", "show": "tonen", "plebbit_options": "plebbit-opties", "general": "algemeen", "more_posts_last_week": "{{count}} berichten laatste {{currentTimeFilterName}}: <1>toon meer berichten van vorige week", "more_posts_last_month": "{{count}} berichten in {{currentTimeFilterName}}: <1>toon meer berichten van vorige maand", "profile_info": "Je account u/{{shortAddress}} is aangemaakt. <1>Stel weergavenaam in, <2>exporteer backup, <3>meer leren.", "show_all_instead": "Berichten sinds {{timeFilterName}}, <1>toon in plaats daarvan alles", "subplebbit_offline_info": "De gemeenschap kan offline zijn en publiceren kan mislukken.", "posts_last_synced_info": "Berichten voor het laatst gesynchroniseerd {{time}}, de community kan offline zijn en publiceren kan mislukken.", "import_account_backup": "<1>importeer accountback-up", "export_account_backup": "<1>exporteer accountback-up", "save_reset_changes": "<1>opslaan of <2>resetten wijzigingen", "delete_this_account": "<1>verwijder dit account", "create_new_account": "<1>maak een nieuw account aan", "wallet_number": "portemonnee #{{index}}", "view_more": "meer bekijken", "submit_community": "Dien uw gemeenschap in", "hide_avatars_from_replies": "Verberg avatars van reacties", "yes": "ja", "no": "nee", "are_you_sure": "Weet je het zeker?", "a_short_title": "Een korte titel voor je gemeenschap", "challenges": "Uitdagingen", "challenges_subtitle": "Kies een of meer uitdagingen om spam te voorkomen", "add_a_challenge": "Voeg een uitdaging toe", "communities_you_moderate": "Gemeenschappen die je modereert", "blur_media": "Vervagen media gemarkeerd als NSFW/18+", "nsfw_content": "NSFW-inhoud", "see_nsfw": "Klik om NSFW te zien", "see_nsfw_spoiler": "Klik om NSFW spoiler te zien", "always_show_nsfw": "Altijd NSFW-media weergeven?", "always_show_nsfw_notice": "Oké, we hebben je voorkeuren veranderd om altijd NSFW-media weer te geven.", "content_options": "Inhoudsopties", "over_18": "Boven de 18?", "must_be_over_18": "Je moet 18+ zijn om deze gemeenschap te bekijken", "must_be_over_18_explanation": "Je moet minstens achttien jaar oud zijn om deze inhoud te bekijken. Ben je ouder dan achttien en bereid om volwassen inhoud te bekijken?", "no_thank_you": "Nee, bedankt", "continue": "Doorgaan", "download_latest_android": "Download de nieuwste Android-versie?", "submitter": "Indiener", "block_user": "Blokkeer gebruiker", "unblock_user": "Deblokkeer gebruiker", "filtering_by_tag": "Filteren op tag: \"{{tag}}\"", "you_are_moderator": "Je bent een moderator van deze gemeenschap", "you_are_admin": "Je bent een beheerder van deze gemeenschap", "you_are_owner": "Je bent de eigenaar van deze gemeenschap", "looking_for_more_posts": "Op zoek naar meer berichten", "loading_feed": "Laad feed", "downloading_posts": "Berichten downloaden", "post_is_pending": "Bericht is in behandeling", "post_has_failed": "Post is mislukt", "choose_file": "Kies bestand", "uploading": "Uploaden", "invalid_url_alert": "De opgegeven link is geen geldige URL.", "empty_comment_alert": "Kan geen lege opmerking plaatsen.", "no_subscriptions_message": "<1>{{accountName}}, dit is je thuis op Seedit<2>Wanneer je een gemeenschap vindt die je leuk vindt, <3>meld je aan met de <4>", "find_communities": "vind gemeenschappen op p/all", "community_deleted": "Gemeente succesvol verwijderd.", "go_to_a_community": "Ga naar een community", "enter_community_address": "Voer een gemeenschapsadres in", "all_communities": "alle gemeenschappen", "search_posts": "zoek berichten", "found_n_results_for": "gevonden {{count}} berichten voor \"{{query}}\"", "clear_search": "wis zoekopdracht", "no_matches_found_for": "geen overeenkomsten gevonden voor \"{{query}}\"", "searching": "zoeken", "hide_default_communities_from_topbar": "Verberg standaardgemeenschappen van de bovenbalk", "media": "media", "hide_communities_tagged_as_nsfw": "Verberg gemeenschappen gemarkeerd als NSFW/18+", "tagged_as_adult": "geëtiketteerd als \"volwassen\"", "tagged_as_gore": "getagd als \"gore\"", "tagged_as_anti": "getagd als \"anti\"", "tagged_as_vulgar": "getagd als \"vulgar\"", "drop_here_or": "Sleep hierheen of", "upload_button_warning": "Auto-upload wordt geblokkeerd door het CORS-beleid van uw browser, maar het is beschikbaar op de Seedit Android-app en desktopapp (Win/Mac/Linux).\n\nGa naar de downloadlinks-pagina op GitHub?", "create_community_warning": "Een gemeenschap creëren vereist het uitvoeren van een volledige node. De Seedit desktop-app (Win/Mac/Linux) voert automatisch een volledige node uit.\n\nGa naar de downloadlinks-pagina op GitHub?", "avatars": "Avatars", "filtering_by_nsfw": "Filteren op NSFW-gemeenschappen", "notifications": "Meldingen", "new_replies_received": "nieuwe reacties ontvangen", "private_key_warning_title": "Uw privésleutel wordt weergegeven", "private_key_warning_description": "Je staat op het punt je accountgegevens te bekijken, inclusief je private key. Je moet je private key nooit met iemand delen.", "go_back": "Ga terug", "loading_editor": "Editor laden", "show_thumbnails_next_to_links": "Miniaturen naast links weergeven", "dont_show_thumbnails_next_to_links": "Miniaturen niet naast links weergeven", "show_thumbnails_based_on_community_media_preferences": "Toon miniaturen op basis van de mediavoorkeuren van die gemeenschap", "media_previews": "mediavoorbeelden", "auto_expand_media_previews": "Automatisch media-voorbeeld uitbreiden", "dont_auto_expand_media_previews_on_comments_pages": "Media-preview op reactiespagina's niet automatisch uitvouwen", "video_player": "Videospeler", "autoplay_videos_on_comments_page": "Video's automatisch afspelen op de reactiespagina", "mute_videos_by_default": "Video’s standaard dempen", "expand_media_previews_based_on_community_media_preferences": "Breid mediavoorbeelden uit op basis van de mediavoorkeuren van die gemeenschap", "show_all_nsfw": "toon alle NSFW", "hide_all_nsfw": "verberg alle NSFW", "tags": "Tags", "moderator_of": "moderator van", "not_subscriber_nor_moderator": "Je bent geen abonnee of moderator van een gemeenschap.", "more_posts_last_year": "{{count}} berichten afgelopen {{currentTimeFilterName}}: <1>toon meer berichten van vorig jaar", "editor_fallback_warning": "Geavanceerde editor kon niet worden geladen, basisteksteditor wordt als fallback gebruikt.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Je bekijkt deze community al" } ================================================ FILE: public/translations/no/default.json ================================================ { "about": "Om", "comments": "kommentarer", "preferences": "Innstillinger", "submit": "Send inn", "dark": "Mørk", "light": "Lys", "my_communities": "Mine samfunn", "home": "Hjem", "all": "Alle", "submitted": "Innsendt", "post_by": "Av", "post_to": "Til", "post_no_comments": "Kommenter", "post_comment": "Kommentar", "post_comments": "Kommentarer", "share": "Del", "save": "Lagre", "hide": "Skjul", "report": "Rapporter", "crosspost": "Krysspost", "time_1_minute_ago": "1 minutt siden", "time_x_minutes_ago": "{{count}} minutter siden", "time_1_hour_ago": "1 time siden", "time_x_hours_ago": "{{count}} timer siden", "time_1_day_ago": "1 dag siden", "time_x_days_ago": "{{count}} dager siden", "time_1_month_ago": "1 måned siden", "time_x_months_ago": "{{count}} måneder siden", "time_1_year_ago": "1 år siden", "time_x_years_ago": "{{count}} år siden", "spoiler": "Spoiler", "reply_reply": "Svar", "reply_sorted_by": "Sortert etter", "all_comments": "Alle {{count}} kommentarer", "no_comments": "Ingen kommentarer (ennå)", "reply_score_singular": "1 poeng", "reply_score_plural": "{{score}} poeng", "removed": "Fjernet", "one_comment": "1 kommentar", "submit_url_description": "bygg inn medier ved å poste dens direkte lenke (slutter med .jpg, .gif, .mp4 osv.)", "title": "tittel", "text": "tekst", "required": "påkrevd", "optional": "valgfritt", "community_address": "samfunnsadresse", "submit_choose": "velg hvor du vil poste", "submit_notice": "vær oppmerksom på fellesskapets regler, seedit har ikke globale administratorer.", "challenge_from": "Utfordring fra p/{{subplebbit}}", "challenge_for_post": "for innlegg: \"{{publicationContent}}\"", "challenge_for_reply": "for svar til u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} av {{total}}", "cancel": "Avbryt", "previous": "Forrige", "next": "Neste", "loading": "Laster", "pending": "Venter på godkjenning", "submit_subscriptions_notice": "Anbefalte fellesskap", "submit_subscriptions": "dine abonnerte samfunn", "rules_for": "regler for", "no_communities_found": "Ingen samfunn funnet på <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "For å koble til et samfunn, bruk 🔎 øverst til høyre", "options": "alternativer", "hide_options": "skjul alternativer", "failed": "mislyktes", "time_1_minute": "1 minutt", "time_x_minutes": "{{count}} minutter", "time_1_hour": "1 time", "time_x_hours": "{{count}} timer", "time_1_day": "1 dag", "time_x_days": "{{count}} dager", "time_1_month": "1 måned", "time_x_months": "{{count}} måneder", "time_1_year": "1 år", "time_x_years": "{{count}} år", "submit_post": "Send inn en ny post", "create_your_community": "Opprett din egen fellesskap", "moderators": "moderatorer", "about_moderation": "om moderasjonsteamet", "join": "Bli med", "leave": "forlat", "created_by": "opprettet av {{creatorAddress}}", "community_for": "et fellesskap for {{date}}", "post_submitted_on": "dette innlegget ble sendt inn på {{postDate}}", "users_online": "{{count}} brukere her nå", "point": "punkt", "points": "poeng", "share_link": "del lenke", "upvoted": "har gitt en oppvoting", "announcement": "kunngjøring", "child": "{{childrenCount}} barna", "children": "{{childrenCount}} barn", "moderation": "moderasjon", "interface_language": "grensesnittspråk", "theme": "tema", "account": "konto", "display_name": "visningsnavn", "crypto_address": "kryptoadresse", "check": "sjekk", "crypto_address_verification": "hvis kryptoadressen er løst p2p", "create": "opprett", "delete": "slett", "locked": "låst", "reason": "grunn", "sorted_by": "sortert etter", "downvoted": "stemt ned", "hidden": "skjult", "saved": "lagret", "overview": "oversikt", "user_since": "Bruker siden minst {{time}}", "post_karma": "innleggskarma", "comment_karma": "kommentarkarma", "full_comments": "alle kommentarer", "context": "kontekst", "block": "blokker", "post": "innlegg", "unhide": "vis", "unblock": "opphav blokkering", "undo": "angre", "post_hidden": "skjult innlegg", "link_copied": "lenken er kopiert", "block_community": "blokker samfunnet", "unblock_community": "fjern samfunnsblokkeringen", "search_feed_post": "Søk etter en post i denne feeden", "from": "fra", "via": "via", "sent": "sendt", "unread": "ulest", "comment_replies": "kommentarsvar", "post_replies": "innleggssvar", "messages": "meldinger", "inbox": "innboks", "mark_all_read": "merk alle som lest", "comment_reply": "svar på kommentar", "post_reply": "svar på innlegg", "show_parent": "vis den refererte posten", "no_posts": "ingen innlegg", "media_url": "medie-URL", "post_locked_info": "Dette innlegget er {{state}}. Du vil ikke kunne kommentere.", "members_count": "{{count}} medlemmer", "communities": "fellesskap", "edit": "redigere", "moderator": "Moderator", "description": "Beskrivelse", "rules": "Regler", "save_options": "Lagre alternativer", "logo": "Logo", "address": "Adresse", "nothing_found": "Det ser ikke ut til å være noe her", "stickied_comment": "Festet kommentar", "posts_last_synced": "Innlegg sist synkronisert {{dateAgo}}", "community_settings": "Fellesskapsinnstillinger", "moderation_tools": "Moderasjonsverktøy", "submit_to": "Send til <1>{{link}}", "edit_subscriptions": "Rediger abonnementer", "delete_confirm": "Er du sikker på at du vil slette {{value}}?", "saving": "Lagrer", "deleted": "Slettet", "online": "Online", "offline": "Offline", "subscriber": "Abonnent", "join_communities_notice": "Klikk på knappene <1>{{join}} eller <2>{{leave}} for å velge hvilke fellesskap som skal vises på hjemmesiden.", "below_subscribed": "Nedenfor er fellesskapene du har abonnert på.", "not_subscribed": "Du er ikke abonnert på noen fellesskap ennå.", "below_moderator_access": "Nedenfor er samfunnene du har moderator tilgang til.", "not_moderator": "Du er ikke moderator i noen fellesskap.", "create_community": "Opprett fellesskap", "single_comment_notice": "Du ser på en tråd med kun en kommentar", "single_comment_link": "Se resten av kommentarene", "owner_settings_notice": "Kun eieren av fellesskapet kan redigere innstillingene.", "preview": "forhåndsvisning", "shown_in_sidebar": "vist i sidepanelet for din fellesskap", "community_logo_info": "sett et fellesskapslogo ved hjelp av den direkte bildelenken (som slutter i .jpg, .png)", "moderators_setting_info": "la andre brukere moderere og poste uten utfordringer", "vote": "stemme", "passing": "bestått", "rejecting": "avvisning", "add_moderator": "legg til en moderator", "add_rule": "legg til en regel", "json_settings": "JSON-innstillinger", "json_settings_info": "raskt kopiere eller lime inn fellesskapsinnstillinger", "address_setting_info": "Sett en lesbar fellesskapsadresse ved hjelp av et kryptodomene", "enter_crypto_address": "Vennligst skriv inn en gyldig kryptoadresse.", "check_for_updates": "<1>Sjekk for oppdateringer", "refresh_to_update": "Oppdater siden for å oppdatere", "latest_development_version": "Du bruker den nyeste utviklingsversjonen, commit {{commit}}. For å bruke den stabile versjonen, gå til {{link}}.", "latest_stable_version": "Du bruker den nyeste stabile versjonen, seedit v{{version}}.", "new_development_version": "Ny utviklingsversjon tilgjengelig, commit {{newCommit}}. Du bruker commit {{oldCommit}}.", "new_stable_version": "Ny stabil versjon tilgjengelig, seedit v{{newVersion}}. Du bruker seedit v{{oldVersion}}.", "download_latest_desktop": "Last ned den nyeste skrivebordsversjonen her: {{link}}", "contribute_on_github": "Bidra på GitHub", "no_media_found": "Ingen media funnet", "no_image_found": "Ingen bilde funnet", "warning_spam": "Advarsel: Ingen utfordring valgt, samfunnet er sårbart for spam-angrep.", "hide_help": "Skjul hjelp", "formatting_help": "Formateringshjelp", "you_see": "du ser", "you_type": "Du skriver", "italics": "kursiv", "bold": "fet", "quoted_text": "sitert tekst", "item": "element", "delete_community": "slett fellesskap", "delete_community_description": "Slett denne fellesskapet permanent. Dets innhold kan fortsatt sås av jevnaldrende", "add": "legg til", "owner": "eier", "admin": "administrator", "settings_saved": "Innstillinger lagret for p/{{subplebbitAddress}}", "continue_thread": "fortsett denne tråden", "mod_edit_reason": "Mod redigeringsgrunn", "double_confirm": "Er du virkelig sikker? Denne handlingen er ugjenkallelig.", "crypto_address_not_yours": "Crypto-adressen tilhører en annen konto.", "crypto_address_yours": "Crypto-adressen tilhører denne kontoen.", "crypto_address_not_resolved": "Crypto-adresse er ikke løst ennå.", "submit_to_string": "Send til {{string}}", "page_not_found": "Siden ble ikke funnet", "not_found_description": "Siden du ba om, finnes ikke", "last_edited": "sist endret {{timestamp}}", "view_spoiler": "se spoiler", "default_communities": "standardfellesskap", "avatar": "avatar", "pending_edit": "ventende redigering", "failed_edit": "mislykket redigering", "node_stats": "nodestatistikk", "version": "versjon", "edit_reason": "redigeringsgrunn", "view_parent_comment": "se original kommentar", "chain_ticker": "Blockchain-ticker", "token_address_whitelist": "Tokenadresse (<1>kun hvitelisten)", "token_id": "Token ID", "paste_signature": "Lim signatur", "copy_message_etherscan": "<1>{{copy}} melding å signere på <2>etherscan", "copy": "kopier", "copied": "kopiert", "missing_chain_ticker": "Manglende Blockchain-ticker", "missing_token_address": "Manglende tokenadresse", "missing_token_id": "Manglende token-ID", "missing_signature": "Manglende signatur", "edited_timestamp": "Redigert {{timestamp}}", "ban_user_for": "Blokker bruker i <1> dag(er)", "crypto_wallets": "Crypto-lommebøker", "wallet_address": "Lommebokadresse", "remove": "Fjern", "add_wallet": "<1>Legg til en crypto-lommebok", "show_settings": "Vis innstillinger", "hide_settings": "Skjul innstillinger", "undelete": "Gjenopprette", "downloading_comments": "laster kommentarer", "you_blocked_community": "Du har blokkert dette fellesskapet", "show": "vise", "plebbit_options": "plebbit alternativer", "general": "generell", "more_posts_last_week": "{{count}} innlegg siste {{currentTimeFilterName}}: <1>vis flere innlegg fra forrige uke", "more_posts_last_month": "{{count}} innlegg i {{currentTimeFilterName}}: <1>vis flere innlegg fra forrige måned", "profile_info": "Kontoen din u/{{shortAddress}} ble opprettet. <1>Sett visningsnavn, <2>eksporter sikkerhetskopi, <3>les mer.", "show_all_instead": "Viser innlegg siden {{timeFilterName}}, <1>vis alt i stedet", "subplebbit_offline_info": "Fellesskapet kan være offline og publisering kan mislykkes.", "posts_last_synced_info": "Innlegg synkronisert sist {{time}}, fellesskapet kan være offline og publisering kan mislykkes.", "import_account_backup": "<1>importere konto sikkerhetskopi", "export_account_backup": "<1>eksportere konto sikkerhetskopi", "save_reset_changes": "<1>lagre eller <2>nullstille endringer", "delete_this_account": "<1>slett denne kontoen", "create_new_account": "<1>opprett en ny konto", "wallet_number": "lommebok #{{index}}", "view_more": "vis mer", "submit_community": "Send inn ditt fellesskap", "hide_avatars_from_replies": "Skjul avatarer fra svar", "yes": "ja", "no": "nei", "are_you_sure": "Er du sikker?", "a_short_title": "En kort tittel for ditt fellesskap", "challenges": "Utfordringer", "challenges_subtitle": "Velg en eller flere utfordringer for å hindre spam", "add_a_challenge": "Legg til en utfordring", "communities_you_moderate": "Samfunnene du modererer", "blur_media": "Uskarpe media merket som NSFW/18+", "nsfw_content": "NSFW-innhold", "see_nsfw": "Klikk for å se NSFW", "see_nsfw_spoiler": "Klikk for å se NSFW-spoiler", "always_show_nsfw": "Vil du alltid vise NSFW-media?", "always_show_nsfw_notice": "Ok, vi har endret preferansene dine for å alltid vise NSFW-media.", "content_options": "Innstillinger for innhold", "over_18": "Over 18?", "must_be_over_18": "Du må være over 18 for å se dette fellesskapet", "must_be_over_18_explanation": "Du må være minst 18 år gammel for å se dette innholdet. Er du over 18 og villig til å se vokseninnhold?", "no_thank_you": "Nei, takk", "continue": "Fortsett", "download_latest_android": "Last ned den nyeste Android-versjonen?", "submitter": "Innsender", "block_user": "Blokker bruker", "unblock_user": "Fjern blokkering av bruker", "filtering_by_tag": "Filtrering etter tag: \"{{tag}}\"", "you_are_moderator": "Du er moderator for dette fellesskapet", "you_are_admin": "Du er administrator for dette fellesskapet", "you_are_owner": "Du er eier av dette fellesskapet", "looking_for_more_posts": "Leter etter flere innlegg", "loading_feed": "Laster feed", "downloading_posts": "Laster ned innlegg", "post_is_pending": "Innlegget er på vent", "post_has_failed": "Innlegget mislyktes", "choose_file": "Velg fil", "uploading": "Laster opp", "invalid_url_alert": "Den angitte lenken er ikke en gyldig URL.", "empty_comment_alert": "Kan ikke poste tom kommentar.", "no_subscriptions_message": "<1>{{accountName}}, dette er ditt hjem på Seedit<2>Når du finner et fellesskap du liker, <3>bli med i <4>", "find_communities": "finn samfunn på p/all", "community_deleted": "Fellesskapet ble slettet med suksess.", "go_to_a_community": "Gå til et fellesskap", "enter_community_address": "Skriv inn en fellesskapsadresse", "all_communities": "alle fellesskapene", "search_posts": "søk etter innlegg", "found_n_results_for": "funnet {{count}} innlegg for \"{{query}}\"", "clear_search": "rydd søk", "no_matches_found_for": "ingen treff funnet for \"{{query}}\"", "searching": "søker", "hide_default_communities_from_topbar": "Skjul standardfellesskap fra toppfeltet", "media": "media", "hide_communities_tagged_as_nsfw": "Skjul samfunn merket som NSFW/18+", "tagged_as_adult": "merket som \"voksen\"", "tagged_as_gore": "merket som \"gore\"", "tagged_as_anti": "merket som \"anti\"", "tagged_as_vulgar": "merket som \"vulgar\"", "drop_here_or": "Slipp her eller", "upload_button_warning": "Auto-opplasting er blokkert av CORS-policyen til nettleseren din, men det er tilgjengelig på Seedit Android-app og desktopapp (Win/Mac/Linux).\n\nGå til nedlastingslenkesiden på GitHub?", "create_community_warning": "Opprettelse av et fellesskap krever at du kjører en full node. Seedit desktop-appen (Win/Mac/Linux) kjører automatisk en full node.\n\nGå til nedlastingslenkesiden på GitHub?", "avatars": "Avatarer", "filtering_by_nsfw": "Filtrering etter NSFW-fellesskap", "notifications": "Varsler", "new_replies_received": "nye svar mottatt", "private_key_warning_title": "Din private nøkkel vil bli vist", "private_key_warning_description": "Du er i ferd med å se kontodataene dine, som inkluderer din private nøkkel. Du bør aldri dele din private nøkkel med noen.", "go_back": "Gå tilbake", "loading_editor": "Laster editor", "show_thumbnails_next_to_links": "Vis miniatyrbilder ved siden av lenker", "dont_show_thumbnails_next_to_links": "Ikke vis miniatyrbilder ved siden av lenker", "show_thumbnails_based_on_community_media_preferences": "Vis miniatyrbilder basert på det fellesskapets mediainnstillinger", "media_previews": "mediavisninger", "auto_expand_media_previews": "Automatisk utvidelse av medievisninger", "dont_auto_expand_media_previews_on_comments_pages": "Ikke automatisk utvid medieforhåndsvisninger på kommentarsider", "video_player": "Videospiller", "autoplay_videos_on_comments_page": "Autospill videoer på kommentarsiden", "mute_videos_by_default": "Demp videoer som standard", "expand_media_previews_based_on_community_media_preferences": "Utvid medievisninger basert på det fellesskapets mediepreferanser", "show_all_nsfw": "vis alle NSFW", "hide_all_nsfw": "skjul all NSFW", "tags": "Tagger", "moderator_of": "moderator av", "not_subscriber_nor_moderator": "Du er verken abonnent eller moderator i noe fellesskap.", "more_posts_last_year": "{{count}} innlegg siste {{currentTimeFilterName}}: <1>vis flere innlegg fra i fjor", "editor_fallback_warning": "Avansert editor lastet ikke inn, bruker grunnleggende teksteditor som reserve.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Du ser allerede på dette fellesskapet" } ================================================ FILE: public/translations/pl/default.json ================================================ { "about": "O", "comments": "komentarze", "preferences": "Preferencje", "submit": "Zatwierdź", "dark": "Ciemny", "light": "Jasne", "my_communities": "Moje społeczności", "home": "Strona główna", "all": "Wszystko", "submitted": "Wysłane", "post_by": "Przez", "post_to": "Do", "post_no_comments": "Komentuj", "post_comment": "Komentarz", "post_comments": "Komentarze", "share": "Udostępnij", "save": "Zapisz", "hide": "Ukryj", "report": "Zgłoś", "crosspost": "Crosspost", "time_1_minute_ago": "1 minutę temu", "time_x_minutes_ago": "{{count}} minut temu", "time_1_hour_ago": "1 godzinę temu", "time_x_hours_ago": "{{count}} godzin temu", "time_1_day_ago": "1 dzień temu", "time_x_days_ago": "{{count}} dni temu", "time_1_month_ago": "1 miesiąc temu", "time_x_months_ago": "{{count}} miesięcy temu", "time_1_year_ago": "1 rok temu", "time_x_years_ago": "{{count}} lat temu", "spoiler": "Spoiler", "reply_reply": "Odpowiedź", "reply_sorted_by": "Sortowane według", "all_comments": "Wszystkie {{count}} komentarze", "no_comments": "Brak komentarzy (jeszcze)", "reply_score_singular": "1 punkt", "reply_score_plural": "{{score}} punkty", "removed": "Usunięto", "one_comment": "1 komentarz", "submit_url_description": "osadź media, publikując jego bezpośredni link (kończący się na .jpg, .gif, .mp4 itp.)", "title": "tytuł", "text": "tekst", "required": "wymagane", "optional": "opcjonalnie", "community_address": "adres społeczności", "submit_choose": "wybierz, gdzie chcesz opublikować", "submit_notice": "proszę przestrzegać zasad społeczności, seedit nie ma globalnych administratorów.", "challenge_from": "Wyzwanie od p/{{subplebbit}}", "challenge_for_post": "dla postu: \"{{publicationContent}}\"", "challenge_for_reply": "dla odpowiedzi u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} z {{total}}", "cancel": "Anuluj", "previous": "Poprzedni", "next": "Następny", "loading": "Ładowanie", "pending": "Oczekujące", "submit_subscriptions_notice": "Polecane społeczności", "submit_subscriptions": "twoje subskrybowane społeczności", "rules_for": "zasady dla", "no_communities_found": "Nie znaleziono społeczności na <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "Aby połączyć się ze społecznością, użyj 🔎 w prawym górnym rogu", "options": "opcje", "hide_options": "ukryj opcje", "failed": "nie powiodło się", "time_1_minute": "1 minuta", "time_x_minutes": "{{count}} minut", "time_1_hour": "1 godzina", "time_x_hours": "{{count}} godzin", "time_1_day": "1 dzień", "time_x_days": "{{count}} dni", "time_1_month": "1 miesiąc", "time_x_months": "{{count}} miesięcy", "time_1_year": "1 rok", "time_x_years": "{{count}} lat", "submit_post": "Wyślij nowy post", "create_your_community": "Utwórz własną społeczność", "moderators": "moderatorzy", "about_moderation": "o zespole moderacji", "join": "Dołącz", "leave": "opuść", "created_by": "utworzone przez {{creatorAddress}}", "community_for": "społeczność przez {{date}}", "post_submitted_on": "ten post został przesłany w dniu {{postDate}}", "users_online": "{{count}} użytkowników tutaj teraz", "point": "punkt", "points": "punkty", "share_link": "udostępnij link", "upvoted": "oddany głos za", "announcement": "ogłoszenie", "child": "{{childrenCount}} dzieci", "children": "{{childrenCount}} dziecko", "moderation": "moderacja", "interface_language": "język interfejsu", "theme": "motyw", "account": "konto", "display_name": "nazwa wyświetlana", "crypto_address": "adres kryptowalutowy", "check": "sprawdź", "crypto_address_verification": "jeśli adres kryptowalutowy jest rozwiązany p2p", "create": "stwórz", "delete": "usuń", "locked": "zablokowane", "reason": "powód", "sorted_by": "posortowane według", "downvoted": "zagłosowane na nie", "hidden": "ukryty", "saved": "zapisane", "overview": "przegląd", "user_since": "Użytkownik od co najmniej {{time}}", "post_karma": "karma postów", "comment_karma": "karma komentarzy", "full_comments": "wszystkie komentarze", "context": "kontekst", "block": "zablokuj", "post": "post", "unhide": "pokaż", "unblock": "odblokuj", "undo": "cofnij", "post_hidden": "ukryty post", "link_copied": "skopiowano link", "block_community": "zablokuj społeczność", "unblock_community": "odblokuj społeczność", "search_feed_post": "Szukaj posta w tym zasobie", "from": "od", "via": "przez", "sent": "wysłane", "unread": "nieprzeczytane", "comment_replies": "odpowiedzi na komentarze", "post_replies": "odpowiedzi na posty", "messages": "wiadomości", "inbox": "skrzynka odbiorcza", "mark_all_read": "oznacz wszystko jako przeczytane", "comment_reply": "odpowiedź na komentarz", "post_reply": "odpowiedź na post", "show_parent": "pokaż post, do którego jest odwołanie", "no_posts": "brak postów", "media_url": "URL mediów", "post_locked_info": "Ten post jest {{state}}. Nie będziesz mógł komentować.", "members_count": "{{count}} członków", "communities": "społeczność", "edit": "edytuj", "moderator": "Moderator", "description": "Opis", "rules": "Reguły", "save_options": "Zapisz opcje", "logo": "Logo", "address": "Adres", "nothing_found": "Nie wydaje się, że jest tu cokolwiek", "stickied_comment": "Przypięty komentarz", "posts_last_synced": "Ostatnio zsynchronizowane posty {{dateAgo}}", "community_settings": "Ustawienia społeczności", "moderation_tools": "Narzędzia moderacji", "submit_to": "Prześlij do <1>{{link}}", "edit_subscriptions": "Edytuj subskrypcje", "delete_confirm": "Czy na pewno chcesz usunąć {{value}}?", "saving": "Zapisywanie", "deleted": "Usunięte", "online": "Online", "offline": "Offline", "subscriber": "Subskrybent", "join_communities_notice": "Kliknij przyciski <1>{{join}} lub <2>{{leave}}, aby wybrać, które społeczności mają się pojawić na stronie głównej.", "below_subscribed": "Poniżej znajdują się społeczności, do których się zapisałeś.", "not_subscribed": "Nie jesteś jeszcze subskrybentem żadnej społeczności.", "below_moderator_access": "Poniżej znajdują się społeczności, do których masz dostęp jako moderator.", "not_moderator": "Nie jesteś moderatorem w żadnej społeczności.", "create_community": "Utwórz społeczność", "single_comment_notice": "Przeglądasz wątek jednego komentarza", "single_comment_link": "Zobacz resztę komentarzy", "owner_settings_notice": "Tylko właściciel społeczności może edytować jej ustawienia.", "preview": "podgląd", "shown_in_sidebar": "wyświetlane na pasku bocznym twojej społeczności", "community_logo_info": "ustaw logo społeczności za pomocą bezpośredniego linku do obrazu (zakończonego na .jpg, .png)", "moderators_setting_info": "pozwól innym użytkownikom moderować i publikować bez wyzwań", "vote": "głosować", "passing": "zaliczenie", "rejecting": "odrzucanie", "add_moderator": "dodaj moderatora", "add_rule": "dodaj regułę", "json_settings": "Ustawienia JSON", "json_settings_info": "szybko kopiuj lub wklej ustawienia społeczności", "address_setting_info": "Ustaw czytelny adres społecznościowy za pomocą domeny kryptograficznej", "enter_crypto_address": "Proszę podać prawidłowy adres kryptowalutowy.", "check_for_updates": "<1>Sprawdź aktualizacje", "refresh_to_update": "Odśwież stronę, aby zaktualizować", "latest_development_version": "Korzystasz z najnowszej wersji rozwojowej, commit {{commit}}. Aby użyć wersji stabilnej, przejdź pod {{link}}.", "latest_stable_version": "Korzystasz z najnowszej wersji stabilnej, seedit v{{version}}.", "new_development_version": "Nowa wersja rozwojowa dostępna, commit {{newCommit}}. Używasz commit {{oldCommit}}.", "new_stable_version": "Nowa stabilna wersja dostępna, seedit v{{newVersion}}. Używasz seedit v{{oldVersion}}.", "download_latest_desktop": "Pobierz najnowszą wersję na pulpit tutaj: {{link}}", "contribute_on_github": "Wspomóż na GitHubie", "no_media_found": "Nie znaleziono mediów", "no_image_found": "Nie znaleziono obrazu", "warning_spam": "Ostrzeżenie: nie wybrano żadnego wyzwania, społeczność jest podatna na ataki spamu.", "hide_help": "Ukryj pomoc", "formatting_help": "Pomoc w formatowaniu", "you_see": "widzisz", "you_type": "Ty piszesz", "italics": "kursywa", "bold": "pogrubienie", "quoted_text": "cytowany tekst", "item": "pozycja", "delete_community": "usuń społeczność", "delete_community_description": "Trwale usuń tę społeczność. Jej zawartość nadal może być zasiewana przez rówieśników", "add": "dodać", "owner": "właściciel", "admin": "administrator", "settings_saved": "Ustawienia zapisane dla p/{{subplebbitAddress}}", "continue_thread": "kontynuuj ten wątek", "mod_edit_reason": "Powód edycji przez moderatora", "double_confirm": "Jesteś naprawdę pewien? Ta akcja jest nieodwracalna.", "crypto_address_not_yours": "Adres kryptowaluty należy do innego konta.", "crypto_address_yours": "Adres kryptowaluty należy do tego konta.", "crypto_address_not_resolved": "Adres kryptowaluty nie jest jeszcze rozwiązany.", "submit_to_string": "Prześlij do {{string}}", "page_not_found": "Strona nie znaleziona", "not_found_description": "Strona, którą żądasz, nie istnieje", "last_edited": "ostatnio edytowano {{timestamp}}", "view_spoiler": "pokaż spoiler", "default_communities": "domyślne społeczności", "avatar": "avatar", "pending_edit": "edycja oczekująca", "failed_edit": "nieudana edycja", "node_stats": "statystyki węzła", "version": "wersja", "edit_reason": "powód edycji", "view_parent_comment": "zobacz oryginalny komentarz", "chain_ticker": "Ticker blockchain", "token_address_whitelist": "Adres tokenu (<1>tylko biała lista)", "token_id": "Identyfikator tokena", "paste_signature": "Wklej podpis", "copy_message_etherscan": "<1>{{copy}} wiadomość do podpisania na <2>etherscan", "copy": "kopiuj", "copied": "skopiowano", "missing_chain_ticker": "Brakujący ticker blockchain", "missing_token_address": "Brakujący adres tokena", "missing_token_id": "Brakujące ID tokenu", "missing_signature": "Brakujący podpis", "edited_timestamp": "Edytowane {{timestamp}}", "ban_user_for": "Zablokuj użytkownika na <1> dzień (dni)", "crypto_wallets": "Portfele kryptowalut", "wallet_address": "Adres portfela", "remove": "Usuń", "add_wallet": "<1>Dodaj portfel kryptowalutowy", "show_settings": "Pokaż ustawienia", "hide_settings": "Ukryj ustawienia", "undelete": "Przywróć", "downloading_comments": "pobieranie komentarzy", "you_blocked_community": "Zablokowałeś tę społeczność", "show": "pokazać", "plebbit_options": "opcje plebbit", "general": "ogólny", "more_posts_last_week": "{{count}} posty ostatni {{currentTimeFilterName}}: <1>pokaż więcej postów z zeszłego tygodnia", "more_posts_last_month": "{{count}} postów w {{currentTimeFilterName}}: <1>pokaż więcej postów z poprzedniego miesiąca", "profile_info": "Twoje konto u/{{shortAddress}} zostało utworzone. <1>Ustaw nazwę wyświetlania, <2>eksportuj kopię zapasową, <3>dowiedz się więcej.", "show_all_instead": "Pokazuje posty od {{timeFilterName}}, <1>pokaż wszystko zamiast tego", "subplebbit_offline_info": "Społeczność może być offline i publikowanie może się nie powieść.", "posts_last_synced_info": "Posty ostatnio zsynchronizowane {{time}}, społeczność może być w trybie offline i publikowanie może się nie powieść.", "import_account_backup": "<1>importuj kopię zapasową konta", "export_account_backup": "<1>eksportuj kopię zapasową konta", "save_reset_changes": "<1>zapisz lub <2>zresetuj zmiany", "delete_this_account": "<1>usuń to konto", "create_new_account": "<1>stwórz nowe konto", "wallet_number": "portfel #{{index}}", "view_more": "zobacz więcej", "submit_community": "Prześlij swoją społeczność", "hide_avatars_from_replies": "Ukryj avatary w odpowiedziach", "yes": "tak", "no": "nie", "are_you_sure": "Jesteś pewny?", "a_short_title": "Krótki tytuł dla twojej społeczności", "challenges": "Wyzwania", "challenges_subtitle": "Wybierz jedno lub więcej wyzwań, aby zapobiec spamowi", "add_a_challenge": "Dodaj wyzwanie", "communities_you_moderate": "Społeczności, którymi moderujesz", "blur_media": "Rozmyj media oznaczone jako NSFW/18+", "nsfw_content": "Treść NSFW", "see_nsfw": "Kliknij, aby zobaczyć NSFW", "see_nsfw_spoiler": "Kliknij, aby zobaczyć spoiler NSFW", "always_show_nsfw": "Zawsze wyświetlać media NSFW?", "always_show_nsfw_notice": "Ok, zmieniliśmy twoje preferencje, aby zawsze wyświetlać media NSFW.", "content_options": "Opcje treści", "over_18": "Powyżej 18?", "must_be_over_18": "Musisz mieć więcej niż 18 lat, aby zobaczyć tę społeczność", "must_be_over_18_explanation": "Musisz mieć co najmniej osiemnaście lat, aby oglądać tę treść. Masz ponad osiemnaście lat i chcesz oglądać treści dla dorosłych?", "no_thank_you": "Nie, dziękuję", "continue": "Kontynuować", "download_latest_android": "Pobierz najnowszą wersję Androida?", "submitter": "Nadawca", "block_user": "Zablokuj użytkownika", "unblock_user": "Odblokuj użytkownika", "filtering_by_tag": "Filtrowanie po tagu: \"{{tag}}\"", "you_are_moderator": "Jesteś moderatorem tej społeczności", "you_are_admin": "Jesteś administratorem tej społeczności", "you_are_owner": "Jesteś właścicielem tej społeczności", "looking_for_more_posts": "Szukam więcej postów", "loading_feed": "Ładowanie kanału", "downloading_posts": "Pobieranie postów", "post_is_pending": "Post czeka na zatwierdzenie", "post_has_failed": "Post się nie powiódł", "choose_file": "Wybierz plik", "uploading": "Ładowanie", "invalid_url_alert": "Podany link nie jest poprawnym adresem URL.", "empty_comment_alert": "Nie można opublikować pustego komentarza.", "no_subscriptions_message": "<1>{{accountName}}, to jest twój dom na Seedit<2>Kiedy znajdziesz społeczność, którą lubisz, <3>dołącz do <4>", "find_communities": "znajdź społeczności na p/all", "community_deleted": "Społeczność została pomyślnie usunięta.", "go_to_a_community": "Przejdź do społeczności", "enter_community_address": "Wprowadź adres społeczności", "all_communities": "wszystkie społeczności", "search_posts": "szukaj postów", "found_n_results_for": "znaleziono {{count}} postów dla \"{{query}}\"", "clear_search": "wyczyść wyszukiwanie", "no_matches_found_for": "brak pasujących wyników dla \"{{query}}\"", "searching": "wyszukiwanie", "hide_default_communities_from_topbar": "Ukryj domyślne społeczności z paska na górze", "media": "media", "hide_communities_tagged_as_nsfw": "Ukryj społeczności oznaczone jako NSFW/18+", "tagged_as_adult": "otagowane jako \"dorosły\"", "tagged_as_gore": "otagowane jako \"gore\"", "tagged_as_anti": "otagowane jako \"anti\"", "tagged_as_vulgar": "oznaczone jako \"wulgarne\"", "drop_here_or": "Upuść tutaj lub", "upload_button_warning": "Automatyczne przesyłanie jest blokowane przez politykę CORS w twojej przeglądarce, ale jest dostępne w aplikacji Seedit na Androida oraz w aplikacji desktopowej (Win/Mac/Linux).\n\nPrzejdź do strony linków do pobrania na GitHubie?", "create_community_warning": "Tworzenie społeczności wymaga uruchomienia pełnego węzła. Aplikacja Seedit desktop (Win/Mac/Linux) automatycznie uruchamia pełny węzeł.\n\nPrzejdź do strony linków do pobrania na GitHubie?", "avatars": "Awatary", "filtering_by_nsfw": "Filtrowanie według społeczności NSFW", "notifications": "Powiadomienia", "new_replies_received": "otrzymano nowe odpowiedzi", "private_key_warning_title": "Twój klucz prywatny zostanie wyświetlony", "private_key_warning_description": "Zaraz zobaczysz dane swojego konta, które zawierają Twój klucz prywatny. Nigdy nie powinieneś udostępniać swojego klucza prywatnego nikomu.", "go_back": "Wróć", "loading_editor": "Ładowanie edytora", "show_thumbnails_next_to_links": "Pokaż miniatury obok linków", "dont_show_thumbnails_next_to_links": "Nie pokazuj miniatur obok linków", "show_thumbnails_based_on_community_media_preferences": "Pokaż miniatury na podstawie preferencji mediów danej społeczności", "media_previews": "podglądy mediów", "auto_expand_media_previews": "Automatyczne rozwijanie podglądów multimediów", "dont_auto_expand_media_previews_on_comments_pages": "Nie rozwijaj automatycznie podglądów mediów na stronach komentarzy", "video_player": "Odtwarzacz wideo", "autoplay_videos_on_comments_page": "Autoodtwarzanie filmów na stronie komentarzy", "mute_videos_by_default": "Domyślnie wycisz filmy", "expand_media_previews_based_on_community_media_preferences": "Rozwiń podglądy mediów na podstawie preferencji mediów tej społeczności", "show_all_nsfw": "pokaż wszystkie NSFW", "hide_all_nsfw": "ukryj wszystkie NSFW", "tags": "Tagi", "moderator_of": "moderator", "not_subscriber_nor_moderator": "Nie jesteś subskrybentem ani moderatorem żadnej społeczności.", "more_posts_last_year": "{{count}} postów w ostatnim {{currentTimeFilterName}}: <1>pokaż więcej postów z zeszłego roku", "editor_fallback_warning": "Zaawansowany edytor nie załadował się, używany jest podstawowy edytor tekstu jako zastępstwo.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Już przeglądasz tę społeczność" } ================================================ FILE: public/translations/pt/default.json ================================================ { "about": "sobre", "comments": "comentários", "preferences": "preferências", "submit": "enviar", "dark": "escuro", "light": "claro", "my_communities": "minhas comunidades", "home": "início", "all": "todos", "submitted": "enviado", "post_by": "por", "post_to": "para", "post_no_comments": "comentar", "post_comment": "comentário", "post_comments": "comentários", "share": "compartilhar", "save": "salvar", "hide": "ocultar", "report": "denunciar", "crosspost": "crosspost", "time_1_minute_ago": "há 1 minuto", "time_x_minutes_ago": "há {{count}} minutos", "time_1_hour_ago": "há 1 hora", "time_x_hours_ago": "há {{count}} horas", "time_1_day_ago": "há 1 dia", "time_x_days_ago": "há {{count}} dias", "time_1_month_ago": "há 1 mês", "time_x_months_ago": "há {{count}} meses", "time_1_year_ago": "há 1 ano", "time_x_years_ago": "há {{count}} anos", "spoiler": "spoiler", "reply_reply": "responder", "reply_sorted_by": "ordenado por", "all_comments": "todos os {{count}} comentários", "no_comments": "sem comentários (ainda)", "reply_score_singular": "1 ponto", "reply_score_plural": "{{score}} pontos", "removed": "Removido", "one_comment": "1 comentário", "submit_url_description": "incorpore mídias postando seu link direto (terminando em .jpg, .gif, .mp4, etc.)", "title": "título", "text": "texto", "required": "requerido", "optional": "opcional", "community_address": "endereço da comunidade", "submit_choose": "escolha onde postar", "submit_notice": "por favor, respeite as regras da comunidade, o seedit não possui administradores globais.", "challenge_from": "Desafio de p/{{subplebbit}}", "challenge_for_post": "para post: \"{{publicationContent}}\"", "challenge_for_reply": "para resposta a u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} de {{total}}", "cancel": "Cancelar", "previous": "Anterior", "next": "Próximo", "loading": "Carregando", "pending": "Pendente", "submit_subscriptions_notice": "Comunidades sugeridas", "submit_subscriptions": "suas comunidades inscritas", "rules_for": "regras para", "no_communities_found": "Nenhuma comunidade encontrada em <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "Para se conectar a uma comunidade, use 🔎 no canto superior direito", "options": "opções", "hide_options": "ocultar opções", "failed": "falhou", "time_1_minute": "1 minuto", "time_x_minutes": "{{count}} minutos", "time_1_hour": "1 hora", "time_x_hours": "{{count}} horas", "time_1_day": "1 dia", "time_x_days": "{{count}} dias", "time_1_month": "1 mês", "time_x_months": "{{count}} meses", "time_1_year": "1 ano", "time_x_years": "{{count}} anos", "submit_post": "Enviar uma nova publicação", "create_your_community": "Crie sua própria comunidade", "moderators": "moderadores", "about_moderation": "sobre a equipe de moderação", "join": "Junte-se", "leave": "sair", "created_by": "criado por {{creatorAddress}}", "community_for": "uma comunidade por {{date}}", "post_submitted_on": "esta postagem foi enviada em {{postDate}}", "users_online": "{{count}} usuários aqui agora", "point": "ponto", "points": "pontos", "share_link": "compartilhar link", "upvoted": "deu um upvote", "announcement": "anúncio", "child": "{{childrenCount}} crianças", "children": "{{childrenCount}} criança", "moderation": "moderação", "interface_language": "idioma de interface", "theme": "tema", "account": "conta", "display_name": "nome de exibição", "crypto_address": "endereço de cripto", "check": "verificar", "crypto_address_verification": "se o endereço de cripto for resolvido p2p", "create": "criar", "delete": "apagar", "locked": "trancado", "reason": "razão", "sorted_by": "ordenado por", "downvoted": "voto negativo", "hidden": "oculto", "saved": "salvo", "overview": "visão geral", "user_since": "Usuário desde pelo menos {{time}}", "post_karma": "karma de posts", "comment_karma": "karma de comentários", "full_comments": "todos os comentários", "context": "contexto", "block": "bloquear", "post": "postagem", "unhide": "mostrar", "unblock": "desbloquear", "undo": "desfazer", "post_hidden": "postagem oculta", "link_copied": "link copiado", "block_community": "bloquear comunidade", "unblock_community": "desbloquear comunidade", "search_feed_post": "Pesquisar uma postagem neste feed", "from": "de", "via": "via", "sent": "enviado", "unread": "não lido", "comment_replies": "respostas aos comentários", "post_replies": "respostas às postagens", "messages": "mensagens", "inbox": "caixa de entrada", "mark_all_read": "marcar todos como lidos", "comment_reply": "responder ao comentário", "post_reply": "responder ao post", "show_parent": "mostrar a postagem referenciada", "no_posts": "sem publicações", "media_url": "URL de mídia", "post_locked_info": "Esta postagem está {{state}}. Você não poderá comentar.", "members_count": "{{count}} membros", "communities": "comunidade", "edit": "editar", "moderator": "Moderador", "description": "Descrição", "rules": "Regras", "save_options": "Salvar opções", "logo": "Logotipo", "address": "Endereço", "nothing_found": "Não parece haver nada aqui", "stickied_comment": "Comentário fixado", "posts_last_synced": "Últimas postagens sincronizadas {{dateAgo}}", "community_settings": "Configurações da comunidade", "moderation_tools": "Ferramentas de moderação", "submit_to": "Enviar para <1>{{link}}", "edit_subscriptions": "Editar assinaturas", "delete_confirm": "Tem certeza de que deseja excluir {{value}}?", "saving": "Salvando", "deleted": "Excluído", "online": "Online", "offline": "Offline", "subscriber": "Inscrito", "join_communities_notice": "Clique nos botões <1>{{join}} ou <2>{{leave}} para escolher quais comunidades aparecem no feed inicial.", "below_subscribed": "Abaixo estão as comunidades às quais você se inscreveu.", "not_subscribed": "Você ainda não está inscrito em nenhuma comunidade.", "below_moderator_access": "Abaixo estão as comunidades às quais você tem acesso como moderador.", "not_moderator": "Você não é moderador em nenhuma comunidade.", "create_community": "Criar comunidade", "single_comment_notice": "Você está visualizando o tópico de um único comentário", "single_comment_link": "Ver o resto dos comentários", "owner_settings_notice": "Somente o proprietário da comunidade pode editar suas configurações.", "preview": "pré-visualização", "shown_in_sidebar": "mostrado na barra lateral da sua comunidade", "community_logo_info": "defina um logotipo da comunidade usando o link direto da imagem (terminando em .jpg, .png)", "moderators_setting_info": "deixe que outros usuários moderem e postem sem desafios", "vote": "votar", "passing": "passando", "rejecting": "rejeitando", "add_moderator": "adicionar um moderador", "add_rule": "adicionar uma regra", "json_settings": "Configurações JSON", "json_settings_info": "copie ou cole rapidamente as configurações da comunidade", "address_setting_info": "Defina um endereço comunitário legível usando um domínio criptográfico", "enter_crypto_address": "Por favor, insira um endereço de cripto válido.", "check_for_updates": "<1>Verifique as atualizações", "refresh_to_update": "Atualize a página para atualizar", "latest_development_version": "Você está na última versão de desenvolvimento, commit {{commit}}. Para usar a versão estável, vá para {{link}}.", "latest_stable_version": "Você está na versão estável mais recente, seedit v{{version}}.", "new_development_version": "Nova versão de desenvolvimento disponível, commit {{newCommit}}. Você está usando o commit {{oldCommit}}.", "new_stable_version": "Nova versão estável disponível, seedit v{{newVersion}}. Você está usando seedit v{{oldVersion}}.", "download_latest_desktop": "Baixe a versão mais recente para desktop aqui: {{link}}", "contribute_on_github": "Contribua no GitHub", "no_media_found": "Nenhum media encontrado", "no_image_found": "Nenhuma imagem encontrada", "warning_spam": "Aviso: nenhum desafio selecionado, a comunidade está vulnerável a ataques de spam.", "hide_help": "Ocultar ajuda", "formatting_help": "Ajuda de formatação", "you_see": "você vê", "you_type": "Você digita", "italics": "itálico", "bold": "negrito", "quoted_text": "texto citado", "item": "item", "delete_community": "apagar comunidade", "delete_community_description": "Excluir permanentemente esta comunidade. Seu conteúdo ainda pode ser semeado por pares", "add": "adicionar", "owner": "dono", "admin": "administrador", "settings_saved": "Configurações salvas para p/{{subplebbitAddress}}", "continue_thread": "continue este tópico", "mod_edit_reason": "Razão da edição do moderador", "double_confirm": "Tem certeza? Esta ação é irreversível.", "crypto_address_not_yours": "O endereço de criptomoeda pertence a outra conta.", "crypto_address_yours": "O endereço de criptomoeda pertence a esta conta.", "crypto_address_not_resolved": "O endereço de criptomoeda ainda não foi resolvido.", "submit_to_string": "Enviar para {{string}}", "page_not_found": "Página não encontrada", "not_found_description": "A página que você solicitou não existe", "last_edited": "última edição {{timestamp}}", "view_spoiler": "ver spoiler", "default_communities": "comunidades padrão", "avatar": "avatar", "pending_edit": "edição pendente", "failed_edit": "edição falhada", "node_stats": "estatísticas do nó", "version": "versão", "edit_reason": "motivo da edição", "view_parent_comment": "ver comentário pai", "chain_ticker": "Ticker de blockchain", "token_address_whitelist": "Endereço do token (<1>apenas lista branca)", "token_id": "ID do token", "paste_signature": "Colar assinatura", "copy_message_etherscan": "<1>{{copy}} mensagem para assinar no <2>etherscan", "copy": "copiar", "copied": "copiado", "missing_chain_ticker": "Faltando ticker de blockchain", "missing_token_address": "Endereço do token em falta", "missing_token_id": "ID de token em falta", "missing_signature": "Assinatura em falta", "edited_timestamp": "Editado {{timestamp}}", "ban_user_for": "Banir usuário por <1> dia(s)", "crypto_wallets": "Carteiras cripto", "wallet_address": "Endereço da carteira", "remove": "Remover", "add_wallet": "<1>Adicionar uma carteira cripto", "show_settings": "Mostrar configurações", "hide_settings": "Ocultar configurações", "undelete": "Recuperar", "downloading_comments": "baixando comentários", "you_blocked_community": "Você bloqueou esta comunidade", "show": "mostrar", "plebbit_options": "opções plebbit", "general": "geral", "more_posts_last_week": "{{count}} postagens na última {{currentTimeFilterName}}: <1>mostrar mais postagens da semana passada", "more_posts_last_month": "{{count}} postagens em {{currentTimeFilterName}}: <1>mostrar mais postagens do mês passado", "profile_info": "Sua conta u/{{shortAddress}} foi criada. <1>Definir nome de exibição, <2>exportar backup, <3>saiba mais.", "show_all_instead": "Exibindo postagens desde {{timeFilterName}}, <1>mostrar tudo em vez disso", "subplebbit_offline_info": "A comunidade pode estar offline e a publicação pode falhar.", "posts_last_synced_info": "Publicações sincronizadas pela última vez {{time}}, a comunidade pode estar offline e a publicação pode falhar.", "import_account_backup": "<1>importar backup da conta", "export_account_backup": "<1>exportar backup da conta", "save_reset_changes": "<1>salvar ou <2>resetar alterações", "delete_this_account": "<1>excluir esta conta", "create_new_account": "<1>criar uma nova conta", "wallet_number": "carteira #{{index}}", "view_more": "ver mais", "submit_community": "Envie sua comunidade", "hide_avatars_from_replies": "Esconder avatares das respostas", "yes": "sim", "no": "não", "are_you_sure": "Tem certeza?", "a_short_title": "Um título curto para sua comunidade", "challenges": "Desafios", "challenges_subtitle": "Escolha um ou mais desafios para evitar spam", "add_a_challenge": "Adicionar um desafio", "communities_you_moderate": "Comunidades que você modera", "blur_media": "Desfoque mídias marcadas como NSFW/18+", "nsfw_content": "Conteúdo NSFW", "see_nsfw": "Clique para ver NSFW", "see_nsfw_spoiler": "Clique para ver o spoiler NSFW", "always_show_nsfw": "Sempre mostrar mídias NSFW?", "always_show_nsfw_notice": "Ok, mudamos suas preferências para mostrar sempre mídias NSFW.", "content_options": "Opções de conteúdo", "over_18": "Acima de 18?", "must_be_over_18": "Você precisa ter 18 anos ou mais para ver esta comunidade", "must_be_over_18_explanation": "Você deve ter pelo menos dezoito anos para ver este conteúdo. Você tem mais de dezoito anos e está disposto a ver conteúdo para adultos?", "no_thank_you": "Não, obrigado", "continue": "Continuar", "download_latest_android": "Baixar a versão mais recente do Android?", "submitter": "Submissor", "block_user": "Bloquear usuário", "unblock_user": "Desbloquear usuário", "filtering_by_tag": "Filtrando por tag: \"{{tag}}\"", "you_are_moderator": "Você é moderador desta comunidade", "you_are_admin": "Você é um administrador desta comunidade", "you_are_owner": "Você é o proprietário desta comunidade", "looking_for_more_posts": "Procurando mais postagens", "loading_feed": "Carregando feed", "downloading_posts": "Baixando postagens", "post_is_pending": "Postagem pendente", "post_has_failed": "A postagem falhou", "choose_file": "Escolher arquivo", "uploading": "Carregando", "invalid_url_alert": "O link fornecido não é uma URL válida.", "empty_comment_alert": "Não é possível postar um comentário vazio.", "no_subscriptions_message": "<1>{{accountName}}, esta é a sua casa no Seedit<2>Quando encontrar uma comunidade de que goste, <3>junte-se com o <4>", "find_communities": "encontrar comunidades em p/all", "community_deleted": "Comunidade excluída com sucesso.", "go_to_a_community": "Ir para uma comunidade", "enter_community_address": "Digite um endereço de comunidade", "all_communities": "todas as comunidades", "search_posts": "pesquisar postagens", "found_n_results_for": "encontrados {{count}} posts para \"{{query}}\"", "clear_search": "limpar pesquisa", "no_matches_found_for": "nenhuma correspondência encontrada para \"{{query}}\"", "searching": "buscando", "hide_default_communities_from_topbar": "Ocultar comunidades padrão da barra superior", "media": "mídia", "hide_communities_tagged_as_nsfw": "Ocultar comunidades marcadas como NSFW/18+", "tagged_as_adult": "marcado como \"adulto\"", "tagged_as_gore": "marcado como \"gore\"", "tagged_as_anti": "marcado como \"anti\"", "tagged_as_vulgar": "marcado como \"vulgar\"", "drop_here_or": "Solte aqui ou", "upload_button_warning": "O upload automático está bloqueado pela política CORS do seu navegador, mas está disponível no aplicativo Seedit para Android e no aplicativo desktop (Win/Mac/Linux).\n\nVá para a página de links de download no GitHub?", "create_community_warning": "Criar uma comunidade exige a execução de um nó completo. O aplicativo Seedit para desktop (Win/Mac/Linux) executa automaticamente um nó completo.\n\nVá para a página de links de download no GitHub?", "avatars": "Avatares", "filtering_by_nsfw": "Filtragem por comunidades NSFW", "notifications": "Notificações", "new_replies_received": "novas respostas recebidas", "private_key_warning_title": "Sua chave privada será exibida", "private_key_warning_description": "Você está prestes a visualizar os dados da sua conta, que incluem sua chave privada. Nunca deve compartilhar sua chave privada com ninguém.", "go_back": "Voltar", "loading_editor": "Carregando editor", "show_thumbnails_next_to_links": "Mostrar miniaturas ao lado dos links", "dont_show_thumbnails_next_to_links": "Não mostrar miniaturas ao lado dos links", "show_thumbnails_based_on_community_media_preferences": "Mostrar miniaturas com base nas preferências de mídia daquela comunidade", "media_previews": "visualizações de mídia", "auto_expand_media_previews": "Expandir visualizações de mídia automaticamente", "dont_auto_expand_media_previews_on_comments_pages": "Não expanda automaticamente as pré-visualizações de mídia nas páginas de comentários", "video_player": "Reprodutor de vídeo", "autoplay_videos_on_comments_page": "Reproduzir vídeos automaticamente na página de comentários", "mute_videos_by_default": "Silenciar vídeos por padrão", "expand_media_previews_based_on_community_media_preferences": "Expanda as visualizações de mídia com base nas preferências de mídia daquela comunidade", "show_all_nsfw": "mostrar todo NSFW", "hide_all_nsfw": "ocultar todo NSFW", "tags": "Tags", "moderator_of": "moderador de", "not_subscriber_nor_moderator": "Você não é assinante nem moderador de nenhuma comunidade.", "more_posts_last_year": "{{count}} posts no último {{currentTimeFilterName}}: <1>mostrar mais posts do ano passado", "editor_fallback_warning": "editor avançado falhou ao carregar, usando editor de texto básico como fallback.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Você já está visualizando esta comunidade" } ================================================ FILE: public/translations/ro/default.json ================================================ { "about": "Despre", "comments": "comentarii", "preferences": "Preferințe", "submit": "Trimite", "dark": "Întunecat", "light": "Luminos", "my_communities": "Comunitățile mele", "home": "Acasă", "all": "Toate", "submitted": "Trimis", "post_by": "De către", "post_to": "Către", "post_no_comments": "Comentează", "post_comment": "Comentariu", "post_comments": "Comentarii", "share": "Distribuie", "save": "Salvează", "hide": "Ascunde", "report": "Raportează", "crosspost": "Crosspost", "time_1_minute_ago": "Acum 1 minut", "time_x_minutes_ago": "Acum {{count}} minute", "time_1_hour_ago": "Acum 1 oră", "time_x_hours_ago": "Acum {{count}} ore", "time_1_day_ago": "Acum 1 zi", "time_x_days_ago": "Acum {{count}} zile", "time_1_month_ago": "Acum 1 lună", "time_x_months_ago": "Acum {{count}} luni", "time_1_year_ago": "Acum 1 an", "time_x_years_ago": "Acum {{count}} ani", "spoiler": "Spoiler", "reply_reply": "Răspuns", "reply_sorted_by": "Sortat după", "all_comments": "Toate {{count}} comentariile", "no_comments": "Fără comentarii (încă)", "reply_score_singular": "1 punct", "reply_score_plural": "{{score}} puncte", "removed": "Eliminat", "one_comment": "1 comentariu", "submit_url_description": "încorporați media postând linkul său direct (terminând în .jpg, .gif, .mp4, etc.)", "title": "titlu", "text": "text", "required": "necesar", "optional": "opțional", "community_address": "adresa comunității", "submit_choose": "alege unde să postezi", "submit_notice": "vă rugăm să respectați regulile comunității, seedit nu are administratori globali.", "challenge_from": "Provocare de la p/{{subplebbit}}", "challenge_for_post": "pentru postare: \"{{publicationContent}}\"", "challenge_for_reply": "pentru răspunsul la u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} din {{total}}", "cancel": "Anulează", "previous": "Anterior", "next": "Următor", "loading": "Se încarcă", "pending": "În așteptare", "submit_subscriptions_notice": "Comunități recomandate", "submit_subscriptions": "comunitățile dvs. abonate", "rules_for": "reguli pentru", "no_communities_found": "Nicio comunitate găsită pe <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "Pentru a vă conecta la o comunitate, folosiți 🔎 în partea dreaptă sus", "options": "opțiuni", "hide_options": "ascunde opțiuni", "failed": "eșuat", "time_1_minute": "1 minut", "time_x_minutes": "{{count}} minute", "time_1_hour": "1 oră", "time_x_hours": "{{count}} ore", "time_1_day": "1 zi", "time_x_days": "{{count}} zile", "time_1_month": "1 lună", "time_x_months": "{{count}} luni", "time_1_year": "1 an", "time_x_years": "{{count}} ani", "submit_post": "Trimite o postare nouă", "create_your_community": "Creează-ți propria comunitate", "moderators": "moderatori", "about_moderation": "despre echipa de moderare", "join": "Alătură-te", "leave": "plecați", "created_by": "creat de {{creatorAddress}}", "community_for": "o comunitate pentru {{date}}", "post_submitted_on": "această postare a fost trimisă la {{postDate}}", "users_online": "{{count}} utilizatori aici acum", "point": "punct", "points": "puncte", "share_link": "partajează linkul", "upvoted": "a dat un upvote", "announcement": "anunț", "child": "{{childrenCount}} copii", "children": "{{childrenCount}} copil", "moderation": "moderare", "interface_language": "limbă de interfață", "theme": "temă", "account": "cont", "display_name": "nume de afișare", "crypto_address": "adresa cripto", "check": "verificați", "crypto_address_verification": "dacă adresa cripto este rezolvată p2p", "create": "creați", "delete": "ștergeți", "locked": "blocat", "reason": "motiv", "sorted_by": "sortat după", "downvoted": "vot negativ", "hidden": "ascuns", "saved": "salvat", "overview": "prezentare generală", "user_since": "Utilizator din cel puțin {{time}}", "post_karma": "karma postărilor", "comment_karma": "karma comentariilor", "full_comments": "toate comentariile", "context": "context", "block": "blochează", "post": "postare", "unhide": "afișează", "unblock": "deblochează", "undo": "anulează", "post_hidden": "postare ascunsă", "link_copied": "link copiat", "block_community": "blochează comunitatea", "unblock_community": "deblochează comunitatea", "search_feed_post": "Caută o postare în acest flux", "from": "de la", "via": "prin", "sent": "trimis", "unread": "necitit", "comment_replies": "răspunsuri la comentarii", "post_replies": "răspunsuri la postări", "messages": "mesaje", "inbox": "inbox", "mark_all_read": "marcați toate ca citite", "comment_reply": "răspunde la comentariu", "post_reply": "răspunde la postare", "show_parent": "afișează postarea referită", "no_posts": "niciun post", "media_url": "URL media", "post_locked_info": "Această postare este {{state}}. Nu veți putea comenta.", "members_count": "{{count}} membri", "communities": "comunitate", "edit": "modifica", "moderator": "Moderator", "description": "Descriere", "rules": "Reguli", "save_options": "Salvați opțiunile", "logo": "Logo", "address": "Adresă", "nothing_found": "Nu pare să fie nimic aici", "stickied_comment": "Comentariu fixat", "posts_last_synced": "Ultimele postări sincronizate {{dateAgo}}", "community_settings": "Setări ale comunității", "moderation_tools": "Instrumente de moderare", "submit_to": "Trimite la <1>{{link}}", "edit_subscriptions": "Editează abonamente", "delete_confirm": "Sunteți sigur că doriți să ștergeți {{value}}?", "saving": "Se salvează", "deleted": "Șters", "online": "Online", "offline": "Offline", "subscriber": "Abonat", "join_communities_notice": "Faceți clic pe butoanele <1>{{join}} sau <2>{{leave}} pentru a alege ce comunități apar pe pagina de pornire.", "below_subscribed": "Mai jos sunt comunitățile la care te-ai abonat.", "not_subscribed": "Nu sunteți abonat la nicio comunitate încă.", "below_moderator_access": "Mai jos sunt comunitățile la care aveți acces ca moderator.", "not_moderator": "Nu ești moderator în nicio comunitate.", "create_community": "Creați comunitate", "single_comment_notice": "Vizualizați un fir de discuție cu un singur comentariu", "single_comment_link": "Vizualizați restul comentariilor", "owner_settings_notice": "Doar proprietarul comunității poate edita setările acesteia.", "preview": "previzualizare", "shown_in_sidebar": "afișat în bara laterală a comunității tale", "community_logo_info": "setați un logo de comunitate folosind link-ul direct al imaginii (care se termină în .jpg, .png)", "moderators_setting_info": "permiteți altor utilizatori să modereze și să posteze fără provocări", "vote": "vota", "passing": "trecere", "rejecting": "respingere", "add_moderator": "adăugați un moderator", "add_rule": "adăugați o regulă", "json_settings": "Setări JSON", "json_settings_info": "copiați sau lipiți rapid setările comunității", "address_setting_info": "Setați o adresă comunitară citibilă folosind un domeniu cripto", "enter_crypto_address": "Vă rugăm să introduceți o adresă crypto validă.", "check_for_updates": "<1>Verifică pentru actualizări", "refresh_to_update": "Actualizați pagina pentru a actualiza", "latest_development_version": "Ești pe cea mai recentă versiune de dezvoltare, commit {{commit}}. Pentru a folosi versiunea stabilă, mergi la {{link}}.", "latest_stable_version": "Ești pe cea mai recentă versiune stabilă, seedit v{{version}}.", "new_development_version": "Noua versiune de dezvoltare disponibilă, commit {{newCommit}}. Folosiți commit {{oldCommit}}.", "new_stable_version": "Noua versiune stabilă disponibilă, seedit v{{newVersion}}. Folosiți seedit v{{oldVersion}}.", "download_latest_desktop": "Descărcați cea mai recentă versiune de desktop aici: {{link}}", "contribute_on_github": "Contribuiți pe GitHub", "no_media_found": "Nu s-au găsit media", "no_image_found": "Nu s-a găsit nicio imagine", "warning_spam": "Avertisment: nicio provocare selectată, comunitatea este vulnerabilă la atacuri de spam.", "hide_help": "Ascundeți ajutorul", "formatting_help": "Ajutor de formatare", "you_see": "vezi", "you_type": "Tu tastezi", "italics": "italic", "bold": "bold", "quoted_text": "text citat", "item": "articol", "delete_community": "ștergeți comunitatea", "delete_community_description": "Ștergeți permanent această comunitate. Conținutul său ar putea fi încă semănat de pereți", "add": "adăuga", "owner": "proprietar", "admin": "administrator", "settings_saved": "Setările au fost salvate pentru p/{{subplebbitAddress}}", "continue_thread": "continuați acest fir de discuție", "mod_edit_reason": "Motivul editării de către moderator", "double_confirm": "Sunteți sigur? Această acțiune este ireversibilă.", "crypto_address_not_yours": "Adresa crypto aparține unui alt cont.", "crypto_address_yours": "Adresa crypto aparține acestui cont.", "crypto_address_not_resolved": "Adresa crypto nu este încă rezolvată.", "submit_to_string": "Trimite la {{string}}", "page_not_found": "Pagina nu a fost găsită", "not_found_description": "Pagina pe care ai solicitat-o nu există", "last_edited": "ultima editare {{timestamp}}", "view_spoiler": "vezi spoilerul", "default_communities": "comunități implicite", "avatar": "avatar", "pending_edit": "editare în așteptare", "failed_edit": "editare eșuată", "node_stats": "statistici de nod", "version": "versiune", "edit_reason": "motivul editării", "view_parent_comment": "vezi comentariul părinte", "chain_ticker": "Ticker blockchain", "token_address_whitelist": "Adresa tokenului (<1>doar lista albă)", "token_id": "ID token", "paste_signature": "Lipește semnătura", "copy_message_etherscan": "<1>{{copy}} mesaj de semnat pe <2>etherscan", "copy": "copiere", "copied": "copiat", "missing_chain_ticker": "Lipsește ticker blockchain", "missing_token_address": "Lipsește adresa tokenului", "missing_token_id": "Lipsește ID-ul tokenului", "missing_signature": "Lipsește semnătura", "edited_timestamp": "Editat {{timestamp}}", "ban_user_for": "Interzice utilizatorul pentru <1> zi(zile)", "crypto_wallets": "Portofele crypto", "wallet_address": "Adresa portofelului", "remove": "Elimină", "add_wallet": "<1>Adăugați un portofel cripto", "show_settings": "Afișare setări", "hide_settings": "Ascunde setările", "undelete": "Recuperare", "downloading_comments": "se descarcă comentarii", "you_blocked_community": "Ați blocat această comunitate", "show": "arată", "plebbit_options": "opțiuni plebbit", "general": "general", "more_posts_last_week": "{{count}} postări săptămâna trecută {{currentTimeFilterName}}: <1>arata mai multe postări de săptămâna trecută", "more_posts_last_month": "{{count}} postări în {{currentTimeFilterName}}: <1>arată mai multe postări din luna trecută", "profile_info": "Contul tău u/{{shortAddress}} a fost creat. <1>Setează numele de afișare, <2>exportă backup, <3>află mai multe.", "show_all_instead": "Afișând postări din {{timeFilterName}}, <1>afișați totul în schimb", "subplebbit_offline_info": "Comunitatea poate fi offline și publicarea poate eșua.", "posts_last_synced_info": "Postări sincronizate ultima dată {{time}}, comunitatea ar putea fi offline și publicarea ar putea eșua.", "import_account_backup": "<1>importați backup-ul contului", "export_account_backup": "<1>exportați backup-ul contului", "save_reset_changes": "<1>salvează sau <2>resetează modificările", "delete_this_account": "<1>șterge acest cont", "create_new_account": "<1>creați un cont nou", "wallet_number": "portofel #{{index}}", "view_more": "vezi mai mult", "submit_community": "Trimite comunitatea ta", "hide_avatars_from_replies": "Ascunde avatarele din răspunsuri", "yes": "da", "no": "nu", "are_you_sure": "Ești sigur?", "a_short_title": "Un titlu scurt pentru comunitatea ta", "challenges": "Provocări", "challenges_subtitle": "Alegeți unul sau mai multe provocări pentru a preveni spamul", "add_a_challenge": "Adăugați o provocare", "communities_you_moderate": "Comunități pe care le moderezi", "blur_media": "Estompați media marcate ca NSFW/18+", "nsfw_content": "Conținut NSFW", "see_nsfw": "Faceți clic pentru a vedea NSFW", "see_nsfw_spoiler": "Faceți clic pentru a vedea spoilerul NSFW", "always_show_nsfw": "Doriți să arătați întotdeauna media NSFW?", "always_show_nsfw_notice": "Ok, am schimbat preferințele tale pentru a arăta întotdeauna media NSFW.", "content_options": "Opțiuni de conținut", "over_18": "Peste 18?", "must_be_over_18": "Trebuie să ai 18+ ani pentru a vizualiza această comunitate", "must_be_over_18_explanation": "Trebuie să ai cel puțin optsprezece ani pentru a vizualiza acest conținut. Ai peste optsprezece ani și ești dispus să vizionezi conținut pentru adulți?", "no_thank_you": "Nu, mulțumesc", "continue": "Continuă", "download_latest_android": "Descărcați cea mai recentă versiune Android?", "submitter": "Trimis", "block_user": "Blochează utilizatorul", "unblock_user": "Deblochează utilizatorul", "filtering_by_tag": "Filtrare după tag: \"{{tag}}\"", "you_are_moderator": "Ești moderator al acestei comunități", "you_are_admin": "Ești administrator al acestei comunități", "you_are_owner": "Ești proprietarul acestei comunități", "looking_for_more_posts": "Căutând mai multe postări", "loading_feed": "Încărcare feed", "downloading_posts": "Descărcarea postărilor", "post_is_pending": "Postarea este în așteptare", "post_has_failed": "Postarea a eșuat", "choose_file": "Alege fișierul", "uploading": "Încărcare", "invalid_url_alert": "Linkul furnizat nu este un URL valid.", "empty_comment_alert": "Nu se poate publica un comentariu gol.", "no_subscriptions_message": "<1>{{accountName}}, aceasta este casa ta pe Seedit<2>Când găsești o comunitate care îți place, <3>alătură-te cu <4>", "find_communities": "găsiți comunități pe p/all", "community_deleted": "Comunitatea a fost ștearsă cu succes.", "go_to_a_community": "Mergi într-o comunitate", "enter_community_address": "Introduceți o adresă de comunitate", "all_communities": "toate comunitățile", "search_posts": "căutați postări", "found_n_results_for": "au fost găsite {{count}} postări pentru \"{{query}}\"", "clear_search": "șterge căutarea", "no_matches_found_for": "nu s-au găsit rezultate pentru \"{{query}}\"", "searching": "căutare", "hide_default_communities_from_topbar": "Ascunde comunitățile implicite din bara de sus", "media": "media", "hide_communities_tagged_as_nsfw": "Ascunde comunitățile etichetate ca NSFW/18+", "tagged_as_adult": "etichetat ca \"adult\"", "tagged_as_gore": "etichetat ca \"gore\"", "tagged_as_anti": "etichetați ca \"anti\"", "tagged_as_vulgar": "marcat ca \"vulgar\"", "drop_here_or": "Aruncați aici sau", "upload_button_warning": "Încărcarea automată este blocată de politica CORS a browser-ului tău, dar este disponibilă în aplicația Seedit pentru Android și aplicațiile desktop (Win/Mac/Linux).\n\nMergi la pagina cu linkuri de descărcare pe GitHub?", "create_community_warning": "Crearea unei comunități necesită rularea unui nod complet. Aplicația Seedit pentru desktop (Win/Mac/Linux) rulează automat un nod complet.\n\nMergi la pagina cu linkuri de descărcare pe GitHub?", "avatars": "Avatare", "filtering_by_nsfw": "Filtrare după comunități NSFW", "notifications": "Notificări", "new_replies_received": "noi răspunsuri primite", "private_key_warning_title": "Cheia dvs. privată va fi afișată", "private_key_warning_description": "Ești pe punctul de a vizualiza datele contului tău, care includ cheia ta privată. Nu ar trebui să îți împărtășești cheia privată cu nimeni.", "go_back": "Înapoi", "loading_editor": "Se încarcă editorul", "show_thumbnails_next_to_links": "Afișați miniaturi lângă linkuri", "dont_show_thumbnails_next_to_links": "Nu afișa miniaturi lângă linkuri", "show_thumbnails_based_on_community_media_preferences": "Afișează miniaturi în funcție de preferințele media ale comunității respective", "media_previews": "previzualizări media", "auto_expand_media_previews": "Extindere automată a previzualizărilor media", "dont_auto_expand_media_previews_on_comments_pages": "Nu extinde automat previzualizările media pe paginile de comentarii", "video_player": "Player video", "autoplay_videos_on_comments_page": "Redare automată a videoclipurilor pe pagina de comentarii", "mute_videos_by_default": "Dezactivează sunetul videoclipurilor în mod implicit", "expand_media_previews_based_on_community_media_preferences": "Extindeți previzualizările media pe baza preferințelor media ale comunității respective", "show_all_nsfw": "arată tot NSFW", "hide_all_nsfw": "ascunde tot NSFW", "tags": "Etichete", "moderator_of": "moderator al", "not_subscriber_nor_moderator": "Nu ești abonat și nici moderator al vreunei comunități.", "more_posts_last_year": "{{count}} postări în ultimul {{currentTimeFilterName}}: <1>arată mai multe postări din anul trecut", "editor_fallback_warning": "editorul avansat nu a reușit să se încarce, se folosește editorul de text simplu ca soluție de rezervă.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Vizualizezi deja această comunitate" } ================================================ FILE: public/translations/ru/default.json ================================================ { "about": "О", "comments": "комментарии", "preferences": "Настройки", "submit": "Отправить", "dark": "Темный", "light": "Светлый", "my_communities": "Мои сообщества", "home": "Главная", "all": "Все", "submitted": "Отправлено", "post_by": "От", "post_to": "В", "post_no_comments": "Комментировать", "post_comment": "Комментарий", "post_comments": "Комментарии", "share": "Поделиться", "save": "Сохранить", "hide": "Скрыть", "report": "Пожаловаться", "crosspost": "Кросспост", "time_1_minute_ago": "1 минуту назад", "time_x_minutes_ago": "{{count}} минут назад", "time_1_hour_ago": "1 час назад", "time_x_hours_ago": "{{count}} часов назад", "time_1_day_ago": "1 день назад", "time_x_days_ago": "{{count}} дней назад", "time_1_month_ago": "1 месяц назад", "time_x_months_ago": "{{count}} месяцев назад", "time_1_year_ago": "1 год назад", "time_x_years_ago": "{{count}} лет назад", "spoiler": "Спойлер", "reply_reply": "Ответ", "reply_sorted_by": "Сортировать по", "all_comments": "Все {{count}} комментарии", "no_comments": "Нет комментариев (пока)", "reply_score_singular": "1 очко", "reply_score_plural": "{{score}} очков", "removed": "Удалено", "one_comment": "1 комментарий", "submit_url_description": "вставьте медиа, разместив его прямую ссылку (заканчивается на .jpg, .gif, .mp4 и т. д.)", "title": "заголовок", "text": "текст", "required": "требуется", "optional": "необязательный", "community_address": "адрес сообщества", "submit_choose": "выберите, куда отправить", "submit_notice": "пожалуйста, соблюдайте правила сообщества, в seedit нет глобальных администраторов.", "challenge_from": "Челлендж от p/{{subplebbit}}", "challenge_for_post": "для поста: \"{{publicationContent}}\"", "challenge_for_reply": "для ответа u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} из {{total}}", "cancel": "Отмена", "previous": "Предыдущий", "next": "Следующий", "loading": "Загрузка", "pending": "В ожидании", "submit_subscriptions_notice": "Рекомендуемые сообщества", "submit_subscriptions": "ваши подписанные сообщества", "rules_for": "правила для", "no_communities_found": "Сообщества не найдены на <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "Чтобы подключиться к сообществу, используйте 🔎 в правом верхнем углу", "options": "опции", "hide_options": "скрыть опции", "failed": "не удалось", "time_1_minute": "1 минута", "time_x_minutes": "{{count}} минут", "time_1_hour": "1 час", "time_x_hours": "{{count}} часов", "time_1_day": "1 день", "time_x_days": "{{count}} дней", "time_1_month": "1 месяц", "time_x_months": "{{count}} месяцев", "time_1_year": "1 год", "time_x_years": "{{count}} лет", "submit_post": "Отправить новый пост", "create_your_community": "Создайте своё сообщество", "moderators": "модераторы", "about_moderation": "о модераторах", "join": "Присоединиться", "leave": "покинуть", "created_by": "создано {{creatorAddress}}", "community_for": "сообщество на {{date}}", "post_submitted_on": "этот пост был отправлен {{postDate}}", "users_online": "{{count}} пользователей сейчас здесь", "point": "точка", "points": "очки", "share_link": "поделиться ссылкой", "upvoted": "поставил плюс", "announcement": "объявление", "child": "{{childrenCount}} дети", "children": "{{childrenCount}} ребенок", "moderation": "модерация", "interface_language": "язык интерфейса", "theme": "тема", "account": "аккаунт", "display_name": "отображаемое имя", "crypto_address": "адрес криптовалюты", "check": "проверьте", "crypto_address_verification": "если адрес криптовалюты решается p2p", "create": "создайте", "delete": "удалить", "locked": "заблокирован", "reason": "причина", "sorted_by": "сортировано по", "downvoted": "проголосовало негативно", "hidden": "скрыто", "saved": "сохранено", "overview": "обзор", "user_since": "Пользователь с {{time}} или более", "post_karma": "карма постов", "comment_karma": "карма комментариев", "full_comments": "все комментарии", "context": "контекст", "block": "заблокировать", "post": "пост", "unhide": "показать", "unblock": "разблокировать", "undo": "отменить", "post_hidden": "скрытый пост", "link_copied": "ссылка скопирована", "block_community": "заблокировать сообщество", "unblock_community": "разблокировать сообщество", "search_feed_post": "Искать запись в этой ленте", "from": "от", "via": "через", "sent": "отправлено", "unread": "непрочитанные", "comment_replies": "ответы на комментарии", "post_replies": "ответы на посты", "messages": "сообщения", "inbox": "входящие", "mark_all_read": "пометить все как прочитанные", "comment_reply": "ответить на комментарий", "post_reply": "ответить на пост", "show_parent": "показать упомянутый пост", "no_posts": "нет записей", "media_url": "URL медиа", "post_locked_info": "Этот пост {{state}}. Вы не сможете оставить комментарий.", "members_count": "{{count}} участников", "communities": "сообщество", "edit": "редактировать", "moderator": "Модератор", "description": "Описание", "rules": "Правила", "save_options": "Сохранить настройки", "logo": "Логотип", "address": "Адрес", "nothing_found": "Здесь, кажется, ничего нет", "stickied_comment": "Закрепленный комментарий", "posts_last_synced": "Последние синхронизированные посты {{dateAgo}}", "community_settings": "Настройки сообщества", "moderation_tools": "Инструменты модерации", "submit_to": "Отправить на <1>{{link}}", "edit_subscriptions": "Редактировать подписки", "delete_confirm": "Вы уверены, что хотите удалить {{value}}?", "saving": "Сохранение", "deleted": "Удалено", "online": "Онлайн", "offline": "Оффлайн", "subscriber": "Подписчик", "join_communities_notice": "Чтобы выбрать, какие сообщества отображать на главной странице, нажмите кнопки <1>{{join}} или <2>{{leave}}.", "below_subscribed": "Ниже перечислены сообщества, на которые вы подписались.", "not_subscribed": "Вы пока не подписаны ни на одно сообщество.", "below_moderator_access": "Ниже представлены сообщества, в которые у вас есть доступ в качестве модератора.", "not_moderator": "Вы не являетесь модератором ни в одном сообществе.", "create_community": "Создать сообщество", "single_comment_notice": "Вы просматриваете тему с единственным комментарием", "single_comment_link": "Просмотреть остальные комментарии", "owner_settings_notice": "Только владелец сообщества может редактировать его настройки.", "preview": "просмотр", "shown_in_sidebar": "отображается в боковой панели вашего сообщества", "community_logo_info": "установите логотип сообщества, используя его прямую ссылку на изображение (заканчивается на .jpg, .png)", "moderators_setting_info": "позвольте другим пользователям модерировать и публиковать без вызовов", "vote": "голосовать", "passing": "проходящий", "rejecting": "отклонение", "add_moderator": "добавить модератора", "add_rule": "добавить правило", "json_settings": "Настройки JSON", "json_settings_info": "быстро копировать или вставить настройки сообщества", "address_setting_info": "Установите читаемый общественный адрес, используя криптодомен", "enter_crypto_address": "Пожалуйста, введите действительный криптовалютный адрес.", "check_for_updates": "<1>Проверить наличие обновлений", "refresh_to_update": "Обновите страницу, чтобы обновить", "latest_development_version": "Вы используете последнюю версию разработки, коммит {{commit}}. Чтобы использовать стабильную версию, перейдите по ссылке {{link}}.", "latest_stable_version": "Вы используете последнюю стабильную версию, seedit v{{version}}.", "new_development_version": "Доступна новая версия разработки, коммит {{newCommit}}. Вы используете коммит {{oldCommit}}.", "new_stable_version": "Доступна новая стабильная версия, seedit v{{newVersion}}. Вы используете seedit v{{oldVersion}}.", "download_latest_desktop": "Скачать последнюю версию для рабочего стола здесь: {{link}}", "contribute_on_github": "Внести вклад на GitHub", "no_media_found": "Медиа не найдены", "no_image_found": "Изображение не найдено", "warning_spam": "Предупреждение: не выбрано никакого вызова, сообщество уязвимо для спам-атак.", "hide_help": "Скрыть помощь", "formatting_help": "Справка по форматированию", "you_see": "вы видите", "you_type": "Вы печатаете", "italics": "курсив", "bold": "жирный", "quoted_text": "цитируемый текст", "item": "пункт", "delete_community": "удалить сообщество", "delete_community_description": "Постоянно удалить это сообщество. Его содержимое все еще может быть засеяно сверстниками", "add": "добавить", "owner": "владелец", "admin": "администратор", "settings_saved": "Настройки сохранены для p/{{subplebbitAddress}}", "continue_thread": "продолжить эту тему", "mod_edit_reason": "Причина редактирования модератором", "double_confirm": "Вы действительно уверены? Это действие необратимо.", "crypto_address_not_yours": "Адрес криптовалюты принадлежит другому аккаунту.", "crypto_address_yours": "Адрес криптовалюты принадлежит этому аккаунту.", "crypto_address_not_resolved": "Адрес криптовалюты еще не решен.", "submit_to_string": "Отправить на {{string}}", "page_not_found": "Страница не найдена", "not_found_description": "Запрошенная вами страница не существует", "last_edited": "последнее редактирование {{timestamp}}", "view_spoiler": "посмотреть спойлер", "default_communities": "стандартные сообщества", "avatar": "аватар", "pending_edit": "редактирование ожидается", "failed_edit": "не удалось отредактировать", "node_stats": "статистика узла", "version": "версия", "edit_reason": "причина редактирования", "view_parent_comment": "просмотреть родительский комментарий", "chain_ticker": "Блокчейн тикер", "token_address_whitelist": "Адрес токена (<1>только белый список)", "token_id": "Идентификатор токена", "paste_signature": "Вставить подпись", "copy_message_etherscan": "<1>{{copy}} сообщение для подписи на <2>etherscan", "copy": "копировать", "copied": "скопировано", "missing_chain_ticker": "Отсутствующий тикер блокчейна", "missing_token_address": "Отсутствующий адрес токена", "missing_token_id": "Отсутствующий идентификатор токена", "missing_signature": "Отсутствующая подпись", "edited_timestamp": "Отредактировано {{timestamp}}", "ban_user_for": "Заблокировать пользователя на <1> день(дней)", "crypto_wallets": "Криптокошельки", "wallet_address": "Адрес кошелька", "remove": "Удалить", "add_wallet": "<1>Добавить криптокошелек", "show_settings": "Показать настройки", "hide_settings": "Скрыть настройки", "undelete": "Восстановить", "downloading_comments": "скачиваются комментарии", "you_blocked_community": "Вы заблокировали это сообщество", "show": "показать", "plebbit_options": "опции plebbit", "general": "общий", "more_posts_last_week": "{{count}} сообщений на прошлой {{currentTimeFilterName}}: <1>показать больше сообщений за прошлую неделю", "more_posts_last_month": "{{count}} постов в {{currentTimeFilterName}}: <1>показать больше постов за прошлый месяц", "profile_info": "Ваш аккаунт u/{{shortAddress}} был создан. <1>Установить имя отображения, <2>экспортировать резервную копию, <3>узнать больше.", "show_all_instead": "Показаны записи с {{timeFilterName}}, <1>показать все вместо этого", "subplebbit_offline_info": "Сообщество может быть в режиме offline и публикация может не удаться.", "posts_last_synced_info": "Посты синхронизированы последний раз {{time}}, сообщество может быть в режиме офлайн и публикация может не удаться.", "import_account_backup": "<1>импортировать резервную копию аккаунта", "export_account_backup": "<1>экспортировать резервную копию аккаунта", "save_reset_changes": "<1>сохранить или <2>сбросить изменения", "delete_this_account": "<1>удалить эту учетную запись", "create_new_account": "<1>создать новую учетную запись", "wallet_number": "кошелек #{{index}}", "view_more": "смотреть больше", "submit_community": "Отправьте ваше сообщество", "hide_avatars_from_replies": "Скрыть аватары в ответах", "yes": "да", "no": "нет", "are_you_sure": "Вы уверены?", "a_short_title": "Короткое название для вашего сообщества", "challenges": "Вызовы", "challenges_subtitle": "Выберите одну или несколько задач для предотвращения спама", "add_a_challenge": "Добавить задачу", "communities_you_moderate": "Сообщества, которые вы модерируете", "blur_media": "Размыть медиа, помеченные как NSFW/18+", "nsfw_content": "Контент NSFW", "see_nsfw": "Нажмите, чтобы увидеть NSFW", "see_nsfw_spoiler": "Нажмите, чтобы увидеть NSFW спойлер", "always_show_nsfw": "Хотите всегда показывать NSFW медиа?", "always_show_nsfw_notice": "Окей, мы изменили ваши предпочтения, чтобы всегда показывать медиа NSFW.", "content_options": "Параметры контента", "over_18": "Больше 18?", "must_be_over_18": "Вы должны быть старше 18 лет, чтобы просматривать это сообщество", "must_be_over_18_explanation": "Вы должны быть как минимум восемнадцати лет, чтобы просматривать этот контент. Вам больше восемнадцати лет, и вы готовы просматривать контент для взрослых?", "no_thank_you": "Нет, спасибо", "continue": "Продолжить", "download_latest_android": "Скачать последнюю версию Android?", "submitter": "Отправитель", "block_user": "Заблокировать пользователя", "unblock_user": "Разблокировать пользователя", "filtering_by_tag": "Фильтрация по тегу: \"{{tag}}\"", "you_are_moderator": "Вы модератор этой сообщества", "you_are_admin": "Вы администратор этой сообщества", "you_are_owner": "Вы являетесь владельцем этой сообщества", "looking_for_more_posts": "Ищу больше постов", "loading_feed": "Загрузка ленты", "downloading_posts": "Загрузка постов", "post_is_pending": "Пост в ожидании", "post_has_failed": "Публикация не удалась", "choose_file": "Выберите файл", "uploading": "Загрузка", "invalid_url_alert": "Предоставленная ссылка не является действительным URL.", "empty_comment_alert": "Невозможно опубликовать пустой комментарий.", "no_subscriptions_message": "<1>{{accountName}}, это ваш дом на Seedit<2>Когда вы найдете сообщество, которое вам нравится, <3>присоединитесь с <4>", "find_communities": "найти сообщества на p/all", "community_deleted": "Сообщество успешно удалено.", "go_to_a_community": "Перейти в сообщество", "enter_community_address": "Введите адрес сообщества", "all_communities": "все сообщества", "search_posts": "поиск сообщений", "found_n_results_for": "найдено {{count}} постов для \"{{query}}\"", "clear_search": "очистить поиск", "no_matches_found_for": "не найдено совпадений для \"{{query}}\"", "searching": "поиск", "hide_default_communities_from_topbar": "Скрыть стандартные сообщества с верхней панели", "media": "медиа", "hide_communities_tagged_as_nsfw": "Скрыть сообщества, помеченные как NSFW/18+", "tagged_as_adult": "отмечено как \"взрослый\"", "tagged_as_gore": "помечено как \"gore\"", "tagged_as_anti": "помечено как \"анти\"", "tagged_as_vulgar": "отмечено как \"вульгарное\"", "drop_here_or": "Перетащите сюда или", "upload_button_warning": "Автоматическая загрузка заблокирована политикой CORS вашего браузера, но она доступна в приложении Seedit для Android и в настольных приложениях (Win/Mac/Linux).\n\nПерейдите на страницу ссылок для загрузки на GitHub?", "create_community_warning": "Создание сообщества требует запуска полного узла. Приложение Seedit для настольных ПК (Win/Mac/Linux) автоматически запускает полный узел.\n\nПерейдите на страницу ссылок для загрузки на GitHub?", "avatars": "Аватары", "filtering_by_nsfw": "Фильтрация по сообществам NSFW", "notifications": "Уведомления", "new_replies_received": "получены новые ответы", "private_key_warning_title": "Ваш приватный ключ будет отображен", "private_key_warning_description": "Вы собираетесь просмотреть данные своего аккаунта, которые включают ваш приватный ключ. Никогда не делитесь своим приватным ключом с кем-либо.", "go_back": "Назад", "loading_editor": "Загрузка редактора", "show_thumbnails_next_to_links": "Показывать миниатюры рядом со ссылками", "dont_show_thumbnails_next_to_links": "Не показывать миниатюры рядом со ссылками", "show_thumbnails_based_on_community_media_preferences": "Показывать миниатюры на основе медиа-предпочтений сообщества", "media_previews": "предпросмотры медиа", "auto_expand_media_previews": "Автоматическое расширение предварительного просмотра медиа", "dont_auto_expand_media_previews_on_comments_pages": "Не разворачивать автоматически медиа-превью на страницах комментариев", "video_player": "Видеоплеер", "autoplay_videos_on_comments_page": "Автовоспроизведение видео на странице комментариев", "mute_videos_by_default": "Отключать звук видео по умолчанию", "expand_media_previews_based_on_community_media_preferences": "Расширьте предварительный просмотр медиа на основе предпочтений медиа этого сообщества", "show_all_nsfw": "показать все NSFW", "hide_all_nsfw": "скрыть весь NSFW", "tags": "Теги", "moderator_of": "модератор", "not_subscriber_nor_moderator": "Вы не являетесь подписчиком или модератором ни одного сообщества.", "more_posts_last_year": "{{count}} постов за последний {{currentTimeFilterName}}: <1>показать больше постов за прошлый год", "editor_fallback_warning": "Не удалось загрузить продвинутый редактор, используется базовый текстовый редактор в качестве запасного варианта.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Вы уже просматриваете это сообщество" } ================================================ FILE: public/translations/sq/default.json ================================================ { "about": "Rreth", "comments": "komentarë", "preferences": "Preferencat", "submit": "Dërgo", "dark": "Errët", "light": "I ndritur", "my_communities": "Komunitetet e mia", "home": "Kryefaqja", "all": "Të gjithë", "submitted": "I dërguar", "post_by": "Nga", "post_to": "Tek", "post_no_comments": "Komento", "post_comment": "Koment", "post_comments": "Komentet", "share": "Shpërndaje", "save": "Ruaj", "hide": "Fshih", "report": "Raporto", "crosspost": "Crosspost", "time_1_minute_ago": "1 minutë më parë", "time_x_minutes_ago": "{{count}} minuta më parë", "time_1_hour_ago": "1 orë më parë", "time_x_hours_ago": "{{count}} orë më parë", "time_1_day_ago": "1 ditë më parë", "time_x_days_ago": "{{count}} ditë më parë", "time_1_month_ago": "1 muaj më parë", "time_x_months_ago": "{{count}} muaj më parë", "time_1_year_ago": "1 vit më parë", "time_x_years_ago": "{{count}} vite më parë", "spoiler": "Spoiler", "reply_reply": "Përgjigje", "reply_sorted_by": "Renditur sipas", "all_comments": "Të gjitha {{count}} komentet", "no_comments": "Asnjë koment (ende)", "reply_score_singular": "1 pikë", "reply_score_plural": "{{score}} pikë", "removed": "U hoq", "one_comment": "1 koment", "submit_url_description": "ngulit media duke postuar lidhjen e saj të drejtpërdrejtë (që përfundon në .jpg, .gif, .mp4, etj.)", "title": "titull", "text": "tekst", "required": "i nevojshëm", "optional": "opsionale", "community_address": "adresa e komunitetit", "submit_choose": "zgjidh ku të postosh", "submit_notice": "ju lutemi jeni të kujdesshëm me rregullat e komunitetit, seedit nuk ka administratorë globalë.", "challenge_from": "Provokim nga p/{{subplebbit}}", "challenge_for_post": "për postimin: \"{{publicationContent}}\"", "challenge_for_reply": "për përgjigjen ndaj u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} nga {{total}}", "cancel": "Anulo", "previous": "I mëparshëm", "next": "Tjetri", "loading": "Po ngarkohet", "pending": "Në pritje", "submit_subscriptions_notice": "Komunitete të propozuara", "submit_subscriptions": "komunitetet tuaja të abonuara", "rules_for": "rregullat për", "no_communities_found": "Nuk u gjetën komunitete në <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "Për të lidhur me një komunitet, përdorni 🔎 në këndin e djathtë lart", "options": "opsione", "hide_options": "fsheh opsionet", "failed": "dështoi", "time_1_minute": "1 minutë", "time_x_minutes": "{{count}} minuta", "time_1_hour": "1 orë", "time_x_hours": "{{count}} orë", "time_1_day": "1 ditë", "time_x_days": "{{count}} ditë", "time_1_month": "1 muaj", "time_x_months": "{{count}} muaj", "time_1_year": "1 vit", "time_x_years": "{{count}} vite", "submit_post": "Dërgo një postim të ri", "create_your_community": "Krijo komunitetin tënd të vet", "moderators": "moderatorët", "about_moderation": "rreth ekipit të moderimit", "join": "Bashkohu", "leave": "ndale", "created_by": "krijuar nga {{creatorAddress}}", "community_for": "një komunitet për {{date}}", "post_submitted_on": "ky post u dorëzua më {{postDate}}", "users_online": "{{count}} përdorues këtu tani", "point": "pikë", "points": "pikë", "share_link": "ndaj linkun", "upvoted": "ka votuar pozitivisht", "announcement": "njoftim", "child": "{{childrenCount}} fëmijët", "children": "{{childrenCount}} fëmijë", "moderation": "moderim", "interface_language": "gjuha e ndërfaqes", "theme": "tema", "account": "llogari", "display_name": "emri i shfaqur", "crypto_address": "adresa e kripto", "check": "kontrollo", "crypto_address_verification": "nëse adresa e kripto shpërblyhet p2p", "create": "krijo", "delete": "fshij", "locked": "i bllokuar", "reason": "arsye", "sorted_by": "radhitur sipas", "downvoted": "votim negativ", "hidden": "fshehur", "saved": "i ruajtur", "overview": "përgledim", "user_since": "Përdorues që nga të paktën {{time}}", "post_karma": "karma e postimeve", "comment_karma": "karma e komenteve", "full_comments": "të gjithë komentet", "context": "konteksti", "block": "blloko", "post": "postimi", "unhide": "shfaq", "unblock": "zhbllokimi", "undo": "anullo", "post_hidden": "postimi i fshehtë", "link_copied": "lidhja u kopjua", "block_community": "blloko komunitetin", "unblock_community": "zhblloko komunitetin", "search_feed_post": "Kërkoni një postim në këtë rrjedhë", "from": "nga", "via": "përmes", "sent": "dërguar", "unread": "pa lexuar", "comment_replies": "përgjigje te komentet", "post_replies": "përgjigje te postimet", "messages": "mesazhe", "inbox": "inbox", "mark_all_read": "shëno të gjitha si të lexuara", "comment_reply": "përgjigju komentit", "post_reply": "përgjigju postës", "show_parent": "shfaq postën e referuar", "no_posts": "asnjë postim", "media_url": "media url", "post_locked_info": "Ky post është {{state}}. Nuk do të jeni në gjendje të komentoni.", "members_count": "{{count}} anëtarë", "communities": "komunitet", "edit": "modifikohu", "moderator": "Moderator", "description": "Përshkrim", "rules": "Rregullat", "save_options": "Ruaj Cilësimet", "logo": "Logos", "address": "Adresë", "nothing_found": "Nuk duket të ketë asgjë këtu", "stickied_comment": "Komenti i fiksuar", "posts_last_synced": "Postimet e fundit të sinkronizuara {{dateAgo}}", "community_settings": "Cilësimet e komunitetit", "moderation_tools": "Mjete moderimi", "submit_to": "Dërgo te <1>{{link}}", "edit_subscriptions": "Ndrysho abonimet", "delete_confirm": "A jeni të sigurt se dëshironi të fshini {{value}}?", "saving": "Ruajtja", "deleted": "Fshirë", "online": "Online", "offline": "Offline", "subscriber": "Abonues", "join_communities_notice": "Klikoni butonat <1>{{join}} ose <2>{{leave}} për të zgjedhur cilat komunitete do të shfaqen në faqen kryesore.", "below_subscribed": "Më poshtë janë komunitetet në të cilat keni bërë abonimin.", "not_subscribed": "Ju nuk jeni ende i abonuar në ndonjë komunitet.", "below_moderator_access": "Më poshtë janë komunitetet në të cilat keni akses si moderator.", "not_moderator": "Ju nuk jeni moderator në asnjë komunitet.", "create_community": "Krijo komunitetin", "single_comment_notice": "Po shikoni një diskutim të një vetëm komenti", "single_comment_link": "Shiko pjesën tjetër të komenteve", "owner_settings_notice": "Vetëm pronari i komunitetit mund të redaktojë cilësimet e tij.", "preview": "paraprake", "shown_in_sidebar": "të shfaqet në anën e majtë të komunitetit tuaj", "community_logo_info": "vendosni një logon e komunitetit duke përdorur lidhjen e drejtpërdrejtë të imazhit të tij (përfundon në .jpg, .png)", "moderators_setting_info": "lejojini të tjerët të moderohen dhe të postohen pa challenge", "vote": "voto", "passing": "kalimi", "rejecting": "refuzim", "add_moderator": "shtoni një moderator", "add_rule": "shtoni një rregull", "json_settings": "Cilësimet JSON", "json_settings_info": "kopjoni ose ngjitni shpejt konfigurimet e komunitetit", "address_setting_info": "Vendosni një adresë të lexueshme të komunitetit duke përdorur një domen kripto", "enter_crypto_address": "Ju lutemi vendosni një adresë kripto të vlefshme.", "check_for_updates": "<1>Kontrolloni për përditësime", "refresh_to_update": "Rifresko faqen për të rifreskuar", "latest_development_version": "Jeni në versionin më të fundit të zhvillimit, komitimi {{commit}}. Për të përdorur versionin e qëndrueshëm, shkoni te {{link}}.", "latest_stable_version": "Jeni në versionin më të fundit të qëndrueshëm, seedit v{{version}}.", "new_development_version": "Versioni i ri i zhvillimit është në dispozicion, komiti {{newCommit}}. Ju po përdorni komitin {{oldCommit}}.", "new_stable_version": "Version i ri i qëndrueshëm është në dispozicion, seedit v{{newVersion}}. Ju po përdorni seedit v{{oldVersion}}.", "download_latest_desktop": "Shkarko versionin më të ri të desktopit këtu: {{link}}", "contribute_on_github": "Kontribuoni në GitHub", "no_media_found": "Nuk u gjet asnje media", "no_image_found": "Nuk u gjet asnje imazh", "warning_spam": "Paralajmërim: asnjë sfidë e zgjedhur, komuniteti është i prekshëm ndaj sulmeve të spamit.", "hide_help": "Fshih ndihmën", "formatting_help": "Ndihmë për formatimin", "you_see": "shikon", "you_type": "Ti shkruan", "italics": "italik", "bold": "i trashë", "quoted_text": "teksti i cituar", "item": "artikull", "delete_community": "fshij komunitetin", "delete_community_description": "Fshini këtë komunitet përherë. Përmbajtja e tij ende mund të jetë mbjellë nga bashkëmoshatarët", "add": "shto", "owner": "pronar", "admin": "administrator", "settings_saved": "Cilësimet u ruajtën për p/{{subplebbitAddress}}", "continue_thread": "vazhdoni këtë temë", "mod_edit_reason": "Arsyeja e modifikimit të moderatorit", "double_confirm": "A jeni të sigurtë? Ky veprim është i papërkthyeshëm.", "crypto_address_not_yours": "Adresa e kriptovalutës i përket një llogarie tjetër.", "crypto_address_yours": "Adresa e kriptovalutës i përket këtij llogarie.", "crypto_address_not_resolved": "Adresa e kriptovalutës nuk është ende e zgjidhur.", "submit_to_string": "Dërgo në {{string}}", "page_not_found": "Faqja nuk u gjet", "not_found_description": "Faqja që keni kërkuar nuk ekziston", "last_edited": "i fundit i ndryshuar {{timestamp}}", "view_spoiler": "shikoni spoiler", "default_communities": "komunitete parazgjedhur", "avatar": "avatar", "pending_edit": "ndryshimi në pritje", "failed_edit": "ndryshimi i dështuar", "node_stats": "statistikat e nyjes", "version": "versioni", "edit_reason": "arsyeja e ndryshimit", "view_parent_comment": "shiko komentin prind", "chain_ticker": "Ticker blockchain", "token_address_whitelist": "Adresa e tokenit (<1>vetëm lista e bardhë)", "token_id": "ID e tokenit", "paste_signature": "Ngjit nënshkrimin", "copy_message_etherscan": "<1>{{copy}} mesazh për nënshkrim në <2>etherscan", "copy": "kopjo", "copied": "kopjuar", "missing_chain_ticker": "Mungon ticker blockchain", "missing_token_address": "Adresa e munguar e tokenit", "missing_token_id": "ID e munguar e tokenit", "missing_signature": "Nënshkrimi i munguar", "edited_timestamp": "Redaktuar {{timestamp}}", "ban_user_for": "Ndalo përdoruesin për <1> ditë", "crypto_wallets": "Portofolitë e cryptos", "wallet_address": "Adresa e wallet", "remove": "Hiqni", "add_wallet": "<1>Shto një xhepë crypto", "show_settings": "Shfaq rregullimet", "hide_settings": "Fshih rregullimet", "undelete": "Rikuperimi", "downloading_comments": "po shkarkohen komentet", "you_blocked_community": "Ju keni bllokuar këtë komunitet", "show": "shfaq", "plebbit_options": "opsione plebbit", "general": "i përgjithshëm", "more_posts_last_week": "{{count}} postime javën {{currentTimeFilterName}}: <1>shiko postime më shumë nga java e kaluar", "more_posts_last_month": "{{count}} postime në {{currentTimeFilterName}}: <1>shiko postime më shumë nga muaji i kaluar", "profile_info": "Llogaria juaj u/{{shortAddress}} u krijua. <1>Vendos emrin për shfaqje, <2>eksportoni kopjen rezervë, <3>më shumë informacion.", "show_all_instead": "Duke treguar postimet që nga {{timeFilterName}}, <1>tregoni gjithçka në vend", "subplebbit_offline_info": "Komuniteti mund të jetë offline dhe publikimi mund të dështojë.", "posts_last_synced_info": "Postet u sinkronizuan për herë të fundit {{time}}, komunitetit mund t'i mungojë lidhja dhe botimi mund të dështojë.", "import_account_backup": "<1>importoni kopjen e llogarisë", "export_account_backup": "<1>eksportoni kopjen e llogarisë", "save_reset_changes": "<1>ruaj ose <2>rivendos ndryshimet", "delete_this_account": "<1>fshi këtë llogari", "create_new_account": "<1>krijo një llogari të re", "wallet_number": "portofol #{{index}}", "view_more": "shiko më shumë", "submit_community": "Dorëzo komunitetin tuaj", "hide_avatars_from_replies": "Fshih avatarët nga përgjigjet", "yes": "po", "no": "jo", "are_you_sure": "Jeni të sigurt?", "a_short_title": "Një titull i shkurtër për komunitetin tuaj", "challenges": "Sfidat", "challenges_subtitle": "Zgjidhni një ose më shumë challenge për të parandaluar spam", "add_a_challenge": "Shtoni një sfidë", "communities_you_moderate": "Komunitetet që moderoni", "blur_media": "Bluroni mediat e shënuara si NSFW/18+", "nsfw_content": "Përmbajtje NSFW", "see_nsfw": "Klikoni për të parë NSFW", "see_nsfw_spoiler": "Klikoni për të parë NSFW spoiler", "always_show_nsfw": "A dëshironi të shfaqni gjithmonë mediat NSFW?", "always_show_nsfw_notice": "Ok, ne ndryshuam preferencat tuaja për të shfaqur gjithmonë mediat NSFW.", "content_options": "Opsionet e përmbajtjes", "over_18": "Mbi 18?", "must_be_over_18": "Duhet të jeni 18+ për të parë këtë komunitet", "must_be_over_18_explanation": "Duhet të jeni të paktën tetëmbëdhjetë vjeç për të parë këtë përmbajtje. A jeni mbi tetëmbëdhjetë vjeç dhe jeni të gatshëm të shihni përmbajtje për të rritur?", "no_thank_you": "Jo, faleminderit", "continue": "Vazhdoni", "download_latest_android": "Shkarkoni versionin më të fundit të Android?", "submitter": "Dërguesi", "block_user": "Blloko përdoruesin", "unblock_user": "Çblloko përdoruesin", "filtering_by_tag": "Filtrimi sipas tagut: \"{{tag}}\"", "you_are_moderator": "Jeni moderator i kësaj komune", "you_are_admin": "Jeni administrator i kësaj komune", "you_are_owner": "Jeni pronari i kësaj komune", "looking_for_more_posts": "Po kërkoni më shumë postime", "loading_feed": "Po ngarkoni feed-in", "downloading_posts": "Po shkarkohen postimet", "post_is_pending": "Postimi është në pritje", "post_has_failed": "Postimi ka dështuar", "choose_file": "Zgjidhni skedarin", "uploading": "Ngarkimi", "invalid_url_alert": "Lidhja e ofruar nuk është një URL e vlefshme.", "empty_comment_alert": "Nuk mund të postoni një koment bosh.", "no_subscriptions_message": "<1>{{accountName}}, ky është shtëpia juaj në Seedit<2>Kur të gjesh një komunitet që të pëlqen, <3>bashkohu me <4>", "find_communities": "gjeni komunitete në p/all", "community_deleted": "Komuniteti u fshi me sukses.", "go_to_a_community": "Shkoni në një komunitet", "enter_community_address": "Shkruani një adresë komuniteti", "all_communities": "të gjitha komunitetet", "search_posts": "kërkoni postime", "found_n_results_for": "gjetën {{count}} postime për \"{{query}}\"", "clear_search": "pastroni kërkimin", "no_matches_found_for": "nuk u gjetën rezultate për \"{{query}}\"", "searching": "kërkim", "hide_default_communities_from_topbar": "Fshih komunitetet e paracaktuara nga barra e sipërme", "media": "media", "hide_communities_tagged_as_nsfw": "Fsheh komunitetet e etiketuar si NSFW/18+", "tagged_as_adult": "etiketuar si \"i rritur\"", "tagged_as_gore": "etiketuar si \"gore\"", "tagged_as_anti": "etiketuar si \"anti\"", "tagged_as_vulgar": "etiketuar si \"vulgar\"", "drop_here_or": "Hidh këtu ose", "upload_button_warning": "Ngarkohet automatikisht është bllokuar nga politika CORS e shfletuesit tuaj, por është në dispozicion në aplikacionin Seedit për Android dhe aplikacionin desktop (Win/Mac/Linux).\n\nShkoni te faqja e lidhjeve për shkarkimin në GitHub?", "create_community_warning": "Krijimi i një komuniteti kërkon ekzekutimin e një nyjeje të plotë. Aplikacioni Seedit për desktop (Win/Mac/Linux) ekzekuton automatikisht një nyje të plotë.\n\nShkoni te faqja e lidhjeve për shkarkimin në GitHub?", "avatars": "Avataret", "filtering_by_nsfw": "Filtrimi sipas grupeve NSFW", "notifications": "Njoftimet", "new_replies_received": "përgjigje të reja të marra", "private_key_warning_title": "Çelësi juaj privat do të shfaqet", "private_key_warning_description": "Jeni për të parë të dhënat e llogarisë suaj, që përfshijnë çelësin tuaj privat. Nuk duhet ta ndani kurrë çelësin tuaj privat me askënd.", "go_back": "Kthehu", "loading_editor": "Duke ngarkuar redaktorin", "show_thumbnails_next_to_links": "Trego miniatura pranë lidhjeve", "dont_show_thumbnails_next_to_links": "Mos tregoni miniatura pranë lidhjeve", "show_thumbnails_based_on_community_media_preferences": "Trego miniaturat bazuar në preferencat e mediave të komunitetit", "media_previews": "paraqitjet e medias", "auto_expand_media_previews": "Zgjerimi automatik i parashikimeve të mediave", "dont_auto_expand_media_previews_on_comments_pages": "Mos zgjeroni automatikisht parapamjet e mediave në faqet e komenteve", "video_player": "Përdorues video", "autoplay_videos_on_comments_page": "Luaj automatikisht videot në faqen e komenteve", "mute_videos_by_default": "Çkyçni videot si parazgjedhje", "expand_media_previews_based_on_community_media_preferences": "Zgjeroni parapamjet e mediave bazuar në preferencat e mediave të asaj komuniteti", "show_all_nsfw": "trego të gjitha NSFW", "hide_all_nsfw": "fsheh të gjitha NSFW", "tags": "Etiketat", "moderator_of": "moderator i", "not_subscriber_nor_moderator": "Nuk jeni as abonues as moderator i ndonjë komuniteti.", "more_posts_last_year": "{{count}} postime në {{currentTimeFilterName}} e fundit: <1>shfaq më shumë postime nga viti i kaluar", "editor_fallback_warning": "Redaktori i avancuar dështoi të ngarkohet, përdoret redaktori bazë i tekstit si zëvendësim.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Ju po shikoni tashmë këtë komunitet" } ================================================ FILE: public/translations/sv/default.json ================================================ { "about": "Om", "comments": "kommentarer", "preferences": "Inställningar", "submit": "Skicka", "dark": "Mörk", "light": "Ljus", "my_communities": "Mina gemenskaper", "home": "Hem", "all": "Alla", "submitted": "Inskickad", "post_by": "Av", "post_to": "Till", "post_no_comments": "Kommentera", "post_comment": "Kommentar", "post_comments": "Kommentarer", "share": "Dela", "save": "Spara", "hide": "Dölj", "report": "Rapportera", "crosspost": "Korsposta", "time_1_minute_ago": "För 1 minut sedan", "time_x_minutes_ago": "För {{count}} minuter sedan", "time_1_hour_ago": "För 1 timme sedan", "time_x_hours_ago": "För {{count}} timmar sedan", "time_1_day_ago": "För 1 dag sedan", "time_x_days_ago": "För {{count}} dagar sedan", "time_1_month_ago": "För 1 månad sedan", "time_x_months_ago": "För {{count}} månader sedan", "time_1_year_ago": "För 1 år sedan", "time_x_years_ago": "För {{count}} år sedan", "spoiler": "Spoiler", "reply_reply": "Svar", "reply_sorted_by": "Sorterat efter", "all_comments": "Alla {{count}} kommentarer", "no_comments": "Inga kommentarer (ännu)", "reply_score_singular": "1 poäng", "reply_score_plural": "{{score}} poäng", "removed": "Borttagen", "one_comment": "1 kommentar", "submit_url_description": "bädda in media genom att posta dess direkta länk (slutar i .jpg, .gif, .mp4, etc)", "title": "titel", "text": "text", "required": "krävs", "optional": "valfritt", "community_address": "gemenskapsadress", "submit_choose": "välj var du vill posta", "submit_notice": "var vänlig och tänk på gemenskapens regler, seedit har inga globala administratörer.", "challenge_from": "Utmaning från p/{{subplebbit}}", "challenge_for_post": "för inlägg: \"{{publicationContent}}\"", "challenge_for_reply": "för svar till u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} av {{total}}", "cancel": "Avbryt", "previous": "Föregående", "next": "Nästa", "loading": "Laddar", "pending": "Avvaktar", "submit_subscriptions_notice": "Föreslagna samhällen", "submit_subscriptions": "dina prenumererade samhällen", "rules_for": "regler för", "no_communities_found": "Inga samhällen hittades på <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "För att ansluta till en gemenskap, använd 🔎 i övre högra hörnet", "options": "alternativ", "hide_options": "dölj alternativ", "failed": "misslyckades", "time_1_minute": "1 minut", "time_x_minutes": "{{count}} minuter", "time_1_hour": "1 timme", "time_x_hours": "{{count}} timmar", "time_1_day": "1 dag", "time_x_days": "{{count}} dagar", "time_1_month": "1 månad", "time_x_months": "{{count}} månader", "time_1_year": "1 år", "time_x_years": "{{count}} år", "submit_post": "Skicka in en ny post", "create_your_community": "Skapa din egen community", "moderators": "moderatorer", "about_moderation": "om modereringsteamet", "join": "Gå med", "leave": "lämna", "created_by": "skapat av {{creatorAddress}}", "community_for": "en gemenskap för {{date}}", "post_submitted_on": "detta inlägg skickades in den {{postDate}}", "users_online": "{{count}} användare här nu", "point": "punkt", "points": "poäng", "share_link": "dela länk", "upvoted": "har röstat uppåt", "announcement": "meddelande", "child": "{{childrenCount}} barn", "children": "{{childrenCount}} barn", "moderation": "moderation", "interface_language": "gränssnittsspråk", "theme": "tema", "account": "konto", "display_name": "visningsnamn", "crypto_address": "kryptoadress", "check": "kontrollera", "crypto_address_verification": "om kryptoadressen är löst p2p", "create": "skapa", "delete": "ta bort", "locked": "låst", "reason": "anledning", "sorted_by": "sorterat efter", "downvoted": "negativt röstat", "hidden": "dold", "saved": "sparad", "overview": "översikt", "user_since": "Användare sedan minst {{time}}", "post_karma": "inläggs-karma", "comment_karma": "kommentars-karma", "full_comments": "alla kommentarer", "context": "sammanhang", "block": "blockera", "post": "inlägg", "unhide": "visa", "unblock": "avblockera", "undo": "ångra", "post_hidden": "dolt inlägg", "link_copied": "länk kopierad", "block_community": "blockera gemenskapen", "unblock_community": "avblockera gemenskapen", "search_feed_post": "Sök efter ett inlägg i detta flöde", "from": "från", "via": "via", "sent": "skickat", "unread": "olästa", "comment_replies": "kommentarsvar", "post_replies": "inläggssvar", "messages": "meddelanden", "inbox": "inkorg", "mark_all_read": "markera alla som läst", "comment_reply": "svara på kommentar", "post_reply": "svara på inlägg", "show_parent": "visa den refererade posten", "no_posts": "inga inlägg", "media_url": "media-url", "post_locked_info": "Det här inlägget är {{state}}. Du kommer inte att kunna kommentera.", "members_count": "{{count}} medlemmar", "communities": "gemenskap", "edit": "redigera", "moderator": "Moderator", "description": "Beskrivning", "rules": "Regler", "save_options": "Spara alternativ", "logo": "Logotyp", "address": "Adress", "nothing_found": "Det verkar inte finnas något här", "stickied_comment": "Fast kommentar", "posts_last_synced": "Senast synkroniserade inlägg {{dateAgo}}", "community_settings": "Samhällsinställningar", "moderation_tools": "Modereringsverktyg", "submit_to": "Skicka till <1>{{link}}", "edit_subscriptions": "Redigera prenumerationer", "delete_confirm": "Är du säker på att du vill ta bort {{value}}?", "saving": "Sparar", "deleted": "Raderat", "online": "Online", "offline": "Offline", "subscriber": "Prenumerant", "join_communities_notice": "Klicka på knapparna <1>{{join}} eller <2>{{leave}} för att välja vilka gemenskaper som ska visas på startsidan.", "below_subscribed": "Nedan finns de gemenskaper du har prenumererat på.", "not_subscribed": "Du är inte prenumererad på någon gemenskap ännu.", "below_moderator_access": "Nedan finns de gemenskaper som du har moderatoråtkomst till.", "not_moderator": "Du är inte moderator i någon community.", "create_community": "Skapa gemenskap", "single_comment_notice": "Du tittar på en tråd med en enda kommentar", "single_comment_link": "Visa resten av kommentarerna", "owner_settings_notice": "Endast ägaren av gemenskapen kan redigera dess inställningar.", "preview": "förhandsvisning", "shown_in_sidebar": "visas i din kommunitets sidofält", "community_logo_info": "ställ in en gemenskapslogotyp med hjälp av dess direkta bildlänk (slutar på .jpg, .png)", "moderators_setting_info": "låt andra användare moderera och posta utan utmaningar", "vote": "rösta", "passing": "godkänd", "rejecting": "avvisar", "add_moderator": "lägg till en moderator", "add_rule": "lägg till en regel", "json_settings": "JSON-inställningar", "json_settings_info": "snabbt kopiera eller klistra in samhällets inställningar", "address_setting_info": "Ange en läsbar gemenskapsadress med hjälp av en krypto-domän", "enter_crypto_address": "Ange en giltig kryptoadress.", "check_for_updates": "<1>Kontrollera uppdateringar", "refresh_to_update": "Uppdatera sidan för att uppdatera", "latest_development_version": "Du är på den senaste utvecklingsversionen, commit {{commit}}. För att använda den stabila versionen, gå till {{link}}.", "latest_stable_version": "Du är på den senaste stabila versionen, seedit v{{version}}.", "new_development_version": "Ny utvecklingsversion tillgänglig, commit {{newCommit}}. Du använder commit {{oldCommit}}.", "new_stable_version": "Ny stabil version tillgänglig, seedit v{{newVersion}}. Du använder seedit v{{oldVersion}}.", "download_latest_desktop": "Ladda ner den senaste skrivbordsversionen här: {{link}}", "contribute_on_github": "Bidra på GitHub", "no_media_found": "Inget medium hittades", "no_image_found": "Ingen bild hittades", "warning_spam": "Varning: ingen utmaning vald, gemenskapen är sårbar för spamattacker.", "hide_help": "Dölj hjälp", "formatting_help": "Formateringshjälp", "you_see": "du ser", "you_type": "Du skriver", "italics": "kursiv", "bold": "fetstil", "quoted_text": "citerad text", "item": "föremål", "delete_community": "ta bort gemenskap", "delete_community_description": "Radera permanent den här gemenskapen. Dess innehåll kan fortfarande vara fröat av kamrater", "add": "lägg till", "owner": "ägare", "admin": "administratör", "settings_saved": "Inställningar sparade för p/{{subplebbitAddress}}", "continue_thread": "fortsätt den här tråden", "mod_edit_reason": "Mod redigeringsorsak", "double_confirm": "Är du verkligen säker? Denna åtgärd är oåterkallelig.", "crypto_address_not_yours": "Crypto-adress tillhör ett annat konto.", "crypto_address_yours": "Crypto-adressen tillhör denna konto.", "crypto_address_not_resolved": "Crypto-adressen är ännu inte löst.", "submit_to_string": "Skicka till {{string}}", "page_not_found": "Sidan kunde inte hittas", "not_found_description": "Sidan du begärde finns inte", "last_edited": "senast redigerad {{timestamp}}", "view_spoiler": "visa spoiler", "default_communities": "standardgemenskaper", "avatar": "avatar", "pending_edit": "avvaktande redigering", "failed_edit": "misslyckad redigering", "node_stats": "nodstatistik", "version": "version", "edit_reason": "redigeringsorsak", "view_parent_comment": "visa förälder kommentar", "chain_ticker": "Blockchain ticker", "token_address_whitelist": "Tokenadress (<1>endast vitlista)", "token_id": "Token ID", "paste_signature": "Klistra in signatur", "copy_message_etherscan": "<1>{{copy}} meddelande att signera på <2>etherscan", "copy": "kopiera", "copied": "kopierad", "missing_chain_ticker": "Saknad blockchain ticker", "missing_token_address": "Saknad tokenadress", "missing_token_id": "Saknad token-ID", "missing_signature": "Saknad signatur", "edited_timestamp": "Redigerat {{timestamp}}", "ban_user_for": "Blockera användaren i <1> dag(ar)", "crypto_wallets": "Crypto-plånböcker", "wallet_address": "Plånboksadress", "remove": "Ta bort", "add_wallet": "<1>Lägg till en krypto-plånbok", "show_settings": "Visa inställningar", "hide_settings": "Dölj inställningar", "undelete": "Ångra radering", "downloading_comments": "hämtar kommentarer", "you_blocked_community": "Du har blockerat den här gemenskapen", "show": "visa", "plebbit_options": "plebbit-alternativ", "general": "allmän", "more_posts_last_week": "{{count}} inlägg senaste {{currentTimeFilterName}}: <1>visa fler inlägg från förra veckan", "more_posts_last_month": "{{count}} inlägg i {{currentTimeFilterName}}: <1>visa fler inlägg från förra månaden", "profile_info": "Ditt konto u/{{shortAddress}} skapades. <1>Ställ in visningsnamn, <2>exportera säkerhetskopia, <3>läs mer.", "show_all_instead": "Visar inlägg sedan {{timeFilterName}}, <1>visa allt istället", "subplebbit_offline_info": "Gemenskapen kan vara offline och publicering kan misslyckas.", "posts_last_synced_info": "Inlägg synkroniserades senast {{time}}, gemenskapen kan vara offline och publiceringen kan misslyckas.", "import_account_backup": "<1>importera kontots säkerhetskopiering", "export_account_backup": "<1>exportera kontots säkerhetskopiering", "save_reset_changes": "<1>spara eller <2>återställ ändringar", "delete_this_account": "<1>ta bort det här kontot", "create_new_account": "<1>skapa ett nytt konto", "wallet_number": "plånbok #{{index}}", "view_more": "visa mer", "submit_community": "Skicka in ditt samhälle", "hide_avatars_from_replies": "Dölj avatarer från svar", "yes": "ja", "no": "nej", "are_you_sure": "Är du säker?", "a_short_title": "En kort titel för ditt samhälle", "challenges": "Utmaningar", "challenges_subtitle": "Välj en eller flera utmaningar för att förhindra spam", "add_a_challenge": "Lägg till en utmaning", "communities_you_moderate": "Gemenskaper du modererar", "blur_media": "Sudda ut media markerade som NSFW/18+", "nsfw_content": "NSFW-innehåll", "see_nsfw": "Klicka för att se NSFW", "see_nsfw_spoiler": "Klicka för att se NSFW-spoiler", "always_show_nsfw": "Vill du alltid visa NSFW-media?", "always_show_nsfw_notice": "Okej, vi har ändrat dina inställningar för att alltid visa NSFW-media.", "content_options": "Innehållsoptioner", "over_18": "Över 18?", "must_be_over_18": "Du måste vara 18+ för att se denna gemenskap", "must_be_over_18_explanation": "Du måste vara minst arton år gammal för att se detta innehåll. Är du över arton och villig att se vuxeninnehåll?", "no_thank_you": "Nej, tack", "continue": "Fortsätt", "download_latest_android": "Ladda ner den senaste Android-versionen?", "submitter": "Inlämnare", "block_user": "Blockera användare", "unblock_user": "Avblockera användare", "filtering_by_tag": "Filtrering efter tagg: \"{{tag}}\"", "you_are_moderator": "Du är moderator för denna gemenskap", "you_are_admin": "Du är administratör för denna gemenskap", "you_are_owner": "Du är ägaren av denna gemenskap", "looking_for_more_posts": "Letar efter fler inlägg", "loading_feed": "Laddar flöde", "downloading_posts": "Laddar ner inlägg", "post_is_pending": "Inlägget är i väntan", "post_has_failed": "Inlägget misslyckades", "choose_file": "Välj fil", "uploading": "Laddar upp", "invalid_url_alert": "Den angivna länken är inte en giltig URL.", "empty_comment_alert": "Kan inte posta tom kommentar.", "no_subscriptions_message": "<1>{{accountName}}, detta är ditt hem på Seedit<2>När du hittar ett samhälle du gillar, <3>gå med i <4>", "find_communities": "hitta gemenskaper på p/all", "community_deleted": "Community raderades framgångsrikt.", "go_to_a_community": "Gå till ett samhälle", "enter_community_address": "Ange en gemenskapsadress", "all_communities": "alla samhällen", "search_posts": "sök inlägg", "found_n_results_for": "hittade {{count}} inlägg för \"{{query}}\"", "clear_search": "rensa sökning", "no_matches_found_for": "inga träffar hittades för \"{{query}}\"", "searching": "söker", "hide_default_communities_from_topbar": "Dölj standardgemenskaper från topplistan", "media": "media", "hide_communities_tagged_as_nsfw": "Dölj gemenskaper märkta som NSFW/18+", "tagged_as_adult": "märkt som \"vuxen\"", "tagged_as_gore": "märkt som \"gore\"", "tagged_as_anti": "märkt som \"anti\"", "tagged_as_vulgar": "märkt som \"vulgar\"", "drop_here_or": "Dra hit eller", "upload_button_warning": "Auto-uppladdning blockeras av din webbläsares CORS-policy, men det är tillgängligt i Seedit Android-app och skrivbordsapp (Win/Mac/Linux).\n\nGå till sidan för nedladdningslänkar på GitHub?", "create_community_warning": "Att skapa ett community kräver att du kör en full node. Seedit desktop-appen (Win/Mac/Linux) kör automatiskt en full node.\n\nGå till sidan för nedladdningslänkar på GitHub?", "avatars": "Avatarer", "filtering_by_nsfw": "Filtrering efter NSFW-gemenskaper", "notifications": "Aviseringar", "new_replies_received": "nya svar mottagna", "private_key_warning_title": "Din privata nyckel kommer att visas", "private_key_warning_description": "Du är på väg att visa dina kontouppgifter, inklusive din privata nyckel. Du bör aldrig dela din privata nyckel med någon.", "go_back": "Gå tillbaka", "loading_editor": "Laddar redigerare", "show_thumbnails_next_to_links": "Visa miniatyrer bredvid länkar", "dont_show_thumbnails_next_to_links": "Visa inte miniatyrer bredvid länkar", "show_thumbnails_based_on_community_media_preferences": "Visa miniatyrer baserat på det communitys mediainställningar", "media_previews": "mediavisningar", "auto_expand_media_previews": "Auto-expandera medieförhandsvisningar", "dont_auto_expand_media_previews_on_comments_pages": "Expandera inte automatiskt mediavisningar på kommentarsidor", "video_player": "Videospelare", "autoplay_videos_on_comments_page": "Autospelning av videor på kommentarsidan", "mute_videos_by_default": "Stäng av ljudet i videor som standard", "expand_media_previews_based_on_community_media_preferences": "Expandera medieförhandsvisningar baserat på den gemenskapens mediapreferenser", "show_all_nsfw": "visa all NSFW", "hide_all_nsfw": "göm allt NSFW", "tags": "Taggar", "moderator_of": "moderator för", "not_subscriber_nor_moderator": "Du är varken prenumerant eller moderator i någon community.", "more_posts_last_year": "{{count}} inlägg senaste {{currentTimeFilterName}}: <1>visa fler inlägg från förra året", "editor_fallback_warning": "Avancerad redigerare kunde inte laddas, använder enkel textredigerare som fallback.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Du visar redan denna gemenskap" } ================================================ FILE: public/translations/te/default.json ================================================ { "about": "గురించి", "comments": "వ్యాఖ్యలు", "preferences": "ప్రాధాన్యతలు", "submit": "సబ్మిట్", "dark": "ముదురు", "light": "తెలుపు", "my_communities": "నా సముదాయాలు", "home": "హోమ్", "all": "అన్ని", "submitted": "సబ్మిట్ చేసినది", "post_by": "ద్వారా", "post_to": "కు", "post_no_comments": "కామెంట్", "post_comment": "కామెంట్", "post_comments": "కామెంట్లు", "share": "షేర్", "save": "సేవ్", "hide": "దాచు", "report": "నివేదించు", "crosspost": "క్రాస్‌పోస్ట్", "time_1_minute_ago": "1 నిమిషం క్రితం", "time_x_minutes_ago": "{{count}} నిమిషాల క్రితం", "time_1_hour_ago": "1 గంట క్రితం", "time_x_hours_ago": "{{count}} గంటల క్రితం", "time_1_day_ago": "1 రోజు క్రితం", "time_x_days_ago": "{{count}} రోజుల క్రితం", "time_1_month_ago": "1 నెల క్రితం", "time_x_months_ago": "{{count}} నెలల క్రితం", "time_1_year_ago": "1 సంవత్సరం క్రితం", "time_x_years_ago": "{{count}} సంవత్సరాల క్రితం", "spoiler": "స్పోయిలర్", "reply_reply": "స్పందన", "reply_sorted_by": "దీని ప్రకారం క్రమపడబడింది", "all_comments": "అన్ని {{count}} వ్యాఖ్యలు", "no_comments": "వ్యాఖ్యలు లేవు (ఇంకా)", "reply_score_singular": "1 పాయింట్", "reply_score_plural": "{{score}} పాయింట్లు", "removed": "తొలగించబడింది", "one_comment": "1 వ్యాఖ్య", "submit_url_description": ".jpg, .gif, .mp4 వంటివిలో ముగిసే ప్రత్యక్ష లింకును పోస్ట్ చేసి మీడియాను ఎంబెడ్ చేయండి", "title": "శీర్షిక", "text": "టెక్స్ట్", "required": "అవసరం", "optional": "ఐచ్ఛికం", "community_address": "సముదాయ చిరునామా", "submit_choose": "పోస్ట్ చేయాలనుండి ఎక్కడని ఎంచుకోండి", "submit_notice": "కమ్యూనిటీ యొక్క నియమాలను గమనించండి, seeditలో గ్లోబల్ అడ్మిన్స్ లేవు.", "challenge_from": "p/{{subplebbit}} నుండి చాలెంజ్", "challenge_for_post": "పోస్ట్ కోసం: \"{{publicationContent}}\"", "challenge_for_reply": "u/{{parentAddress}}కు జవాబుగా: \"{{publicationContent}}\"", "challenge_counter": "{{index}} లో {{total}}", "cancel": "రద్దు చేయి", "previous": "మునుపటి", "next": "తదుపరి", "loading": "లోడ్ అవుతోంది", "pending": "అనుమతి కోసం వేచి ఉంది", "submit_subscriptions_notice": "సూచింపబడిన సంఘటనలు", "submit_subscriptions": "మీరు చందా చేసుకున్న సముదాయాలు", "rules_for": "కోసం నియమాలు", "no_communities_found": "<1>https://github.com/bitsocialhq/listsలో సమూహాలు కనిపించలేదు", "connect_community_notice": "ఒక సముదాయానికి కనెక్ట్ అవ్వడానికి, పైన కుడి వైపున 🔎 ఉపయోగించండి", "options": "ఎంపికలు", "hide_options": "ఎంపికలను దాచు", "failed": "విఫలమైంది", "time_1_minute": "1 నిమిషం", "time_x_minutes": "{{count}} నిమిషాలు", "time_1_hour": "1 గంట", "time_x_hours": "{{count}} గంటలు", "time_1_day": "1 రోజు", "time_x_days": "{{count}} రోజులు", "time_1_month": "1 నెల", "time_x_months": "{{count}} నెలలు", "time_1_year": "1 సంవత్సరం", "time_x_years": "{{count}} సంవత్సరాలు", "submit_post": "కొత్త పోస్ట్ సబ్మిట్ చేయండి", "create_your_community": "మీ స్వంత సముదాయం సృజించండి", "moderators": "మాడరేటర్లు", "about_moderation": "మాడరేషన్ టీమ్ గురించి", "join": "చేరండి", "leave": "వదలు", "created_by": "ద్వారా రూపొందించబడినది {{creatorAddress}}", "community_for": "{{date}} కోసం ఒక కమ్యూనిటీ", "post_submitted_on": "ఈ పోస్టు {{postDate}} న సమర్పించబడింది", "users_online": "ప్రస్తుతం ఇక్కడ {{count}} వినియోగదారులు", "point": "పాయింట్", "points": "పాయింట్స్", "share_link": "లింక్ షేర్ చేయండి", "upvoted": "అప్వోట్ ఇచ్చాడు", "announcement": "ప్రకటన", "child": "{{childrenCount}} పిల్లలు", "children": "{{childrenCount}} పిల్లాడు/పిల్లి", "moderation": "మితిమీరుపరచుకోవడం", "interface_language": "ఇంటర్ఫేస్ భాష", "theme": "థీమ్", "account": "ఖాతా", "display_name": "ప్రదర్శన పేరు", "crypto_address": "క్రిప్టో చిరునామా", "check": "తనిఖీ", "crypto_address_verification": "క్రిప్టో చిరునామా p2p ద్వారా మొదల్గయింది", "create": "రూపొందండి", "delete": "తొలగించండి", "locked": "లాక్ చేయబడింది", "reason": "కారణం", "sorted_by": "వర్గీకరణ", "downvoted": "నకరాత్మకంగా వోటు వేయబడింది", "hidden": "దాచబడిన", "saved": "భద్రపరచబడినది", "overview": "గణాంశం", "user_since": "కనీసం {{time}} నుండి వాడుకరి", "post_karma": "పోస్ట్ కర్మా", "comment_karma": "వ్యాఖ్య కర్మా", "full_comments": "పూర్తి వ్యాఖ్యలు", "context": "సందర్భం", "block": "బ్లాక్", "post": "పోస్టు", "unhide": "చూపించు", "unblock": "అవివాదించు", "undo": "రద్దు చేయండి", "post_hidden": "పోస్టు దాచబడింది", "link_copied": "లింక్ కాపాడబడింది", "block_community": "కమ్యూనిటీని నిరోధించు", "unblock_community": "కమ్యూనిటీని అనబ్లాక్ చేయండి", "search_feed_post": "ఈ ఫీడ్లో ఒక పోస్టును వెతకండి", "from": "నుండి", "via": "ద్వారా", "sent": "పంపబడింది", "unread": "చదవని", "comment_replies": "వ్యాఖ్యల సమాధానాలు", "post_replies": "పోస్టు సమాధానాలు", "messages": "సందేశాలు", "inbox": "ఇన్బాక్స్", "mark_all_read": "అన్నిను చదవండి", "comment_reply": "కమెంట్ స్పందించండి", "post_reply": "పోస్టు స్పందించండి", "show_parent": "సూచించబడిన పోస్ట్ చూపించు", "no_posts": "పోస్టులు లేవు", "media_url": "మీడియా URL", "post_locked_info": "ఈ పోస్టు {{state}}. మీరు వ్యాఖ్య చేయలేరు.", "members_count": "{{count}} సభ్యులు", "communities": "సమూహం", "edit": "సమూహం", "moderator": "మాడరేటర్", "description": "వివరణ", "rules": "నియమాలు", "save_options": "ఎంచుకోండి సేవ్ చేయండి", "logo": "లోగో", "address": "చిరునామా", "nothing_found": "ఇక్కడ ఏమి ఉందని లేదని అనుకున్నట్లయిదేమీ లేదు", "stickied_comment": "పిన్ చేసిన వ్యాఖ్య", "posts_last_synced": "పోస్టులు చివరిలో సింక్ అయ్యాయి {{dateAgo}}", "community_settings": "కమ్యూనిటీ సెట్టింగులు", "moderation_tools": "మాడరేషన్ సాధనాలు", "submit_to": "<1>{{link}} కు పంపండి", "edit_subscriptions": "సబ్‌స్క్రిప్షన్స్ సవరించండి", "delete_confirm": "మీరు {{value}} ను తొలగించడానికి ఖచ్చితంగా ఉన్నారా?", "saving": "సేవ్‌చేస్తోంది", "deleted": "తొలగించబడినది", "online": "ఆన్‌లైన్", "offline": "ఆఫ్‌లైన్", "subscriber": "సబ్స్క్రైబర్", "join_communities_notice": "హోమ్ ఫీడ్‌పై ఏమి చూపించాలో ఎంచుకోవడానికి <1>{{join}} లేదా <2>{{leave}} బటన్‌లను క్లిక్ చేయండి.", "below_subscribed": "క్రిందికి మీరు చేసుకున్న కమ్యూనిటీలు ఉన్నాయి.", "not_subscribed": "మీరు ఇప్పటికే ఎవరి కమ్యూనిటీకి సబ్‌స్క్రైబ్ చేయలేదు.", "below_moderator_access": "క్రింద మీరు మోడరేటర్ యాక్సెస్ గా ఉన్న కమ్యూనిటీలు చూపబడ్డాయి.", "not_moderator": "మీరు ఏ కమ్యూనిటీలో మాడరేటర్ కాదు.", "create_community": "కమ్యూనిటీని సృష్టించండి", "single_comment_notice": "మీరు ఒక కమ్మెంట్ యొక్క థ్రెడ్ ను చూచున్నారు", "single_comment_link": "మిగతా వ్యాఖ్యలను చూడండి", "owner_settings_notice": "కేవలం కమ్యూనిటీ యజమాని మాత్రమే దాని సెట్టింగ్‌లను సవరించవచ్చు.", "preview": "ప్రీవ్యూ", "shown_in_sidebar": "మీ కమ్యూనిటీ సైడ్‌బార్‌లో చూపించబడుతుంది", "community_logo_info": "దాని నుండి (ఎండింగ్‌లో .jpg, .png) పూర్తించే చిత్ర లింక్‌ను ఉపయోగించి కమ్యూనిటీ లోగో సెట్ చేయండి", "moderators_setting_info": "ఇతర వాడకులను చేలెన్జీలేక మాడాలి మరియు పోస్ట్ చేయాలి", "vote": "వోటు వేయండి", "passing": "పాస్", "rejecting": "తిరస్కరిస్తోంది", "add_moderator": "ఒక నిర్వాహకును చేర్చండి", "add_rule": "ఒక నిబంధన చేయండి", "json_settings": "JSON సెట్టింగులు", "json_settings_info": "సముదాయ సెట్టింగులను త్వరగా కాపీ చేయండి లేదా పేస్ట్ చేయండి", "address_setting_info": "క్రిప్టో డొమైన్ ఉపయోగించి ఒక చదవగలిగే కమ్యూనిటీ చిరునామా సెట్ చేయండి", "enter_crypto_address": "దయచేసి చేసిన క్రిప్టో చిరునామాను నమోదు చేయండి.", "check_for_updates": "<1>తనిఖీ అప్డేట్లను", "refresh_to_update": "అప్డేట్ చేయడానికి పేజీను రిఫ్రెష్ చేయండి", "latest_development_version": "మీరు తొలగించే త్వరిత అప్డేటు, కమిట్ {{commit}} పరిపాలన ముగింది స్థిర అప్డేటు కోసం {{link}}.", "latest_stable_version": "మీరు తొలగించిన తొలగిన సంస్కరణం, seedit v{{version}} నందు.", "new_development_version": "కొత్త డెవలప్మెంట్ వెర్షన్ అందుబాటులో ఉంది, కమిట్ {{newCommit}}. మీరు కమిట్ {{oldCommit}} ను ఉపయోగిస్తున్నారు.", "new_stable_version": "కొత్త స్థిర వెర్షన్ అందుబాటులో ఉంది, seedit v{{newVersion}}. మీరు seedit v{{oldVersion}} ను ఉపయోగిస్తున్నారు.", "download_latest_desktop": "ఇక్కడ తాజా డెస్క్టాప్ వెర్షన్‌ను డౌన్‌లోడ్ చేయండి: {{link}}", "contribute_on_github": "GitHub లో అమరికలు", "no_media_found": "ఎటువంటి మీడియా కనబడలేదు", "no_image_found": "ఎటువంటి చిత్రం కనబడలేదు", "warning_spam": "హెచ్చరిక: చాలెంజ్ ఎంచుకోలేదు, కమ్యూనిటీ స్పామ్ దాడులకు గురిపెట్టబడింది.", "hide_help": "సహాయం దాచు", "formatting_help": "ఫార్మాటింగ్ సహాయం", "you_see": "మీరు చూస్తారు", "you_type": "మీరు టైప్ చేస్తున్నారు", "italics": "ఇటాలిక్స్", "bold": "బోల్డ్", "quoted_text": "ఉద్ధరించబడిన పఠ్యం", "item": "అంశం", "delete_community": "సముదాయాన్ని తొలగించండి", "delete_community_description": "ఈ సముదాయాన్ని స్థాయిగా తొలగించండి. అది సామాన్య పీర్ల ద్వారా ఇప్పుడు సీడ్ చేయబడవచ్చు", "add": "జోడించండి", "owner": "యజమాని", "admin": "అంచనా", "settings_saved": "p/{{subplebbitAddress}} కోసం సెట్టింగులు సేవ్ చేయబడ్డాయి", "continue_thread": "ఈ థ్రెడ్‌ను కొనసాగండి", "mod_edit_reason": "మాడ్ ఎడిట్ కారణం", "double_confirm": "మీరు నిజంగా ఖచ్చితముగా ఉన్నారా? ఈ చర్య రద్దు చేయలేదు.", "crypto_address_not_yours": "క్రిప్టో చిరునామా మరొక ఖాతాకు చేరుకుంది.", "crypto_address_yours": "క్రిప్టో చిరునామా ఈ ఖాతాకు చేరుకుంది.", "crypto_address_not_resolved": "క్రిప్టో చిరునామా ఇంకా పరిష్కరించబడలేదు.", "submit_to_string": "{{string}} కు సబ్‌మిట్ చేయండి", "page_not_found": "పేజీ కనబడలేదు", "not_found_description": "మీ అభ్యర్థించిన పేజీ లేదు", "last_edited": "చివరి సవరించబడినది {{timestamp}}", "view_spoiler": "స్పోయ్లర్ వీక్షించండి", "default_communities": "డిఫాల్ట్ సముదాయాలు", "avatar": "అవతార్", "pending_edit": "పెండింగ్ సవరించడం", "failed_edit": "విఫలమైన సవరించడం", "node_stats": "నోడ్ స్టాటిస్టిక్స్", "version": "వెర్షన్", "edit_reason": "సవరించడం యొక్క కారణం", "view_parent_comment": "మూల వ్యాఖ్య చూడండి", "chain_ticker": "బ్లాక్ చేన్ టిక్కర్", "token_address_whitelist": "టోకెన్ చిరునామా (<1>కేవలం వెలుపల్లి)", "token_id": "టోకెన్ ఐడి", "paste_signature": "సహిమస్తు పేస్ట్ చేయండి", "copy_message_etherscan": "<1>{{copy}} సందేశం సాఇన్ చేయడానికి <2>etherscan మీద", "copy": "నకలు", "copied": "నకలు చేయబడింది", "missing_chain_ticker": "తప్పిన బ్లాక్ చేన్ టిక్కర్", "missing_token_address": "తప్పని టోకెన్ చిరునామా", "missing_token_id": "తప్పని టోకెన్ ఐడి", "missing_signature": "తప్పని సంతకం", "edited_timestamp": "{{timestamp}} ముందు సవరించబడింది", "ban_user_for": "<1> రోజుల కోసం వాడుకరినీ బ్యాన్ చేయండి", "crypto_wallets": "క్రిప్టో వాలెట్‌లు", "wallet_address": "వాలెట్ చిరునామా", "remove": "తొలగించు", "add_wallet": "<1>జోడించు ఒక క్రిప్టో వాలెట్", "show_settings": "సెట్టింగులను చూపించు", "hide_settings": "సెట్టింగులను దాచు", "undelete": "తొలగించడం రద్దు చేయండి", "downloading_comments": "కమెంట్స్ డౌన్‌లోడ్ చేస్తున్నాయి", "you_blocked_community": "ఈ సముదాయాన్ని మీరు నిరోధించారు", "show": "చూపించు", "plebbit_options": "plebbit ఎంపికలు", "general": "సాధారణ", "more_posts_last_week": "{{count}} పోస్టులు గత {{currentTimeFilterName}}: <1>గత వారంలో మరిన్ని పోస్టులు చూపించండి", "more_posts_last_month": "{{count}} పోస్టులు {{currentTimeFilterName}} లో: <1>గత నెల నుండి మరిన్ని పోస్టులు చూపించు", "profile_info": "మీ ఖాతా u/{{shortAddress}} రూపొందించబడింది. <1>డిస్ప్లే పేరు సెట్ చేయండి, <2>బ్యాకప్ ఎగుమతి చేయండి, <3>మరింత తెలుసుకోండి.", "show_all_instead": "{{timeFilterName}} నుండి పోస్టులు చూపిస్తున్నాయి, <1>అదకు బదులు అన్నీ చూపించు", "subplebbit_offline_info": "సమాజం ఆఫ్‌లైన్‌లో ఉండవచ్చు మరియు ప్రచురణ విఫలమవచ్చు.", "posts_last_synced_info": "పోస్టులు చివరిసారి {{time}}కు సింక్ చేయబడ్డాయి, కమ్యూనిటీ ఆఫ్‌లైన్‌లో ఉండవచ్చు మరియు ప్రచురణ విఫలమవుతుంది.", "import_account_backup": "<1>కోరి ఖాతా బాకప్", "export_account_backup": "<1>ఎగుమతి ఖాతా బాకప్", "save_reset_changes": "<1>సేవ్ లేదా <2>రీసెట్ మార్పులు", "delete_this_account": "<1>తొలగించు ఈ ఖాతాను", "create_new_account": "<1>తరువాత కొత్త ఖాతా", "wallet_number": "వాలెట్ #{{index}}", "view_more": "మరింత చూడండి", "submit_community": "మీ కమ్యూనిటి పంపించండి", "hide_avatars_from_replies": "ప్రతిస్పందనల నుండి అవతార్లను దాచు", "yes": "అవును", "no": "కాదు", "are_you_sure": "మీకు నమ్మకమా?", "a_short_title": "మీ సముదాయం కోసం ఒక చిన్న శీర్షిక", "challenges": "సవాళ్లు", "challenges_subtitle": "స్పామ్ ను నివారించడానికి ఒకటి లేదా ఎక్కువ సవాళ్లను ఎంచుకోండి", "add_a_challenge": "ఒక సవాలు జోడించండి", "communities_you_moderate": "మీరు నిర్వహించే కమ్యూనిటీలు", "blur_media": "NSFW/18+ గా గుర్తించిన మీడియాను బ్లర్ చేయండి", "nsfw_content": "NSFW కంటెంట్", "see_nsfw": "NSFW చూడటానికి క్లిక్ చేయండి", "see_nsfw_spoiler": "NSFW స్పోయిలర్ చూడటానికి క్లిక్ చేయండి", "always_show_nsfw": "ఎల్లప్పుడూ NSFW మీడియాను చూపాలా?", "always_show_nsfw_notice": "సరే, మేము మీ ఇష్టాలను ఎల్లప్పుడూ NSFW మీడియా చూపించడానికి మార్చాము.", "content_options": "కంటెంట్ ఎంపికలు", "over_18": "18 సంవత్సరాలు పైగా?", "must_be_over_18": "ఈ సమాజాన్ని చూడటానికి మీరు 18+ అవ్వాలి", "must_be_over_18_explanation": "ఈ కంటెంట్‌ను చూడడానికి మీరు కనీసం పద్దెనిమిది సంవత్సరాలు వయస్సు ఉన్నట్లయితే కావాలి. మీరు పద్దెనిమిది సంవత్సరాలు పైగా ఉన్నారా మరియు వయస్సు ఆధారిత కంటెంట్ చూడడానికి సిద్ధంగా ఉన్నారా?", "no_thank_you": "లేదు, ధన్యవాదాలు", "continue": "కొనసాగించండి", "download_latest_android": "తాజా Android వెర్షన్ డౌన్‌లోడ్ చేసుకోండి?", "submitter": "సమర్పకుడు", "block_user": "వాడుకరిని బ్లాక్ చేయండి", "unblock_user": "వాడుకరిని అన్‌బ్లాక్ చేయండి", "filtering_by_tag": "ట్యాగ్ ద్వారా ఫిల్టర్ చేయడం: \"{{tag}}\"", "you_are_moderator": "మీరు ఈ కమ్యూనిటీలో మోడరేటర్ అయితే", "you_are_admin": "మీరు ఈ కమ్యూనిటీలో అడ్మిన్ అయితే", "you_are_owner": "మీరు ఈ కమ్యూనిటీ యొక్క యజమాని", "looking_for_more_posts": "మరింత పోస్ట్‌ల కోసం చూస్తున్నాను", "loading_feed": "లోడింగ్ ఫీడ్", "downloading_posts": "పోస్టులు డౌన్లోడ్ చేయబడుతున్నాయి", "post_is_pending": "పోస్ట్ పెండింగ్‌లో ఉంది", "post_has_failed": "పోస్ట్ విఫలమైంది", "choose_file": "ఫైల్ ఎంచుకోండి", "uploading": "అప్‌లోడ్ చేస్తున్నది", "invalid_url_alert": "నివేదిక ఇవ్వబడిన లింక్ చెల్లుబాటులో లేని URL.", "empty_comment_alert": "ఖాళీ వ్యాఖ్యను పోస్ట్ చేయలేరు.", "no_subscriptions_message": "<1>{{accountName}}, ఇది Seedit లోని మీ ఇంటి స్థలము<2>మీకు నచ్చే సముదాయాన్ని కనుగొంటే, <3>దానికి జత చేయండి <4>", "find_communities": "p/all పై కమ్యూనిటీస్ కనుగొనండి", "community_deleted": "కమ్యూనిటీ విజయవంతంగా డిలీట్ అయింది.", "go_to_a_community": "ఒక కమ్యూనిటీలోకి వెళ్లి", "enter_community_address": "ఒక కమ్యూనిటీ చిరునామా నమోదు చేయండి", "all_communities": "అన్ని కమ్యూనిటీలను", "search_posts": "పోస్టులను శోధించు", "found_n_results_for": "\"{{query}}\" కోసం {{count}} పోస్ట్‌లు కనుగొన్నాయి", "clear_search": "శోధనను క్లియర్ చేయండి", "no_matches_found_for": "\"{{query}}\" కోసం ఎలాంటి ఫలితాలు లభించలేదు", "searching": "శోధిస్తున్నాడు", "hide_default_communities_from_topbar": "టాప్‌బార్ నుండి డిఫాల్ట్ కమ్యూనిటీలను దాచండి", "media": "మీడియా", "hide_communities_tagged_as_nsfw": "NSFW/18+ గా ట్యాగ్ చేయబడిన కమ్యూనిటీలను దాచండి", "tagged_as_adult": "\"ఎడల్ట్\" గా ట్యాగ్ చేయబడింది", "tagged_as_gore": "\"గోర్\" గా ట్యాగ్ చేయబడింది", "tagged_as_anti": "\"ఆంటీ\"గా ట్యాగ్ చేయబడింది", "tagged_as_vulgar": "\"vulgar\" గా ట్యాగ్ చేయబడింది", "drop_here_or": "ఇక్కడ వదిలివేయండి లేదా", "upload_button_warning": "ఆటో-అప్లోడింగ్ మీ బ్రౌజర్ యొక్క CORS విధానం ద్వారా అడ్డుకోబడింది, కానీ ఇది Seedit Android యాప్ మరియు డెస్క్టాప్ యాప్ (Win/Mac/Linux) లో లభిస్తుంది.\n\nGitHub లో డౌన్లోడ్ లింకుల పేజీకి వెళ్లండి?", "create_community_warning": "ఒక కమ్యూనిటీని సృష్టించడానికి పూర్తి నోడు నడపడం అవసరం. Seedit డెస్క్‌టాప్ యాప్ (Win/Mac/Linux) ఆటోమేటిక్‌గా పూర్తి నోడును నడుపుతుంది.\n\nGitHub లో డౌన్లోడ్ లింకుల పేజీకి వెళ్లండి?", "avatars": "అవతార్లు", "filtering_by_nsfw": "NSFW సముదాయాల ద్వారా ఫిల్టరింగ్", "notifications": "సూచనల", "new_replies_received": "కొత్త సమాధానాలు వచ్చాయి", "private_key_warning_title": "మీ వ్యక్తిగత కీ ప్రదర్శించబడుతుంది", "private_key_warning_description": "మీరు మీ ఖాతా డేటాను చూడబోతున్నారు, దీనిలో మీ ప్రైవేట్ కీ కూడా ఉంటుంది. మీ ప్రైవేట్ కీని ఎవరితోనూ పంచుకోకూడదు.", "go_back": "తిరిగి వెళ్లండి", "loading_editor": "ఎడిటర్ లోడవుతుంది", "show_thumbnails_next_to_links": "లింకుల పక్కన థంబ్‌నెయిల్స్ చూపించు", "dont_show_thumbnails_next_to_links": "లింక్‌ల పక్కన థంబ్‌నెయిల్స్ చూపించవద్దు", "show_thumbnails_based_on_community_media_preferences": "ఆ కమ్యూనిటీ మాధ్యమాల ఇష్టాలకు అనుగుణంగా థంబ్నెయిల్స్ చూపించు", "media_previews": "మీడియా ప్రివ్యూలు", "auto_expand_media_previews": "మీడియా ప్రివ్యూలను ఆటోగా విస్తరించు", "dont_auto_expand_media_previews_on_comments_pages": "వ్యాఖ్య పేజీలపై మీడియా ప్రివ్యూలను ఆటో ఎక్స్‌పాండ్ చేయవద్దు", "video_player": "వీడియో ప్లేయర్", "autoplay_videos_on_comments_page": "వ్యాఖ్యల పేజీలో వీడియోలను ఆటోప్లే చేయండి", "mute_videos_by_default": "డిఫాల్ట్‌గా వీడియోలను మ్యూట్ చేయండి", "expand_media_previews_based_on_community_media_preferences": "ఆ కమ్యూనిటీ మీడియా అభిరుచుల ఆధారంగా మీడియా ప్రివ్యూలను విస్తరించండి", "show_all_nsfw": "అన్నీ NSFW చూపించు", "hide_all_nsfw": "అన్ని NSFW దాచు", "tags": "ట్యాగ్లు", "moderator_of": "మోడరేటర్", "not_subscriber_nor_moderator": "మీరు ఏ కమ్యూనిటీలో సభ్యుడూ, మోడరేటర్ కూడా కాదు.", "more_posts_last_year": "{{count}} పోస్ట్లు గత {{currentTimeFilterName}}: <1>గత సంవత్సరం నుండి మరిన్ని పోస్ట్లు చూపించు", "editor_fallback_warning": "అడ్వాన్స్ ఎడిటర్ లోడ్ అవ్వడం విఫలమైంది, బేసిక్ టెక్స్ట్ ఎడిటర్ fallback గా ఉపయోగిస్తున్నారు.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "మీరు ఇప్పటికే ఈ కమ్యూనిటీని చూస్తున్నారు" } ================================================ FILE: public/translations/th/default.json ================================================ { "about": "เกี่ยวกับ", "comments": "ความคิดเห็น", "preferences": "การตั้งค่า", "submit": "ส่ง", "dark": "มืด", "light": "สีขาว", "my_communities": "ชุมชนของฉัน", "home": "หน้าแรก", "all": "ทั้งหมด", "submitted": "ส่งแล้ว", "post_by": "โดย", "post_to": "ถึง", "post_no_comments": "แสดงความคิดเห็น", "post_comment": "ความคิดเห็น", "post_comments": "ความคิดเห็น", "share": "แชร์", "save": "บันทึก", "hide": "ซ่อน", "report": "รายงาน", "crosspost": "โพสต์ร่วม", "time_1_minute_ago": "1 นาทีที่ผ่านมา", "time_x_minutes_ago": "{{count}} นาทีที่ผ่านมา", "time_1_hour_ago": "1 ชั่วโมงที่ผ่านมา", "time_x_hours_ago": "{{count}} ชั่วโมงที่ผ่านมา", "time_1_day_ago": "1 วันที่ผ่านมา", "time_x_days_ago": "{{count}} วันที่ผ่านมา", "time_1_month_ago": "1 เดือนที่ผ่านมา", "time_x_months_ago": "{{count}} เดือนที่ผ่านมา", "time_1_year_ago": "1 ปีที่ผ่านมา", "time_x_years_ago": "{{count}} ปีที่ผ่านมา", "spoiler": "สปอยล์", "reply_reply": "ตอบ", "reply_sorted_by": "เรียงลำดับตาม", "all_comments": "ความคิดเห็น {{count}} รายการทั้งหมด", "no_comments": "ไม่มีความคิดเห็น (ยัง)", "reply_score_singular": "1 แต้ม", "reply_score_plural": "{{score}} คะแนน", "removed": "ถูกนำออก", "one_comment": "1 ความคิดเห็น", "submit_url_description": "ฝังสื่อโดยการโพสต์ลิงก์ตรง (ลงท้ายด้วย .jpg, .gif, .mp4 ฯลฯ)", "title": "หัวข้อ", "text": "ข้อความ", "required": "จำเป็น", "optional": "ไม่จำเป็น", "community_address": "ที่อยู่ของชุมชน", "submit_choose": "เลือกที่จะโพสต์", "submit_notice": "โปรดระมัดระวังกฎของชุมชน seedit ไม่มีแอดมินระดับโลก", "challenge_from": "ความท้าทายจาก p/{{subplebbit}}", "challenge_for_post": "สำหรับโพสต์: \"{{publicationContent}}\"", "challenge_for_reply": "สำหรับการตอบกลับ u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} จาก {{total}}", "cancel": "ยกเลิก", "previous": "ก่อนหน้า", "next": "ถัดไป", "loading": "กำลังโหลด", "pending": "รอดำเนินการ", "submit_subscriptions_notice": "ชุมชนแนะนำ", "submit_subscriptions": "ชุมชนที่คุณติดตาม", "rules_for": "กฎสำหรับ", "no_communities_found": "ไม่พบชุมชนใด ๆ บน <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "เพื่อเชื่อมต่อกับชุมชน ใช้ 🔎 ที่มุมขวาบน", "options": "ตัวเลือก", "hide_options": "ซ่อนตัวเลือก", "failed": "ล้มเหลว", "time_1_minute": "1 นาที", "time_x_minutes": "{{count}} นาที", "time_1_hour": "1 ชั่วโมง", "time_x_hours": "{{count}} ชั่วโมง", "time_1_day": "1 วัน", "time_x_days": "{{count}} วัน", "time_1_month": "1 เดือน", "time_x_months": "{{count}} เดือน", "time_1_year": "1 ปี", "time_x_years": "{{count}} ปี", "submit_post": "ส่งโพสต์ใหม่", "create_your_community": "สร้างชุมชนของคุณเอง", "moderators": "ผู้ดูแลระบบ", "about_moderation": "เกี่ยวกับทีมการตรวจสอบ", "join": "เข้าร่วม", "leave": "ออก", "created_by": "สร้างโดย {{creatorAddress}}", "community_for": "ชุมชนสำหรับ {{date}}", "post_submitted_on": "โพสต์นี้ถูกส่งในวันที่ {{postDate}}", "users_online": "{{count}} ผู้ใช้ที่นี่ตอนนี้", "point": "จุด", "points": "คะแนน", "share_link": "แชร์ลิงก์", "upvoted": "เสนอชื่นชม", "announcement": "ประกาศ", "child": "{{childrenCount}} เด็ก", "children": "{{childrenCount}} เด็ก", "moderation": "การควบคุม", "interface_language": "ภาษาอินเตอร์เฟซ", "theme": "ธีม", "account": "บัญชี", "display_name": "ชื่อที่แสดง", "crypto_address": "ที่อยู่คริปโต", "check": "ตรวจสอบ", "crypto_address_verification": "หากที่อยู่คริปโตได้รับการแก้ไข p2p", "create": "สร้าง", "delete": "ลบ", "locked": "ล็อก", "reason": "เหตุผล", "sorted_by": "เรียงตาม", "downvoted": "โหวตลบ", "hidden": "ซ่อน", "saved": "บันทึกแล้ว", "overview": "ภาพรวม", "user_since": "ผู้ใช้ตั้งแต่ {{time}} อย่างน้อย", "post_karma": "คาร์ม่าโพสต์", "comment_karma": "คาร์ม่าความเห็น", "full_comments": "ความเห็นทั้งหมด", "context": "บริบท", "block": "บล็อก", "post": "โพสต์", "unhide": "แสดง", "unblock": "ยกเลิกการบล็อก", "undo": "เลิกทำ", "post_hidden": "โพสต์ที่ซ่อนอยู่", "link_copied": "คัดลอกลิงก์แล้ว", "block_community": "บล็อกชุมชน", "unblock_community": "ยกเลิกการบล็อกชุมชน", "search_feed_post": "ค้นหาโพสต์ในฟีดนี้", "from": "จาก", "via": "ผ่านทาง", "sent": "ส่งแล้ว", "unread": "ยังไม่ได้อ่าน", "comment_replies": "การตอบกลับความคิดเห็น", "post_replies": "การตอบกลับโพสต์", "messages": "ข้อความ", "inbox": "กล่องจดหมายเข้า", "mark_all_read": "ทำเครื่องหมายทั้งหมดว่าอ่านแล้ว", "comment_reply": "ตอบกลับความคิดเห็น", "post_reply": "ตอบกลับโพสต์", "show_parent": "แสดงโพสต์ที่ถูกอ้างอิง", "no_posts": "ไม่มีโพสต์", "media_url": "URL สื่อ", "post_locked_info": "โพสต์นี้ {{state}} คุณจะไม่สามารถแสดงความคิดเห็นได้", "members_count": "{{count}} สมาชิก", "communities": "ชุมชน", "edit": "แก้ไข", "moderator": "ผู้ดูแล", "description": "คำอธิบาย", "rules": "กฎ", "save_options": "บันทึกตัวเลือก", "logo": "โลโก้", "address": "ที่อยู่", "nothing_found": "ดูเหมือนว่าจะไม่มีอะไรที่นี่", "stickied_comment": "ความคิดเห็นที่ตรึง", "posts_last_synced": "โพสต์ล่าสุดที่ซิงค์ {{dateAgo}}", "community_settings": "การตั้งค่าชุมชน", "moderation_tools": "เครื่องมือการตรวจสอบ", "submit_to": "ส่งไปที่ <1>{{link}}", "edit_subscriptions": "แก้ไขการสมัครสมาชิก", "delete_confirm": "คุณแน่ใจหรือไม่ว่าต้องการลบ {{value}}?", "saving": "กำลังบันทึก", "deleted": "ลบแล้ว", "online": "ออนไลน์", "offline": "ออฟไลน์", "subscriber": "ผู้ติดตาม", "join_communities_notice": "คลิกที่ปุ่ม <1>{{join}} หรือ <2>{{leave}} เพื่อเลือกชุมชนที่จะปรากฏในหน้าหลัก", "below_subscribed": "ด้านล่างนี้คือชุมชนที่คุณสมัครสมาชิก", "not_subscribed": "คุณยังไม่ได้สมัครสมาชิกในชุมชนใดๆ", "below_moderator_access": "ด้านล่างนี้คือชุมชนที่คุณสามารถเข้าถึงในฐานะผู้ดูแลได้", "not_moderator": "คุณไม่ได้เป็นผู้ดูแลในชุมชนใด ๆ", "create_community": "สร้างชุมชน", "single_comment_notice": "คุณกำลังดูกระทู้ของความคิดเห็นเพียงอย่างเดียว", "single_comment_link": "ดูความคิดเห็นที่เหลือ", "owner_settings_notice": "เจ้าของชุมชนเท่านั้นที่สามารถแก้ไขการตั้งค่าของมันได้", "preview": "ตัวอย่าง", "shown_in_sidebar": "แสดงในแถบข้างของชุมชนของคุณ", "community_logo_info": "ตั้งค่าโลโก้ของชุมชนโดยใช้ลิงก์รูปภาพโดยตรง (ลงท้ายด้วย .jpg, .png)", "moderators_setting_info": "อนุญาตให้ผู้ใช้คนอื่นๆ ตรวจสอบและโพสต์โดยไม่มีความท้าทาย", "vote": "ลงคะแนนเสียง", "passing": "ผ่าน", "rejecting": "ปฏิเสธ", "add_moderator": "เพิ่มผู้ดูแล", "add_rule": "เพิ่มกฎ", "json_settings": "การตั้งค่า JSON", "json_settings_info": "คัดลอกหรือวางการตั้งค่าของชุมชนอย่างรวดเร็ว", "address_setting_info": "ตั้งค่าที่อยู่ชุมชนที่อ่านได้โดยใช้โดเมนคริปโต", "enter_crypto_address": "โปรดป้อนที่อยู่คริปโตที่ถูกต้อง", "check_for_updates": "<1>ตรวจสอบ อัปเดต", "refresh_to_update": "รีเฟรชหน้าเพื่ออัปเดต", "latest_development_version": "คุณกำลังใช้รุ่นการพัฒนาล่าสุด, คอมมิต {{commit}} ในการใช้รุ่นเสถียร ไปที่ {{link}}.", "latest_stable_version": "คุณกำลังใช้รุ่นเสถียรล่าสุด, seedit v{{version}}.", "new_development_version": "มีเวอร์ชันการพัฒนาใหม่ที่ใช้ได้, คอมมิต {{newCommit}} คุณกำลังใช้คอมมิต {{oldCommit}}", "new_stable_version": "มีเวอร์ชันที่มีความเสถียรใหม่ที่ใช้ได้, seedit v{{newVersion}} คุณกำลังใช้ seedit v{{oldVersion}}", "download_latest_desktop": "ดาวน์โหลดเวอร์ชันเดสก์ท็อปล่าสุดที่นี่: {{link}}", "contribute_on_github": "มีส่วนร่วมบน GitHub", "no_media_found": "ไม่พบสื่อ", "no_image_found": "ไม่พบรูปภาพ", "warning_spam": "คำเตือน: ไม่มีความท้าทายที่ถูกเลือก ชุมชนอยู่ในภาวะที่อ่อนแอต่อการโจมตีสแปม", "hide_help": "ซ่อนความช่วยเหลือ", "formatting_help": "ความช่วยเหลือในการจัดรูปแบบ", "you_see": "คุณเห็น", "you_type": "คุณพิมพ์", "italics": "ตัวเอียง", "bold": "ตัวหนา", "quoted_text": "ข้อความที่อ้างอิง", "item": "สิ่งของ", "delete_community": "ลบชุมชน", "delete_community_description": "ลบชุมชนนี้อย่างถาวร การเผยแพร่ของเนื้อหาอาจยังถูกซีดโดยพีร์", "add": "เพิ่ม", "owner": "เจ้าของ", "admin": "ผู้ดูแลระบบ", "settings_saved": "บันทึกการตั้งค่าสำหรับ p/{{subplebbitAddress}}", "continue_thread": "ดำเนินการเรื่องนี้ต่อ", "mod_edit_reason": "เหตุผลในการแก้ไขของม็อด", "double_confirm": "คุณแน่ใจหรือไม่? การดำเนินการนี้ไม่สามารถย้อนกลับได้", "crypto_address_not_yours": "ที่อยู่คริปโตเป็นของบัญชีอื่น", "crypto_address_yours": "ที่อยู่คริปโตเป็นของบัญชีนี้", "crypto_address_not_resolved": "ที่อยู่คริปโตยังไม่ได้รับการแก้ไข", "submit_to_string": "ส่งไปยัง {{string}}", "page_not_found": "ไม่พบหน้า", "not_found_description": "หน้าที่คุณขอไม่มีอยู่จริง", "last_edited": "แก้ไขล่าสุด {{timestamp}}", "view_spoiler": "ดูสปอยล์เลอร์", "default_communities": "ชุมชนเริ่มต้น", "avatar": "อวตาร์", "pending_edit": "การแก้ไขที่รอดำเนินการ", "failed_edit": "การแก้ไขล้มเหลว", "node_stats": "สถิติของโหนด", "version": "เวอร์ชัน", "edit_reason": "เหตุผลในการแก้ไข", "view_parent_comment": "ดูความคิดเห็นของโพสต์หลัก", "chain_ticker": "เครือข่ายตัวชี้วัด", "token_address_whitelist": "ที่อยู่โทเค็น (<1>รายชื่อที่ได้รับอนุญาตเท่านั้น)", "token_id": "รหัสโทเค็น", "paste_signature": "วางลายเซ็น", "copy_message_etherscan": "<1>{{copy}} ข้อความเพื่อเซ็นบน <2>etherscan", "copy": "คัดลอก", "copied": "คัดลอกแล้ว", "missing_chain_ticker": "เครื่องหมายเหตุที่หายไป", "missing_token_address": "เหตุที่หายไปของที่อยู่โทเค็น", "missing_token_id": "เหตุที่หายไปของรหัสของโทเค็น", "missing_signature": "เหตุที่หายไปของลายเซ็น", "edited_timestamp": "แก้ไขเมื่อ {{timestamp}}", "ban_user_for": "แบนผู้ใช้ <1> วัน", "crypto_wallets": "กระเป๋าเงินดิจิทัล", "wallet_address": "ที่อยู่กระเป๋าเงิน", "remove": "ลบ", "add_wallet": "<1>เพิ่ม กระเป๋าเงินดิจิทัล", "show_settings": "แสดงการตั้งค่า", "hide_settings": "ซ่อนการตั้งค่า", "undelete": "ยกเลิกการลบ", "downloading_comments": "กำลังดาวน์โหลดความคิดเห็น", "you_blocked_community": "คุณบล็อกชุมชนนี้แล้ว", "show": "แสดง", "plebbit_options": "ตัวเลือก plebbit", "general": "ทั่วไป", "more_posts_last_week": "{{count}} โพสต์เมื่อสัปดาห์ที่แล้ว {{currentTimeFilterName}}: <1>แสดงโพสต์เพิ่มเติมจากสัปดาห์ที่แล้ว", "more_posts_last_month": "{{count}} โพสต์ใน {{currentTimeFilterName}}: <1>แสดงโพสต์เพิ่มเติมจากเดือนที่แล้ว", "profile_info": "บัญชีของคุณ u/{{shortAddress}} ถูกสร้างขึ้นแล้ว <1>ตั้งค่าชื่อแสดง, <2>ส่งออกสำรองข้อมูล, <3>เรียนรู้เพิ่มเติม.", "show_all_instead": "แสดงโพสต์ตั้งแต่ {{timeFilterName}} <1>แสดงทั้งหมดแทน", "subplebbit_offline_info": "ชุมชนอาจอยู่ในโหมดออฟไลน์ และการเผยแพร่อาจล้มเหลว", "posts_last_synced_info": "โพสต์ได้รับการซิงค์ล่าสุดเมื่อ {{time}} ชุมชนอาจออนไลน์และการเผยแพร่อาจล้มเหลว", "import_account_backup": "<1>นำเข้า สำรองข้อมูลบัญชี", "export_account_backup": "<1>ส่งออก สำรองข้อมูลบัญชี", "save_reset_changes": "<1>บันทึก หรือ <2>รีเซ็ต การเปลี่ยนแปลง", "delete_this_account": "<1>ลบ บัญชีนี้", "create_new_account": "<1>สร้าง บัญชีใหม่", "wallet_number": "กระเป๋าเงิน #{{index}}", "view_more": "ดูเพิ่มเติม", "submit_community": "ส่งชุมชนของคุณ", "hide_avatars_from_replies": "ซ่อนอวาตาร์จากคำตอบ", "yes": "ใช่", "no": "ไม่ใช่", "are_you_sure": "คุณมั่นใจไหม?", "a_short_title": "ชื่อเรื่องสั้นๆ สำหรับชุมชนของคุณ", "challenges": "ความท้าทาย", "challenges_subtitle": "เลือกความท้าทายหนึ่งหรือหลายรายการเพื่อป้องกันสแปม", "add_a_challenge": "เพิ่มความท้าทาย", "communities_you_moderate": "ชุมชนที่คุณเป็นผู้ดูแล", "blur_media": "เบลอเนื้อหาที่ถูกทำเครื่องหมายว่า NSFW/18+", "nsfw_content": "เนื้อหา NSFW", "see_nsfw": "คลิกเพื่อดู NSFW", "see_nsfw_spoiler": "คลิกเพื่อดู NSFW สปอยเลอร์", "always_show_nsfw": "คุณต้องการแสดงสื่อ NSFW ตลอดเวลาหรือไม่?", "always_show_nsfw_notice": "ตกลง, เราเปลี่ยนการตั้งค่าของคุณเพื่อแสดงสื่อ NSFW ตลอดเวลา", "content_options": "ตัวเลือกเนื้อหา", "over_18": "เกิน 18?", "must_be_over_18": "คุณต้องอายุ 18 ปีขึ้นไปเพื่อดูชุมชนนี้", "must_be_over_18_explanation": "คุณต้องมีอายุอย่างน้อย 18 ปีเพื่อดูเนื้อหานี้ คุณอายุเกิน 18 ปีและพร้อมที่จะดูเนื้อหาผู้ใหญ่หรือไม่?", "no_thank_you": "ไม่ ขอบคุณ", "continue": "ดำเนินการต่อ", "download_latest_android": "ดาวน์โหลดเวอร์ชันล่าสุดของ Android?", "submitter": "ผู้ส่ง", "block_user": "บล็อกผู้ใช้", "unblock_user": "ยกเลิกบล็อกผู้ใช้", "filtering_by_tag": "กรองตามแท็ก: \"{{tag}}\"", "you_are_moderator": "คุณเป็นผู้ดูแลของชุมชนนี้", "you_are_admin": "คุณเป็นผู้ดูแลระบบของชุมชนนี้", "you_are_owner": "คุณเป็นเจ้าของชุมชนนี้", "looking_for_more_posts": "กำลังมองหาบทความเพิ่มเติม", "loading_feed": "กำลังโหลดฟีด", "downloading_posts": "กำลังดาวน์โหลดโพสต์", "post_is_pending": "โพสต์รอดำเนินการ", "post_has_failed": "โพสต์ล้มเหลว", "choose_file": "เลือกไฟล์", "uploading": "กำลังอัปโหลด", "invalid_url_alert": "ลิงก์ที่ให้ไม่ใช่ URL ที่ถูกต้อง", "empty_comment_alert": "ไม่สามารถโพสต์ความคิดเห็นว่างเปล่าได้", "no_subscriptions_message": "<1>{{accountName}}, นี่คือบ้านของคุณบน Seedit<2>เมื่อคุณพบชุมชนที่คุณชอบ, <3>เข้าร่วมกับ <4>", "find_communities": "ค้นหาชุมชนบน p/all", "community_deleted": "ลบบ้านชุมชนเรียบร้อยแล้ว.", "go_to_a_community": "ไปที่ชุมชน", "enter_community_address": "ป้อนที่อยู่ของชุมชน", "all_communities": "ชุมชนทั้งหมด", "search_posts": "ค้นหาการโพสต์", "found_n_results_for": "พบ {{count}} โพสต์สำหรับ \"{{query}}\"", "clear_search": "ล้างการค้นหา", "no_matches_found_for": "ไม่พบการจับคู่สำหรับ \"{{query}}\"", "searching": "กำลังค้นหา", "hide_default_communities_from_topbar": "ซ่อนชุมชนเริ่มต้นจากแถบด้านบน", "media": "สื่อ", "hide_communities_tagged_as_nsfw": "ซ่อนชุมชนที่ถูกแท็กเป็น NSFW/18+", "tagged_as_adult": "ถูกแท็กเป็น \"ผู้ใหญ่\"", "tagged_as_gore": "แท็กged เป็น \"gore\"", "tagged_as_anti": "แท็กเป็น \"anti\"", "tagged_as_vulgar": "แท็กเป็น \"vulgar\"", "drop_here_or": "วางที่นี่หรือ", "upload_button_warning": "การอัปโหลดอัตโนมัติถูกบล็อกโดยนโยบาย CORS ของเบราว์เซอร์ของคุณ แต่สามารถใช้ได้ในแอป Seedit สำหรับ Android และแอปเดสก์ท็อป (Win/Mac/Linux)\n\nไปที่หน้าลิงก์ดาวน์โหลดบน GitHub?", "create_community_warning": "การสร้างชุมชนต้องการการรันโหนดเต็ม Seedit desktop app (Win/Mac/Linux) รันโหนดเต็มโดยอัตโนมัติ\n\nไปที่หน้าลิงก์ดาวน์โหลดบน GitHub?", "avatars": "อวาตาร์", "filtering_by_nsfw": "การกรองโดยชุมชน NSFW", "notifications": "การแจ้งเตือน", "new_replies_received": "ได้รับคำตอบใหม่", "private_key_warning_title": "คีย์ส่วนตัวของคุณจะแสดง", "private_key_warning_description": "คุณกำลังจะดูข้อมูลบัญชีของคุณ ซึ่งรวมถึงกุญแจส่วนตัวของคุณ คุณไม่ควรแบ่งปันกุญแจส่วนตัวของคุณกับใคร", "go_back": "ย้อนกลับ", "loading_editor": "กำลังโหลดตัวแก้ไข", "show_thumbnails_next_to_links": "แสดงภาพขนาดย่อถัดจากลิงก์", "dont_show_thumbnails_next_to_links": "ไม่แสดงภาพขนาดย่อถัดจากลิงก์", "show_thumbnails_based_on_community_media_preferences": "แสดงภาพขนาดย่อโดยอิงตามความชอบสื่อของชุมชนนั้น", "media_previews": "ตัวอย่างสื่อ", "auto_expand_media_previews": "ขยายตัวอย่างสื่อโดยอัตโนมัติ", "dont_auto_expand_media_previews_on_comments_pages": "อย่าแสดงตัวอย่างมีเดียโดยอัตโนมัติบนหน้าคอมเมนต์", "video_player": "เครื่องเล่นวิดีโอ", "autoplay_videos_on_comments_page": "เล่นวิดีโออัตโนมัติบนหน้าคอมเมนต์", "mute_videos_by_default": "ปิดเสียงวิดีโอโดยค่าเริ่มต้น", "expand_media_previews_based_on_community_media_preferences": "ขยายตัวอย่างสื่อโดยอิงตามความชอบสื่อของชุมชนนั้น", "show_all_nsfw": "แสดง NSFW ทั้งหมด", "hide_all_nsfw": "ซ่อนทั้งหมด NSFW", "tags": "แท็ก", "moderator_of": "ผู้ดูแล", "not_subscriber_nor_moderator": "คุณไม่ใช่ผู้สมัครสมาชิกและไม่ใช่ผู้ดูแลชุมชนใดๆ", "more_posts_last_year": "{{count}} โพสต์ใน{{currentTimeFilterName}} ล่าสุด: <1>แสดงโพสต์เพิ่มเติมจากปีที่แล้ว", "editor_fallback_warning": "ตัวแก้ไขขั้นสูงโหลดไม่สำเร็จ ใช้ตัวแก้ไขข้อความพื้นฐานเป็นทางเลือกสำรอง", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "คุณกำลังดูชุมชนนี้อยู่แล้ว" } ================================================ FILE: public/translations/tr/default.json ================================================ { "about": "Hakkında", "comments": "yorumlar", "preferences": "Tercihler", "submit": "Gönder", "dark": "Karanlık", "light": "Açık", "my_communities": "Topluluklarım", "home": "Ana Sayfa", "all": "Tümü", "submitted": "Gönderildi", "post_by": "Tarafından", "post_to": "Kime", "post_no_comments": "Yorum Yap", "post_comment": "Yorum", "post_comments": "Yorumlar", "share": "Paylaş", "save": "Kaydet", "hide": "Gizle", "report": "Rapor Et", "crosspost": "Çapraz Gönderi", "time_1_minute_ago": "1 dakika önce", "time_x_minutes_ago": "{{count}} dakika önce", "time_1_hour_ago": "1 saat önce", "time_x_hours_ago": "{{count}} saat önce", "time_1_day_ago": "1 gün önce", "time_x_days_ago": "{{count}} gün önce", "time_1_month_ago": "1 ay önce", "time_x_months_ago": "{{count}} ay önce", "time_1_year_ago": "1 yıl önce", "time_x_years_ago": "{{count}} yıl önce", "spoiler": "Spoiler", "reply_reply": "Cevap", "reply_sorted_by": "Şuna göre sırala", "all_comments": "Tüm {{count}} yorumlar", "no_comments": "Yorum yok (henüz)", "reply_score_singular": "1 puan", "reply_score_plural": "{{score}} puan", "removed": "Kaldırıldı", "one_comment": "1 yorum", "submit_url_description": "medya ekleyin doğrudan bağlantısını göndererek (.jpg, .gif, .mp4 vb. ile biten)", "title": "başlık", "text": "metin", "required": "gerekli", "optional": "isteğe bağlı", "community_address": "topluluk adresi", "submit_choose": "nerede gönderileceğini seçin", "submit_notice": "topluluğun kurallarına dikkat edin, seedit in küresel yöneticileri yoktur.", "challenge_from": "p/{{subplebbit}}'ten meydan okuma", "challenge_for_post": "gönderi için: \"{{publicationContent}}\"", "challenge_for_reply": "u/{{parentAddress}} için yanıt: \"{{publicationContent}}\"", "challenge_counter": "{{index}} / {{total}}", "cancel": "İptal", "previous": "Önceki", "next": "Sonraki", "loading": "Yükleniyor", "pending": "Beklemede", "submit_subscriptions_notice": "Önerilen Topluluklar", "submit_subscriptions": "abone olduğunuz topluluklar", "rules_for": "için kurallar", "no_communities_found": "<1>https://github.com/bitsocialhq/lists üzerinde hiçbir topluluk bulunamadı", "connect_community_notice": "Bir topluluğa bağlanmak için, sağ üst köşede 🔎 kullanın", "options": "seçenekler", "hide_options": "seçenekleri gizle", "failed": "başarısız oldu", "time_1_minute": "1 dakika", "time_x_minutes": "{{count}} dakika", "time_1_hour": "1 saat", "time_x_hours": "{{count}} saat", "time_1_day": "1 gün", "time_x_days": "{{count}} gün", "time_1_month": "1 ay", "time_x_months": "{{count}} ay", "time_1_year": "1 yıl", "time_x_years": "{{count}} yıl", "submit_post": "Yeni bir gönderi gönder", "create_your_community": "Kendi topluluğunu oluştur", "moderators": "moderatorler", "about_moderation": "moderasyon ekibi hakkında", "join": "Katıl", "leave": "ayrıl", "created_by": "tarafından oluşturuldu {{creatorAddress}}", "community_for": "{{date}} için bir topluluk", "post_submitted_on": "bu gönderi {{postDate}} tarihinde gönderildi", "users_online": "şu anda {{count}} kullanıcı burada", "point": "nokta", "points": "puanlar", "share_link": "bağlantıyı paylaş", "upvoted": "oy verdi", "announcement": "duyuru", "child": "{{childrenCount}} çocuklar", "children": "{{childrenCount}} çocuk", "moderation": "denetim", "interface_language": "arayüz dil", "theme": "tema", "account": "hesap", "display_name": "görünen ad", "crypto_address": "kripto adres", "check": "kontrol etmek", "crypto_address_verification": "eğer kripto adresi p2p ile çözüldüyse", "create": "oluştur", "delete": "sil", "locked": "kilitli", "reason": "neden", "sorted_by": "sıralama ölçütü", "downvoted": "aşağı oy verildi", "hidden": "gizli", "saved": "kaydedildi", "overview": "genel bakış", "user_since": "En azından {{time}}'den beri kullanıcı", "post_karma": "gönderi karma", "comment_karma": "yorum karma", "full_comments": "tüm yorumlar", "context": "bağlam", "block": "blok", "post": "gönderi", "unhide": "göster", "unblock": "engeli kaldır", "undo": "geri al", "post_hidden": "gizli gönderi", "link_copied": "bağlantı kopyalandı", "block_community": "topluluğu engelle", "unblock_community": "topluluğu engeli kaldır", "search_feed_post": "Bu akışta bir gönderi arayın", "from": "kimden", "via": "aracılığıyla", "sent": "gönderildi", "unread": "okunmamış", "comment_replies": "yorum yanıtları", "post_replies": "gönderi yanıtları", "messages": "mesajlar", "inbox": "gelen kutusu", "mark_all_read": "tümünü okundu olarak işaretle", "comment_reply": "yorumu yanıtla", "post_reply": "gönderiye yanıtla", "show_parent": "atıfta bulunulan gönderiyi göster", "no_posts": "gönderi yok", "media_url": "medya URL'si", "post_locked_info": "Bu gönderi {{state}}. Yorum yapamayacaksınız.", "members_count": "{{count}} üye", "communities": "topluluk", "edit": "düzenle", "moderator": "Moderatör", "description": "Açıklama", "rules": "Kurallar", "save_options": "Seçenekleri Kaydet", "logo": "Logo", "address": "Adres", "nothing_found": "Burada hiçbir şey görünmüyor gibi", "stickied_comment": "Sabitleyici Yorum", "posts_last_synced": "Son senkronize edilen gönderiler {{dateAgo}}", "community_settings": "Topluluk Ayarları", "moderation_tools": "Moderasyon Araçları", "submit_to": "<1>{{link}} adresine gönder", "edit_subscriptions": "Abonelikleri Düzenle", "delete_confirm": "{{value}}'yi silmek istediğinizden emin misiniz?", "saving": "Kaydediliyor", "deleted": "Silindi", "online": "Çevrimiçi", "offline": "Çevrimdışı", "subscriber": "Abone", "join_communities_notice": "Ana sayfada hangi toplulukların görüntüleneceğini seçmek için <1>{{join}} veya <2>{{leave}} düğmelerine tıklayın.", "below_subscribed": "Aşağıda abone olduğunuz topluluklar bulunmaktadır.", "not_subscribed": "Henüz hiçbir topluluğa abone değilsiniz.", "below_moderator_access": "Aşağıda moderatör erişimine sahip olduğunuz topluluklar bulunmaktadır.", "not_moderator": "Hiçbir topluluğun moderatörü değilsiniz.", "create_community": "Topluluk oluştur", "single_comment_notice": "Tek bir yorumun konusunu görüntülüyorsunuz", "single_comment_link": "Diğer yorumları görüntüle", "owner_settings_notice": "Topluluğun sahibi yalnızca ayarlarını düzenleyebilir.", "preview": "önizleme", "shown_in_sidebar": "topluluğunuzun yan çubuğunda gösterilir", "community_logo_info": "doğrudan görüntü bağlantısını kullanarak bir topluluk logosu ayarlayın (.jpg, .png ile bitiyor)", "moderators_setting_info": "diğer kullanıcıların sorunsuzca moderasyon yapmasına ve göndermesine izin verin", "vote": "oy vermek", "passing": "geçen", "rejecting": "reddetme", "add_moderator": "bir moderatör ekleyin", "add_rule": "bir kural ekleyin", "json_settings": "JSON ayarları", "json_settings_info": "topluluk ayarlarını hızlı bir şekilde kopyala veya yapıştır", "address_setting_info": "Bir kripto alan kullanarak okunabilir bir topluluk adresi belirleyin", "enter_crypto_address": "Lütfen geçerli bir kripto adresi girin.", "check_for_updates": "<1>Güncellemeleri kontrol et", "refresh_to_update": "Güncellemek için sayfayı yenileyin", "latest_development_version": "En son geliştirme sürümündesiniz, commit {{commit}}. Kararlı sürümü kullanmak için {{link}} gidin.", "latest_stable_version": "En son kararlı sürümünde, seedit v{{version}}s.", "new_development_version": "Yeni geliştirme sürümü kullanılabilir, commit {{newCommit}}. Commit {{oldCommit}} kullanıyorsunuz.", "new_stable_version": "Yeni stabil sürüm kullanılabilir, seedit v{{newVersion}}. seedit v{{oldVersion}} kullanıyorsunuz.", "download_latest_desktop": "Son masaüstü sürümünü buradan indirin: {{link}}", "contribute_on_github": "GitHub üzerinde katkı sağlayın", "no_media_found": "Medya bulunamadı", "no_image_found": "Resim bulunamadı", "warning_spam": "Uyarı: Hiçbir zorluk seçilmedi, topluluk spam saldırılarına açık.", "hide_help": "Yardımı gizle", "formatting_help": "Biçimlendirme yardımı", "you_see": "görüyorsun", "you_type": "Sen yazıyorsun", "italics": "italik", "bold": "kalın", "quoted_text": "alıntılanan metin", "item": "öğe", "delete_community": "topluluğu sil", "delete_community_description": "Bu topluluğu kalıcı olarak sil. İçeriği hala eşler tarafından ekmeklenebilir", "add": "ekle", "owner": "sahip", "admin": "yönetici", "settings_saved": "Ayarlar p/{{subplebbitAddress}} için kaydedildi", "continue_thread": "bu konuyu devam ettir", "mod_edit_reason": "Mod düzenleme nedeni", "double_confirm": "Gerçekten emin misiniz? Bu eylem geri alınamaz.", "crypto_address_not_yours": "Kripto adres başka bir hesaba aittir.", "crypto_address_yours": "Kripto adres bu hesaba aittir.", "crypto_address_not_resolved": "Kripto adres henüz çözülmedi.", "submit_to_string": "{{string}} e gönder", "page_not_found": "Sayfa bulunamadı", "not_found_description": "İstediğiniz sayfa mevcut değil", "last_edited": "son düzenleme {{timestamp}}", "view_spoiler": "spoileri görüntüle", "default_communities": "varsayılan topluluklar", "avatar": "avatar", "pending_edit": "bekleyen düzenleme", "failed_edit": "başarısız düzenleme", "node_stats": "düğüm istatistikleri", "version": "sürüm", "edit_reason": "düzenleme nedeni", "view_parent_comment": "ana yorumu görüntüle", "chain_ticker": "Blockchain ticker", "token_address_whitelist": "Token adresi (<1>yalnızca beyaz liste)", "token_id": "Token kimliği", "paste_signature": "İmza yapıştır", "copy_message_etherscan": "<1>{{copy}} <2>etherscan üzerinde imzalanacak mesaj", "copy": "kopyala", "copied": "kopyalandı", "missing_chain_ticker": "Eksik Blockchain ticker", "missing_token_address": "Eksik token adresi", "missing_token_id": "Eksik token kimliği", "missing_signature": "Eksik imza", "edited_timestamp": "{{timestamp}} önce düzenlendi", "ban_user_for": "Kullanıcıyı <1> gün boyunca yasakla", "crypto_wallets": "Kripto Cüzdanlar", "wallet_address": "Cüzdan adresi", "remove": "Kaldır", "add_wallet": "<1>Kripto cüzdan ekle", "show_settings": "Ayarları göster", "hide_settings": "Ayarları gizle", "undelete": "Silme işlemini geri al", "downloading_comments": "yorumlar indiriliyor", "you_blocked_community": "Bu topluluğu engellediniz", "show": "göstermek", "plebbit_options": "plebbit seçenekleri", "general": "genel", "more_posts_last_week": "{{count}} gönderiler geçen {{currentTimeFilterName}}: <1>daha fazla gönderi göster geçen haftadan", "more_posts_last_month": "{{count}} gönderi {{currentTimeFilterName}}de: <1>geçen aydan daha fazla gönderi göster", "profile_info": "Hesabınız u/{{shortAddress}} oluşturuldu. <1>Görüntüleme adını ayarla, <2>yedekleme verilerini dışa aktar, <3>daha fazla bilgi.", "show_all_instead": "{{timeFilterName}} tarihinden itibaren gönderiler gösteriliyor, <1>bunun yerine hepsini göster", "subplebbit_offline_info": "Topluluk çevrimdışı olabilir ve yayınlama başarısız olabilir.", "posts_last_synced_info": "Gönderiler son {{time}} tarihinde senkronize edildi, topluluk çevrimdışı olabilir ve yayımlama başarısız olabilir.", "import_account_backup": "<1>içeri aktarma hesap yedeği", "export_account_backup": "<1>dışa aktarma hesap yedeği", "save_reset_changes": "<1>kaydet veya <2>sıfırla değişiklikleri", "delete_this_account": "<1>sil bu hesabı", "create_new_account": "<1>oluştur yeni bir hesap", "wallet_number": "cüzdan #{{index}}", "view_more": "daha fazla görüntüle", "submit_community": "Topluluğunuzu gönderin", "hide_avatars_from_replies": "Yanıtlardan avatarları gizle", "yes": "evet", "no": "hayır", "are_you_sure": "Emin misin?", "a_short_title": "Topluluğunuz için kısa bir başlık", "challenges": "Zorluklar", "challenges_subtitle": "Spam önlemek için bir veya daha fazla zorluk seçin", "add_a_challenge": "Bir zorluk ekle", "communities_you_moderate": "Moderatörlük yaptığınız topluluklar", "blur_media": "NSFW/18+ olarak işaretlenmiş medyayı bulanıklaştırın", "nsfw_content": "NSFW içeriği", "see_nsfw": "NSFW görmek için tıklayın", "see_nsfw_spoiler": "NSFW spoiler görmek için tıklayın", "always_show_nsfw": "Her zaman NSFW medyasını göstermek ister misiniz?", "always_show_nsfw_notice": "Tamam, tercihlerinizi her zaman NSFW medyasını gösterecek şekilde değiştirdik.", "content_options": "İçerik seçenekleri", "over_18": "18 yaş üstü?", "must_be_over_18": "Bu topluluğu görmek için 18 yaş ve üzeri olmalısınız", "must_be_over_18_explanation": "Bu içeriği görmek için en az on sekiz yaşında olmanız gerekir. On sekiz yaşından büyük müsünüz ve yetişkin içeriği görmeye istekli misiniz?", "no_thank_you": "Hayır, teşekkür ederim", "continue": "Devam et", "download_latest_android": "Son Android sürümünü indir?", "submitter": "Gönderen", "block_user": "Kullanıcıyı engelle", "unblock_user": "Kullanıcıyı engellemeyi kaldır", "filtering_by_tag": "Tag’a göre filtreleme: \"{{tag}}\"", "you_are_moderator": "Bu topluluğun moderatörüsünüz", "you_are_admin": "Bu topluluğun yöneticisisiniz", "you_are_owner": "Bu topluluğun sahibi sizsiniz", "looking_for_more_posts": "Daha fazla gönderi arıyorum", "loading_feed": "Yükleniyor besleme", "downloading_posts": "Gönderiler indiriliyor", "post_is_pending": "Gönderi beklemede", "post_has_failed": "Gönderi başarısız oldu", "choose_file": "Dosya seç", "uploading": "Yükleniyor", "invalid_url_alert": "Verilen bağlantı geçerli bir URL değildir.", "empty_comment_alert": "Boş yorum gönderilemez.", "no_subscriptions_message": "<1>{{accountName}}, burası Seedit’teki evinizdir<2>Beğendiğiniz bir topluluk bulduğunuzda, <3>ona katılın <4>", "find_communities": "p/all üzerinde toplulukları bulun", "community_deleted": "Topluluk başarıyla silindi.", "go_to_a_community": "Bir topluluğa git", "enter_community_address": "Bir topluluk adresi girin", "all_communities": "tüm topluluklar", "search_posts": "gönderileri ara", "found_n_results_for": "\"{{query}}\" için {{count}} gönderi bulundu", "clear_search": "arama temizle", "no_matches_found_for": "\"{{query}}\" için eşleşme bulunamadı", "searching": "arama", "hide_default_communities_from_topbar": "Varsayılan toplulukları üst çubuktan gizle", "media": "medya", "hide_communities_tagged_as_nsfw": "NSFW/18+ olarak etiketlenmiş toplulukları gizle", "tagged_as_adult": "\"yetişkin\" olarak etiketlendi", "tagged_as_gore": "\"gore\" olarak etiketlendi", "tagged_as_anti": "\"anti\" olarak etiketlendi", "tagged_as_vulgar": "\"vulgar\" olarak etiketlendi", "drop_here_or": "Burası veya bırak", "upload_button_warning": "Otomatik yükleme, tarayıcınızın CORS politikası nedeniyle engelleniyor, ancak Seedit Android uygulaması ve masaüstü uygulamasında (Win/Mac/Linux) mevcuttur.\n\nGitHub'daki indirme bağlantıları sayfasına gidin?", "create_community_warning": "Bir topluluk oluşturmak, tam bir düğüm çalıştırmayı gerektirir. Seedit masaüstü uygulaması (Win/Mac/Linux) otomatik olarak tam bir düğüm çalıştırır.\n\nGitHub'daki indirme bağlantıları sayfasına gidin?", "avatars": "Avatarlar", "filtering_by_nsfw": "NSFW topluluklarına göre filtreleme", "notifications": "Bildirimler", "new_replies_received": "yeni yanıtlar alındı", "private_key_warning_title": "Özel anahtarınız görüntülenecek", "private_key_warning_description": "Hesap verilerinizi görüntülemek üzeresiniz, bu veriler özel anahtarınızı da içerir. Özel anahtarınızı kimseyle paylaşmamalısınız.", "go_back": "Geri dön", "loading_editor": "Düzenleyici yükleniyor", "show_thumbnails_next_to_links": "Bağlantıların yanına küçük resimler göster", "dont_show_thumbnails_next_to_links": "Linklerin yanında küçük resimleri gösterme", "show_thumbnails_based_on_community_media_preferences": "O topluluğun medya tercihine göre küçük resimleri göster", "media_previews": "medya önizlemeleri", "auto_expand_media_previews": "Medya önizlemelerini otomatik genişlet", "dont_auto_expand_media_previews_on_comments_pages": "Yorum sayfalarında medya önizlemelerini otomatik genişletme", "video_player": "Video Oynatıcı", "autoplay_videos_on_comments_page": "Yorum sayfasında videoları otomatik oynat", "mute_videos_by_default": "Videoları varsayılan olarak sessize al", "expand_media_previews_based_on_community_media_preferences": "Topluluğun medya tercihleri temelinde medya önizlemelerini genişlet", "show_all_nsfw": "tüm NSFW'yi göster", "hide_all_nsfw": "tüm NSFW'yi gizle", "tags": "Etiketler", "moderator_of": "moderatorü", "not_subscriber_nor_moderator": "Hiçbir topluluğun abonesi veya moderatörü değilsiniz.", "more_posts_last_year": "{{count}} gönderi son {{currentTimeFilterName}}: <1>geçen yıldan daha fazla gönderi göster", "editor_fallback_warning": "gelişmiş editör yüklenemedi, yedek olarak temel metin editörü kullanılıyor.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Bu topluluğu zaten görüntülüyorsunuz" } ================================================ FILE: public/translations/uk/default.json ================================================ { "about": "Про", "comments": "коментарі", "preferences": "Налаштування", "submit": "Надіслати", "dark": "Темний", "light": "Світлий", "my_communities": "Мої спільноти", "home": "Головна", "all": "Всі", "submitted": "Надіслано", "post_by": "Від", "post_to": "До", "post_no_comments": "Коментувати", "post_comment": "Коментар", "post_comments": "Коментарі", "share": "Поділитися", "save": "Зберегти", "hide": "Приховати", "report": "Поскаржитися", "crosspost": "Кроспост", "time_1_minute_ago": "1 хвилину тому", "time_x_minutes_ago": "{{count}} хвилин тому", "time_1_hour_ago": "1 годину тому", "time_x_hours_ago": "{{count}} годин тому", "time_1_day_ago": "1 день тому", "time_x_days_ago": "{{count}} днів тому", "time_1_month_ago": "1 місяць тому", "time_x_months_ago": "{{count}} місяців тому", "time_1_year_ago": "1 рік тому", "time_x_years_ago": "{{count}} років тому", "spoiler": "Спойлер", "reply_reply": "Відповідь", "reply_sorted_by": "Сортувати за", "all_comments": "Всі {{count}} коментарі", "no_comments": "Немає коментарів (ще)", "reply_score_singular": "1 бал", "reply_score_plural": "{{score}} балів", "removed": "Видалено", "one_comment": "1 коментар", "submit_url_description": "вставте медіа, розмістивши його пряме посилання (закінчується на .jpg, .gif, .mp4 тощо)", "title": "заголовок", "text": "текст", "required": "потрібно", "optional": "необов’язково", "community_address": "адреса спільноти", "submit_choose": "виберіть, куди відправити", "submit_notice": "будь ласка, дотримуйтесь правил спільноти, в seedit немає глобальних адміністраторів.", "challenge_from": "Виклик від p/{{subplebbit}}", "challenge_for_post": "для посту: \"{{publicationContent}}\"", "challenge_for_reply": "для відповіді u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} з {{total}}", "cancel": "Скасувати", "previous": "Попередній", "next": "Наступний", "loading": "Завантаження", "pending": "Очікується", "submit_subscriptions_notice": "Рекомендовані спільноти", "submit_subscriptions": "ваші підписані спільноти", "rules_for": "правила для", "no_communities_found": "Спільноти не знайдені на <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "Щоб підключитися до спільноти, використовуйте 🔎 у верхньому правому куті", "options": "опції", "hide_options": "приховати опції", "failed": "не вдалося", "time_1_minute": "1 хвилина", "time_x_minutes": "{{count}} хвилин", "time_1_hour": "1 година", "time_x_hours": "{{count}} годин", "time_1_day": "1 день", "time_x_days": "{{count}} днів", "time_1_month": "1 місяць", "time_x_months": "{{count}} місяців", "time_1_year": "1 рік", "time_x_years": "{{count}} років", "submit_post": "Надіслати новий пост", "create_your_community": "Створіть своє співтовариство", "moderators": "модератори", "about_moderation": "про модерацію", "join": "Приєднатися", "leave": "покинути", "created_by": "створено {{creatorAddress}}", "community_for": "спільнота на {{date}}", "post_submitted_on": "цей пост був поданий {{postDate}}", "users_online": "{{count}} користувачів тут зараз", "point": "точка", "points": "бали", "share_link": "поділитися посиланням", "upvoted": "поставив плюс", "announcement": "оголошення", "child": "{{childrenCount}} діти", "children": "{{childrenCount}} дитина", "moderation": "модерація", "interface_language": "мова інтерфейсу", "theme": "тема", "account": "рахунок", "display_name": "відображуване ім'я", "crypto_address": "адреса криптовалюти", "check": "перевірити", "crypto_address_verification": "якщо адреса криптовалюти розглядається p2p", "create": "створити", "delete": "видалити", "locked": "заблоковано", "reason": "причина", "sorted_by": "відсортовано за", "downvoted": "проголосувало негативно", "hidden": "прихований", "saved": "збережено", "overview": "огляд", "user_since": "Користувач з принаймні {{time}}", "post_karma": "карма постів", "comment_karma": "карма коментарів", "full_comments": "всі коментарі", "context": "контекст", "block": "блокувати", "post": "публікація", "unhide": "показати", "unblock": "скасувати блокування", "undo": "скасувати", "post_hidden": "прихований пост", "link_copied": "посилання скопійовано", "block_community": "заблокувати спільноту", "unblock_community": "розблокувати спільноту", "search_feed_post": "Шукайте запис у цьому стрічці", "from": "від", "via": "через", "sent": "відправлено", "unread": "непрочитані", "comment_replies": "відповіді на коментарі", "post_replies": "відповіді на повідомлення", "messages": "повідомлення", "inbox": "вхідні", "mark_all_read": "позначити всі як прочитані", "comment_reply": "відповісти на коментар", "post_reply": "відповісти на пост", "show_parent": "показати зазначений допис", "no_posts": "немає повідомлень", "media_url": "URL медіа", "post_locked_info": "Цей пост {{state}}. Ви не зможете коментувати.", "members_count": "{{count}} учасників", "communities": "спільнота", "edit": "редагування", "moderator": "Модератор", "description": "Опис", "rules": "Правила", "save_options": "Зберегти налаштування", "logo": "Логотип", "address": "Адреса", "nothing_found": "Тут, здається, нічого немає", "stickied_comment": "Закріплений коментар", "posts_last_synced": "Останні синхронізовані пости {{dateAgo}}", "community_settings": "Налаштування спільноти", "moderation_tools": "Інструменти модерації", "submit_to": "Надіслати до <1>{{link}}", "edit_subscriptions": "Редагувати підписки", "delete_confirm": "Ви впевнені, що хочете видалити {{value}}?", "saving": "Збереження", "deleted": "Видалено", "online": "Онлайн", "offline": "Офлайн", "subscriber": "Підписник", "join_communities_notice": "Клацніть кнопки <1>{{join}} або <2>{{leave}}, щоб вибрати, які спільноти відображати на домашній сторінці.", "below_subscribed": "Нижче перераховані спільноти, на які ви підписалися.", "not_subscribed": "Ви ще не підписані на жодну спільноту.", "below_moderator_access": "Нижче наведено спільноти, до яких у вас є доступ у ролі модератора.", "not_moderator": "Ви не є модератором жодної спільноти.", "create_community": "Створити спільноту", "single_comment_notice": "Ви переглядаєте тему лише з одним коментарем", "single_comment_link": "Переглянути решту коментарів", "owner_settings_notice": "Тільки власник спільноти може редагувати її налаштування.", "preview": "попередній перегляд", "shown_in_sidebar": "відображається в бічній панелі вашої спільноти", "community_logo_info": "встановіть логотип спільноти, використовуючи його пряме посилання на зображення (закінчується на .jpg, .png)", "moderators_setting_info": "дозвольте іншим користувачам модерувати та публікувати без викликів", "vote": "голосувати", "passing": "проходження", "rejecting": "відхилення", "add_moderator": "додайте модератора", "add_rule": "додайте правило", "json_settings": "Налаштування JSON", "json_settings_info": "швидко копіюйте або вставте налаштування спільноти", "address_setting_info": "Встановіть читабельну громадську адресу, використовуючи криптодомен", "enter_crypto_address": "Будь ласка, введіть дійсну криптовалютну адресу.", "check_for_updates": "<1>Перевірити оновлення", "refresh_to_update": "Оновіть сторінку, щоб оновити", "latest_development_version": "Ви використовуєте останню версію розробки, коміт {{commit}}. Щоб використовувати стабільну версію, перейдіть за посиланням {{link}}.", "latest_stable_version": "Ви використовуєте останню стабільну версію, seedit v{{version}}.", "new_development_version": "Нова версія розробки доступна, коміт {{newCommit}}. Ви використовуєте коміт {{oldCommit}}.", "new_stable_version": "Нова стабільна версія доступна, seedit v{{newVersion}}. Ви використовуєте seedit v{{oldVersion}}.", "download_latest_desktop": "Завантажте останню версію для робочого столу тут: {{link}}", "contribute_on_github": "Сприяти на GitHub", "no_media_found": "Медіа не знайдено", "no_image_found": "Зображення не знайдено", "warning_spam": "Попередження: жодного виклику не обрано, спільнота вразлива до спам-атак.", "hide_help": "Сховати довідку", "formatting_help": "Довідка з форматування", "you_see": "ви бачите", "you_type": "Ви пишете", "italics": "курсив", "bold": "жирний", "quoted_text": "цитований текст", "item": "елемент", "delete_community": "видалити спільноту", "delete_community_description": "Видалити цю спільноту назавжди. Його вміст все ще може бути засіяно ровесниками", "add": "додати", "owner": "власник", "admin": "адміністратор", "settings_saved": "Налаштування збережено для p/{{subplebbitAddress}}", "continue_thread": "продовжити цю тему", "mod_edit_reason": "Причина редагування модератором", "double_confirm": "Ви впевнені? Ця дія незворотня.", "crypto_address_not_yours": "Адреса криптовалюти належить до іншого облікового запису.", "crypto_address_yours": "Адреса криптовалюти належить цьому обліковому запису.", "crypto_address_not_resolved": "Адреса криптовалюти ще не вирішена.", "submit_to_string": "Надіслати до {{string}}", "page_not_found": "Сторінка не знайдена", "not_found_description": "Сторінка, яку ви запросили, не існує", "last_edited": "остання редакція {{timestamp}}", "view_spoiler": "переглянути спойлер", "default_communities": "типові спільноти", "avatar": "аватар", "pending_edit": "очікуване редагування", "failed_edit": "невдале редагування", "node_stats": "статистика вузла", "version": "версія", "edit_reason": "причина редагування", "view_parent_comment": "переглянути батьківський коментар", "chain_ticker": "Блокчейн тікер", "token_address_whitelist": "Адреса токена (<1>тільки білий список)", "token_id": "Ідентифікатор токена", "paste_signature": "Вставте підпис", "copy_message_etherscan": "<1>{{copy}} повідомлення для підпису на <2>etherscan", "copy": "копіювати", "copied": "скопійовано", "missing_chain_ticker": "Відсутній тікер блокчейну", "missing_token_address": "Відсутня адреса токена", "missing_token_id": "Відсутній ідентифікатор токена", "missing_signature": "Відсутній підпис", "edited_timestamp": "Відредаговано {{timestamp}}", "ban_user_for": "Заборонити користувача на <1> день (днів)", "crypto_wallets": "Криптокошельки", "wallet_address": "Адреса гаманця", "remove": "Видалити", "add_wallet": "<1>Додати криптокошелек", "show_settings": "Показати налаштування", "hide_settings": "Сховати налаштування", "undelete": "Скасувати видалення", "downloading_comments": "завантаження коментарів", "you_blocked_community": "Ви заблокували цю спільноту", "show": "показати", "plebbit_options": "плебіт варіанти", "general": "загальний", "more_posts_last_week": "{{count}} пости минулого {{currentTimeFilterName}}: <1>показати більше постів з минулого тижня", "more_posts_last_month": "{{count}} постів у {{currentTimeFilterName}}: <1>показати більше постів з минулого місяця", "profile_info": "Ваш акаунт u/{{shortAddress}} був створений. <1>Встановіть ім'я відображення, <2>експортувати резервну копію, <3>дізнатись більше.", "show_all_instead": "Показані пости з {{timeFilterName}}, <1>показати все замість цього", "subplebbit_offline_info": "Громада може бути в режимі offline і публікація може не вдатися.", "posts_last_synced_info": "Дописи остатньо синхронізовано {{time}}, спільнота може бути офлайн і публікування може не вдатися.", "import_account_backup": "<1>імпортувати резервну копію облікового запису", "export_account_backup": "<1>експортувати резервну копію облікового запису", "save_reset_changes": "<1>зберегти або <2>скинути зміни", "delete_this_account": "<1>видалити цей обліковий запис", "create_new_account": "<1>створити новий обліковий запис", "wallet_number": "гаманець #{{index}}", "view_more": "переглянути більше", "submit_community": "Надішліть своє співтовариство", "hide_avatars_from_replies": "Сховати аватари в відповідях", "yes": "так", "no": "ні", "are_you_sure": "Ви впевнені?", "a_short_title": "Короткий заголовок для вашої спільноти", "challenges": "Виклики", "challenges_subtitle": "Виберіть одне або кілька завдань для запобігання спаму", "add_a_challenge": "Додати завдання", "communities_you_moderate": "Спільноти, які ви модеруєте", "blur_media": "Розмити медіа, позначені як NSFW/18+", "nsfw_content": "Контент NSFW", "see_nsfw": "Натисніть, щоб побачити NSFW", "see_nsfw_spoiler": "Натисніть, щоб побачити NSFW спойлер", "always_show_nsfw": "Чи хочете ви завжди показувати медіа NSFW?", "always_show_nsfw_notice": "Добре, ми змінили ваші налаштування, щоб завжди показувати медіа NSFW.", "content_options": "Параметри контенту", "over_18": "Понад 18?", "must_be_over_18": "Ви повинні бути старше 18 років, щоб переглядати це співтовариство", "must_be_over_18_explanation": "Ви повинні бути принаймні вісімнадцяти років, щоб переглядати цей контент. Вам більше вісімнадцяти років, і ви готові переглядати контент для дорослих?", "no_thank_you": "Ні, дякую", "continue": "Продовжити", "download_latest_android": "Завантажити останню версію Android?", "submitter": "Відправник", "block_user": "Заблокувати користувача", "unblock_user": "Розблокувати користувача", "filtering_by_tag": "Фільтрація за тегом: \"{{tag}}\"", "you_are_moderator": "Ви є модератором цієї спільноти", "you_are_admin": "Ви є адміністратором цієї спільноти", "you_are_owner": "Ви є власником цієї спільноти", "looking_for_more_posts": "Шукаю більше дописів", "loading_feed": "Завантаження потоку", "downloading_posts": "Завантаження постів", "post_is_pending": "Пост очікує", "post_has_failed": "Публікація не вдалася", "choose_file": "Виберіть файл", "uploading": "Завантаження", "invalid_url_alert": "Надане посилання не є дійсною URL-адресою.", "empty_comment_alert": "Не можна опублікувати порожній коментар.", "no_subscriptions_message": "<1>{{accountName}}, це ваш дім на Seedit<2>Коли ви знайдете спільноту, яка вам подобається, <3>приєднайтесь до <4>", "find_communities": "знайти спільноти на p/all", "community_deleted": "Спільнота успішно видалена.", "go_to_a_community": "Перейти до спільноти", "enter_community_address": "Введіть адресу спільноти", "all_communities": "всі спільноти", "search_posts": "пошук постів", "found_n_results_for": "знайдено {{count}} публікацій для \"{{query}}\"", "clear_search": "очистити пошук", "no_matches_found_for": "не знайдено співпадінь для \"{{query}}\"", "searching": "пошук", "hide_default_communities_from_topbar": "Сховати стандартні спільноти з верхньої панелі", "media": "медіа", "hide_communities_tagged_as_nsfw": "Сховати спільноти, позначені як NSFW/18+", "tagged_as_adult": "мітка \"дорослий\"", "tagged_as_gore": "позначено як \"gore\"", "tagged_as_anti": "позначено як \"анти\"", "tagged_as_vulgar": "позначено як \"вульгарне\"", "drop_here_or": "Перетягніть сюди або", "upload_button_warning": "Автозавантаження заблоковано політикою CORS вашого браузера, але воно доступне в додатку Seedit для Android та настільному додатку (Win/Mac/Linux).\n\nПерейдіть на сторінку посилань для завантаження на GitHub?", "create_community_warning": "Створення спільноти вимагає запуску повного вузла. Десктоп-додаток Seedit (Win/Mac/Linux) автоматично запускає повний вузол.\n\nПерейдіть на сторінку посилань для завантаження на GitHub?", "avatars": "Аватари", "filtering_by_nsfw": "Фільтрація за спільнотами NSFW", "notifications": "Повідомлення", "new_replies_received": "отримано нові відповіді", "private_key_warning_title": "Ваш приватний ключ буде відображено", "private_key_warning_description": "Ви збираєтеся переглянути дані свого акаунту, які включають ваш приватний ключ. Ніколи не діліться своїм приватним ключем з кимось.", "go_back": "Повернутися", "loading_editor": "Завантаження редактора", "show_thumbnails_next_to_links": "Показувати мініатюри поруч із посиланнями", "dont_show_thumbnails_next_to_links": "Не показувати мініатюри поруч із посиланнями", "show_thumbnails_based_on_community_media_preferences": "Показувати мініатюри відповідно до медіапереваг спільноти", "media_previews": "попередні перегляди медіа", "auto_expand_media_previews": "Автоматичне розгортання медіапопередніх переглядів", "dont_auto_expand_media_previews_on_comments_pages": "Не розгортати медіа-попередній перегляд автоматично на сторінках коментарів", "video_player": "Відеопрогравач", "autoplay_videos_on_comments_page": "Автовідтворення відео на сторінці коментарів", "mute_videos_by_default": "Вимикати звук відео за замовчуванням", "expand_media_previews_based_on_community_media_preferences": "Розгорніть попередній перегляд медіа на основі медіапредпочтань цієї спільноти", "show_all_nsfw": "показати всі NSFW", "hide_all_nsfw": "приховати весь NSFW", "tags": "Теги", "moderator_of": "модератор", "not_subscriber_nor_moderator": "Ви не є підписником або модератором жодної спільноти.", "more_posts_last_year": "{{count}} постів за останній {{currentTimeFilterName}}: <1>показати більше постів з минулого року", "editor_fallback_warning": "Розширений редактор не вдалося завантажити, використовується базовий текстовий редактор як запасний варіант.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Ви вже переглядаєте це співтовариство" } ================================================ FILE: public/translations/ur/default.json ================================================ { "about": "کے بارے میں", "comments": "تبصرے", "preferences": "ترجیحات", "submit": "جمع کرائیں", "dark": "تاریک", "light": "ہلکا", "my_communities": "میری کمیونٹیاں", "home": "ہوم", "all": "تمام", "submitted": "جمع کروائی گئی", "post_by": "کی طرف سے", "post_to": "کو", "post_no_comments": "تبادلہ خیال کریں", "post_comment": "کومنٹ", "post_comments": "کومنٹس", "share": "شیئر کریں", "save": "محفوظ کریں", "hide": "چھپائیں", "report": "رپورٹ کریں", "crosspost": "کراس پوسٹ", "time_1_minute_ago": "1 منٹ پہلے", "time_x_minutes_ago": "{{count}} منٹ پہلے", "time_1_hour_ago": "1 گھنٹہ پہلے", "time_x_hours_ago": "{{count}} گھنٹے پہلے", "time_1_day_ago": "1 دن پہلے", "time_x_days_ago": "{{count}} دن پہلے", "time_1_month_ago": "1 مہینہ پہلے", "time_x_months_ago": "{{count}} مہینے پہلے", "time_1_year_ago": "1 سال پہلے", "time_x_years_ago": "{{count}} سال پہلے", "spoiler": "اسپوائلر", "reply_reply": "جواب", "reply_sorted_by": "کے مطابق ترتیب", "all_comments": "تمام {{count}} تبصرے", "no_comments": "کوئی تبصرہ نہیں (ابھی)", "reply_score_singular": "1 پوائنٹ", "reply_score_plural": "{{score}} پوائنٹس", "removed": "ہٹا دیا گیا", "one_comment": "1 تبصرہ", "submit_url_description": ".jpg، .gif، .mp4 وغیرہ میں ختم ہونے والے براہ راست لنک کو پوسٹ کرکے میڈیا انکارپوریٹ کریں", "title": "عنوان", "text": "مواد", "required": "ضروری", "optional": "اختیاری", "community_address": "کمیونٹی کا پتہ", "submit_choose": "پوسٹ کرنے کا مقام منتخب کریں", "submit_notice": "براہ کرم کمیونٹی کے اصولوں کا خیال رکھیں، seedit میں عالمی ایڈمنز نہیں ہیں۔", "challenge_from": "چیلنج فارم p/{{subplebbit}}", "challenge_for_post": "پوسٹ کے لیے: \"{{publicationContent}}\"", "challenge_for_reply": "u/{{parentAddress}} کے جواب کے لیے: \"{{publicationContent}}\"", "challenge_counter": "{{index}} میں سے {{total}}", "cancel": "منسوخ کریں", "previous": "پچھلا", "next": "اگلا", "loading": "لوڈ ہو رہا ہے", "pending": "منتظر", "submit_subscriptions_notice": "موصولہ کمیونٹیز", "submit_subscriptions": "آپ کی سبسکرائب شدہ کمیونٹیز", "rules_for": "کے قواعد", "no_communities_found": "<1>https://github.com/bitsocialhq/lists پر کوئی کمیونٹیز نہیں ملی", "connect_community_notice": "کمیونٹی سے جڑنے کے لئے، دائیں اوپر 🔎 استعمال کریں", "options": "اختیارات", "hide_options": "اختیارات چھپائیں", "failed": "ناکام", "time_1_minute": "1 منٹ", "time_x_minutes": "{{count}} منٹ", "time_1_hour": "1 گھنٹہ", "time_x_hours": "{{count}} گھنٹے", "time_1_day": "1 دن", "time_x_days": "{{count}} دن", "time_1_month": "1 ماہ", "time_x_months": "{{count}} ماہ", "time_1_year": "1 سال", "time_x_years": "{{count}} سال", "submit_post": "نیا پوسٹ جمع کروائیں", "create_your_community": "اپنا خود کا کمیونٹی بنائیں", "moderators": "ماڈریٹرز", "about_moderation": "ماڈریشن ٹیم کے بارے میں", "join": "شامل ہوں", "leave": "چھوڑ دو", "created_by": "کا سروری کیا گیا {{creatorAddress}}", "community_for": "ایک کمیونٹی کے لئے {{date}}", "post_submitted_on": "یہ پوسٹ {{postDate}} کو جمع کی گئی تھی", "users_online": "اب {{count}} صارفین یہاں ہیں", "point": "نقطہ", "points": "نقاط", "share_link": "لنک شیئر کریں", "upvoted": "نے اوپر ووٹ دیا", "announcement": "اعلان", "child": "{{childrenCount}} بچے", "children": "{{childrenCount}} بچہ", "moderation": "تسلیم", "interface_language": "انٹرفیس زبان", "theme": "موضوع", "account": "اکاؤنٹ", "display_name": "ڈسپلے نام", "crypto_address": "کرپٹو پتہ", "check": "چیک کریں", "crypto_address_verification": "اگر کرپٹو پتا p2p کے ذریعے حل ہوتا ہے", "create": "بنائیں", "delete": "حذف کریں", "locked": "مقفل", "reason": "وجہ", "sorted_by": "ترتیب دی گئی", "downvoted": "نیچے ووٹ دیا گیا", "hidden": "چھپا ہوا", "saved": "محفوظ", "overview": "جامع جائزہ", "user_since": "کم از کم {{time}} سے صارف", "post_karma": "پوسٹ کرما", "comment_karma": "تبصرہ کرما", "full_comments": "تمام تبصرے", "context": "سیاق", "block": "بلاک", "post": "پوسٹ", "unhide": "دکھائیں", "unblock": "بلاک ہٹائیں", "undo": "واپس کریں", "post_hidden": "پوسٹ چھپی ہوئی", "link_copied": "لنک کاپی ہوگیا", "block_community": "کمیونٹی کو بلاک کریں", "unblock_community": "کمیونٹی کو ان بلاک کریں", "search_feed_post": "اس فیڈ میں ایک پوسٹ تلاش کریں", "from": "سے", "via": "کے ذریعے", "sent": "بھیجا گیا", "unread": "نہ پڑھے", "comment_replies": "تبادلہ ردوبدل", "post_replies": "تبادلہ ردوبدل", "messages": "پیغامات", "inbox": "ان باکس", "mark_all_read": "سب کو پڑھا ہوا مارک کریں", "comment_reply": "تبادلہ کریں جواب", "post_reply": "پوسٹ کا جواب دیں", "show_parent": "ذکر کردہ پوسٹ دکھائیں", "no_posts": "کوئی پوسٹ نہیں", "media_url": "میڈیا یو آر ایل", "post_locked_info": "یہ پوسٹ {{state}} ہے۔ آپ تبصرہ نہیں کر سکیں گے۔", "members_count": "{{count}} رکن", "communities": "مجتمع", "edit": "ترمیم کرنا", "moderator": "منتظم", "description": "تفصیل", "rules": "قوانین", "save_options": "خیارات محفوظ کریں", "logo": "لوگو", "address": "پتہ", "nothing_found": "یہاں کچھ بھی نظر نہیں آرہا", "stickied_comment": "پن کردہ تبصرہ", "posts_last_synced": "آخری مرتب سبقت کردہ پوسٹس {{dateAgo}}", "community_settings": "کمیونٹی کی ترتیبات", "moderation_tools": "موڈریشن ٹولز", "submit_to": "جمع کرائیں <1>{{link}}", "edit_subscriptions": "سبسکرائب کو ترتیب دیں", "delete_confirm": "کیا آپ واقعی {{value}} کو حذف کرنا چاہتے ہیں؟", "saving": "حفظ ہو رہا ہے", "deleted": "حذف ہوگیا", "online": "آن لائن", "offline": "آف لائن", "subscriber": "سبسکرائبر", "join_communities_notice": "ہوم فیڈ پر کون سی کمیونٹیز دکھائی دینی چاہئی، انتخاب کرنے کے لئے <1>{{join}} یا <2>{{leave}} بٹن پر کلک کریں۔", "below_subscribed": "نیچے وہ کمیونٹیز ہیں جن میں آپ نے سبسکرائب کیا ہے۔", "not_subscribed": "آپ کسی بھی کمیونٹی کا مشترک نہیں ہیں۔", "below_moderator_access": "نیچے وہ کمیونٹیز ہیں جن کا موڈریٹر رسائی ہے۔", "not_moderator": "آپ کسی بھی کمیونٹی پر موڈریٹر نہیں ہیں۔", "create_community": "کمیونٹی بنائیں", "single_comment_notice": "آپ صرف ایک تبصرے کی تھریڈ دیکھ رہے ہیں", "single_comment_link": "بقیہ تبصرے دیکھیں", "owner_settings_notice": "صرف کمیونٹی کا مالک ہی اس کی سیٹنگز کو ایڈیٹ کرسکتا ہے۔", "preview": "پیشنظارہ", "shown_in_sidebar": "آپ کے کمیونٹی کے سائیڈبار میں دکھایا جاتا ہے", "community_logo_info": "ان کی سیدھی تصویر لنک کا استعمال کرکے ایک کمیونٹی کا لوگو ترتیب دیں (جو .jpg، .png میں ختم ہوتا ہے)", "moderators_setting_info": "دوسرے صارفین کو معتدل کرنے اور بغیر چیلنج کے پوسٹ کرنے کی اجازت دیں", "vote": "ووٹ دیں", "passing": "گزرنے والا", "rejecting": "مسترد کرنے والا", "add_moderator": "ایک موڈریٹر شامل کریں", "add_rule": "ایک قاعدہ شامل کریں", "json_settings": "JSON ترتیبات", "json_settings_info": "جلدی سے کمیونٹی کی ترتیبات کاپی یا پیسٹ کریں", "address_setting_info": "کرپٹو ڈومین کا استعمال کرتے ہوئے ایک قابل قرائتی کمیونٹی ایڈریس مقرر کریں", "enter_crypto_address": "براہ کرم ایک معتبر کرپٹو پتہ داخل کریں۔", "check_for_updates": "<1>چیک کریں اپ ڈیٹس کے لئے", "refresh_to_update": "اپ ڈیٹ کرنے کے لئے صفحہ تازہ کریں", "latest_development_version": "آپ تازہ ترین ڈویلپمنٹ ورژن پر ہیں, کمیٹ {{commit}}۔ مستحکم ورژن استعمال کرنے کے لئے, {{link}} پر جائیں۔", "latest_stable_version": "آپ تازہ ترین مستحکم ورژن پر ہیں, seedit v{{version}}۔", "new_development_version": "نیو ڈویلپمنٹ ورژن دستیاب ہے, کمیٹ {{newCommit}}۔ آپ کمیٹ {{oldCommit}} استعمال کر رہے ہیں۔", "new_stable_version": "نیو مستقر ورژن دستیاب ہے, seedit v{{newVersion}}۔ آپ seedit v{{oldVersion}} استعمال کر رہے ہیں۔", "download_latest_desktop": "یہاں سب سے تازہ ڈیسک ٹاپ ورژن ڈاؤن لوڈ کریں: {{link}}", "contribute_on_github": "GitHub پر شراکت کریں", "no_media_found": "کوئی میڈیا نہیں ملی", "no_image_found": "کوئی تصویر نہیں ملی", "warning_spam": "انتباہ: کوئی چیلنج منتخب نہیں کی گئی، کمیونٹی اسپیم حملوں کے لیے غیر محفوظ ہے۔", "hide_help": "مدد چھپائیں", "formatting_help": "فارمیٹنگ مدد", "you_see": "آپ دیکھتے ہیں", "you_type": "آپ ٹائپ کرتے ہیں", "italics": "ایٹلک", "bold": "گہرا", "quoted_text": "حوالہ دیا گیا متن", "item": "اشیاء", "delete_community": "کمیونٹی کو حذف کریں", "delete_community_description": "اس کمیونٹی کو مستقل طور پر حذف کریں۔ اس کا مواد ابھی بھی سمندر کے ذریعہ کیا جا سکتا ہے", "add": "شامل کریں", "owner": "مالک", "admin": "ایڈمن", "settings_saved": "p/{{subplebbitAddress}} کے لئے ترتیبات محفوظ ہوگئیں", "continue_thread": "اس ٹھریڈ کو جاری رکھیں", "mod_edit_reason": "موڈ ایڈیٹ وجہ", "double_confirm": "کیا آپ واقعی میں یقینی ہیں؟ یہ کارروائی بے واپس ہے۔", "crypto_address_not_yours": "کرپٹو پتا دوسرے اکاؤنٹ کا حصہ ہے۔", "crypto_address_yours": "کرپٹو پتا اس اکاؤنٹ کا حصہ ہے۔", "crypto_address_not_resolved": "کرپٹو پتا ابھی تک حل نہیں ہوا ہے۔", "submit_to_string": "{{string}} کو جمع کرائیں", "page_not_found": "صفحہ نہیں ملا", "not_found_description": "آپ نے جو صفحہ درخواست کیا ہے وہ موجود نہیں ہے", "last_edited": "آخری ترمیم {{timestamp}}", "view_spoiler": "اسپوائلر دیکھیں", "default_communities": "ڈیفالٹ کمیونٹیز", "avatar": "اوتار", "pending_edit": "زیر التواء ترتیبات", "failed_edit": "ناکام ترتیبات", "node_stats": "نوڈ اشاریہ", "version": "ورژن", "edit_reason": "ترتیب دینے کا سبب", "view_parent_comment": "ماں کمنٹ دیکھیں", "chain_ticker": "بلاک چین ٹکر", "token_address_whitelist": "ٹوکن کا پتا (<1>صرف سفید فہرست)", "token_id": "ٹوکن شناخت", "paste_signature": "سرنی چسپاں کریں", "copy_message_etherscan": "<1>{{copy}} پیغام <2>etherscan پر دستخط کریں", "copy": "کاپی", "copied": "کاپی کی گئی", "missing_chain_ticker": "گمشدہ بلاک چین ٹکر", "missing_token_address": "گمشدہ ٹوکن ایڈریس", "missing_token_id": "گمشدہ ٹوکن شناختی نمبر", "missing_signature": "گمشدہ دستخط", "edited_timestamp": "{{timestamp}} پہلے ترمیم شدہ", "ban_user_for": "<1> دنوں کے لیے صارف کو پابندی عائد کریں", "crypto_wallets": "کرپٹو والٹس", "wallet_address": "والیٹ کا پتہ", "remove": "ہٹا دو", "add_wallet": "<1>شامل کریں ایک کرپٹو والیٹ", "show_settings": "ترتیبات دکھائیں", "hide_settings": "ترتیبات چھپائیں", "undelete": "حذف کو واپس لائیں", "downloading_comments": "تبصرے ڈاؤن لوڈ ہو رہے ہیں", "you_blocked_community": "آپ نے یہ سماج بلاک کر دی ہے", "show": "دکھائیں", "plebbit_options": "پلیبٹ اختیارات", "general": "عام", "more_posts_last_week": "{{count}} پوسٹس پچھلے {{currentTimeFilterName}}: <1>پچھلے ہفتے کے مزید پوسٹس دکھائیں", "more_posts_last_month": "{{count}} پوسٹیں {{currentTimeFilterName}} میں: <1>پچھلے مہینے کی مزید پوسٹس دکھائیں", "profile_info": "آپ کا اکاؤنٹ u/{{shortAddress}} تخلیق کیا گیا ہے۔ <1>ڈسپلے نام سیٹ کریں, <2>بیگ اپ برآمد کریں, <3>مزید معلومات.", "show_all_instead": "{{timeFilterName}} سے پوسٹ دکھا رہا ہے، <1>اس کے بجائے سب کچھ دکھائیں", "subplebbit_offline_info": "کمیونٹی آف لائن ہو سکتی ہے اور شائع کرنا ناکام ہو سکتا ہے۔", "posts_last_synced_info": "پوسٹس آخری بار {{time}} پر سنک کیے گئے تھے، کمیونٹی آف لائن ہو سکتی ہے اور شائع کرنا ناکام ہو سکتا ہے۔", "import_account_backup": "<1>درآمد اکاؤنٹ کا بیک اپ", "export_account_backup": "<1>برآمد اکاؤنٹ کا بیک اپ", "save_reset_changes": "<1>محفوظ کریں یا <2>ری سیٹ کریں تبدیلیاں", "delete_this_account": "<1>حذف کریں یہ اکاؤنٹ", "create_new_account": "<1>نیا بنائیں اکاؤنٹ", "wallet_number": "والٹ #{{index}}", "view_more": "مزید دیکھیں", "submit_community": "اپنی کمیونٹی جمع کروائیں", "hide_avatars_from_replies": "جوابوں سے اوتار چھپائیں", "yes": "ہاں", "no": "نہیں", "are_you_sure": "کیا آپ کو یقین ہے؟", "a_short_title": "آپ کی کمیونٹی کے لیے ایک مختصر عنوان", "challenges": "چیلنجز", "challenges_subtitle": "اسپام کو روکنے کے لیے ایک یا زیادہ چیلنجز منتخب کریں", "add_a_challenge": "ایک چیلنج شامل کریں", "communities_you_moderate": "کمیونٹیز جو آپ ماڈریٹ کرتے ہیں", "blur_media": "NSFW/18+ کے طور پر نشان زد میڈیا کو دھندلا کریں", "nsfw_content": "NSFW مواد", "see_nsfw": "NSFW دیکھنے کے لیے کلک کریں", "see_nsfw_spoiler": "NSFW سپوائلر دیکھنے کے لیے کلک کریں", "always_show_nsfw": "کیا آپ ہمیشہ NSFW میڈیا دکھانا چاہتے ہیں؟", "always_show_nsfw_notice": "اوکے، ہم نے آپ کی ترجیحات ہمیشہ کے لئے NSFW میڈیا دکھانے کے لئے تبدیل کر دی ہیں۔", "content_options": "مواد کے اختیارات", "over_18": "18 سال سے اوپر؟", "must_be_over_18": "اس کمیونٹی کو دیکھنے کے لیے آپ کو 18+ ہونا ضروری ہے", "must_be_over_18_explanation": "اس مواد کو دیکھنے کے لیے آپ کو کم از کم اٹھارہ سال کا ہونا ضروری ہے۔ کیا آپ اٹھارہ سال سے اوپر ہیں اور بالغ مواد دیکھنے کے لیے تیار ہیں؟", "no_thank_you": "نہیں، شکریہ", "continue": "جاری رکھیں", "download_latest_android": "آخری Android ورژن ڈاؤن لوڈ کریں؟", "submitter": "جمع کرانے والا", "block_user": "صارف کو بلاک کریں", "unblock_user": "صارف کو ان بلاک کریں", "filtering_by_tag": "ٹیگ کے ذریعے فلٹرنگ: \"{{tag}}\"", "you_are_moderator": "آپ اس کمیونٹی کے ماڈریٹر ہیں", "you_are_admin": "آپ اس کمیونٹی کے ایڈمن ہیں", "you_are_owner": "آپ اس کمیونٹی کے مالک ہیں", "looking_for_more_posts": "مزید پوسٹس تلاش کر رہے ہیں", "loading_feed": "لوڈ ہو رہا ہے فیڈ", "downloading_posts": "پوسٹس ڈاؤن لوڈ ہو رہی ہیں", "post_is_pending": "پوسٹ زیر التواء ہے", "post_has_failed": "پوسٹ ناکام ہوگئی", "choose_file": "فائل منتخب کریں", "uploading": "اپ لوڈ ہو رہا ہے", "invalid_url_alert": "فراہم کردہ لنک درست URL نہیں ہے۔", "empty_comment_alert": "خالی تبصرہ پوسٹ نہیں کیا جا سکتا۔", "no_subscriptions_message": "<1>{{accountName}}, یہ Seedit پر آپ کا گھر ہے<2>جب آپ کوئی کمیونٹی پائیں جو آپ کو پسند ہو، <3>اس سے جڑیں <4>", "find_communities": "p/all پر کمیونٹیز تلاش کریں", "community_deleted": "کمیونٹی کامیابی کے ساتھ حذف ہوگئی۔", "go_to_a_community": "کمیونٹی میں جائیں", "enter_community_address": "کمیونٹی کا پتہ درج کریں", "all_communities": "تمام کمیونٹیز", "search_posts": "پوسٹس تلاش کریں", "found_n_results_for": "\"{{query}}\" کے لیے {{count}} پوسٹس ملیں", "clear_search": "تلاش کو صاف کریں", "no_matches_found_for": "\"{{query}}\" کے لئے کوئی میچ نہیں ملا", "searching": "تلاش کر رہا ہے", "hide_default_communities_from_topbar": "اوپر بار سے ڈیفالٹ کمیونٹیز چھپائیں", "media": "میڈیا", "hide_communities_tagged_as_nsfw": "NSFW/18+ کے طور پر ٹیگ کردہ کمیونٹیز کو چھپائیں", "tagged_as_adult": "\"ایڈلٹ\" کے طور پر ٹیگ کیا گیا", "tagged_as_gore": "\"گور\" کے طور پر ٹیگ کیا گیا", "tagged_as_anti": "\"اینٹی\" کے طور پر ٹیگ کیا گیا", "tagged_as_vulgar": "\"vulgar\" کے طور پر ٹیگ کیا گیا", "drop_here_or": "یہاں چھوڑیں یا", "upload_button_warning": "آٹو اپلوڈ آپ کے براؤزر کی CORS پالیسی کے ذریعہ بلاک کر دیا گیا ہے، لیکن یہ Seedit اینڈروئیڈ ایپ اور ڈیسک ٹاپ ایپ (Win/Mac/Linux) پر دستیاب ہے۔\n\nGitHub پر ڈاؤن لوڈ لنکس پیج پر جائیں؟", "create_community_warning": "کمیونٹی بنانے کے لیے مکمل نوڈ چلانا ضروری ہے۔ Seedit ڈیسک ٹاپ ایپ (Win/Mac/Linux) خودکار طور پر مکمل نوڈ چلاتا ہے۔\n\nGitHub پر ڈاؤن لوڈ لنکس پیج پر جائیں؟", "avatars": "اواتار", "filtering_by_nsfw": "NSFW کمیونٹیز کے ذریعے فلٹرنگ", "notifications": "اطلاعات", "new_replies_received": "نئی جوابات موصول ہوئے", "private_key_warning_title": "آپ کی نجی کلید دکھائی جائے گی", "private_key_warning_description": "آپ اپنے اکاؤنٹ کا ڈیٹا دیکھنے والے ہیں، جس میں آپ کی پرائیویٹ کی شامل ہے۔ آپ کو اپنی پرائیویٹ کی کبھی کسی کے ساتھ شیئر نہیں کرنی چاہیے۔", "go_back": "واپس جاؤ", "loading_editor": "ایڈیٹر لوڈ ہو رہا ہے", "show_thumbnails_next_to_links": "لنکس کے ساتھ تھمب نیلز دکھائیں", "dont_show_thumbnails_next_to_links": "لنکس کے ساتھ تھمب نیلز نہ دکھائیں", "show_thumbnails_based_on_community_media_preferences": "کمیونٹی کی میڈیا ترجیحات کی بنیاد پر تھمب نیل دکھائیں", "media_previews": "میڈیا پریویوز", "auto_expand_media_previews": "میڈیا پری ویوز کو خود بخود پھیلائیں", "dont_auto_expand_media_previews_on_comments_pages": "تبصرہ صفحات پر میڈیا پریویوز کو خودکار طور پر نہ بڑھائیں", "video_player": "ویڈیو پلیئر", "autoplay_videos_on_comments_page": "کمنٹس پیج پر ویڈیوز خودکار چلائیں", "mute_videos_by_default": "ویڈیوز کو ڈیفالٹ طور پر خاموش کریں", "expand_media_previews_based_on_community_media_preferences": "کمیونٹی کی میڈیا ترجیحات کی بنیاد پر میڈیا پریویوز کو وسعت دیں", "show_all_nsfw": "تمام NSFW دکھائیں", "hide_all_nsfw": "تمام NSFW چھپائیں", "tags": "ٹیگز", "moderator_of": "منتظم", "not_subscriber_nor_moderator": "آپ کسی کمیونٹی کے سبسکرائبر یا ماڈریٹر نہیں ہیں۔", "more_posts_last_year": "{{count}} پوسٹس پچھلے {{currentTimeFilterName}} میں: <1>پچھلے سال کی مزید پوسٹس دکھائیں", "editor_fallback_warning": "ایڈوانس ایڈیٹر لوڈ کرنے میں ناکام، بیک اپ کے طور پر بنیادی ٹیکسٹ ایڈیٹر استعمال کر رہے ہیں۔", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "آپ پہلے سے ہی اس کمیونٹی کو دیکھ رہے ہیں" } ================================================ FILE: public/translations/vi/default.json ================================================ { "about": "Về", "comments": "bình luận", "preferences": "Tùy chỉnh", "submit": "Gửi", "dark": "Tối", "light": "Sáng", "my_communities": "Cộng đồng của tôi", "home": "Trang chủ", "all": "Tất cả", "submitted": "Đã gửi", "post_by": "Bởi", "post_to": "Tới", "post_no_comments": "Bình luận", "post_comment": "Bình luận", "post_comments": "Bình luận", "share": "Chia sẻ", "save": "Lưu", "hide": "Ẩn", "report": "Báo cáo", "crosspost": "Đăng chéo", "time_1_minute_ago": "1 phút trước", "time_x_minutes_ago": "{{count}} phút trước", "time_1_hour_ago": "1 giờ trước", "time_x_hours_ago": "{{count}} giờ trước", "time_1_day_ago": "1 ngày trước", "time_x_days_ago": "{{count}} ngày trước", "time_1_month_ago": "1 tháng trước", "time_x_months_ago": "{{count}} tháng trước", "time_1_year_ago": "1 năm trước", "time_x_years_ago": "{{count}} năm trước", "spoiler": "Spoiler", "reply_reply": "Trả lời", "reply_sorted_by": "Sắp xếp theo", "all_comments": "Tất cả {{count}} bình luận", "no_comments": "Không có bình luận (chưa)", "reply_score_singular": "1 điểm", "reply_score_plural": "{{score}} điểm", "removed": "Đã xóa", "one_comment": "1 bình luận", "submit_url_description": "nhúng phương tiện bằng cách đăng liên kết trực tiếp của nó (kết thúc bằng .jpg, .gif, .mp4, v.v.)", "title": "tiêu đề", "text": "văn bản", "required": "bắt buộc", "optional": "tùy chọn", "community_address": "địa chỉ cộng đồng", "submit_choose": "chọn nơi để đăng", "submit_notice": "xin hãy tuân thủ các quy định của cộng đồng, seedit không có quản trị viên toàn cầu.", "challenge_from": "Thách thức từ p/{{subplebbit}}", "challenge_for_post": "cho bài viết: \"{{publicationContent}}\"", "challenge_for_reply": "cho câu trả lời u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} trong số {{total}}", "cancel": "Hủy bỏ", "previous": "Trước", "next": "Tiếp theo", "loading": "Đang tải", "pending": "Đang chờ duyệt", "submit_subscriptions_notice": "Cộng đồng được đề xuất", "submit_subscriptions": "các cộng đồng bạn đã đăng ký", "rules_for": "quy tắc cho", "no_communities_found": "Không tìm thấy cộng đồng nào trên <1>https://github.com/bitsocialhq/lists", "connect_community_notice": "Để kết nối với cộng đồng, sử dụng 🔎 ở góc trên bên phải", "options": "tùy chọn", "hide_options": "ẩn tùy chọn", "failed": "thất bại", "time_1_minute": "1 phút", "time_x_minutes": "{{count}} phút", "time_1_hour": "1 giờ", "time_x_hours": "{{count}} giờ", "time_1_day": "1 ngày", "time_x_days": "{{count}} ngày", "time_1_month": "1 tháng", "time_x_months": "{{count}} tháng", "time_1_year": "1 năm", "time_x_years": "{{count}} năm", "submit_post": "Gửi bài viết mới", "create_your_community": "Tạo cộng đồng riêng của bạn", "moderators": "quản trị viên", "about_moderation": "về đội ngũ quản lý", "join": "Tham gia", "leave": "rời", "created_by": "tạo bởi {{creatorAddress}}", "community_for": "một cộng đồng cho {{date}}", "post_submitted_on": "bài viết này đã được đăng vào ngày {{postDate}}", "users_online": "{{count}} người dùng ở đây bây giờ", "point": "điểm", "points": "điểm", "share_link": "chia sẻ liên kết", "upvoted": "đã cho điểm tích cực", "announcement": "thông báo", "child": "{{childrenCount}} con", "children": "{{childrenCount}} con", "moderation": "kiểm duyệt", "interface_language": "ngôn ngữ giao diện", "theme": "chủ đề", "account": "tài khoản", "display_name": "tên hiển thị", "crypto_address": "địa chỉ tiền điện tử", "check": "kiểm tra", "crypto_address_verification": "nếu địa chỉ tiền điện tử được giải quyết p2p", "create": "tạo", "delete": "xóa", "locked": "bị khóa", "reason": "lý do", "sorted_by": "sắp xếp theo", "downvoted": "đã downvote", "hidden": "ẩn", "saved": "đã lưu", "overview": "tổng quan", "user_since": "Người dùng ít nhất từ {{time}}", "post_karma": "karma bài viết", "comment_karma": "karma bình luận", "full_comments": "tất cả bình luận", "context": "bối cảnh", "block": "chặn", "post": "bài viết", "unhide": "hiện", "unblock": "bỏ chặn", "undo": "hoàn tác", "post_hidden": "bài viết bị ẩn", "link_copied": "liên kết đã được sao chép", "block_community": "chặn cộng đồng", "unblock_community": "bỏ chặn cộng đồng", "search_feed_post": "Tìm kiếm một bài viết trong feed này", "from": "từ", "via": "qua", "sent": "đã gửi", "unread": "chưa đọc", "comment_replies": "trả lời bình luận", "post_replies": "trả lời bài viết", "messages": "tin nhắn", "inbox": "hộp thư đến", "mark_all_read": "đánh dấu tất cả là đã đọc", "comment_reply": "trả lời bình luận", "post_reply": "trả lời bài đăng", "show_parent": "hiển thị bài viết được tham khảo", "no_posts": "không có bài viết", "media_url": "URL phương tiện", "post_locked_info": "Bài đăng này {{state}}. Bạn sẽ không thể bình luận.", "members_count": "{{count}} thành viên", "communities": "cộng đồng", "edit": "sửa đổi", "moderator": "Quản trị viên", "description": "Mô tả", "rules": "Quy tắc", "save_options": "Lưu tùy chọn", "logo": "Logo", "address": "Địa chỉ", "nothing_found": "Dường như không có gì ở đây", "stickied_comment": "Bình luận ghim", "posts_last_synced": "Bài viết gần nhất đã đồng bộ {{dateAgo}}", "community_settings": "Cài đặt cộng đồng", "moderation_tools": "Công cụ kiểm duyệt", "submit_to": "Gửi đến <1>{{link}}", "edit_subscriptions": "Chỉnh sửa đăng ký", "delete_confirm": "Bạn có chắc chắn muốn xóa {{value}} không?", "saving": "Đang lưu", "deleted": "Đã xóa", "online": "Trực tuyến", "offline": "Ngoại tuyến", "subscriber": "Người đăng ký", "join_communities_notice": "Nhấn vào các nút <1>{{join}} hoặc <2>{{leave}} để chọn xem cộng đồng nào sẽ xuất hiện trên trang chính.", "below_subscribed": "Dưới đây là các cộng đồng mà bạn đã đăng ký.", "not_subscribed": "Bạn chưa đăng ký bất kỳ cộng đồng nào.", "below_moderator_access": "Dưới đây là các cộng đồng mà bạn có quyền truy cập với tư cách là người quản trị viên.", "not_moderator": "Bạn không phải là người quản trị viên trên bất kỳ cộng đồng nào.", "create_community": "Tạo cộng đồng", "single_comment_notice": "Bạn đang xem một luồng bình luận duy nhất", "single_comment_link": "Xem phần còn lại của các bình luận", "owner_settings_notice": "Chỉ chủ sở hữu cộng đồng mới có thể chỉnh sửa cài đặt của nó.", "preview": "xem trước", "shown_in_sidebar": "được hiển thị ở thanh bên của cộng đồng của bạn", "community_logo_info": "đặt một biểu trưng cộng đồng bằng cách sử dụng liên kết hình ảnh trực tiếp của nó (kết thúc bằng .jpg, .png)", "moderators_setting_info": "cho phép người dùng khác kiểm duyệt và đăng bài mà không cần đối mặt với thách thức", "vote": "bỏ phiếu", "passing": "đi qua", "rejecting": "từ chối", "add_moderator": "thêm một quản trị viên", "add_rule": "thêm một quy tắc", "json_settings": "Cài đặt JSON", "json_settings_info": "nhanh chóng sao chép hoặc dán cài đặt của cộng đồng", "address_setting_info": "Thiết lập một địa chỉ cộng đồng có thể đọc được bằng cách sử dụng một tên miền tiền điện tử", "enter_crypto_address": "Vui lòng nhập địa chỉ tiền điện tử hợp lệ.", "check_for_updates": "<1>Kiểm tra cập nhật", "refresh_to_update": "Làm mới trang để cập nhật", "latest_development_version": "Bạn đang sử dụng phiên bản phát triển mới nhất, commit {{commit}}. Để sử dụng phiên bản ổn định, hãy truy cập {{link}}.", "latest_stable_version": "Bạn đang sử dụng phiên bản ổn định mới nhất, seedit v{{version}}.", "new_development_version": "Phiên bản phát triển mới có sẵn, commit {{newCommit}}. Bạn đang sử dụng commit {{oldCommit}}.", "new_stable_version": "Phiên bản ổn định mới có sẵn, seedit v{{newVersion}}. Bạn đang sử dụng seedit v{{oldVersion}}.", "download_latest_desktop": "Tải xuống phiên bản máy tính để bàn mới nhất tại đây: {{link}}", "contribute_on_github": "Đóng góp trên GitHub", "no_media_found": "Không tìm thấy phương tiện", "no_image_found": "Không tìm thấy hình ảnh", "warning_spam": "Cảnh báo: không có thách thức nào được chọn, cộng đồng dễ bị tấn công spam.", "hide_help": "Ẩn trợ giúp", "formatting_help": "Trợ giúp định dạng", "you_see": "bạn thấy", "you_type": "Bạn gõ", "italics": "nghiêng", "bold": "đậm", "quoted_text": "văn bản trích dẫn", "item": "mục", "delete_community": "xóa cộng đồng", "delete_community_description": "Xóa cộng đồng này một cách vĩnh viễn. Nội dung của nó vẫn có thể được trồng bởi các người đồng nghiệp", "add": "thêm", "owner": "chủ sở hữu", "admin": "quản trị viên", "settings_saved": "Cài đặt đã được lưu cho p/{{subplebbitAddress}}", "continue_thread": "tiếp tục chủ đề này", "mod_edit_reason": "Lý do chỉnh sửa của mod", "double_confirm": "Bạn có chắc chắn không? Hành động này không thể hoàn tác.", "crypto_address_not_yours": "Địa chỉ tiền điện tử thuộc về một tài khoản khác.", "crypto_address_yours": "Địa chỉ tiền điện tử thuộc về tài khoản này.", "crypto_address_not_resolved": "Địa chỉ tiền điện tử vẫn chưa được giải quyết.", "submit_to_string": "Gửi đến {{string}}", "page_not_found": "Không tìm thấy trang", "not_found_description": "Trang bạn yêu cầu không tồn tại", "last_edited": "sửa lần cuối {{timestamp}}", "view_spoiler": "xem spoiler", "default_communities": "các cộng đồng mặc định", "avatar": "avatar", "pending_edit": "chỉnh sửa đang chờ", "failed_edit": "chỉnh sửa thất bại", "node_stats": "thống kê nút", "version": "phiên bản", "edit_reason": "lý do chỉnh sửa", "view_parent_comment": "xem bình luận cha", "chain_ticker": "Ticker chuỗi khối", "token_address_whitelist": "Địa chỉ token (<1>chỉ danh sách trắng)", "token_id": "ID token", "paste_signature": "Dán chữ ký", "copy_message_etherscan": "<1>{{copy}} tin nhắn để ký trên <2>etherscan", "copy": "sao chép", "copied": "đã sao chép", "missing_chain_ticker": "Ticker chuỗi khối bị thiếu", "missing_token_address": "Địa chỉ token bị thiếu", "missing_token_id": "Thiếu ID của token", "missing_signature": "Thiếu chữ ký", "edited_timestamp": "Đã chỉnh sửa {{timestamp}}", "ban_user_for": "Cấm người dùng trong <1> ngày", "crypto_wallets": "Ví tiền điện tử", "wallet_address": "Địa chỉ ví", "remove": "Xóa bỏ", "add_wallet": "<1>Thêm một ví tiền điện tử", "show_settings": "Hiển thị cài đặt", "hide_settings": "Ẩn cài đặt", "undelete": "Khôi phục", "downloading_comments": "đang tải xuống bình luận", "you_blocked_community": "Bạn đã chặn cộng đồng này", "show": "hiển thị", "plebbit_options": "tùy chọn plebbit", "general": "chung", "more_posts_last_week": "{{count}} bài viết tuần trước {{currentTimeFilterName}}: <1>hiển thị thêm bài viết từ tuần trước", "more_posts_last_month": "{{count}} bài đăng trong {{currentTimeFilterName}}: <1>hiển thị thêm bài đăng từ tháng trước", "profile_info": "Tài khoản của bạn u/{{shortAddress}} đã được tạo. <1>Đặt tên hiển thị, <2>xuất bản sao lưu, <3>tìm hiểu thêm.", "show_all_instead": "Đang hiển thị bài viết từ {{timeFilterName}}, <1>hiển thị tất cả thay vào đó", "subplebbit_offline_info": "Cộng đồng có thể offline và xuất bản có thể thất bại.", "posts_last_synced_info": "Các bài viết được đồng bộ hóa lần cuối lúc {{time}}, cộng đồng có thể ngoại tuyến và đăng tải có thể không thành công.", "import_account_backup": "<1>nhập sao lưu tài khoản", "export_account_backup": "<1>xuất sao lưu tài khoản", "save_reset_changes": "<1>lưu hoặc <2>đặt lại thay đổi", "delete_this_account": "<1>xóa tài khoản này", "create_new_account": "<1>tạo tài khoản mới", "wallet_number": "ví #{{index}}", "view_more": "xem thêm", "submit_community": "Gửi cộng đồng của bạn", "hide_avatars_from_replies": "Ẩn avatar trong các câu trả lời", "yes": "vâng", "no": "không", "are_you_sure": "Bạn chắc chắn chứ?", "a_short_title": "Một tiêu đề ngắn cho cộng đồng của bạn", "challenges": "Thử thách", "challenges_subtitle": "Chọn một hoặc nhiều thử thách để ngừng spam", "add_a_challenge": "Thêm một thử thách", "communities_you_moderate": "Cộng đồng bạn quản lý", "blur_media": "Mờ phương tiện được đánh dấu là NSFW/18+", "nsfw_content": "Nội dung NSFW", "see_nsfw": "Nhấp để xem NSFW", "see_nsfw_spoiler": "Nhấp để xem NSFW spoiler", "always_show_nsfw": "Luôn hiển thị media NSFW?", "always_show_nsfw_notice": "Được rồi, chúng tôi đã thay đổi sở thích của bạn để luôn hiển thị media NSFW.", "content_options": "Tùy chọn nội dung", "over_18": "Trên 18?", "must_be_over_18": "Bạn phải trên 18 tuổi để xem cộng đồng này", "must_be_over_18_explanation": "Bạn phải ít nhất mười tám tuổi để xem nội dung này. Bạn có trên mười tám tuổi và sẵn sàng xem nội dung người lớn không?", "no_thank_you": "Không, cảm ơn", "continue": "Tiếp tục", "download_latest_android": "Tải phiên bản Android mới nhất?", "submitter": "Người gửi", "block_user": "Chặn người dùng", "unblock_user": "Bỏ chặn người dùng", "filtering_by_tag": "Lọc theo thẻ: \"{{tag}}\"", "you_are_moderator": "Bạn là một người quản trị của cộng đồng này", "you_are_admin": "Bạn là quản trị viên của cộng đồng này", "you_are_owner": "Bạn là chủ sở hữu của cộng đồng này", "looking_for_more_posts": "Tìm kiếm thêm bài viết", "loading_feed": "Đang tải feed", "downloading_posts": "Đang tải bài viết", "post_is_pending": "Bài đăng đang chờ", "post_has_failed": "Bài viết đã thất bại", "choose_file": "Chọn tệp", "uploading": "Đang tải lên", "invalid_url_alert": "Liên kết được cung cấp không phải là một URL hợp lệ.", "empty_comment_alert": "Không thể đăng bình luận trống.", "no_subscriptions_message": "<1>{{accountName}}, đây là nhà của bạn trên Seedit<2>Khi bạn tìm thấy một cộng đồng mà bạn thích, <3>gia nhập với <4>", "find_communities": "tìm cộng đồng trên p/all", "community_deleted": "Cộng đồng đã được xóa thành công.", "go_to_a_community": "Đi đến một cộng đồng", "enter_community_address": "Nhập địa chỉ cộng đồng", "all_communities": "tất cả cộng đồng", "search_posts": "tìm kiếm bài viết", "found_n_results_for": "tìm thấy {{count}} bài đăng cho \"{{query}}\"", "clear_search": "xóa tìm kiếm", "no_matches_found_for": "không tìm thấy kết quả cho \"{{query}}\"", "searching": "đang tìm kiếm", "hide_default_communities_from_topbar": "Ẩn cộng đồng mặc định từ thanh trên", "media": "phương tiện truyền thông", "hide_communities_tagged_as_nsfw": "Ẩn cộng đồng được gắn thẻ là NSFW/18+", "tagged_as_adult": "gắn thẻ là \"người lớn\"", "tagged_as_gore": "được gắn thẻ là \"gore\"", "tagged_as_anti": "được gắn thẻ là \"anti\"", "tagged_as_vulgar": "được gắn thẻ là \"vulgar\"", "drop_here_or": "Thả ở đây hoặc", "upload_button_warning": "Tải lên tự động bị chặn bởi chính sách CORS của trình duyệt của bạn, nhưng có sẵn trên ứng dụng Seedit Android và ứng dụng desktop (Win/Mac/Linux).\n\nĐi đến trang liên kết tải xuống trên GitHub?", "create_community_warning": "Tạo cộng đồng yêu cầu chạy một node đầy đủ. Ứng dụng Seedit desktop (Win/Mac/Linux) tự động chạy một node đầy đủ.\n\nĐi đến trang liên kết tải xuống trên GitHub?", "avatars": "Ảnh đại diện", "filtering_by_nsfw": "Lọc theo cộng đồng NSFW", "notifications": "Thông báo", "new_replies_received": "đã nhận phản hồi mới", "private_key_warning_title": "Khóa riêng tư của bạn sẽ được hiển thị", "private_key_warning_description": "Bạn sắp xem dữ liệu tài khoản của mình, bao gồm cả khóa riêng tư. Bạn không nên chia sẻ khóa riêng tư của mình với bất kỳ ai.", "go_back": "Quay lại", "loading_editor": "Đang tải trình soạn thảo", "show_thumbnails_next_to_links": "Hiển thị hình thu nhỏ bên cạnh các liên kết", "dont_show_thumbnails_next_to_links": "Không hiển thị ảnh thu nhỏ bên cạnh liên kết", "show_thumbnails_based_on_community_media_preferences": "Hiển thị hình thu nhỏ dựa trên sở thích truyền thông của cộng đồng đó", "media_previews": "xem trước phương tiện", "auto_expand_media_previews": "Tự động mở rộng bản xem trước phương tiện", "dont_auto_expand_media_previews_on_comments_pages": "Không tự động mở rộng xem trước phương tiện trên trang bình luận", "video_player": "Trình phát video", "autoplay_videos_on_comments_page": "Phát video tự động trên trang bình luận", "mute_videos_by_default": "Tắt tiếng video theo mặc định", "expand_media_previews_based_on_community_media_preferences": "Mở rộng bản xem trước phương tiện dựa trên sở thích phương tiện của cộng đồng đó", "show_all_nsfw": "hiển thị tất cả NSFW", "hide_all_nsfw": "ẩn tất cả NSFW", "tags": "Thẻ", "moderator_of": "quản trị viên của", "not_subscriber_nor_moderator": "Bạn không phải là người đăng ký cũng không phải là người điều hành của bất kỳ cộng đồng nào.", "more_posts_last_year": "{{count}} bài viết trong {{currentTimeFilterName}} vừa qua: <1>hiển thị thêm bài viết từ năm ngoái", "editor_fallback_warning": "trình soạn thảo nâng cao không tải được, đang sử dụng trình soạn thảo văn bản cơ bản làm phương án dự phòng.", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "Bạn đã đang xem cộng đồng này" } ================================================ FILE: public/translations/zh/default.json ================================================ { "about": "关于", "comments": "评论", "preferences": "偏好设置", "submit": "提交", "dark": "暗", "light": "浅色", "my_communities": "我的社群", "home": "首页", "all": "全部", "submitted": "已提交", "post_by": "由", "post_to": "至", "post_no_comments": "评论", "post_comment": "评论", "post_comments": "评论", "share": "分享", "save": "保存", "hide": "隐藏", "report": "举报", "crosspost": "跨贴", "time_1_minute_ago": "1分钟前", "time_x_minutes_ago": "{{count}}分钟前", "time_1_hour_ago": "1小时前", "time_x_hours_ago": "{{count}}小时前", "time_1_day_ago": "1天前", "time_x_days_ago": "{{count}}天前", "time_1_month_ago": "1个月前", "time_x_months_ago": "{{count}}个月前", "time_1_year_ago": "1年前", "time_x_years_ago": "{{count}}年前", "spoiler": "剧透", "reply_reply": "回复", "reply_sorted_by": "排序方式", "all_comments": "全部 {{count}} 个评论", "no_comments": "暂无评论(还)", "reply_score_singular": "1 分", "reply_score_plural": "{{score}} 分", "removed": "已删除", "one_comment": "1 条评论", "submit_url_description": "通过发布其直接链接(以.jpg、.gif、.mp4等结尾)嵌入媒体", "title": "标题", "text": "文本", "required": "必须的", "optional": "可选的", "community_address": "社区地址", "submit_choose": "选择发布位置", "submit_notice": "请注意社区的规则,seedit没有全球管理员。", "challenge_from": "来自 p/{{subplebbit}} 的挑战", "challenge_for_post": "对于帖子: \"{{publicationContent}}\"", "challenge_for_reply": "对于回复 u/{{parentAddress}}: \"{{publicationContent}}\"", "challenge_counter": "{{index}} 共 {{total}}", "cancel": "取消", "previous": "上一个", "next": "下一个", "loading": "加载中", "pending": "待审批", "submit_subscriptions_notice": "建议的社区", "submit_subscriptions": "您订阅的社区", "rules_for": "规则适用于", "no_communities_found": "在<1>https://github.com/bitsocialhq/lists上未找到任何社区", "connect_community_notice": "要连接到社区,请在右上角使用 🔎", "options": "选项", "hide_options": "隐藏选项", "failed": "失败", "time_1_minute": "1 分钟", "time_x_minutes": "{{count}} 分钟", "time_1_hour": "1 小时", "time_x_hours": "{{count}} 小时", "time_1_day": "1 天", "time_x_days": "{{count}} 天", "time_1_month": "1 个月", "time_x_months": "{{count}} 个月", "time_1_year": "1 年", "time_x_years": "{{count}} 年", "submit_post": "提交新帖", "create_your_community": "创建您自己的社区", "moderators": "版主", "about_moderation": "关于管理团队", "join": "加入", "leave": "离开", "created_by": "创建者:{{creatorAddress}}", "community_for": "一个社区{{date}}", "post_submitted_on": "此帖子提交于{{postDate}}", "users_online": "现在有{{count}}用户在这里", "point": "点", "points": "点数", "share_link": "分享链接", "upvoted": "点赞了", "announcement": "公告", "child": "{{childrenCount}} 孩子们", "children": "{{childrenCount}} 孩子", "moderation": "管理", "interface_language": "界面语言", "theme": "主题", "account": "帐户", "display_name": "显示名称", "crypto_address": "加密地址", "check": "检查", "crypto_address_verification": "如果加密地址是p2p解决的", "create": "创建", "delete": "删除", "locked": "已锁定", "reason": "原因", "sorted_by": "排序方式", "downvoted": "负投票", "hidden": "隐藏", "saved": "已保存", "overview": "概观", "user_since": "至少从{{time}}开始的用户", "post_karma": "帖子声望", "comment_karma": "评论声望", "full_comments": "完整评论", "context": "上下文", "block": "封锁", "post": "帖子", "unhide": "显示", "unblock": "解锁", "undo": "撤销", "post_hidden": "隐藏帖子", "link_copied": "链接已复制", "block_community": "封锁社区", "unblock_community": "解锁社区", "search_feed_post": "在此订阅中搜索帖子", "from": "从", "via": "通过", "sent": "已发送", "unread": "未读", "comment_replies": "评论回复", "post_replies": "帖子回复", "messages": "消息", "inbox": "收件箱", "mark_all_read": "全部标记为已读", "comment_reply": "回复评论", "post_reply": "回复帖子", "show_parent": "显示被引用的帖子", "no_posts": "没有帖子", "media_url": "媒体链接", "post_locked_info": "此帖子{{state}}。 您将无法发表评论。", "members_count": "{{count}} 成员", "communities": "社区", "edit": "编辑", "moderator": "版主", "description": "描述", "rules": "规则", "save_options": "保存选项", "logo": "标志", "address": "地址", "nothing_found": "这里似乎什么都没有", "stickied_comment": "置顶评论", "posts_last_synced": "最后同步的帖子 {{dateAgo}}", "community_settings": "社区设置", "moderation_tools": "管理工具", "submit_to": "提交至 <1>{{link}}", "edit_subscriptions": "编辑订阅", "delete_confirm": "您确定要删除 {{value}} 吗?", "saving": "正在保存", "deleted": "已删除", "online": "在线", "offline": "离线", "subscriber": "订阅者", "join_communities_notice": "点击 <1>{{join}} 或 <2>{{leave}} 按钮选择在主页上显示哪些社区。", "below_subscribed": "以下是您订阅的社区。", "not_subscribed": "您尚未订阅任何社区。", "below_moderator_access": "以下是您作为版主拥有访问权限的社区。", "not_moderator": "您不是任何社区的版主。", "create_community": "创建社区", "single_comment_notice": "您正在查看单个评论的主题", "single_comment_link": "查看其余评论", "owner_settings_notice": "只有社区的所有者才能编辑其设置。", "preview": "预览", "shown_in_sidebar": "显示在您社区的侧边栏中", "community_logo_info": "使用其直接图像链接(以.jpg、.png结尾)设置社区徽标", "moderators_setting_info": "允许其他用户在没有挑战的情况下进行管理和发布", "vote": "投票", "passing": "通过", "rejecting": "拒绝", "add_moderator": "添加一名版主", "add_rule": "添加一条规则", "json_settings": "JSON设置", "json_settings_info": "快速复制或粘贴社区设置", "address_setting_info": "使用加密域名设置可读的社区地址", "enter_crypto_address": "请输入有效的加密货币地址。", "check_for_updates": "<1>检查 更新", "refresh_to_update": "刷新页面以更新", "latest_development_version": "您正在使用最新的开发版本,提交 {{commit}}。要使用稳定版本,请前往 {{link}}。", "latest_stable_version": "您正在使用最新的稳定版本,seedit v{{version}}。", "new_development_version": "新的开发版本可用,commit {{newCommit}}。您正在使用commit {{oldCommit}}。", "new_stable_version": "新的稳定版可用,seedit v{{newVersion}}。您正在使用seedit v{{oldVersion}}。", "download_latest_desktop": "在这里下载最新的桌面版本: {{link}}", "contribute_on_github": "在 GitHub 上贡献", "no_media_found": "未找到媒体", "no_image_found": "未找到图像", "warning_spam": "警告:未选择任何挑战,社区容易受到垃圾邮件攻击。", "hide_help": "隐藏帮助", "formatting_help": "格式化帮助", "you_see": "你看到", "you_type": "你在输入", "italics": "斜体", "bold": "粗体", "quoted_text": "引用文本", "item": "项目", "delete_community": "删除社区", "delete_community_description": "永久删除此社区。 其内容可能仍然由对等节点播种", "add": "添加", "owner": "所有者", "admin": "管理员", "settings_saved": "已保存 p/{{subplebbitAddress}} 的设置", "continue_thread": "继续这个主题", "mod_edit_reason": "版主编辑原因", "double_confirm": "您真的确定吗?此操作不可逆转。", "crypto_address_not_yours": "加密地址属于另一个帐户。", "crypto_address_yours": "加密地址属于此帐户。", "crypto_address_not_resolved": "加密地址尚未解析。", "submit_to_string": "提交到{{string}}", "page_not_found": "页面未找到", "not_found_description": "您请求的页面不存在", "last_edited": "上次编辑时间:{{timestamp}}", "view_spoiler": "查看剧透", "default_communities": "默认社区", "avatar": "头像", "pending_edit": "待处理的编辑", "failed_edit": "编辑失败", "node_stats": "节点统计", "version": "版本", "edit_reason": "编辑原因", "view_parent_comment": "查看父级评论", "chain_ticker": "区块链标记", "token_address_whitelist": "代币地址(<1>仅限白名单)", "token_id": "令牌ID", "paste_signature": "粘贴签名", "copy_message_etherscan": "<1>{{copy}} 在<2>etherscan上签名的消息", "copy": "复制", "copied": "已复制", "missing_chain_ticker": "缺失的区块链标记", "missing_token_address": "缺失的代币地址", "missing_token_id": "缺失的代币ID", "missing_signature": "缺失的签名", "edited_timestamp": "编辑于{{timestamp}}", "ban_user_for": "封禁用户 <1> 天", "crypto_wallets": "加密货币钱包", "wallet_address": "钱包地址", "remove": "删除", "add_wallet": "<1>添加一个加密货币钱包", "show_settings": "显示设置", "hide_settings": "隐藏设置", "undelete": "取消删除", "downloading_comments": "正在下载评论", "you_blocked_community": "您已封锁了此社区", "show": "显示", "plebbit_options": "plebbit选项", "general": "一般", "more_posts_last_week": "{{count}} 帖子上个 {{currentTimeFilterName}}: <1>显示更多上周的帖子", "more_posts_last_month": "{{count}} 帖子在 {{currentTimeFilterName}}:<1>显示更多来自上个月的帖子", "profile_info": "您的账户 u/{{shortAddress}} 已创建。 <1>设置显示名称, <2>导出备份, <3>了解更多。", "show_all_instead": "显示自 {{timeFilterName}} 以来的帖子,<1>显示所有帖子", "subplebbit_offline_info": "社区可能处于离线状态,发布可能会失败。", "posts_last_synced_info": "帖子最后同步于{{time}},社区可能离线,发布可能失败。", "import_account_backup": "<1>导入账户备份", "export_account_backup": "<1>导出账户备份", "save_reset_changes": "<1>保存或<2>重置更改", "delete_this_account": "<1>删除此账户", "create_new_account": "<1>创建新账户", "wallet_number": "钱包 #{{index}}", "view_more": "查看更多", "submit_community": "提交您的社区", "hide_avatars_from_replies": "隐藏回复中的头像", "yes": "是的", "no": "不是", "are_you_sure": "你确定吗?", "a_short_title": "为您的社区提供一个简短的标题", "challenges": "挑战", "challenges_subtitle": "选择一个或多个挑战来防止垃圾邮件", "add_a_challenge": "添加一个挑战", "communities_you_moderate": "您管理的社区", "blur_media": "模糊标记为NSFW/18+的媒体", "nsfw_content": "NSFW 内容", "see_nsfw": "点击查看 NSFW", "see_nsfw_spoiler": "点击查看 NSFW 剧透", "always_show_nsfw": "始终显示NSFW媒体?", "always_show_nsfw_notice": "好的,我们已将您的偏好更改为始终显示NSFW媒体。", "content_options": "内容选项", "over_18": "超过18岁?", "must_be_over_18": "您必须年满18岁才能查看此社区", "must_be_over_18_explanation": "您必须至少年满18岁才能查看此内容。您是否已超过18岁并愿意查看成人内容?", "no_thank_you": "不,谢谢", "continue": "继续", "download_latest_android": "下载最新的安卓版本?", "submitter": "提交者", "block_user": "屏蔽用户", "unblock_user": "解除屏蔽用户", "filtering_by_tag": "按标签过滤:\"{{tag}}\"", "you_are_moderator": "您是这个社区的管理员", "you_are_admin": "您是这个社区的管理员", "you_are_owner": "您是这个社区的拥有者", "looking_for_more_posts": "寻找更多帖子", "loading_feed": "加载中...", "downloading_posts": "正在下载帖子", "post_is_pending": "帖子待处理中", "post_has_failed": "发布失败", "choose_file": "选择文件", "uploading": "上传中", "invalid_url_alert": "提供的链接不是有效的 URL。", "empty_comment_alert": "无法发布空评论。", "no_subscriptions_message": "<1>{{accountName}}, 这是你在 Seedit 上的家<2>当你找到一个你喜欢的社区时, <3>加入 <4>", "find_communities": "在p/all上查找社区", "community_deleted": "社区已成功删除。", "go_to_a_community": "去一个社区", "enter_community_address": "输入社区地址", "all_communities": "所有社区", "search_posts": "搜索帖子", "found_n_results_for": "找到 \"{{query}}\" 的 {{count}} 条帖子", "clear_search": "清除搜索", "no_matches_found_for": "未找到 \"{{query}}\" 的匹配项", "searching": "搜索中", "hide_default_communities_from_topbar": "从顶部栏中隐藏默认社区", "media": "媒体", "hide_communities_tagged_as_nsfw": "隐藏标记为 NSFW/18+ 的社区", "tagged_as_adult": "标记为“成人”", "tagged_as_gore": "标记为 \"gore\"", "tagged_as_anti": "标记为\"反\"", "tagged_as_vulgar": "标记为“vulgar”", "drop_here_or": "拖放到此处或", "upload_button_warning": "自动上传被浏览器的CORS政策阻止,但可以在Seedit Android应用程序和桌面应用程序(Win/Mac/Linux)上使用。\n\n前往GitHub上的下载链接页面?", "create_community_warning": "创建社区需要运行一个完整的节点。Seedit桌面应用程序(Win/Mac/Linux)会自动运行一个完整的节点。\n\n前往GitHub上的下载链接页面?", "avatars": "头像", "filtering_by_nsfw": "根据NSFW社区进行过滤", "notifications": "通知", "new_replies_received": "收到新回复", "private_key_warning_title": "您的私钥将被显示", "private_key_warning_description": "您即将查看您的账户数据,其中包括您的私钥。您永远不应与任何人分享您的私钥。", "go_back": "返回", "loading_editor": "正在加载编辑器", "show_thumbnails_next_to_links": "在链接旁显示缩略图", "dont_show_thumbnails_next_to_links": "不要在链接旁显示缩略图", "show_thumbnails_based_on_community_media_preferences": "根据该社区的媒体偏好显示缩略图", "media_previews": "媒体预览", "auto_expand_media_previews": "自动展开媒体预览", "dont_auto_expand_media_previews_on_comments_pages": "不要在评论页面自动展开媒体预览", "video_player": "视频播放器", "autoplay_videos_on_comments_page": "在评论页面自动播放视频", "mute_videos_by_default": "默认静音视频", "expand_media_previews_based_on_community_media_preferences": "根据该社区的媒体偏好展开媒体预览", "show_all_nsfw": "显示所有 NSFW", "hide_all_nsfw": "隐藏所有NSFW", "tags": "标签", "moderator_of": "版主", "not_subscriber_nor_moderator": "您既不是任何社区的订阅者,也不是管理员。", "more_posts_last_year": "{{count}} 篇帖子在过去的 {{currentTimeFilterName}}:<1>显示去年的更多帖子", "editor_fallback_warning": "高级编辑器加载失败,使用基础文本编辑器作为备用。", "hot": "hot", "new": "new", "active": "active", "top": "top", "best": "best", "old": "old", "unstoppable_by_design": "...unstoppable by design.", "servers_are_overrated": "...servers are overrated.", "cryptographic_playground": "... cryptographic playground.", "where_you_own_the_keys": "...where you own the keys.", "no_middleman_here": "...no middleman here.", "join_the_decentralution": "...join the decentralution.", "because_privacy_matters": "...because privacy matters.", "freedom_served_fresh_daily": "...freedom served fresh daily.", "your_community_your_rules": "...your community, your rules.", "centralization_is_boring": "...centralization is boring.", "like_torrents_for_thoughts": "...like torrents, for thoughts.", "cant_stop_the_signal": "...can't stop the signal.", "fully_yours_forever": "...fully yours, forever.", "powered_by_caffeine": "...powered by caffeine.", "speech_wants_to_be_free": "...speech wants to be free.", "crypto_certified_community": "...crypto-certified community.", "take_ownership_literally": "...take ownership literally.", "your_ideas_decentralized": "...your ideas, decentralized.", "for_digital_sovereignty": "...for digital sovereignty.", "for_your_movement": "...for your movement.", "because_you_love_freedom": "...because you love freedom.", "decentralized_but_for_real": "...decentralized, but for real.", "for_your_peace_of_mind": "...for your peace of mind.", "no_corporation_to_answer_to": "...no corporation to answer to.", "your_tokenized_sovereignty": "...your tokenized sovereignty.", "for_text_only_wonders": "...for text-only wonders.", "because_open_source_rulez": "...because open source rulez.", "truly_peer_to_peer": "...truly peer to peer.", "no_hidden_fees": "...no hidden fees.", "no_global_rules": "...no global rules.", "for_reddits_downfall": "...for Reddit's downfall.", "evil_corp_cant_stop_us": "...Evil Corp™ can't stop us.", "no_gods_no_global_admins": "...no gods, no global admins.", "already_in_community": "您已经在查看此社区" } ================================================ FILE: react-doctor.config.json ================================================ { "diff": false, "ignore": { "files": ["**/__tests__/**", "**/*.test.*"] } } ================================================ FILE: scripts/AGENTS.md ================================================ # scripts/AGENTS.md These rules apply to `scripts/**`. Follow the repo-root `AGENTS.md` first, then use this file for automation and workflow helpers. - Keep scripts non-interactive and idempotent. Print the command, URL, branch, or path being acted on so failures are diagnosable. - Use repo-relative paths and environment variables instead of user-specific absolute paths. - For dev-server helpers, default to `https://seedit.localhost`, but allow a branch-scoped `*.seedit.localhost` route when the launcher is avoiding a Portless name collision. Respect the existing `PORTLESS=0` fallback instead of hard-coding alternate ports. If a flow intentionally bypasses Portless, override `AGENT_APP_URL` explicitly. - Keep shell helpers thin. When logic becomes stateful or cross-platform, prefer a Node script. - Git and worktree helpers must validate input and default to safe operations. - If a helper deletes local branches automatically, document the exact eligibility checks and keep the behavior conservative. ================================================ FILE: scripts/agent-hooks/format.sh ================================================ #!/bin/bash # afterFileEdit hook: Auto-format files after AI edits them # Receives JSON via stdin: {"file_path": "...", "edits": [...]} input=$(cat) if ! command -v jq >/dev/null 2>&1; then exit 0 fi file_path=$(printf '%s' "$input" | jq -r '.file_path // empty' 2>/dev/null) if [ -z "$file_path" ]; then exit 0 fi repo_root="$(git rev-parse --show-toplevel 2>/dev/null || pwd)" cd "$repo_root" || exit 0 case "$file_path" in *.js|*.ts|*.tsx|*.mjs) dir_part="${file_path%/*}" base_name="${file_path##*/}" if [ "$dir_part" = "$file_path" ]; then dir_part="." fi resolved_dir="$(cd -P -- "$repo_root/$dir_part" 2>/dev/null && pwd -P)" || exit 0 resolved_path="$resolved_dir/$base_name" case "$resolved_path" in "$repo_root"/*) npx oxfmt "$resolved_path" 2>/dev/null || true ;; *) exit 0 ;; esac ;; esac exit 0 ================================================ FILE: scripts/agent-hooks/react-pattern-review.sh ================================================ #!/bin/bash # afterFileEdit/stop hook: remind agents to review new React effects and memoization set -u input="$(cat)" skill_dir="" scope_prefixes=() while [ "$#" -gt 0 ]; do case "$1" in --skill-dir) skill_dir="${2:-}" shift 2 ;; --scope-prefix) scope_prefixes+=("${2:-}") shift 2 ;; *) shift ;; esac done repo_root="$(git rev-parse --show-toplevel 2>/dev/null || pwd)" cd "$repo_root" || exit 0 extract_file_path() { if command -v jq >/dev/null 2>&1; then printf '%s' "$input" | jq -r '.file_path // empty' 2>/dev/null return fi echo "$input" | grep -o '"file_path"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/.*:.*"\([^"]*\)"/\1/' } is_source_file() { case "$1" in *.js|*.jsx|*.ts|*.tsx|*.mjs|*.cjs) return 0 ;; *) return 1 ;; esac } matches_scope() { local candidate="$1" if [ "${#scope_prefixes[@]}" -eq 0 ]; then return 0 fi local prefix for prefix in "${scope_prefixes[@]}"; do case "$candidate" in "$prefix"*) return 0 ;; esac done return 1 } parse_matches_from_diff() { awk ' /^\+\+\+ b\// { file = substr($0, 7) next } /^\+[^+]/ { line = substr($0, 2) if (line ~ /(^|[^[:alnum:]_])(useEffect|useLayoutEffect|useInsertionEffect|useMemo|useCallback)[[:space:]]*[(<]/ || line ~ /(^|[^[:alnum:]_])React\.(useEffect|useLayoutEffect|useInsertionEffect|useMemo|useCallback|memo)[[:space:]]*[(<]/ || line ~ /(^|[^[:alnum:]_])memo[[:space:]]*[(<]/) { print file ": " line } } ' } scan_untracked_file() { local file_path="$1" [ -f "$file_path" ] || return 0 awk -v file="$file_path" ' { line = $0 if (line ~ /(^|[^[:alnum:]_])(useEffect|useLayoutEffect|useInsertionEffect|useMemo|useCallback)[[:space:]]*[(<]/ || line ~ /(^|[^[:alnum:]_])React\.(useEffect|useLayoutEffect|useInsertionEffect|useMemo|useCallback|memo)[[:space:]]*[(<]/ || line ~ /(^|[^[:alnum:]_])memo[[:space:]]*[(<]/) { print file ": " line } } ' "$file_path" } append_results() { local existing="$1" local incoming="$2" if [ -z "$incoming" ]; then printf '%s' "$existing" return fi if [ -z "$existing" ]; then printf '%s' "$incoming" return fi printf '%s\n%s' "$existing" "$incoming" } results="" file_path="$(extract_file_path)" if [ -n "$file_path" ]; then if is_source_file "$file_path" && matches_scope "$file_path"; then if git ls-files --others --exclude-standard -- "$file_path" | grep -q '.'; then results="$(scan_untracked_file "$file_path")" else diff_output="$(git diff --no-ext-diff --unified=0 --no-color HEAD -- "$file_path" 2>/dev/null || true)" results="$(printf '%s\n' "$diff_output" | parse_matches_from_diff)" fi fi else diff_output="$(git diff --no-ext-diff --unified=0 --no-color HEAD -- '*.js' '*.jsx' '*.ts' '*.tsx' '*.mjs' '*.cjs' 2>/dev/null || true)" results="$(printf '%s\n' "$diff_output" | parse_matches_from_diff)" while IFS= read -r untracked_file; do [ -z "$untracked_file" ] && continue is_source_file "$untracked_file" || continue matches_scope "$untracked_file" || continue file_results="$(scan_untracked_file "$untracked_file")" results="$(append_results "$results" "$file_results")" done < <(git ls-files --others --exclude-standard -- '*.js' '*.jsx' '*.ts' '*.tsx' '*.mjs' '*.cjs') fi results="$(printf '%s\n' "$results" | sed '/^$/d' | awk '!seen[$0]++')" if [ -z "$results" ]; then exit 0 fi effect_skill="you-might-not-need-an-effect" if [ -n "$skill_dir" ] && [ -f "$repo_root/$skill_dir/you-might-not-need-an-effect/SKILL.md" ]; then effect_skill="$repo_root/$skill_dir/you-might-not-need-an-effect/SKILL.md" fi vercel_skill="vercel-react-best-practices" if [ -n "$skill_dir" ] && [ -f "$repo_root/$skill_dir/vercel-react-best-practices/SKILL.md" ]; then vercel_skill="$repo_root/$skill_dir/vercel-react-best-practices/SKILL.md" fi echo "=== React Hook Review Reminder ===" echo "New React effect or memo primitives were added in the current diff:" match_count=0 while IFS= read -r match_line; do [ -z "$match_line" ] && continue match_count=$((match_count + 1)) if [ "$match_count" -le 10 ]; then echo "- $match_line" fi done <<< "$results" if [ "$match_count" -gt 10 ]; then echo "- ... and $((match_count - 10)) more" fi echo "Reconsider this change with:" echo "- $effect_skill" echo "- $vercel_skill" echo "Questions to resolve before finishing:" echo "- Can this be derived during render instead of synchronized with an effect?" echo "- Can interaction logic move to an event handler or a key-based reset?" echo "- Is the memoization actually needed, or is simpler render-time code better?" exit 0 ================================================ FILE: scripts/agent-hooks/sync-git-branches.sh ================================================ #!/bin/bash # stop hook: prune stale remote refs and remove integrated temporary local branches # This is informational - always exits 0 cat > /dev/null cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" || exit 0 if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then exit 0 fi default_branch="$(git symbolic-ref --quiet --short refs/remotes/origin/HEAD 2>/dev/null | sed 's#^origin/##')" if [ -z "$default_branch" ]; then default_branch="master" fi current_branch="$(git branch --show-current 2>/dev/null || true)" branch_looks_temporary() { case "$1" in pr/*|feature/*|fix/*|docs/*|chore/*|codex/pr/*|codex/feature/*|codex/fix/*|codex/docs/*|codex/chore/*) return 0 ;; *) return 1 ;; esac } branch_is_integrated() { local branch="$1" local cherry_output cherry_output="$(git cherry "$default_branch" "$branch" 2>/dev/null || true)" if echo "$cherry_output" | grep -q '^+'; then return 1 fi return 0 } branch_has_live_upstream() { local upstream="$1" [ -n "$upstream" ] && git show-ref --verify --quiet "refs/remotes/$upstream" } merged_pr_number_for_branch() { local branch="$1" local pr_number="" if ! command -v gh >/dev/null 2>&1; then return 0 fi case "$branch" in pr/*) pr_number="${branch#pr/}" ;; codex/pr/*) pr_number="${branch#codex/pr/}" ;; esac if [ -n "$pr_number" ]; then gh pr view "$pr_number" --repo bitsocialnet/seedit --json mergedAt --jq 'select(.mergedAt != null) | .mergedAt' >/dev/null 2>&1 || return 0 echo "$pr_number" return 0 fi gh pr list --repo bitsocialnet/seedit --state merged --head "$branch" --json number --jq '.[0].number // empty' 2>/dev/null || true } echo "Syncing git refs and temporary branches..." echo "" echo "=== git config --local fetch.prune true ===" git config --local fetch.prune true 2>&1 || true echo "" echo "=== git config --local remote.origin.prune true ===" git config --local remote.origin.prune true 2>&1 || true echo "" echo "=== git fetch --prune origin ===" git fetch --prune origin 2>&1 || true echo "" while IFS='|' read -r branch upstream; do local_pr_number="" [ -z "$branch" ] && continue [ "$branch" = "$current_branch" ] && continue [ "$branch" = "$default_branch" ] && continue branch_looks_temporary "$branch" || continue local_pr_number="$(merged_pr_number_for_branch "$branch")" if branch_has_live_upstream "$upstream"; then continue fi if ! branch_is_integrated "$branch" && [ -z "$local_pr_number" ]; then continue fi if [ -n "$local_pr_number" ]; then echo "=== merged PR #$local_pr_number allows deleting $branch ===" echo "" fi echo "=== git branch -d $branch ===" git branch -d "$branch" 2>&1 || true echo "" done < <(git for-each-ref --format='%(refname:short)|%(upstream:short)' refs/heads) echo "Git ref sync complete." exit 0 ================================================ FILE: scripts/agent-hooks/verify.sh ================================================ #!/bin/bash # stop hook: run required repo verification commands for agent-driven changes set -u mode="${AGENT_VERIFY_MODE:-strict}" if [ "${1:-}" = "--advisory" ]; then mode="advisory" shift fi cat > /dev/null cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" || exit 0 cleanup_generated_dir() { local path="$1" if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then return fi if git ls-files --error-unmatch "$path" >/dev/null 2>&1; then if git diff --quiet -- "$path"; then return fi echo "=== git restore --worktree $path ===" git restore --worktree -- "$path" 2>&1 || true echo "" return fi if [ -e "$path" ]; then echo "=== rm -rf $path ===" rm -rf "$path" 2>&1 || true echo "" fi } run_required_check() { local label="$1" shift echo "=== $label ===" if "$@" 2>&1; then echo "" return 0 fi echo "" return 1 } echo "Running build, lint, type-check, and security audit..." echo "" failures=0 run_required_check "corepack yarn build" corepack yarn build || failures=1 run_required_check "corepack yarn lint" corepack yarn lint || failures=1 run_required_check "corepack yarn type-check" corepack yarn type-check || failures=1 echo "=== corepack yarn npm audit ===" corepack yarn npm audit 2>&1 || true echo "" cleanup_generated_dir build cleanup_generated_dir dist if [ "$failures" -ne 0 ]; then if [ "$mode" = "advisory" ]; then echo "Verification failed, but AGENT_VERIFY_MODE=advisory so the hook is exiting 0." exit 0 fi echo "Verification failed." exit 1 fi echo "Verification complete." exit 0 ================================================ FILE: scripts/agent-hooks/yarn-install.sh ================================================ #!/bin/bash # afterFileEdit hook: Run Corepack-managed Yarn install when package.json is changed # Receives JSON via stdin: {"file_path": "...", "edits": [...]} input=$(cat) file_path=$(echo "$input" | grep -o '"file_path"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/.*:.*"\([^"]*\)"/\1/') if [ -z "$file_path" ]; then exit 0 fi if [ "$file_path" = "package.json" ]; then repo_root="$(git rev-parse --show-toplevel 2>/dev/null || pwd)" cd "$repo_root" || exit 0 echo "package.json changed - running corepack yarn install to update yarn.lock..." corepack yarn install fi exit 0 ================================================ FILE: scripts/agent-init.sh ================================================ #!/bin/bash set -euo pipefail if [ "$#" -ne 0 ]; then echo "Usage: ./scripts/agent-init.sh" >&2 exit 1 fi wait_timeout="${AGENT_INIT_TIMEOUT_SECONDS:-60}" app_url="${AGENT_APP_URL:-https://seedit.localhost}" repo_root="$(git rev-parse --show-toplevel)" log_dir="$repo_root/.playwright-cli" log_path="${AGENT_START_LOG:-$log_dir/agent-start.log}" mkdir -p "$log_dir" cd "$repo_root" is_server_up() { curl -fsSk "$app_url" >/dev/null 2>&1 } wait_for_server() { local started_at started_at="$(date +%s)" while [ $(( $(date +%s) - started_at )) -lt "$wait_timeout" ]; do if is_server_up; then return 0 fi sleep 1 done return 1 } echo "Repo root: $repo_root" echo "App URL: $app_url" if is_server_up; then echo "Dev server is already reachable." else echo "Dev server is not reachable. Starting yarn start..." nohup yarn start >"$log_path" 2>&1 & echo "Startup log: $log_path" if ! wait_for_server; then echo "Timed out waiting for $app_url" >&2 echo "Last log lines:" >&2 tail -n 40 "$log_path" >&2 || true exit 1 fi fi echo "Dev server is ready." ================================================ FILE: scripts/create-task-worktree.sh ================================================ #!/bin/bash set -euo pipefail usage() { echo "Usage: ./scripts/create-task-worktree.sh [base-branch] [worktree-path]" } if [ "$#" -lt 2 ]; then usage >&2 exit 1 fi task_type="$1" slug_input="$2" base_branch="${3:-master}" case "$task_type" in feature|fix|docs|chore) ;; *) echo "Unsupported task type: $task_type" >&2 usage >&2 exit 1 ;; esac slug="$(printf '%s' "$slug_input" | tr '[:upper:]' '[:lower:]' | sed -E 's/[^a-z0-9._-]+/-/g; s/^-+//; s/-+$//')" if [ -z "$slug" ]; then echo "Slug must contain at least one letter or number." >&2 exit 1 fi repo_root="$(git rev-parse --show-toplevel)" repo_name="$(basename "$repo_root")" default_worktree_path="$(dirname "$repo_root")/${repo_name}-${slug}" worktree_path="${4:-$default_worktree_path}" branch_name="codex/${task_type}/${slug}" if git show-ref --verify --quiet "refs/heads/$branch_name"; then echo "Branch already exists: $branch_name" >&2 exit 1 fi if [ -e "$worktree_path" ]; then echo "Worktree path already exists: $worktree_path" >&2 exit 1 fi if git show-ref --verify --quiet "refs/heads/$base_branch"; then base_ref="$base_branch" elif git show-ref --verify --quiet "refs/remotes/origin/$base_branch"; then base_ref="origin/$base_branch" else echo "Base branch not found locally or on origin: $base_branch" >&2 exit 1 fi echo "Creating branch $branch_name from $base_ref" echo "Creating worktree at $worktree_path" git worktree add "$worktree_path" -b "$branch_name" "$base_ref" echo "" echo "Worktree ready." echo "Branch: $branch_name" echo "Path: $worktree_path" ================================================ FILE: scripts/deploy.sh ================================================ #!/usr/bin/env bash # deploy html to a server and then add html to ipfs # go to current folder cd "$(dirname "$0")" # add env vars if [ -f ../.deploy-env ]; then export $(echo $(cat ../.deploy-env | sed 's/#.*//g'| xargs) | envsubst) fi # check creds if [ -z "${DEPLOY_HOST+xxx}" ]; then echo "DEPLOY_HOST not set" && exit; fi if [ -z "${DEPLOY_USER+xxx}" ]; then echo "DEPLOY_USER not set" && exit; fi if [ -z "${DEPLOY_PASSWORD+xxx}" ]; then echo "DEPLOY_PASSWORD not set" && exit; fi # save version SEEDIT_VERSION=$(node -e "console.log(require('../package.json').version)") SEEDIT_HTML_NAME="seedit-html-$SEEDIT_VERSION" SEEDIT_PREVIOUS_VERSIONS=$(git tag | sed 's/v//g' | tr '\n' ' ') SCRIPT=" # download html cd ~ rm $SEEDIT_HTML_NAME.zip rm -fr $SEEDIT_HTML_NAME wget https://github.com/bitsocialhq/seedit/releases/download/v$SEEDIT_VERSION/$SEEDIT_HTML_NAME.zip || exit # extract html unzip $SEEDIT_HTML_NAME.zip || exit rm $SEEDIT_HTML_NAME.zip || exit # add previous versions as folders e.g. /0.1.1 cd $SEEDIT_HTML_NAME for SEEDIT_PREVIOUS_VERSION in $SEEDIT_PREVIOUS_VERSIONS do # download previous version SEEDIT_PREVIOUS_VERSION_HTML_NAME="seedit-html-\$SEEDIT_PREVIOUS_VERSION" echo downloading \$SEEDIT_PREVIOUS_VERSION_HTML_NAME... wget --quiet https://github.com/bitsocialhq/seedit/releases/download/v\$SEEDIT_PREVIOUS_VERSION/\$SEEDIT_PREVIOUS_VERSION_HTML_NAME.zip # extract previous version html unzip -qq \$SEEDIT_PREVIOUS_VERSION_HTML_NAME.zip rm \$SEEDIT_PREVIOUS_VERSION_HTML_NAME.zip mv \$SEEDIT_PREVIOUS_VERSION_HTML_NAME \$SEEDIT_PREVIOUS_VERSION done cd .. # add to ipfs CID=\`ipfs add --recursive --pin --quieter $SEEDIT_HTML_NAME | tail -n 1\` ipfs pin add --recursive \"\$CID\" # start ipfs daemon if not started ipfs init nohup ipfs daemon & # the CID of seedit html, add this CID to ENS sleep 3 echo \"\" CID=\`ipfs cid base32 \$CID\` echo $SEEDIT_HTML_NAME \"CID: \$CID\" echo \"\" " # execute script over ssh echo "$SCRIPT" | sshpass -p "$DEPLOY_PASSWORD" ssh "$DEPLOY_USER"@"$DEPLOY_HOST" ================================================ FILE: scripts/dev-server-utils.mjs ================================================ #!/usr/bin/env node import { spawn } from 'node:child_process'; import net from 'node:net'; import path from 'node:path'; import process from 'node:process'; import { fileURLToPath } from 'node:url'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); export const repoRoot = path.resolve(__dirname, '..'); export const isWindows = process.platform === 'win32'; function checkPort(host, port) { return new Promise((resolve) => { const server = net.createServer(); server.once('error', () => resolve(false)); server.once('listening', () => { server.close(() => resolve(true)); }); server.listen(port, host); }); } export async function resolvePort(requestedPort, host = '127.0.0.1') { let port = requestedPort; while (!(await checkPort(host, port))) { port += 1; } return port; } export async function waitForPort(host, port, timeoutMs = 30_000) { const startedAt = Date.now(); while (Date.now() - startedAt < timeoutMs) { const ready = await new Promise((resolve) => { const socket = net.connect({ host, port }); socket.once('connect', () => { socket.destroy(); resolve(true); }); socket.once('error', () => resolve(false)); }); if (ready) { return; } await new Promise((resolve) => setTimeout(resolve, 100)); } throw new Error(`Timed out waiting for dev server on http://${host}:${port}`); } export function startVite(host, port) { const child = spawn('corepack', ['yarn', 'exec', 'vite', '--host', host, '--port', String(port), '--strictPort'], { cwd: repoRoot, env: { ...process.env, PORTLESS: '0', }, stdio: 'inherit', }); const forwardSignal = (signal) => { if (!child.killed) { child.kill(signal); } }; const onSigint = () => forwardSignal('SIGINT'); const onSigterm = () => forwardSignal('SIGTERM'); process.on('SIGINT', onSigint); process.on('SIGTERM', onSigterm); child.on('exit', (code, signal) => { process.off('SIGINT', onSigint); process.off('SIGTERM', onSigterm); if (signal) { process.kill(process.pid, signal); return; } process.exit(code ?? 0); }); return child; } ================================================ FILE: scripts/find-forge-executable.js ================================================ #!/usr/bin/env node /** * Find the packaged Electron executable built by Electron Forge. * This script locates the executable in the out/ directory structure. */ import { readdirSync, statSync, existsSync, readFileSync } from 'fs'; import { isAbsolute, join, resolve } from 'path'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = resolve(__filename, '..'); const platform = process.platform; const repoRoot = resolve(__dirname, '..'); const packageJson = JSON.parse(readFileSync(join(repoRoot, 'package.json'), 'utf-8')); const appName = (packageJson.build?.productName || packageJson.name || 'seedit').toLowerCase(); const resolveOutDir = (dir) => (isAbsolute(dir) ? dir : join(repoRoot, dir)); const envOutDir = process.env.ELECTRON_FORGE_OUT_DIR; const candidateRoots = [ envOutDir ? resolveOutDir(envOutDir) : null, join(repoRoot, 'out'), join(repoRoot, 'out', 'make'), join(repoRoot, '..', 'out'), join(repoRoot, '..', '..', 'out'), join(repoRoot, 'electron', 'out'), ].filter(Boolean); // Skip directories that contain helper binaries/app code, not the main executable // 'resources' contains the app bundle with IPFS binaries in bin/ - don't recurse there const skipDirs = new Set(['node_modules', '.git', 'bin', 'app', 'resources']); function findExecutable(dir, platform) { const entries = readdirSync(dir, { withFileTypes: true }); for (const entry of entries) { const fullPath = join(dir, entry.name); if (entry.isDirectory()) { if (skipDirs.has(entry.name)) continue; if (platform === 'darwin' && entry.name.endsWith('.app')) { const appPath = fullPath; const exePath = join(appPath, 'Contents', 'MacOS', entry.name.replace('.app', '')); if (existsSync(exePath)) { return exePath; } } const result = findExecutable(fullPath, platform); if (result) return result; } else if (entry.isFile()) { // Check if it's an executable if (platform === 'win32') { const lowerName = entry.name.toLowerCase(); if (lowerName.endsWith('.exe') && !lowerName.includes('electron') && !lowerName.includes('crashpad')) { if (lowerName.includes(appName)) { return fullPath; } return fullPath; } } else if (platform === 'darwin') { const stat = statSync(fullPath); if (stat.isFile() && stat.mode & parseInt('111', 8)) { const lowerName = entry.name.toLowerCase(); if (!lowerName.includes('helper') && !lowerName.includes('crashpad')) { if (lowerName.includes(appName)) { return fullPath; } return fullPath; } } } else if (platform === 'linux') { // Linux executables (AppImage or unpacked) if (entry.name.endsWith('.AppImage')) { return fullPath; } // Check for executable files (not .so libraries) const stat = statSync(fullPath); if (stat.isFile() && stat.mode & parseInt('111', 8) && !entry.name.includes('.so')) { // Skip helper binaries const lowerName = entry.name.toLowerCase(); if (!lowerName.includes('chrome') && !lowerName.includes('crashpad')) { if (lowerName.includes(appName)) { return fullPath; } return fullPath; } } } } } return null; } let executable = null; const checkedDirs = []; for (const root of candidateRoots) { if (!existsSync(root)) { checkedDirs.push(`${root} (missing)`); continue; } const result = findExecutable(root, platform); checkedDirs.push(root); if (result) { executable = result; break; } } if (!executable) { console.error('Error: Could not find packaged executable.'); console.error('Platform:', platform); console.error('Checked directories:', checkedDirs.join(', ')); process.exit(1); } console.log(executable); ================================================ FILE: scripts/release-body.js ================================================ import { execSync } from 'child_process'; import path from 'path'; import { fileURLToPath } from 'url'; import { readFileSync, readdirSync } from 'fs'; import fetch from 'node-fetch'; const dirname = path.join(path.dirname(fileURLToPath(import.meta.url))); const conventionalChangelog = path.join(dirname, '..', 'node_modules', '.bin', 'conventional-changelog'); const version = JSON.parse(readFileSync(path.join(dirname, '..', 'package.json'), 'utf8')).version; // changelog (use last non-empty) let releaseChangelog = execSync(`${conventionalChangelog} --preset angular --release-count 1`).toString() || execSync(`${conventionalChangelog} --preset angular --release-count 2`).toString(); releaseChangelog = releaseChangelog.trim().replace(/\n\n+/g, '\n\n'); // discover artifacts const distDir = path.join(dirname, '..', 'dist'); let files = []; try { files = readdirSync(distDir); } catch {} // In CI finalization, dist is empty. Prefer GitHub release assets when available. const getReleaseAssetNames = async () => { try { const token = process.env.GITHUB_TOKEN; const repo = process.env.GITHUB_REPOSITORY; // owner/repo const tag = process.env.GITHUB_REF_NAME || `v${version}`; if (!token || !repo || !tag) return []; const res = await fetch(`https://api.github.com/repos/${repo}/releases/tags/${tag}`, { headers: { Authorization: `Bearer ${token}`, 'User-Agent': 'seedit-release-notes', 'X-GitHub-Api-Version': '2022-11-28', Accept: 'application/vnd.github+json', }, }); if (!res.ok) return []; const data = await res.json(); return (data.assets || []).map((a) => a.name).filter(Boolean); } catch (e) { return []; } }; const remoteFiles = await getReleaseAssetNames(); if (remoteFiles.length) { files = remoteFiles; } const linkTo = (file) => `https://github.com/bitsocialhq/seedit/releases/download/v${version}/${file}`; const has = (s, sub) => s.toLowerCase().includes(sub); const isArm = (s) => has(s, 'arm64') || has(s, 'aarch64'); const isX64 = (s) => (has(s, 'x64') || has(s, 'x86_64')) || !isArm(s); // buckets const androidApk = files.find(f => f.endsWith('.apk')); const htmlZip = files.find(f => f.includes('seedit-html') && f.endsWith('.zip')); const linux = files.filter(f => f.endsWith('.AppImage')); const mac = files.filter(f => f.endsWith('.dmg')); const win = files.filter(f => f.toLowerCase().endsWith('.exe')); const linuxArm = linux.find(isArm); const linuxX64 = linux.find(isX64); const macArm = mac.find(isArm); const macX64 = mac.find(isX64); const winSetupX64 = win.find(f => has(f, 'setup') && isX64(f)); const winPortableX64 = win.find(f => has(f, 'portable') && isX64(f)); // small section builder without push() const section = (title, lines) => { const body = lines.filter(Boolean).join('\n'); return body ? `### ${title}\n${body}` : ''; }; const macSection = section('macOS', [ macArm && `- Apple Silicon (arm64): [Download DMG](${linkTo(macArm)})`, macX64 && `- Intel (x64): [Download DMG](${linkTo(macX64)})`, (mac.length > 0) && `- If macOS shows "seedit.app is damaged and can't be opened. You should move it to the Trash.", run this in Terminal to fix it: \`xattr -dr com.apple.quarantine "/Applications/seedit.app"\` then open the app again.`, ]); const winSection = section('Windows', [ winSetupX64 && `- Installer (x64): [Download EXE](${linkTo(winSetupX64)})`, winPortableX64 && `- Portable (x64): [Download EXE](${linkTo(winPortableX64)})`, (win.length > 0) && `- If Windows shows "Windows protected your PC" (SmartScreen), click "More info" then "Run anyway". To permanently allow, right-click the .exe → Properties → check "Unblock", or run in PowerShell: \`Unblock-File -Path .\\path\\to\\file.exe\`.`, ]); const linuxSection = section('Linux', [ linuxArm && `- AppImage (arm64): [Download](${linkTo(linuxArm)})`, linuxX64 && `- AppImage (x64): [Download](${linkTo(linuxX64)})`, ]); const androidSection = section('Android', [ androidApk && `- APK: [Download](${linkTo(androidApk)})`, ]); const htmlSection = section('Static HTML build', [ htmlZip && `- seedit-html (zip): [Download](${linkTo(htmlZip)})`, ]); const downloads = [macSection, winSection, linuxSection, androidSection, htmlSection] .filter(Boolean).join('\n\n'); const releaseBody = `This version fixes a bug that prevented the desktop app from opening in specific Linux environments. It also includes a plebbit-react-hooks fix for the user's wallet signature timestamps, which were invalid. - Web app: https://seedit.app - Decentralized web app via IPFS/IPNS gateways (works on any browser): [seedit.eth.limo](https://seedit.eth.limo), [seedit.eth.link](https://seedit.eth.link), [dweb.link/ipfs.io](https://dweb.link/ipns/seedit.eth) - Decentralized web app via IPFS node you run: https://seedit.eth (works on [Brave Browser](https://brave.com/) or use [IPFS Companion](https://docs.ipfs.tech/install/ipfs-companion/#prerequisites)) ## Downloads ${downloads} ## Changes ${releaseChangelog}`; console.log(releaseBody); ================================================ FILE: scripts/start-dev.js ================================================ import { existsSync } from 'node:fs'; import { join } from 'node:path'; import { spawn, spawnSync } from 'node:child_process'; import { get as httpGet } from 'node:http'; import { get as httpsGet } from 'node:https'; import { resolvePort } from './dev-server-utils.mjs'; const isWindows = process.platform === 'win32'; const usePortless = process.env.PORTLESS !== '0' && !isWindows; const binDir = join(process.cwd(), 'node_modules', '.bin'); const executableSuffix = isWindows ? '.cmd' : ''; const portlessBin = join(binDir, `portless${executableSuffix}`); const viteBin = join(binDir, `vite${executableSuffix}`); const fallbackHost = '127.0.0.1'; const fallbackUrlHost = 'localhost'; const fallbackRequestedPort = Number(process.env.PORT) || 3000; const portlessProxyPort = process.env.PORTLESS_PORT || '443'; const portlessEnv = { ...process.env, PORTLESS_PORT: portlessProxyPort, PORTLESS_HTTPS: process.env.PORTLESS_HTTPS ?? '1', PORTLESS_LAN: process.env.PORTLESS_LAN ?? '0', }; function sanitizeLabel(value) { return value .toLowerCase() .replace(/[^a-z0-9]+/g, '-') .replace(/^-+|-+$/g, '') .replace(/-{2,}/g, '-'); } function getCurrentBranch() { const result = spawnSync('git', ['branch', '--show-current'], { cwd: process.cwd(), encoding: 'utf8', }); if (result.status !== 0) { return null; } return result.stdout.trim() || null; } function getActivePortlessRouteHosts() { const result = spawnSync(portlessBin, ['list'], { cwd: process.cwd(), encoding: 'utf8', env: process.env, }); if (result.status !== 0) { return new Set(); } const matches = result.stdout.match(/https?:\/\/[a-z0-9.-]+\.localhost(?::\d+)?/g) || []; return new Set(matches.map((url) => new URL(url).hostname)); } function isRouteBusy(activeRouteHosts, appName) { return activeRouteHosts.has(`${appName}.localhost`); } function getPreferredPortlessAppName(activeRouteHosts) { const branch = getCurrentBranch(); const branchLabel = sanitizeLabel(branch || 'current'); if (branch && branch !== 'master' && branch !== 'main') { return `${branchLabel}.seedit`; } if (isRouteBusy(activeRouteHosts, 'seedit')) { return `${branchLabel}.seedit`; } return 'seedit'; } function getPortlessAppName() { const activeRouteHosts = getActivePortlessRouteHosts(); const preferredAppName = getPreferredPortlessAppName(activeRouteHosts); if (!isRouteBusy(activeRouteHosts, preferredAppName)) { return preferredAppName; } for (let suffix = 2; suffix < 1000; suffix += 1) { const candidate = `${preferredAppName}-${suffix}`; if (!isRouteBusy(activeRouteHosts, candidate)) { return candidate; } } return `${preferredAppName}-${Date.now()}`; } function ensurePortlessProxy() { const result = spawnSync(portlessBin, ['proxy', 'start', '--port', portlessProxyPort, '--https'], { cwd: process.cwd(), env: portlessEnv, stdio: 'inherit', }); if (result.status !== 0) { process.exit(result.status ?? 1); } } const command = usePortless && existsSync(portlessBin) ? portlessBin : viteBin; let args; let publicUrl = null; if (command === portlessBin) { ensurePortlessProxy(); const appName = getPortlessAppName(); publicUrl = `https://${appName}.localhost`; args = [appName, 'vite']; if (appName !== 'seedit') { console.log(`Starting Portless dev server at ${publicUrl}`); } } else { const port = await resolvePort(fallbackRequestedPort, fallbackHost); const fallbackUrl = `http://${fallbackUrlHost}:${port}`; args = ['--host', fallbackHost, '--port', String(port), '--strictPort']; if (command !== portlessBin && process.env.PORTLESS !== '0') { console.warn(`portless unavailable on this platform, using vite directly on ${fallbackUrl}`); } else { console.log(`Starting Vite directly at ${fallbackUrl}`); } if (port !== fallbackRequestedPort) { console.log(`Preferred port ${fallbackRequestedPort} is busy, so this run will use ${fallbackUrl}.`); } } const child = spawn(command, args, { stdio: 'inherit', env: command === portlessBin ? portlessEnv : process.env, }); if (publicUrl && process.env.BROWSER !== 'none') { waitForUrlReady(publicUrl, 30_000) .then(() => { console.log(`Opening ${publicUrl} in browser...`); openInBrowser(publicUrl); }) .catch((error) => { console.warn(`Could not auto-open ${publicUrl}: ${error.message}`); }); } child.on('exit', (code, signal) => { if (signal) { process.kill(process.pid, signal); return; } process.exit(code ?? 0); }); async function waitForUrlReady(url, timeoutMs) { const startedAt = Date.now(); while (Date.now() - startedAt < timeoutMs) { const ready = await new Promise((resolve) => { const parsedUrl = new URL(url); const getUrl = parsedUrl.protocol === 'https:' ? httpsGet : httpGet; const onResponse = (response) => { response.resume(); const statusCode = response.statusCode ?? 500; resolve(statusCode >= 200 && statusCode < 400); }; const request = parsedUrl.protocol === 'https:' ? getUrl(parsedUrl, { rejectUnauthorized: false }, onResponse) : getUrl(parsedUrl, onResponse); request.on('error', () => resolve(false)); request.setTimeout(2_000, () => { request.destroy(); resolve(false); }); }); if (ready) { return; } await new Promise((resolve) => setTimeout(resolve, 200)); } throw new Error(`Timed out waiting for ${url}`); } function openInBrowser(url) { const opener = process.platform === 'darwin' ? { cmd: 'open', args: [url] } : process.platform === 'win32' ? { cmd: 'cmd', args: ['/c', 'start', '""', url] } : { cmd: 'xdg-open', args: [url] }; spawn(opener.cmd, opener.args, { stdio: 'ignore', detached: true }).unref(); } ================================================ FILE: scripts/update-translations.js ================================================ #!/usr/bin/env node /* Translation updater CLI Usage examples: - Copy value of a key from en to all languages (dry run): node scripts/update-translations.js --key 5chan_description --from en --dry - Set a specific value for all languages (including en): node scripts/update-translations.js --key no_global_rules_info --value "Your value" --include-en --write - Use a mapping file with per-language values (JSON object of { langCode: value, ... }): node scripts/update-translations.js --key my_key --map ./path/to/map.json --write - Delete a key from all languages (dry run): node scripts/update-translations.js --key obsolete_key --delete --dry - Delete a key from all languages (actually delete): node scripts/update-translations.js --key obsolete_key --delete --write - Audit for unused keys (dry run): node scripts/update-translations.js --audit --dry - Remove all unused keys: node scripts/update-translations.js --audit --write - Force removal even when dynamic keys detected: node scripts/update-translations.js --audit --write --force Flags: --key Required (except for --audit). The translation key to update/delete. --audit Scan codebase for unused translation keys and report/remove them. --delete Delete the key from all languages instead of updating. --from Source language to read value from if --value/--map are not provided (default: en). --value Literal value to set for targets (use with caution, no auto-translate). --map JSON file mapping of { langCode: string } to set per language. --only Comma-separated list of language codes to update (e.g. "es,fr,it"). --exclude Comma-separated list of language codes to skip. --include-en Include the source language (e.g. en) in updates. --dry|--dry-run Show changes but do not write files (default). --write Actually write the files. --force Force --audit --write even when dynamic translation keys are detected. Use with caution: dynamic keys (e.g. t(`prefix_${var}`)) cannot be statically analyzed, so some "unused" keys may actually be in use. ⚠️ LIMITATIONS (audit mode): This script uses static analysis to find translation keys. It can only detect string literals like: - t('key') or t("key") - i18nKey="key" or i18nKey={'key'} It CANNOT detect dynamic keys such as: - t(`prefix_${variable}`) - t(someVariable) - i18nKey={dynamicValue} When dynamic key usage is detected, the script will: 1. Warn you about the files/lines containing dynamic keys 2. Block --write unless --force is also passed 3. Recommend manual review before deletion Always review the dynamic key warnings before using --force! */ import fs from 'fs/promises' import path from 'path' function parseArgs(argv) { const out = { flags: new Set() } for (let i = 0; i < argv.length; i++) { const arg = argv[i] const next = i + 1 < argv.length ? argv[i + 1] : undefined if (arg.startsWith('--')) { if (['--dry', '--dry-run', '--write', '--include-en', '--delete', '--audit', '--force'].includes(arg)) { out.flags.add(arg) continue } const key = arg let value if (next && !next.startsWith('--')) { value = next i++ } out[key] = value ?? '' } } return out } function usage(exitCode = 1, msg) { if (msg) console.error(msg) console.error( 'Usage: node scripts/update-translations.js --key [--delete] [--from ] [--value | --map ] [--only ] [--exclude ] [--include-en] [--dry|--write]' ) process.exit(exitCode) } async function fileExists(p) { try { await fs.access(p) return true } catch { return false } } function parseCsv(val) { if (!val) return new Set() return new Set( val .split(',') .map((s) => s.trim()) .filter(Boolean) ) } async function loadJson(filePath) { const text = await fs.readFile(filePath, 'utf8') try { return JSON.parse(text) } catch (err) { throw new Error(`Failed to parse JSON: ${filePath}: ${err.message}`) } } async function writeJson(filePath, data) { const json = JSON.stringify(data, null, 2) + '\n' await fs.writeFile(filePath, json, 'utf8') } async function handleDelete(key, translationsRoot, only, exclude, dryRun, write) { const dirents = await fs.readdir(translationsRoot, { withFileTypes: true }) const langs = dirents.filter((d) => d.isDirectory()).map((d) => d.name) const planned = [] for (const lang of langs) { if (only.size && !only.has(lang)) continue if (exclude.size && exclude.has(lang)) continue const filePath = path.join(translationsRoot, lang, 'default.json') if (!(await fileExists(filePath))) continue const json = await loadJson(filePath) if (!Object.prototype.hasOwnProperty.call(json, key)) { // Key does not exist in this language, skip continue } const prevVal = json[key] planned.push({ lang, filePath, prevVal, json }) } if (!planned.length) { console.log('No changes planned.') return } for (const change of planned) { const { lang, filePath, prevVal } = change const prevPreview = typeof prevVal === 'undefined' ? '' : String(prevVal).substring(0, 60) console.log(`[${lang}] ${key}:`) console.log(` - deleted: ${prevPreview}${String(prevVal).length > 60 ? '...' : ''}`) if (!dryRun) { delete change.json[key] await writeJson(filePath, change.json) } } if (dryRun) { console.log(`\nDry run complete. ${planned.length} file(s) would change. Re-run with --write to apply.`) } else if (write) { console.log(`\nWrote ${planned.length} file(s).`) } } /** * Recursively get all files in a directory matching given extensions */ async function getFilesRecursive(dir, extensions) { const files = [] const entries = await fs.readdir(dir, { withFileTypes: true }) for (const entry of entries) { const fullPath = path.join(dir, entry.name) if (entry.isDirectory()) { // Skip node_modules and hidden directories if (entry.name === 'node_modules' || entry.name.startsWith('.')) continue files.push(...(await getFilesRecursive(fullPath, extensions))) } else if (extensions.some((ext) => entry.name.endsWith(ext))) { files.push(fullPath) } } return files } /** * Scan source files and extract all translation keys used in the codebase. * Also detects dynamic key usage that cannot be statically analyzed. * * Returns: { usedKeys: Set, dynamicUsages: Array<{file, line, code, type}> } */ async function extractUsedKeys(srcDir) { const usedKeys = new Set() const dynamicUsages = [] const extensions = ['.ts', '.tsx', '.js', '.jsx'] const files = await getFilesRecursive(srcDir, extensions) // Patterns to match static translation key usage: // - t('key') or t("key") with optional params // - i18nKey="key" or i18nKey={'key'} or i18nKey={"key"} for Trans components const staticPatterns = [ /\bt\(\s*['"]([^'"]+)['"]/g, // t('key') or t("key") /i18nKey\s*=\s*['"]([^'"]+)['"]/g, // i18nKey="key" /i18nKey\s*=\s*\{\s*['"]([^'"]+)['"]\s*\}/g, // i18nKey={'key'} ] // Patterns to detect dynamic/unknown key usage (cannot extract concrete keys): // - t(`...`) template literals with interpolations // - t(variable) where variable is not a string literal // - i18nKey={variable} where variable is not a string literal // Note: We use (? matchStart) { lineNum = i + 1 break } } dynamicUsages.push({ file, line: lineNum, code: match[0].trim().substring(0, 60), type, }) } } } return { usedKeys, dynamicUsages } } async function handleAudit(translationsRoot, srcDir, dryRun, write, force) { console.log('Scanning codebase for translation key usage...\n') // Get all keys used in the codebase (and dynamic usage warnings) const { usedKeys, dynamicUsages } = await extractUsedKeys(srcDir) console.log(`Found ${usedKeys.size} static translation keys used in the codebase.`) // Report dynamic key usages (these could reference any key at runtime) const hasDynamicUsages = dynamicUsages.length > 0 if (hasDynamicUsages) { console.log(`\n⚠️ WARNING: Found ${dynamicUsages.length} dynamic translation key usage(s):\n`) console.log('These use variables or template literals, so the actual keys cannot be determined statically.') console.log('Some "unused" keys below may actually be used at runtime!\n') // Group by file for cleaner output const byFile = new Map() for (const usage of dynamicUsages) { if (!byFile.has(usage.file)) byFile.set(usage.file, []) byFile.get(usage.file).push(usage) } for (const [file, usages] of byFile) { const relPath = path.relative(process.cwd(), file) console.log(` ${relPath}:`) for (const u of usages) { console.log(` Line ${u.line}: ${u.code}${u.code.length >= 60 ? '...' : ''}`) console.log(` (${u.type})`) } } console.log('') } // Load the English translation file as the reference const enPath = path.join(translationsRoot, 'en', 'default.json') if (!(await fileExists(enPath))) { console.error(`English translation file not found: ${enPath}`) process.exit(1) } const enJson = await loadJson(enPath) const definedKeys = Object.keys(enJson) // Find unused keys (defined but not used statically) const unusedKeys = definedKeys.filter((key) => !usedKeys.has(key)) if (unusedKeys.length === 0) { console.log('No unused translation keys found. All keys are in use.') return } console.log(`Found ${unusedKeys.length} unused translation key(s):\n`) for (const key of unusedKeys) { const value = enJson[key] const preview = String(value).substring(0, 50) console.log(` - ${key}: "${preview}${String(value).length > 50 ? '...' : ''}"`) } if (dryRun) { console.log(`\nDry run complete. ${unusedKeys.length} key(s) would be removed from all language files.`) if (hasDynamicUsages) { console.log('\n⚠️ Dynamic key usage detected! Review the warnings above before removing keys.') console.log('Re-run with --write --force to remove them anyway (after manual review).') } else { console.log('Re-run with --write to remove them.') } return } // Block --write if dynamic usages detected and --force not provided if (hasDynamicUsages && !force) { console.log('\n❌ BLOCKED: Cannot remove keys automatically when dynamic key usage is detected.') console.log('Some "unused" keys may actually be referenced by dynamic expressions at runtime.') console.log('') console.log('Please:') console.log(' 1. Review the dynamic key warnings above') console.log(' 2. Manually verify that the "unused" keys are truly not needed') console.log(' 3. Re-run with --write --force to proceed with deletion') console.log('') console.log('Alternatively, refactor dynamic keys to use static strings where possible.') process.exit(1) } if (hasDynamicUsages && force) { console.log('\n⚠️ Proceeding with --force despite dynamic key usage warnings...') } // Remove unused keys from all language files const dirents = await fs.readdir(translationsRoot, { withFileTypes: true }) const langs = dirents.filter((d) => d.isDirectory()).map((d) => d.name) let filesChanged = 0 for (const lang of langs) { const filePath = path.join(translationsRoot, lang, 'default.json') if (!(await fileExists(filePath))) continue const json = await loadJson(filePath) let changed = false for (const key of unusedKeys) { if (Object.prototype.hasOwnProperty.call(json, key)) { delete json[key] changed = true } } if (changed) { await writeJson(filePath, json) filesChanged++ console.log(`\n[${lang}] Removed ${unusedKeys.length} unused key(s).`) } } console.log(`\nRemoved unused keys from ${filesChanged} language file(s).`) } async function handleUpdate(key, translationsRoot, fromLang, includeEn, only, exclude, literalValue, mapFile, map, dryRun, write) { let sourceValue = undefined if (!literalValue && !map) { // default to --from const srcPath = path.join(translationsRoot, fromLang, 'default.json') if (!(await fileExists(srcPath))) usage(1, `Source file not found for --from ${fromLang}: ${srcPath}`) const srcJson = await loadJson(srcPath) sourceValue = srcJson[key] if (typeof sourceValue === 'undefined') usage(1, `Key "${key}" not found in source language ${fromLang}`) } const dirents = await fs.readdir(translationsRoot, { withFileTypes: true }) const langs = dirents.filter((d) => d.isDirectory()).map((d) => d.name) const planned = [] for (const lang of langs) { if (!includeEn && lang === fromLang) continue if (only.size && !only.has(lang)) continue if (exclude.size && exclude.has(lang)) continue const filePath = path.join(translationsRoot, lang, 'default.json') if (!(await fileExists(filePath))) continue const json = await loadJson(filePath) let nextVal if (map && Object.prototype.hasOwnProperty.call(map, lang)) { nextVal = map[lang] } else if (typeof literalValue !== 'undefined') { nextVal = literalValue } else { nextVal = sourceValue } if (typeof nextVal === 'undefined') { // No value for this lang in the chosen mode; skip continue } const prevVal = json[key] if (prevVal === nextVal) continue planned.push({ lang, filePath, prevVal, nextVal, json }) } if (!planned.length) { console.log('No changes planned.') return } for (const change of planned) { const { lang, filePath, prevVal, nextVal } = change const prevPreview = typeof prevVal === 'undefined' ? '' : String(prevVal).substring(0, 60) const nextPreview = String(nextVal).substring(0, 60) console.log(`[${lang}] ${key}:`) console.log(` - from: ${prevPreview}${String(prevVal).length > 60 ? '...' : ''}`) console.log(` + to : ${nextPreview}${String(nextVal).length > 60 ? '...' : ''}`) if (!dryRun) { change.json[key] = nextVal await writeJson(filePath, change.json) } } if (dryRun) { console.log(`\nDry run complete. ${planned.length} file(s) would change. Re-run with --write to apply.`) } else if (write) { console.log(`\nWrote ${planned.length} file(s).`) } } async function main() { const argv = process.argv.slice(2) const args = parseArgs(argv) const translationsRoot = path.join(process.cwd(), 'public', 'translations') if (!(await fileExists(translationsRoot))) { usage(1, `Translations directory not found: ${translationsRoot}`) } const isAudit = args.flags.has('--audit') const isDelete = args.flags.has('--delete') const dryRun = args.flags.has('--dry') || args.flags.has('--dry-run') || !args.flags.has('--write') const write = args.flags.has('--write') const force = args.flags.has('--force') if (isAudit) { // Audit mode: scan codebase and remove unused keys const srcDir = path.join(process.cwd(), 'src') await handleAudit(translationsRoot, srcDir, dryRun, write, force) return } const key = args['--key'] if (!key) usage(1, 'Missing required --key') const fromLang = args['--from'] || 'en' const includeEn = args.flags.has('--include-en') const only = parseCsv(args['--only']) const exclude = parseCsv(args['--exclude']) if (isDelete) { // Delete mode await handleDelete(key, translationsRoot, only, exclude, dryRun, write) } else { // Update mode let literalValue = args['--value'] let mapFile = args['--map'] let map = undefined if (mapFile) { const absMap = path.isAbsolute(mapFile) ? mapFile : path.join(process.cwd(), mapFile) if (!(await fileExists(absMap))) usage(1, `--map not found: ${absMap}`) map = await loadJson(absMap) if (typeof map !== 'object' || map === null) usage(1, '--map must be a JSON object of { lang: value }') } await handleUpdate(key, translationsRoot, fromLang, includeEn, only, exclude, literalValue, mapFile, map, dryRun, write) } } main().catch((err) => { console.error(err) process.exit(1) }) ================================================ FILE: src/AGENTS.md ================================================ # src/AGENTS.md These rules apply to `src/**`. Follow the repo-root `AGENTS.md` first, then use this file for code inside the application source tree. - Keep route composition in `src/views/`, reusable UI in `src/components/`, shared logic in `src/hooks/`, and shared app state in `src/stores/`. - Before adding new state, decide whether it belongs in render, a reusable hook, or a Zustand store. Do not duplicate the same state logic across views. - Use `@bitsocial/bitsocial-react-hooks` for data access. Do not add data-fetching `useEffect` calls or effects that only synchronize derived state. - When changing React UI logic, run `yarn build`, `yarn lint`, and `yarn type-check`. When changing layout or interaction, verify desktop and mobile behavior with `playwright-cli`. - Prefer extending nearby tests under `src/**/__tests__/` when touching already-covered behavior. ================================================ FILE: src/app.module.css ================================================ .app { background-color: var(--background); font: normal 10px verdana, arial, helvetica, sans-serif; z-index: 1; min-height: 100%; color: var(--text-info); overflow-y: hidden; overflow-x: hidden; min-height: 100vh; color-scheme: var(--color-scheme) !important; } textarea, input { background-color: var(--background); color: var(--text-input); border: 1px solid var(--border-text); } select, button, input, textarea { filter: var(--filter80); } ================================================ FILE: src/app.tsx ================================================ import { useEffect } from 'react'; import { Outlet, Route, Routes } from 'react-router-dom'; import { initializeNotificationSystem } from './lib/push'; import useTheme from './hooks/use-theme'; import { useAutoSubscribe } from './hooks/use-auto-subscribe'; import AboutView from './views/about'; import All from './views/all'; import Author from './views/author'; import Domain from './views/domain'; import Home from './views/home'; import Inbox from './views/inbox'; import Mod from './views/mod'; import NotFound from './views/not-found'; import PostPage from './views/post-page'; import Profile from './views/profile'; import Settings from './views/settings'; import AccountDataEditor from './views/settings/account-data-editor'; import CommunityDataEditor from './views/community-settings/community-data-editor'; import SubmitPage from './views/submit-page'; import CommunityView from './views/community'; import CommunitySettings from './views/community-settings'; import Communities from './views/communities'; import AccountBar from './components/account-bar/'; import ChallengeModal from './components/challenge-modal'; import Header from './components/header'; import NotificationHandler from './components/notification-handler'; import StickyHeader from './components/sticky-header'; import TopBar from './components/topbar'; import styles from './app.module.css'; initializeNotificationSystem(); const App = () => { useAutoSubscribe(); const globalLayout = ( <> ); const pagesLayout = ( <>

); const feedLayout = ( <>
); // add theme className to body so it can set the correct body background in index.css const [theme] = useTheme(); useEffect(() => { document.body.classList.forEach((className) => document.body.classList.remove(className)); document.body.classList.add(theme); }, [theme]); return (
} /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> }> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } />
); }; export default App; ================================================ FILE: src/components/account-bar/account-bar.module.css ================================================ .content { position: absolute; right: 0; top: 19px; bottom: unset; border-bottom-left-radius: 7px; border-top-left-radius: 0; background-color: var(--background-secondary); padding: 4px; line-height: 12px; z-index: 8; } .user a { color: var(--text-primary); cursor: pointer; } .userDropdownButton { background: none no-repeat scroll center right; background-image: var(--account-dropdown-arrow); padding-right: 21px; margin-right: -5px; cursor: pointer; } .separator { color: var(--gray-contrast); margin: 0px .7ex 0px .7ex; cursor: default; } .textButton { text-decoration: none; font-weight: bold; color: var(--text-primary); } .textButton:hover { text-decoration: underline !important; } .iconButton { text-decoration: none; font-size: larger; cursor: pointer; } .searchBar { position: absolute; border-radius: 7px; right: 5px; top: 25px; z-index: 3; } .accountSelect { position: absolute; top: 25px; left: 0; background-color: var(--background-secondary); line-height: 12px; z-index: 5; } .selectedTextButton { color: var(--green); } .dropdown { float: left; cursor: pointer; position: relative; } .dropChoices { top: 16px; position: absolute; left: 0px; border: 1px solid var(--border-text); background-color: var(--background); color: var(--text-primary) ; white-space: nowrap; line-height: normal; } .dropdownItem { cursor: pointer; padding: 2px 3px 1px 3px; display: block; } @media (max-width: 640px) { .dropdownItem { padding-bottom: 5px; padding-top: 5px; } } .dropdownItem:hover { background-color: var(--background-primary); } .mailIcon { background-repeat: no-repeat; background-position: center; width: 15px; height: 10px; display: inline-block; vertical-align: middle; } .mailIconRead { background-image: url('/assets/mail.png'); } .mailIconUnread { background-image: url('/assets/mail-unread.png'); } .mailUnreadCount { background-color: var(--orange); color: #FFF; font-size: 8px; font-weight: bold; padding: 0px 3px; margin-left: 3px; border-radius: 2px; display: inline-block; } .karma { color: var(--gray-contrast); } .karmaScore { font-weight: 700; } ================================================ FILE: src/components/account-bar/account-bar.tsx ================================================ import { useCallback, useEffect, useRef, useState } from 'react'; import { Link, useLocation } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { createAccount, setActiveAccount, useAccount, useAccounts } from '@bitsocial/bitsocial-react-hooks'; import { isSettingsView } from '../../lib/utils/view-utils'; import styles from './account-bar.module.css'; import SearchBar from '../search-bar'; const AccountBar = () => { const { t } = useTranslation(); const location = useLocation(); const account = useAccount(); const { accounts } = useAccounts(); const { karma } = account || {}; const isInSettingsView = isSettingsView(location.pathname); const [searchVisible, setSearchVisible] = useState(false); const toggleSearchVisible = () => setSearchVisible(!searchVisible); const searchBarRef = useRef(null); const searchBarButtonRef = useRef(null); const [isAccountDropdownOpen, setIsAccountDropdownOpen] = useState(false); const toggleAccountDropdown = () => setIsAccountDropdownOpen(!isAccountDropdownOpen); const accountDropdownRef = useRef(null); const accountdropdownItemsRef = useRef(null); const accountDropdownClass = isAccountDropdownOpen ? styles.visible : styles.hidden; const accountSelectButtonRef = useRef(null); const unreadNotificationCount = account?.unreadNotificationCount ? ` ${account.unreadNotificationCount}` : ''; const mailClass = unreadNotificationCount ? styles.mailIconUnread : styles.mailIconRead; const handleClickOutside = useCallback( (event: MouseEvent) => { const target = event.target as Node; const isOutsideSearchBar = searchBarRef.current && !searchBarRef.current.contains(target) && searchBarButtonRef.current && !searchBarButtonRef.current.contains(target); const isOutsideAccountDropdown = accountDropdownRef.current && !accountDropdownRef.current.contains(target) && accountdropdownItemsRef.current && !accountdropdownItemsRef.current.contains(target); const isOutsideAccountSelectButton = accountSelectButtonRef.current && !accountSelectButtonRef.current.contains(target); if (isOutsideAccountSelectButton && isOutsideAccountDropdown) { setIsAccountDropdownOpen(false); } if (isOutsideSearchBar) { setSearchVisible(false); } }, [searchBarRef, accountSelectButtonRef, accountDropdownRef, accountdropdownItemsRef], ); // Derive focus intent from visibility to avoid effect; SearchBar will handle actual focusing const shouldFocusSearch = searchVisible; useEffect(() => { document.addEventListener('mousedown', handleClickOutside); return () => { document.removeEventListener('mousedown', handleClickOutside); }; }, [handleClickOutside]); const accountDropdownOptions = accounts .filter((account) => account?.author?.shortAddress) .map((account, index) => ( { setActiveAccount(account?.name); setIsAccountDropdownOpen(false); }} > u/{account.author.shortAddress} )); accountDropdownOptions.push( createAccount()}> +{t('create')} , ); return (
{account?.author?.shortAddress} {karma && ( {' '} ({karma?.postScore + 1}) )} {isAccountDropdownOpen && (
{accountDropdownOptions}
)}
| {unreadNotificationCount && {unreadNotificationCount}} | 🔎 {searchVisible && (
)}
| {t('preferences')}
); }; export default AccountBar; ================================================ FILE: src/components/account-bar/index.ts ================================================ export { default } from './account-bar'; ================================================ FILE: src/components/author-sidebar/author-sidebar.module.css ================================================ .sidebar { float: right; width: 300px; position: relative; z-index: 5; background-color: var(--background); padding-left: 5px; padding-bottom: 5px; } .avatar { width: 70px; height: 70px; margin-bottom: 5px; border: 1px solid var(--border-text); } .avatar img { width: 70px; height: 70px; } .titleBox { font-size: larger; color: var(--text); margin-bottom: 17px; } .title { font-weight: bold; font-family: arial, verdana, helvetica, sans-serif; font-size: 19px; word-wrap: break-word; padding-bottom: 5px; } .title button { padding: 0px 4px 0px 4px; margin-left: 5px; font-size: 12px; text-transform: capitalize; position: absolute; margin-top: 2px; } .displayName { font-family: arial, verdana, helvetica, sans-serif; margin-top: -2px; padding-bottom: 5px; font-size: 14px; } .karma { font-size: 18px; font-weight: bold; } .bottom { border-top: 1px solid var(--border-text); padding-top: 2px; font-size: 80%; color: var(--text-info); margin-top: 5px; text-transform: lowercase; } .age { float: right; } .modListTitle { display: inline; text-transform: uppercase; margin: 0; color: gray; font-size: 130%; } .modListContent { margin: 0; padding: 5px; border: 1px solid gray; font-size: larger; list-style: none; line-height: 1.5; } .modList a { color: var(--text-primary); } .modList { padding-top: 7px; } .blockUser { color: var(--text-primary); cursor: pointer; } .editButtonWrapper { color: var(--text-info); font-size: 11px; font-weight: normal; font-family: verdana, arial, helvetica, sans-serif; } .editButton a { color: var(--link-primary); cursor: pointer; } .editButton a:hover { text-decoration: underline; } .blockConfirm { cursor: pointer; color: var(--red); } .confirmButton, .cancelButton { color: var(--text-primary); cursor: pointer; } ================================================ FILE: src/components/author-sidebar/author-sidebar.tsx ================================================ import { useState } from 'react'; import { Link, useLocation, useParams } from 'react-router-dom'; import { useAccount, useAccountComments, useAccountCommunities, AccountCommunity, Community, useAuthor, useAuthorAvatar, useAuthorComments, useBlock, useComment, useCommunities, } from '@bitsocial/bitsocial-react-hooks'; import styles from './author-sidebar.module.css'; import { getFormattedTimeDuration } from '../../lib/utils/time-utils'; import { getOldestAccountHistoryTimestamp } from '../../lib/utils/account-history-utils'; import { isAuthorView, isProfileView } from '../../lib/utils/view-utils'; import { findAuthorCommunities, estimateAuthorKarma } from '../../lib/utils/user-utils'; import getShortAddress from '../../lib/utils/address-utils'; import { getCommunityIdentifiers } from '../../hooks/use-community-identifier'; import { useTranslation } from 'react-i18next'; import { useDefaultSubscriptionAddresses } from '../../hooks/use-default-subscriptions'; interface AuthorModeratingListProps { accountCommunities: Record>; authorCommunities: string[]; isAuthor?: boolean; } const AuthorModeratingList = ({ accountCommunities, authorCommunities, isAuthor = false }: AuthorModeratingListProps) => { const { t } = useTranslation(); const rawAddresses = isAuthor ? authorCommunities : Object.keys(accountCommunities); const communityAddresses = [...new Set(rawAddresses)]; return ( communityAddresses.length > 0 && (
{t('moderator_of')}
    {communityAddresses.map((address, index) => (
  • s/{getShortAddress(address)}
  • ))}
) ); }; const AuthorSidebar = () => { const { t } = useTranslation(); const location = useLocation(); const params = useParams(); const { authorAddress, commentCid } = useParams() || {}; const { blocked, unblock, block } = useBlock({ address: authorAddress }); const [showBlockConfirm, setShowBlockConfirm] = useState(false); const comment = useComment({ commentCid, onlyIfCached: true }); const { imageUrl: authorPageAvatar } = useAuthorAvatar({ author: comment?.author }); const isInAuthorView = isAuthorView(location.pathname); const isInProfileView = isProfileView(location.pathname); const userAccount = useAccount(); const { imageUrl: profilePageAvatar } = useAuthorAvatar({ author: userAccount?.author }); const { accountComments: oldestAccountComment } = useAccountComments({ page: 0, pageSize: 1, order: 'asc' }); const { accountCommunities } = useAccountCommunities(); const profileOldestAccountTimestamp = getOldestAccountHistoryTimestamp(oldestAccountComment as { timestamp?: number }[]); const defaultSubplebbitAddresses = useDefaultSubscriptionAddresses(); const accountSubscriptions = userAccount?.subscriptions || []; const subscriptionsAndDefaults = [...accountSubscriptions, ...defaultSubplebbitAddresses]; const communities = useCommunities({ communities: getCommunityIdentifiers(subscriptionsAndDefaults || []), onlyIfCached: true, }).communities?.filter(Boolean) || []; const authorAccount = useAuthor({ authorAddress, commentCid }); const { authorComments } = useAuthorComments({ authorAddress, commentCid }); const authorOldestCommentTimestamp = authorComments?.length ? Math.min(...authorComments.filter((comment): comment is NonNullable => comment != null).map((comment) => comment.timestamp)) : Date.now(); const authorCommunities = findAuthorCommunities(authorAddress, Object.values(communities)); const estimatedAuthorKarma = estimateAuthorKarma(authorComments); const address = isInAuthorView ? params?.authorAddress : isInProfileView ? userAccount?.author?.address : ''; const karma = isInAuthorView ? estimatedAuthorKarma : isInProfileView ? userAccount?.karma : ''; const { postScore, replyScore } = karma || { postScore: 0, replyScore: 0 }; const oldestCommentTimestamp = isInAuthorView ? authorOldestCommentTimestamp : isInProfileView ? profileOldestAccountTimestamp : Date.now(); const displayName = isInAuthorView ? authorAccount?.author?.displayName : isInProfileView ? userAccount?.author?.displayName : ''; const blockConfirm = () => { setShowBlockConfirm(true); }; const handleBlock = () => { if (blocked) { unblock(); } else { block(); } setShowBlockConfirm(false); }; const cancelBlock = () => { setShowBlockConfirm(false); }; return (
{((isInAuthorView && authorPageAvatar) || (isInProfileView && profilePageAvatar)) && (
)}
{address} {isInProfileView && !displayName && ( {' '} ( {t('edit')} ) )}
{displayName &&
{displayName}
} {/* TODO: implement functionality for subscribing to users {isInAuthorView && authorAddress !== userAccount?.author?.address && (
)} */}
{postScore + 1} {t('post_karma')}
{replyScore} {t('comment_karma')}
{isInAuthorView && authorAddress !== userAccount?.author?.address && (showBlockConfirm ? ( {t('are_you_sure')}{' '} {t('yes')} {' / '} {t('no')} ) : ( {blocked ? t('unblock_user') : t('block_user')} ))} {t('user_since', { time: getFormattedTimeDuration(oldestCommentTimestamp) })}
{(Object.keys(accountCommunities).length > 0 || authorCommunities.length > 0) && ( )}
); }; export default AuthorSidebar; ================================================ FILE: src/components/author-sidebar/index.ts ================================================ export { default } from './author-sidebar'; ================================================ FILE: src/components/challenge-modal/challenge-modal.module.css ================================================ .modal { z-index: 7; outline: unset; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); } .container { width: min(90vw, 560px); max-height: 90vh; color: var(--text); font-size: large; background-color: var(--background); border: 1px solid var(--border-text); padding: 20px; position: fixed; transform: translate(-50%, -50%); font-size: large; overflow-y: auto; } .subTitle { font-size: 13px; padding-top: 5px; } .title, .subTitle { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .challengeMediaWrapper { display: flex; justify-content: center; margin: 20px 0; } .challengeMedia { width: 100%; max-height: 50%; } .challengeInput { width: 100%; padding: 10px; font-size: 16px; box-sizing: border-box; background-color: var(--background); color: var(--text); } .challengeFooter { display: flex; justify-content: flex-end; align-items: center; margin-top: 20px; position: relative; padding-bottom: 12px; } .buttons { position: absolute; left: 0; } .challengeFooter button { margin: 5px 5px 0 0; -webkit-appearance: button; appearance: button; cursor: pointer; padding: 2px 6px 3px; text-transform: lowercase; } .buttons button { display: inline-block; line-height: 1.2; white-space: nowrap; } @media (max-width: 480px) { .challengeFooter button { font-size: 12px; } } @media (max-width: 640px) { .container { max-width: 400px; width: 85vw; max-height: 85vh; } .challengeFooter { flex-direction: column; align-items: stretch; } .buttons { position: static; margin-top: 10px; } } /* Iframe challenge styles */ .iframeChallengeWarning { font-size: 14px; text-align: center; padding: 20px 0; word-break: break-word; overflow-wrap: break-word; } .iframeWrapper { height: 70vh; margin-top: 20px; max-height: 600px; } .iframe { width: 100%; height: 100%; border: 1px solid var(--border-text); background-color: var(--background, transparent); } .iframeFooter { flex-direction: column; align-items: flex-start; padding-bottom: 0; gap: 10px; } .iframeInstruction { font-size: 12px; color: var(--text-secondary); margin-bottom: 10px; } .iframeCloseButton { align-self: flex-start; } ================================================ FILE: src/components/challenge-modal/challenge-modal.tsx ================================================ import { useCallback, useEffect, useRef, useState } from 'react'; import { FloatingFocusManager, useClick, useDismiss, useFloating, useId, useInteractions, useRole } from '@floating-ui/react'; import { Challenge as ChallengeType, useComment, useAccount } from '@bitsocial/bitsocial-react-hooks'; import { useTranslation } from 'react-i18next'; import useChallengesStore from '../../stores/use-challenges-store'; import useTheme from '../../hooks/use-theme'; import styles from './challenge-modal.module.css'; import { getPublicationPreview, getPublicationType, getVotePreview } from '../../lib/utils/challenge-utils'; interface ChallengeHeaderProps { publicationType: string | null; votePreview: string; parentCid?: string; parentAddress?: string; publicationContent: string; communityShortAddress?: string; } const useParentAddress = (parentCid?: string) => { const parentComment = useComment({ commentCid: parentCid, onlyIfCached: true }); return parentComment?.author?.shortAddress; }; const ChallengeHeader = ({ publicationType, votePreview, parentCid, parentAddress, publicationContent, communityShortAddress }: ChallengeHeaderProps) => { const { t } = useTranslation(); return ( <>
{t('challenge_from', { subplebbit: communityShortAddress })}
{publicationType === 'vote' && votePreview + ' '} {parentCid ? t('challenge_for_reply', { parentAddress, publicationContent, interpolation: { escapeValue: false } }) : t('challenge_for_post', { publicationContent, interpolation: { escapeValue: false } })}
); }; interface RegularChallengeContentProps { challenge: ChallengeType; closeModal: () => void; } const RegularChallengeContent = ({ challenge, closeModal }: RegularChallengeContentProps) => { const { t } = useTranslation(); const account = useAccount(); const [theme] = useTheme(); const challenges = challenge?.[0]?.challenges; const publicationTarget = challenge?.[2]; const publicationType = getPublicationType(challenge?.[1]); const publicationContent = publicationType === 'vote' ? getPublicationPreview(publicationTarget) : getPublicationPreview(challenge?.[1]); const votePreview = getVotePreview(challenge?.[1]); const { parentCid, shortSubplebbitAddress, subplebbitAddress } = challenge?.[1] || {}; const parentAddress = useParentAddress(parentCid); const [currentChallengeIndex, setCurrentChallengeIndex] = useState(0); const [answers, setAnswers] = useState([]); const [showIframeConfirmation, setShowIframeConfirmation] = useState(true); const [iframeUrlState, setIframeUrl] = useState(''); const [iframeOrigin, setIframeOrigin] = useState(''); const iframeRef = useRef(null); const currentChallenge = challenges?.[currentChallengeIndex]; const isTextChallenge = currentChallenge?.type === 'text/plain'; const isImageChallenge = currentChallenge?.type === 'image/png'; const isIframeChallenge = currentChallenge?.type === 'url/iframe'; const isValidAnswer = (index: number) => { return !!answers[index] && answers[index].trim() !== ''; }; const onAnswersChange = (e: React.ChangeEvent) => { setAnswers((prevAnswers) => { const updatedAnswers = [...prevAnswers]; updatedAnswers[currentChallengeIndex] = e.target.value; return updatedAnswers; }); }; const onSubmit = useCallback(() => { challenge[1].publishChallengeAnswers(answers); setAnswers([]); closeModal(); }, [challenge, answers, closeModal]); const onIframeClose = useCallback(() => { // Submit empty string as answer for iframe challenges challenge[1].publishChallengeAnswers(['']); closeModal(); }, [challenge, closeModal]); const onEnterKey = (e: React.KeyboardEvent) => { if (e.key !== 'Enter') return; if (!isValidAnswer(currentChallengeIndex)) return; if (challenges?.[currentChallengeIndex + 1]) { setCurrentChallengeIndex((prev) => prev + 1); } else { onSubmit(); } }; // Get URL for iframe challenge confirmation (hostname only for whitelisted sites, full URL otherwise) const getChallengeUrl = () => { try { const iframeUrl = currentChallenge?.challenge; if (!iframeUrl) return ''; const url = new URL(iframeUrl); // Whitelist mintpass.org - only show hostname for trusted sites if (url.hostname === 'mintpass.org') { return url.hostname; } // For other sites, show full URL for transparency return url.href; } catch { return ''; } }; const handleLoadIframe = () => { const iframeUrl = currentChallenge?.challenge; if (!iframeUrl) return; const rawUserAddress = account?.author?.address?.trim(); const requiresUserAddress = iframeUrl.includes('{userAddress}'); if (requiresUserAddress && !rawUserAddress) { alert( t('iframe_challenge_missing_user_address', { defaultValue: 'Error: Unable to load challenge without your address. Please sign in and try again.', }), ); return; } const encodedAddress = rawUserAddress ? encodeURIComponent(rawUserAddress) : undefined; const replacedUrl = requiresUserAddress && encodedAddress ? iframeUrl.replace(/\{userAddress\}/g, encodedAddress) : iframeUrl; try { const validatedUrl = new URL(replacedUrl); if (validatedUrl.protocol !== 'https:') { throw new Error('Only HTTPS iframe challenges are supported'); } validatedUrl.pathname = validatedUrl.pathname.replace(/\/{2,}/g, '/'); validatedUrl.searchParams.set('theme', theme); const finalUrl = validatedUrl.toString(); setIframeUrl(finalUrl); setIframeOrigin(validatedUrl.origin); setShowIframeConfirmation(false); } catch (error) { console.error('Invalid iframe challenge URL', { error }); alert('Error: Invalid URL for authentication challenge'); closeModal(); } }; const sendThemeToIframe = useCallback(() => { if (!iframeRef.current) { return; } try { iframeRef.current.contentWindow?.postMessage( { type: 'plebbit-theme', theme: theme, source: 'plebbit-seedit', }, iframeOrigin, ); } catch (error) { console.warn('Could not send theme to iframe:', error); } }, [iframeOrigin, theme]); const handleIframeLoad = () => { sendThemeToIframe(); }; useEffect(() => { if (iframeRef.current && iframeUrlState && iframeOrigin && !showIframeConfirmation) { sendThemeToIframe(); } }, [iframeOrigin, iframeUrlState, sendThemeToIframe, showIframeConfirmation]); useEffect(() => { const onEscapeKey = (e: KeyboardEvent) => { if (e.key === 'Escape') { if (isIframeChallenge) { onIframeClose(); } else { closeModal(); } } }; document.addEventListener('keydown', onEscapeKey); return () => document.removeEventListener('keydown', onEscapeKey); }, [isIframeChallenge, onIframeClose, closeModal]); const communityShortAddress = shortSubplebbitAddress || subplebbitAddress; // Render iframe challenge if (isIframeChallenge) { return ( <> {showIframeConfirmation ? ( <>
{t('iframe_challenge_open_confirmation', { subplebbit: communityShortAddress, url: decodeURIComponent(getChallengeUrl()), defaultValue: `s/${communityShortAddress} challenge wants to open ${decodeURIComponent(getChallengeUrl())}`, })}
) : ( <>