Compare commits

..

1 Commits

1295 changed files with 12955 additions and 18472 deletions

View File

View File

View File

@@ -21,6 +21,8 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v3 uses: docker/setup-qemu-action@v3
@@ -35,9 +37,6 @@ jobs:
username: ${{ github.repository_owner }} username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
- name: Get current date in NST
run: echo "CURRENT_DATE_NST=$(date +'%Y%m%d-%H%M%S' -d '-3 hours -30 minutes')" >> $GITHUB_ENV
- name: Docker meta - name: Docker meta
id: meta id: meta
uses: docker/metadata-action@v5 uses: docker/metadata-action@v5
@@ -49,22 +48,12 @@ jobs:
type=semver,pattern={{major}}.x type=semver,pattern={{major}}.x
type=raw,value=latest,enable={{is_default_branch}} type=raw,value=latest,enable={{is_default_branch}}
type=ref,event=branch,enable=${{ github.event.repository.default_branch != github.ref }} type=ref,event=branch,enable=${{ github.event.repository.default_branch != github.ref }}
type=raw,value=${{ env.CURRENT_DATE_NST }}
flavor: |
latest=true
- name: Cache node_modules
id: cache-node-modules
uses: actions/cache@v4
with:
path: var-cache-node-modules
key: var-cache-node-modules-${{ hashFiles('Dockerfile', 'install/package.json') }}
- name: Build and push Docker images - name: Build and push Docker images
uses: docker/build-push-action@v5 uses: docker/build-push-action@v5
with: with:
cache-from: type=gha cache-from: type=gha
cache-to: type=gha,mode=min cache-to: type=gha,mode=max
context: . context: .
file: ./Dockerfile file: ./Dockerfile
platforms: linux/amd64,linux/arm64,linux/arm/v7 platforms: linux/amd64,linux/arm64,linux/arm/v7

View File

@@ -63,7 +63,7 @@ jobs:
- 5432:5432 - 5432:5432
redis: redis:
image: 'redis:7.2.4' image: 'redis:7.2.3'
# Set health checks to wait until redis has started # Set health checks to wait until redis has started
options: >- options: >-
--health-cmd "redis-cli ping" --health-cmd "redis-cli ping"
@@ -192,7 +192,7 @@ jobs:
run: npm run coverage run: npm run coverage
- name: Test coverage - name: Test coverage
uses: coverallsapp/github-action@643bc377ffa44ace6394b2b5d0d3950076de9f63 # v2.3.0 uses: coverallsapp/github-action@3dfc5567390f6fa9267c0ee9c251e4c8c3f18949 # v2.2.3
if: matrix.coverage if: matrix.coverage
with: with:
github-token: ${{ secrets.GITHUB_TOKEN }} github-token: ${{ secrets.GITHUB_TOKEN }}
@@ -206,7 +206,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Coveralls Finished - name: Coveralls Finished
uses: coverallsapp/github-action@643bc377ffa44ace6394b2b5d0d3950076de9f63 # v2.3.0 uses: coverallsapp/github-action@3dfc5567390f6fa9267c0ee9c251e4c8c3f18949 # v2.2.3
with: with:
github-token: ${{ secrets.GITHUB_TOKEN }} github-token: ${{ secrets.GITHUB_TOKEN }}
parallel-finished: true parallel-finished: true

3
.gitignore vendored
View File

@@ -71,5 +71,4 @@ package-lock.json
link-plugins.sh link-plugins.sh
test.sh test.sh
.docker/** .docker/
!**/.gitkeep

View File

@@ -2549,59 +2549,6 @@ trans.et = public/language/et/themes/persona.json
trans.it = public/language/it/themes/persona.json trans.it = public/language/it/themes/persona.json
trans.rw = public/language/rw/themes/persona.json trans.rw = public/language/rw/themes/persona.json
[o:nodebb:p:nodebb:r:aria]
file_filter = public/language/<lang>/aria.json
source_file = public/language/en-GB/aria.json
source_lang = en_GB
type = KEYVALUEJSON
trans.th = public/language/th/aria.json
trans.bg = public/language/bg/aria.json
trans.hr = public/language/hr/aria.json
trans.hy = public/language/hy/aria.json
trans.sk = public/language/sk/aria.json
trans.sl = public/language/sl/aria.json
trans.sq_AL = public/language/sq-AL/aria.json
trans.sv = public/language/sv/aria.json
trans.vi = public/language/vi/aria.json
trans.da = public/language/da/aria.json
trans.en_US = public/language/en-US/aria.json
trans.gl = public/language/gl/aria.json
trans.ko = public/language/ko/aria.json
trans.lt = public/language/lt/aria.json
trans.pt_BR = public/language/pt-BR/aria.json
trans.hu = public/language/hu/aria.json
trans.lv = public/language/lv/aria.json
trans.ro = public/language/ro/aria.json
trans.ru = public/language/ru/aria.json
trans.sr = public/language/sr/aria.json
trans.bn = public/language/bn/aria.json
trans.he = public/language/he/aria.json
trans.nl = public/language/nl/aria.json
trans.sc = public/language/sc/aria.json
trans.zh_CN = public/language/zh-CN/aria.json
trans.fi = public/language/fi/aria.json
trans.ja = public/language/ja/aria.json
trans.nb = public/language/nb/aria.json
trans.pl = public/language/pl/aria.json
trans.zh_TW = public/language/zh-TW/aria.json
trans.ar = public/language/ar/aria.json
trans.cs = public/language/cs/aria.json
trans.fa_IR = public/language/fa-IR/aria.json
trans.ms = public/language/ms/aria.json
trans.pt_PT = public/language/pt-PT/aria.json
trans.tr = public/language/tr/aria.json
trans.en@pirate = public/language/en-x-pirate/aria.json
trans.fr = public/language/fr/aria.json
trans.id = public/language/id/aria.json
trans.uk = public/language/uk/aria.json
trans.de = public/language/de/aria.json
trans.el = public/language/el/aria.json
trans.es = public/language/es/aria.json
trans.et = public/language/et/aria.json
trans.it = public/language/it/aria.json
trans.rw = public/language/rw/aria.json
[o:nodebb:p:nodebb:r:category] [o:nodebb:p:nodebb:r:category]
file_filter = public/language/<lang>/category.json file_filter = public/language/<lang>/category.json
source_file = public/language/en-GB/category.json source_file = public/language/en-GB/category.json

File diff suppressed because it is too large Load Diff

View File

@@ -1,75 +1,51 @@
FROM node:lts as build FROM --platform=$BUILDPLATFORM node:lts as npm
ENV NODE_ENV=production \ RUN mkdir -p /usr/src/build && \
DAEMON=false \ chown -R node:node /usr/src/build
SILENT=false \ WORKDIR /usr/src/build
USER=nodebb \
UID=1001 \
GID=1001
WORKDIR /usr/src/app/ ARG NODE_ENV
ENV NODE_ENV $NODE_ENV
COPY . /usr/src/app/ COPY --chown=node:node install/package.json /usr/src/build/package.json
# Install corepack to allow usage of other package managers USER node
RUN corepack enable
# Removing unnecessary files for us
RUN find . -mindepth 1 -maxdepth 1 -name '.*' ! -name '.' ! -name '..' -exec bash -c 'echo "Deleting {}"; rm -rf {}' \;
# Prepage package.json
RUN cp /usr/src/app/install/package.json /usr/src/app/
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive \
apt-get -y --no-install-recommends install \
tini
RUN groupadd --gid ${GID} ${USER} \
&& useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \
&& chown -R ${USER}:${USER} /usr/src/app/
USER ${USER}
RUN npm install --omit=dev RUN npm install --omit=dev
# TODO: generate lockfiles for each package manager
## pnpm import \
FROM node:lts-slim AS final FROM node:lts as rebuild
ENV NODE_ENV=production \ ARG BUILDPLATFORM
DAEMON=false \ ARG TARGETPLATFORM
SILENT=false \
USER=nodebb \
UID=1001 \
GID=1001
WORKDIR /usr/src/app/ RUN mkdir -p /usr/src/build && \
chown -R node:node /usr/src/build
RUN corepack enable \ COPY --from=npm /usr/src/build /usr/src/build
&& groupadd --gid ${GID} ${USER} \
&& useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \
&& mkdir -p /usr/src/app/logs/ /opt/config/ \
&& chown -R ${USER}:${USER} /usr/src/app/ /opt/config/
COPY --from=build --chown=${USER}:${USER} /usr/src/app/ /usr/src/app/install/docker/setup.json /usr/src/app/ RUN if [ $BUILDPLATFORM != $TARGETPLATFORM ]; then \
COPY --from=build --chown=${USER}:${USER} /usr/bin/tini /usr/src/app/install/docker/entrypoint.sh /usr/local/bin/ npm rebuild && \
npm cache clean --force; fi
RUN chmod +x /usr/local/bin/entrypoint.sh \ FROM node:lts-slim as run
&& chmod +x /usr/local/bin/tini
# TODO: Have docker-compose use environment variables to create files like setup.json and config.json. ARG NODE_ENV
# COPY --from=hairyhenderson/gomplate:stable /gomplate /usr/local/bin/gomplate ENV NODE_ENV=$NODE_ENV \
daemon=false \
silent=false
USER ${USER} RUN mkdir -p /usr/src/app && \
chown -R node:node /usr/src/app
COPY --chown=node:node --from=rebuild /usr/src/build /usr/src/app
WORKDIR /usr/src/app
USER node
COPY --chown=node:node . /usr/src/app
EXPOSE 4567 EXPOSE 4567
VOLUME ["/usr/src/app/node_modules", "/usr/src/app/build", "/usr/src/app/public/uploads", "/opt/config"]
VOLUME ["/usr/src/app/node_modules", "/usr/src/app/build", "/usr/src/app/public/uploads", "/opt/config/"] ENTRYPOINT ["./install/docker/entrypoint.sh"]
# Utilising tini as our init system within the Docker container for graceful start-up and termination.
# Tini serves as an uncomplicated init system, adept at managing the reaping of zombie processes and forwarding signals.
# This approach is crucial to circumvent issues with unmanaged subprocesses and signal handling in containerised environments.
# By integrating tini, we enhance the reliability and stability of our Docker containers.
# Ensures smooth start-up and shutdown processes, and reliable, safe handling of signal processing.
ENTRYPOINT ["tini", "--", "entrypoint.sh"]

View File

@@ -1,77 +0,0 @@
FROM node:lts AS git
ENV USER=nodebb \
UID=1001 \
GID=1001
WORKDIR /usr/src/app/
RUN groupadd --gid ${GID} ${USER} \
&& useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \
&& chown -R ${USER}:${USER} /usr/src/app/
RUN apt-get update \
&& apt-get -y --no-install-recommends install tini
USER ${USER}
# Change to the git branch you want to test
RUN git clone --recurse-submodules -j8 --depth 1 https://github.com/NodeBB/NodeBB.git .
RUN find . -mindepth 1 -maxdepth 1 -name '.*' ! -name '.' ! -name '..' -exec bash -c 'echo "Deleting {}"; rm -rf {}' \;
FROM node:lts AS node_modules_touch
ENV NODE_ENV=development \
USER=nodebb \
UID=1001 \
GID=1001
WORKDIR /usr/src/app/
RUN corepack enable \
&& groupadd --gid ${GID} ${USER} \
&& useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \
&& chown -R ${USER}:${USER} /usr/src/app/
COPY --from=git --chown=${USER}:${USER} /usr/src/app/install/package.json /usr/src/app/
USER ${USER}
RUN npm install
FROM node:lts-slim AS final
ENV NODE_ENV=development \
DAEMON=false \
SILENT=false \
USER=nodebb \
UID=1001 \
GID=1001
WORKDIR /usr/src/app/
RUN corepack enable \
&& groupadd --gid ${GID} ${USER} \
&& useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \
&& mkdir -p /usr/src/app/logs/ /opt/config/ \
&& chown -R ${USER}:${USER} /usr/src/app/ /opt/config/
COPY --from=build --chown=${USER}:${USER} /usr/src/app/ /usr/src/app/install/docker/setup.json /usr/src/app/
COPY --from=build --chown=${USER}:${USER} /usr/bin/tini /usr/src/app/install/docker/entrypoint.sh /usr/local/bin/
COPY --from=node_modules_touch --chown=${USER}:${USER} /usr/src/app/ /usr/src/app/
COPY --from=git --chown=${USER}:${USER} /usr/src/app/ /usr/src/app/
RUN chmod +x /usr/local/bin/entrypoint.sh \
&& chmod +x /usr/local/bin/tini
# TODO: Have docker-compose use environment variables to create files like setup.json and config.json.
# COPY --from=hairyhenderson/gomplate:stable /gomplate /usr/local/bin/gomplate
USER ${USER}
EXPOSE 4567
VOLUME ["/usr/src/app/node_modules", "/usr/src/app/build", "/usr/src/app/public/uploads", "/opt/config/"]
ENTRYPOINT ["tini", "--", "entrypoint.sh"]

View File

@@ -1,70 +0,0 @@
version: '3.8'
services:
nodebb:
build: .
# image: ghcr.io/nodebb/nodebb:latest
restart: unless-stopped
ports:
- '4567:4567' # comment this out if you don't want to expose NodeBB to the host, or change the first number to any port you want
volumes:
- nodebb-build:/usr/src/app/build
- nodebb-uploads:/usr/src/app/public/uploads
- nodebb-config:/opt/config
- ./install/docker/setup.json:/usr/src/app/setup.json
postgres:
image: postgres:16.3-alpine
restart: unless-stopped
environment:
POSTGRES_USER: nodebb
POSTGRES_PASSWORD: nodebb
POSTGRES_DB: nodebb
volumes:
- postgres-data:/var/lib/postgresql/data
redis:
image: redis:7.2.4-alpine
restart: unless-stopped
command: ['redis-server', '--appendonly', 'yes', '--loglevel', 'warning']
# command: ["redis-server", "--save", "60", "1", "--loglevel", "warning"] # uncomment if you want to use snapshotting instead of AOF
volumes:
- redis-data:/data
profiles:
- redis
volumes:
postgres-data:
driver: local
driver_opts:
o: bind
type: none
device: ./.docker/database/postgresql/data
redis-data:
driver: local
driver_opts:
o: bind
type: none
device: ./.docker/database/redis
nodebb-build:
driver: local
driver_opts:
o: bind
type: none
device: ./.docker/build
nodebb-uploads:
driver: local
driver_opts:
o: bind
type: none
device: ./.docker/public/uploads
nodebb-config:
driver: local
driver_opts:
o: bind
type: none
device: ./.docker/config

View File

@@ -1,51 +0,0 @@
version: '3.8'
services:
nodebb:
build: .
# image: ghcr.io/nodebb/nodebb:latest
restart: unless-stopped
ports:
- '4567:4567' # comment this out if you don't want to expose NodeBB to the host, or change the first number to any port you want
volumes:
- nodebb-build:/usr/src/app/build
- nodebb-uploads:/usr/src/app/public/uploads
- nodebb-config:/opt/config
- ./install/docker/setup.json:/usr/src/app/setup.json
redis:
image: redis:7.2.4-alpine
restart: unless-stopped
command: ['redis-server', '--appendonly', 'yes', '--loglevel', 'warning']
# command: ["redis-server", "--save", "60", "1", "--loglevel", "warning"] # uncomment if you want to use snapshotting instead of AOF
volumes:
- redis-data:/data
volumes:
redis-data:
driver: local
driver_opts:
o: bind
type: none
device: ./.docker/database/redis
nodebb-build:
driver: local
driver_opts:
o: bind
type: none
device: ./.docker/build
nodebb-uploads:
driver: local
driver_opts:
o: bind
type: none
device: ./.docker/public/uploads
nodebb-config:
driver: local
driver_opts:
o: bind
type: none
device: ./.docker/config

View File

@@ -3,89 +3,53 @@ version: '3.8'
services: services:
nodebb: nodebb:
build: . build: .
# image: ghcr.io/nodebb/nodebb:latest
restart: unless-stopped restart: unless-stopped
ports: ports:
- '4567:4567' # comment this out if you don't want to expose NodeBB to the host, or change the first number to any port you want - "4567:4567/tcp" # comment this out if you don't want to expose NodeBB to the host, or change the first number to any port you want
# uncomment if you want to use another container as a reverse proxy
# expose:
# - 4567
volumes: volumes:
- nodebb-build:/usr/src/app/build - ./.docker/build:/usr/src/app/build
- nodebb-uploads:/usr/src/app/public/uploads - ./.docker/public/uploads:/usr/src/app/public/uploads
- nodebb-config:/opt/config - ./.docker:/opt/config
- ./install/docker/setup.json:/usr/src/app/setup.json - ./install/docker/setup.json:/usr/src/app/setup.json
mongo: mongo:
image: 'mongo:7-jammy' image: "mongo:7-jammy"
restart: unless-stopped restart: unless-stopped
ports: expose:
- '27017:27017' - "27017"
environment: environment:
MONGO_INITDB_ROOT_USERNAME: nodebb MONGO_INITDB_ROOT_USERNAME: nodebb
MONGO_INITDB_ROOT_PASSWORD: nodebb MONGO_INITDB_ROOT_PASSWORD: nodebb
MONGO_INITDB_DATABASE: nodebb MONGO_INITDB_DATABASE: nodebb
volumes: volumes:
- mongo-data:/data/db - ./.docker/database/mongo/config:/etc/mongo
- ./.docker/database/mongo/data:/data/db
- ./install/docker/mongodb-user-init.js:/docker-entrypoint-initdb.d/user-init.js - ./install/docker/mongodb-user-init.js:/docker-entrypoint-initdb.d/user-init.js
redis:
image: redis:7.2.4-alpine
restart: unless-stopped
command: ['redis-server', '--appendonly', 'yes', '--loglevel', 'warning']
# command: ['redis-server', '--save', '60', '1', '--loglevel', 'warning'] # uncomment if you want to use snapshotting instead of AOF
volumes:
- redis-data:/data
profiles: profiles:
- redis - mongo
postgres: postgres:
image: postgres:16.1-alpine image: postgres:16.1-alpine
restart: unless-stopped restart: unless-stopped
expose:
- "5432"
environment: environment:
POSTGRES_USER: nodebb POSTGRES_USER: nodebb
POSTGRES_PASSWORD: nodebb POSTGRES_PASSWORD: nodebb
POSTGRES_DB: nodebb POSTGRES_DB: nodebb
volumes: volumes:
- postgres-data:/var/lib/postgresql/data - ./.docker/database/postgresql/data:/var/lib/postgresql/data
profiles: profiles:
- postgres - postgres
redis:
volumes: image: redis:7.2.3-alpine
mongo-data: restart: unless-stopped
driver: local command: ["redis-server", "--appendonly", "yes", "--loglevel", "warning"]
driver_opts: # command: ["redis-server", "--save", "60", "1", "--loglevel", "warning"] # uncomment if you want to use snapshotting instead of AOF
o: bind expose:
type: none - "6379"
device: ./.docker/database/mongo/data volumes:
- ./.docker/database/redis:/data
redis-data: profiles:
driver: local - redis
driver_opts:
o: bind
type: none
device: ./.docker/database/redis
postgres-data:
driver: local
driver_opts:
o: bind
type: none
device: ./.docker/database/postgresql/data
nodebb-build:
driver: local
driver_opts:
o: bind
type: none
device: ./.docker/build
nodebb-uploads:
driver: local
driver_opts:
o: bind
type: none
device: ./.docker/public/uploads
nodebb-config:
driver: local
driver_opts:
o: bind
type: none
device: ./.docker/config

View File

@@ -42,11 +42,11 @@
"registrationApprovalType": "normal", "registrationApprovalType": "normal",
"allowAccountDelete": 1, "allowAccountDelete": 1,
"privateUploads": 0, "privateUploads": 0,
"allowedFileExtensions": "png,jpg,bmp,txt,webp,webm,mp4,gif", "allowedFileExtensions": "png,jpg,bmp,txt",
"uploadRateLimitThreshold": 10, "uploadRateLimitThreshold": 10,
"uploadRateLimitCooldown": 60, "uploadRateLimitCooldown": 60,
"allowUserHomePage": 1, "allowUserHomePage": 1,
"allowMultipleBadges": 1, "allowMultipleBadges": 0,
"maximumFileSize": 2048, "maximumFileSize": 2048,
"stripEXIFData": 1, "stripEXIFData": 1,
"orphanExpiryDays": 0, "orphanExpiryDays": 0,
@@ -99,8 +99,6 @@
"min:rep:aboutme": 0, "min:rep:aboutme": 0,
"min:rep:signature": 0, "min:rep:signature": 0,
"flags:limitPerTarget": 0, "flags:limitPerTarget": 0,
"flags:postFlagsPerDay": 10,
"flags:userFlagsPerDay": 10,
"flags:autoFlagOnDownvoteThreshold": 0, "flags:autoFlagOnDownvoteThreshold": 0,
"flags:actionOnResolve": "rescind", "flags:actionOnResolve": "rescind",
"flags:actionOnReject": "rescind", "flags:actionOnReject": "rescind",
@@ -137,7 +135,7 @@
"sitemapTopics": 500, "sitemapTopics": 500,
"maintenanceMode": 0, "maintenanceMode": 0,
"maintenanceModeStatus": 503, "maintenanceModeStatus": 503,
"voteVisibility": "privileged", "votesArePublic": 0,
"maximumInvites": 0, "maximumInvites": 0,
"username:disableEdit": 0, "username:disableEdit": 0,
"email:disableEdit": 0, "email:disableEdit": 0,
@@ -178,7 +176,7 @@
"onlineCutoff": 30, "onlineCutoff": 30,
"timeagoCutoff": 30, "timeagoCutoff": 30,
"necroThreshold": 7, "necroThreshold": 7,
"categoryWatchState": "tracking", "categoryWatchState": "watching",
"submitPluginUsage": 1, "submitPluginUsage": 1,
"showAverageApprovalTime": 1, "showAverageApprovalTime": 1,
"autoApproveTime": 0, "autoApproveTime": 0,
@@ -190,4 +188,4 @@
"maxReconnectionAttempts": 5, "maxReconnectionAttempts": 5,
"reconnectionDelay": 1500, "reconnectionDelay": 1500,
"disableCustomUserSkins": 0 "disableCustomUserSkins": 0
} }

View File

@@ -1,198 +1,46 @@
#!/bin/bash #!/bin/bash
set -e export CONFIG_DIR="${CONFIG_DIR:-/opt/config}"
export CONFIG=$CONFIG_DIR/config.json
export FORCE_BUILD_BEFORE_START="${FORCE_BUILD_BEFORE_START:-false}"
# Function to set default values for environment variables # Supported verbs: install (web install), setup (interactive CLI session). Default: web install
set_defaults() { # TODO: constraint it using a hash set (or hash table)
export CONFIG_DIR="${CONFIG_DIR:-/opt/config}" export NODEBB_INIT_VERB="${NODEBB_INIT_VERB:-install}"
export CONFIG="$CONFIG_DIR/config.json" # Setup variable for backward compatibility, default: <empty>
export NODEBB_INIT_VERB="${NODEBB_INIT_VERB:-install}" export SETUP="${SETUP:-}"
export NODEBB_BUILD_VERB="${NODEBB_BUILD_VERB:-build}"
export START_BUILD="${START_BUILD:-${FORCE_BUILD_BEFORE_START:-false}}"
export SETUP="${SETUP:-}"
export PACKAGE_MANAGER="${PACKAGE_MANAGER:-npm}"
export OVERRIDE_UPDATE_LOCK="${OVERRIDE_UPDATE_LOCK:-false}"
}
# Function to check if a directory exists and is writable mkdir -p $CONFIG_DIR
check_directory() {
local dir="$1"
if [ ! -d "$dir" ]; then
echo "Error: Directory $dir does not exist. Creating..."
mkdir -p "$dir" || {
echo "Error: Failed to create directory $dir"
exit 1
}
fi
if [ ! -w "$dir" ]; then
echo "Warning: No write permission for directory $dir, attempting to fix..."
chown -R $USER:$USER "$dir" || true # attempt to change ownership, do not exit on failure
chmod -R 760 "$dir" || true # attempt to change permissions, do not exit on failure
if [ ! -w "$dir" ]; then
echo "Error: No write permission for directory $dir. Exiting..."
exit 1
fi
fi
}
# Function to copy or link package.json and lock files based on package manager # if the folder is mounted as a volume this can fail, the check below is to ensure there is still write access
copy_or_link_files() { chmod -fR 760 $CONFIG_DIR 2> /dev/null
local src_dir="$1"
local dest_dir="$2"
local package_manager="$3"
local lock_file
case "$package_manager" in if [[ ! -w $CONFIG_DIR ]]; then
yarn) lock_file="yarn.lock" ;; echo "panic: no write permission for $CONFIG_DIR"
npm) lock_file="package-lock.json" ;; exit 1
pnpm) lock_file="pnpm-lock.yaml" ;; fi
*)
echo "Unknown package manager: $package_manager"
exit 1
;;
esac
# Check if source and destination files are the same [[ -f $CONFIG_DIR/package.json ]] || cp install/package.json $CONFIG_DIR/package.json
if [ "$(realpath "$src_dir/package.json")" != "$(realpath "$dest_dir/package.json")" ] || [ "$OVERRIDE_UPDATE_LOCK" = true ]; then [[ -f $CONFIG_DIR/package-lock.json ]] || touch $CONFIG_DIR/package-lock.json
cp "$src_dir/package.json" "$dest_dir/package.json"
fi
if [ "$(realpath "$src_dir/$lock_file")" != "$(realpath "$dest_dir/$lock_file")" ] || [ "$OVERRIDE_UPDATE_LOCK" = true ]; then ln -fs $CONFIG_DIR/package.json package.json
cp "$src_dir/$lock_file" "$dest_dir/$lock_file" ln -fs $CONFIG_DIR/package-lock.json package-lock.json
fi
# Remove unnecessary lock files in src_dir npm install --omit=dev
rm -f "$src_dir/"{yarn.lock,package-lock.json,pnpm-lock.yaml}
# Symbolically link the copied files in src_dir to dest_dir if [[ -n $SETUP ]]; then
ln -fs "$dest_dir/package.json" "$src_dir/package.json" echo "Setup environmental variable detected"
ln -fs "$dest_dir/$lock_file" "$src_dir/$lock_file"
}
# Function to install dependencies using pnpm
install_dependencies() {
case "$PACKAGE_MANAGER" in
yarn) yarn install || {
echo "Failed to install dependencies with yarn"
exit 1
} ;;
npm) npm install || {
echo "Failed to install dependencies with npm"
exit 1
} ;;
pnpm) pnpm install || {
echo "Failed to install dependencies with pnpm"
exit 1
} ;;
*)
echo "Unknown package manager: $PACKAGE_MANAGER"
exit 1
;;
esac
}
# Function to start setup session
start_setup_session() {
local config="$1"
echo "Starting setup session" echo "Starting setup session"
exec /usr/src/app/nodebb setup --config="$config" ./nodebb setup --config=$CONFIG
} elif [ -f $CONFIG ]; then
echo "Config file exist at $CONFIG, assuming it is a valid config"
# Handle building and upgrading NodeBB echo "Starting forum"
build_forum() { if [ "$FORCE_BUILD_BEFORE_START" = true ]; then
local config="$1" ./nodebb build --config=$CONFIG
local start_build="$2"
local package_hash=$(md5sum install/package.json | head -c 32)
if [ "$package_hash" = "$(cat $CONFIG_DIR/install_hash.md5 || true)" ]; then
echo "package.json was updated. Upgrading..."
/usr/src/app/nodebb upgrade --config="$config" || {
echo "Failed to build NodeBB. Exiting..."
exit 1
}
elif [ "$start_build" = true ]; then
echo "Build before start is enabled. Building..."
/usr/src/app/nodebb "${NODEBB_BUILD_VERB}" --config="$config" || {
echo "Failed to build NodeBB. Exiting..."
exit 1
}
else
echo "No changes in package.json. Skipping build..."
return
fi fi
echo -n $package_hash > $CONFIG_DIR/install_hash.md5 ./nodebb start --config=$CONFIG
} else
echo "Config file not found at $CONFIG"
# Function to start forum
start_forum() {
local config="$1"
local start_build="$2"
build_forum "$config" "$start_build"
case "$PACKAGE_MANAGER" in
yarn)
yarn start --config="$config" --no-silent --no-daemon || {
echo "Failed to start forum with yarn"
exit 1
}
;;
npm)
npm start -- --config="$config" --no-silent --no-daemon || {
echo "Failed to start forum with npm"
exit 1
}
;;
pnpm)
pnpm start -- --config="$config" --no-silent --no-daemon || {
echo "Failed to start forum with pnpm"
exit 1
}
;;
*)
echo "Unknown package manager: $PACKAGE_MANAGER"
exit 1
;;
esac
}
# Function to start installation session
start_installation_session() {
local nodebb_init_verb="$1"
local config="$2"
echo "Config file not found at $config"
echo "Starting installation session" echo "Starting installation session"
exec /usr/src/app/nodebb "$nodebb_init_verb" --config="$config" ./nodebb "${NODEBB_INIT_VERB}" --config=$CONFIG
} fi
# Function for debugging and logging
debug_log() {
local message="$1"
echo "DEBUG: $message"
}
# Main function
main() {
set_defaults
check_directory "$CONFIG_DIR"
copy_or_link_files /usr/src/app "$CONFIG_DIR" "$PACKAGE_MANAGER"
install_dependencies
debug_log "PACKAGE_MANAGER: $PACKAGE_MANAGER"
debug_log "CONFIG location: $CONFIG"
debug_log "START_BUILD: $START_BUILD"
if [ -n "$SETUP" ]; then
start_setup_session "$CONFIG"
fi
if [ -f "$CONFIG" ]; then
start_forum "$CONFIG" "$START_BUILD"
else
start_installation_session "$NODEBB_INIT_VERB" "$CONFIG"
fi
}
# Execute main function
main "$@"

View File

@@ -1,23 +1,21 @@
{ {
"defaults": { "mongo": {
"mongo": { "host": "mongo",
"host": "mongo", "port": 27017,
"port": 27017, "database": "nodebb",
"database": "nodebb", "username": "nodebb",
"username": "nodebb", "password": "nodebb"
"password": "nodebb" },
}, "redis": {
"redis": { "host": "redis",
"host": "redis", "port": 6379,
"port": 6379, "database": 0
"database": 0 },
}, "postgres": {
"postgres": { "host": "postgres",
"host": "postgres", "port": 5432,
"port": 5432, "database": "nodebb",
"database": "nodebb", "username": "nodebb",
"username": "nodebb", "password": "nodebb"
"password": "nodebb"
}
} }
} }

View File

@@ -2,7 +2,7 @@
"name": "nodebb", "name": "nodebb",
"license": "GPL-3.0", "license": "GPL-3.0",
"description": "NodeBB Forum", "description": "NodeBB Forum",
"version": "3.8.2", "version": "3.5.1",
"homepage": "https://www.nodebb.org", "homepage": "https://www.nodebb.org",
"repository": { "repository": {
"type": "git", "type": "git",
@@ -29,124 +29,124 @@
}, },
"dependencies": { "dependencies": {
"@adactive/bootstrap-tagsinput": "0.8.2", "@adactive/bootstrap-tagsinput": "0.8.2",
"@fontsource/inter": "5.0.18", "@fontsource/inter": "5.0.15",
"@fontsource/poppins": "5.0.14", "@fontsource/poppins": "5.0.8",
"@fortawesome/fontawesome-free": "6.5.2", "@fortawesome/fontawesome-free": "6.4.2",
"@isaacs/ttlcache": "1.4.1", "@isaacs/ttlcache": "1.4.1",
"@popperjs/core": "2.11.8", "@popperjs/core": "2.11.8",
"ace-builds": "1.33.2", "ace-builds": "1.31.2",
"archiver": "7.0.1", "archiver": "6.0.1",
"async": "3.2.5", "async": "3.2.5",
"autoprefixer": "10.4.19", "autoprefixer": "10.4.16",
"bcryptjs": "2.4.3", "bcryptjs": "2.4.3",
"benchpressjs": "2.5.1", "benchpressjs": "2.5.1",
"body-parser": "1.20.2", "body-parser": "1.20.2",
"bootbox": "6.0.0", "bootbox": "6.0.0",
"bootstrap": "5.3.3", "bootstrap": "5.3.2",
"bootswatch": "5.3.3", "bootswatch": "5.3.2",
"chalk": "4.1.2", "chalk": "4.1.2",
"chart.js": "4.4.2", "chart.js": "4.4.0",
"cli-graph": "3.2.2", "cli-graph": "3.2.2",
"clipboard": "2.0.11", "clipboard": "2.0.11",
"colors": "1.4.0", "colors": "1.4.0",
"commander": "12.0.0", "commander": "11.1.0",
"compare-versions": "6.1.0", "compare-versions": "6.1.0",
"compression": "1.7.4", "compression": "1.7.4",
"connect-flash": "0.1.1", "connect-flash": "0.1.1",
"connect-mongo": "5.1.0", "connect-mongo": "5.1.0",
"connect-multiparty": "2.2.0", "connect-multiparty": "2.2.0",
"connect-pg-simple": "9.0.1", "connect-pg-simple": "9.0.1",
"connect-redis": "7.1.1", "connect-redis": "7.1.0",
"cookie-parser": "1.4.6", "cookie-parser": "1.4.6",
"cron": "3.1.7", "cron": "3.1.6",
"cropperjs": "1.6.2", "cropperjs": "1.6.1",
"csrf-sync": "4.0.3", "csrf-sync": "4.0.1",
"daemon": "1.1.0", "daemon": "1.1.0",
"diff": "5.2.0", "diff": "5.1.0",
"esbuild": "0.21.2", "esbuild": "0.19.5",
"express": "4.19.2", "express": "4.18.2",
"express-session": "1.18.0", "express-session": "1.17.3",
"express-useragent": "1.0.15", "express-useragent": "1.0.15",
"fetch-cookie": "3.0.1",
"file-loader": "6.2.0", "file-loader": "6.2.0",
"fs-extra": "11.2.0", "fs-extra": "11.1.1",
"graceful-fs": "4.2.11", "graceful-fs": "4.2.11",
"helmet": "7.1.0", "helmet": "7.1.0",
"html-to-text": "9.0.5", "html-to-text": "9.0.5",
"imagesloaded": "5.0.0", "imagesloaded": "5.0.0",
"ipaddr.js": "2.2.0", "ipaddr.js": "2.1.0",
"jquery": "3.7.1", "jquery": "3.7.1",
"jquery-deserialize": "2.0.0", "jquery-deserialize": "2.0.0",
"jquery-form": "4.3.0", "jquery-form": "4.3.0",
"jquery-serializeobject": "1.0.0", "jquery-serializeobject": "1.0.0",
"jquery-ui": "1.13.3", "jquery-ui": "1.13.2",
"jsesc": "3.0.2", "jsesc": "3.0.2",
"json2csv": "5.0.7", "json2csv": "5.0.7",
"jsonwebtoken": "9.0.2", "jsonwebtoken": "9.0.2",
"lodash": "4.17.21", "lodash": "4.17.21",
"logrotate-stream": "0.2.9", "logrotate-stream": "0.2.9",
"lru-cache": "10.2.2", "lru-cache": "10.0.2",
"mime": "3.0.0", "mime": "3.0.0",
"mkdirp": "3.0.1", "mkdirp": "3.0.1",
"mongodb": "6.6.1", "mongodb": "6.3.0",
"morgan": "1.10.0", "morgan": "1.10.0",
"mousetrap": "1.6.5", "mousetrap": "1.6.5",
"multiparty": "4.2.3", "multiparty": "4.2.3",
"nconf": "0.12.1", "nconf": "0.12.1",
"nodebb-plugin-2factor": "7.5.1", "nodebb-plugin-2factor": "7.4.0",
"nodebb-plugin-composer-default": "10.2.36", "nodebb-plugin-composer-default": "10.2.27",
"nodebb-plugin-dbsearch": "6.2.3", "nodebb-plugin-dbsearch": "6.2.3",
"nodebb-plugin-emoji": "5.1.15", "nodebb-plugin-emoji": "5.1.13",
"nodebb-plugin-emoji-android": "4.0.0", "nodebb-plugin-emoji-android": "4.0.0",
"nodebb-plugin-markdown": "12.2.6", "nodebb-plugin-markdown": "12.2.5",
"nodebb-plugin-mentions": "4.4.3", "nodebb-plugin-mentions": "4.3.7",
"nodebb-plugin-ntfy": "1.7.4", "nodebb-plugin-ntfy": "1.7.3",
"nodebb-plugin-spam-be-gone": "2.2.2", "nodebb-plugin-spam-be-gone": "2.2.0",
"nodebb-rewards-essentials": "1.0.0", "nodebb-rewards-essentials": "1.0.0",
"nodebb-theme-harmony": "1.2.57", "nodebb-theme-harmony": "1.1.99",
"nodebb-theme-lavender": "7.1.8", "nodebb-theme-lavender": "7.1.5",
"nodebb-theme-peace": "2.2.5", "nodebb-theme-peace": "2.1.25",
"nodebb-theme-persona": "13.3.20", "nodebb-theme-persona": "13.2.47",
"nodebb-widget-essentials": "7.0.16", "nodebb-widget-essentials": "7.0.14",
"nodemailer": "6.9.13", "nodemailer": "6.9.7",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"passport": "0.7.0", "passport": "0.6.0",
"passport-http-bearer": "1.0.1", "passport-http-bearer": "1.0.1",
"passport-local": "1.0.0", "passport-local": "1.0.0",
"pg": "8.11.5", "pg": "8.11.3",
"pg-cursor": "2.10.5", "pg-cursor": "2.10.3",
"postcss": "8.4.38", "postcss": "8.4.31",
"postcss-clean": "1.2.0", "postcss-clean": "1.2.0",
"progress-webpack-plugin": "1.0.16", "progress-webpack-plugin": "1.0.16",
"prompt": "1.3.0", "prompt": "1.3.0",
"ioredis": "5.4.1", "ioredis": "5.3.2",
"rimraf": "5.0.7", "request": "2.88.2",
"request-promise-native": "1.0.9",
"rimraf": "5.0.5",
"rss": "1.2.2", "rss": "1.2.2",
"rtlcss": "4.1.1", "rtlcss": "4.1.1",
"sanitize-html": "2.13.0", "sanitize-html": "2.11.0",
"sass": "1.77.1", "sass": "1.69.5",
"semver": "7.6.2", "semver": "7.5.4",
"serve-favicon": "2.5.0", "serve-favicon": "2.5.0",
"sharp": "0.32.6", "sharp": "0.32.6",
"sitemap": "7.1.1", "sitemap": "7.1.1",
"socket.io": "4.7.5", "socket.io": "4.7.2",
"socket.io-client": "4.7.5", "socket.io-client": "4.7.2",
"@socket.io/redis-adapter": "8.3.0", "@socket.io/redis-adapter": "8.2.1",
"sortablejs": "1.15.2", "sortablejs": "1.15.0",
"spdx-license-list": "6.9.0", "spdx-license-list": "6.8.0",
"spider-detector": "2.0.1", "spider-detector": "2.0.1",
"terser-webpack-plugin": "5.3.10", "terser-webpack-plugin": "5.3.9",
"textcomplete": "0.18.2", "textcomplete": "0.18.2",
"textcomplete.contenteditable": "0.1.1", "textcomplete.contenteditable": "0.1.1",
"timeago": "1.6.7", "timeago": "1.6.7",
"tinycon": "0.6.8", "tinycon": "0.6.8",
"toobusy-js": "0.5.1", "toobusy-js": "0.5.1",
"tough-cookie": "4.1.4", "validator": "13.11.0",
"validator": "13.12.0", "webpack": "5.89.0",
"webpack": "5.91.0",
"webpack-merge": "5.10.0", "webpack-merge": "5.10.0",
"winston": "3.13.0", "winston": "3.11.0",
"workerpool": "9.1.1", "workerpool": "8.0.0",
"xml": "1.0.1", "xml": "1.0.1",
"xregexp": "5.1.1", "xregexp": "5.1.1",
"yargs": "17.7.2", "yargs": "17.7.2",
@@ -154,25 +154,25 @@
}, },
"devDependencies": { "devDependencies": {
"@apidevtools/swagger-parser": "10.1.0", "@apidevtools/swagger-parser": "10.1.0",
"@commitlint/cli": "19.3.0", "@commitlint/cli": "18.4.2",
"@commitlint/config-angular": "19.3.0", "@commitlint/config-angular": "18.4.2",
"coveralls": "3.1.1", "coveralls": "3.1.1",
"eslint": "8.57.0", "eslint": "8.54.0",
"eslint-config-nodebb": "0.2.1", "eslint-config-nodebb": "0.2.1",
"eslint-plugin-import": "2.29.1", "eslint-plugin-import": "2.29.0",
"grunt": "1.6.1", "grunt": "1.6.1",
"grunt-contrib-watch": "1.1.0", "grunt-contrib-watch": "1.1.0",
"husky": "8.0.3", "husky": "8.0.3",
"jsdom": "24.0.0", "jsdom": "22.1.0",
"lint-staged": "15.2.2", "lint-staged": "15.1.0",
"mocha": "10.4.0", "mocha": "10.2.0",
"mocha-lcov-reporter": "1.3.0", "mocha-lcov-reporter": "1.3.0",
"mockdate": "3.0.5", "mockdate": "3.0.5",
"nyc": "15.1.0", "nyc": "15.1.0",
"smtp-server": "3.13.4" "smtp-server": "3.13.0"
}, },
"optionalDependencies": { "optionalDependencies": {
"sass-embedded": "1.77.1" "sass-embedded": "1.69.5"
}, },
"resolutions": { "resolutions": {
"*/jquery": "3.7.1" "*/jquery": "3.7.1"
@@ -181,7 +181,7 @@
"url": "https://github.com/NodeBB/NodeBB/issues" "url": "https://github.com/NodeBB/NodeBB/issues"
}, },
"engines": { "engines": {
"node": ">=18" "node": ">=16"
}, },
"maintainers": [ "maintainers": [
{ {
@@ -195,4 +195,4 @@
"url": "https://github.com/barisusakli" "url": "https://github.com/barisusakli"
} }
] ]
} }

View File

@@ -99,9 +99,7 @@ Loader.start = function () {
function forkWorker(index, isPrimary) { function forkWorker(index, isPrimary) {
const ports = getPorts(); const ports = getPorts();
const args = []; const args = [];
if (nconf.get('max-memory')) {
args.push(`--max-old-space-size=${nconf.get('max-memory')}`);
}
if (!ports[index]) { if (!ports[index]) {
return console.log(`[cluster] invalid port for worker : ${index} ports: ${ports.length}`); return console.log(`[cluster] invalid port for worker : ${index} ports: ${ports.length}`);
} }

View File

@@ -1,41 +0,0 @@
<html>
<head>
<title>Internal Server Error</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="/assets/5xx.css" />
<script type="text/javascript">
window.onload = function() {
let count = 0;
const bounce = document.getElementById('click-me');
bounce.onclick = function() {
count++;
bounce.className = '';
setTimeout(function() {
bounce.className = 'animated bounce';
}, 50);
if (count > 5) {
document.getElementById('hide').className = '';
}
};
}
</script>
</head>
<body>
<div class="wrapper">
<div class="center">
<h1 id="click-me" class="animated bounce">500</h1>
<p>
<strong>Internal server error. </strong>
</p>
<p>
{message}
</p>
<p>
&nbsp;<small id="hide" class="hide">Alright. You can stop clicking... it's not going to make the site come back sooner!</small>
</p>
</div>
</div>
</body>
</html>

View File

@@ -2,12 +2,147 @@
<head> <head>
<title>Excessive Load Warning</title> <title>Excessive Load Warning</title>
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="/assets/5xx.css" /> <style type="text/css">
body {
background: #00A9EA;
color: white;
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
text-align: center;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
transform-style: preserve-3d;
}
h1 {
font-size: 250px;
color: #fff;
opacity: 0.5;
margin: 10px;
cursor: pointer;
-moz-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
}
p {
font-size: 20px;
}
p strong {
font-size: 28px;
}
@media (max-width: 640px) {
h1 {
font-size: 125px;
}
p {
font-size: 16px;
}
p strong {
font-size: 20px;
}
}
.center {
position: relative;
top: 50%;
-webkit-transform: translateY(50%);
-ms-transform: translateY(50%);
transform: translateY(50%);
}
@-webkit-keyframes bounce {
0%, 20%, 53%, 80%, 100% {
-webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
-webkit-transform: translate3d(0,0,0);
transform: translate3d(0,0,0);
}
40%, 43% {
-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
-webkit-transform: translate3d(0, -30px, 0);
transform: translate3d(0, -30px, 0);
}
70% {
-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
-webkit-transform: translate3d(0, -15px, 0);
transform: translate3d(0, -15px, 0);
}
90% {
-webkit-transform: translate3d(0,-4px,0);
transform: translate3d(0,-4px,0);
}
}
@keyframes bounce {
0%, 20%, 53%, 80%, 100% {
-webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
-webkit-transform: translate3d(0,0,0);
transform: translate3d(0,0,0);
}
40%, 43% {
-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
-webkit-transform: translate3d(0, -30px, 0);
transform: translate3d(0, -30px, 0);
}
70% {
-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
-webkit-transform: translate3d(0, -15px, 0);
transform: translate3d(0, -15px, 0);
}
90% {
-webkit-transform: translate3d(0,-4px,0);
transform: translate3d(0,-4px,0);
}
}
.bounce {
-webkit-animation-name: bounce;
animation-name: bounce;
-webkit-transform-origin: center bottom;
-ms-transform-origin: center bottom;
transform-origin: center bottom;
}
.animated {
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
.animated.infinite {
-webkit-animation-iteration-count: infinite;
animation-iteration-count: infinite;
}
.animated.hinge {
-webkit-animation-duration: 2s;
animation-duration: 2s;
}
.hide {
display: none;
}
</style>
<script type="text/javascript"> <script type="text/javascript">
window.onload = function() { window.onload = function() {
let count = 0; var count = 0,
const bounce = document.getElementById('click-me'); bounce = document.getElementById('click-me');
bounce.onclick = function() { bounce.onclick = function() {
count++; count++;
bounce.className = ''; bounce.className = '';

View File

@@ -1,135 +0,0 @@
body {
background: #00A9EA;
color: white;
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
text-align: center;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
transform-style: preserve-3d;
}
h1 {
font-size: 250px;
color: #fff;
opacity: 0.5;
margin: 10px;
cursor: pointer;
-moz-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
}
p {
font-size: 20px;
}
p strong {
font-size: 28px;
}
@media (max-width: 640px) {
h1 {
font-size: 125px;
}
p {
font-size: 16px;
}
p strong {
font-size: 20px;
}
}
.center {
position: relative;
top: 50%;
-webkit-transform: translateY(50%);
-ms-transform: translateY(50%);
transform: translateY(50%);
}
@-webkit-keyframes bounce {
0%, 20%, 53%, 80%, 100% {
-webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
-webkit-transform: translate3d(0,0,0);
transform: translate3d(0,0,0);
}
40%, 43% {
-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
-webkit-transform: translate3d(0, -30px, 0);
transform: translate3d(0, -30px, 0);
}
70% {
-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
-webkit-transform: translate3d(0, -15px, 0);
transform: translate3d(0, -15px, 0);
}
90% {
-webkit-transform: translate3d(0,-4px,0);
transform: translate3d(0,-4px,0);
}
}
@keyframes bounce {
0%, 20%, 53%, 80%, 100% {
-webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
-webkit-transform: translate3d(0,0,0);
transform: translate3d(0,0,0);
}
40%, 43% {
-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
-webkit-transform: translate3d(0, -30px, 0);
transform: translate3d(0, -30px, 0);
}
70% {
-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
-webkit-transform: translate3d(0, -15px, 0);
transform: translate3d(0, -15px, 0);
}
90% {
-webkit-transform: translate3d(0,-4px,0);
transform: translate3d(0,-4px,0);
}
}
.bounce {
-webkit-animation-name: bounce;
animation-name: bounce;
-webkit-transform-origin: center bottom;
-ms-transform-origin: center bottom;
transform-origin: center bottom;
}
.animated {
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
.animated.infinite {
-webkit-animation-iteration-count: infinite;
animation-iteration-count: infinite;
}
.animated.hinge {
-webkit-animation-duration: 2s;
animation-duration: 2s;
}
.hide {
display: none;
}

View File

@@ -9,9 +9,5 @@
"filter-type": "نوع الحدث", "filter-type": "نوع الحدث",
"filter-start": "تاريخ البدء", "filter-start": "تاريخ البدء",
"filter-end": "تاريخ الانتهاء", "filter-end": "تاريخ الانتهاء",
"filter-user": "Filter by User",
"filter-user.placeholder": "Type user name to filter...",
"filter-group": "Filter by Group",
"filter-group.placeholder": "Type group name to filter...",
"filter-per-page": "لكل صفحة" "filter-per-page": "لكل صفحة"
} }

View File

@@ -94,8 +94,5 @@
"view-as-json": "View as JSON", "view-as-json": "View as JSON",
"expand-analytics": "Expand analytics", "expand-analytics": "Expand analytics",
"clear-search-history": "Clear Search History", "clear-search-history": "Clear Search History",
"clear-search-history-confirm": "Are you sure you want to clear entire search history?", "clear-search-history-confirm": "Are you sure you want to clear entire search history?"
"search-term": "Term",
"search-count": "Count",
"view-all": "View all"
} }

View File

@@ -121,28 +121,6 @@
"alerts.email-sent-to": "An invitation email has been sent to %1", "alerts.email-sent-to": "An invitation email has been sent to %1",
"alerts.x-users-found": "%1 user(s) found, (%2 seconds)", "alerts.x-users-found": "%1 user(s) found, (%2 seconds)",
"alerts.select-a-single-user-to-change-email": "Select a single user to change email", "alerts.select-a-single-user-to-change-email": "Select a single user to change email",
"export": "Export",
"export-users-fields-title": "Select CSV Fields",
"export-field-email": "Email",
"export-field-username": "Username",
"export-field-uid": "UID",
"export-field-ip": "IP",
"export-field-joindate": "Join date",
"export-field-lastonline": "Last Online",
"export-field-lastposttime": "Last Post Time",
"export-field-reputation": "Reputation",
"export-field-postcount": "Post Count",
"export-field-topiccount": "Topic Count",
"export-field-profileviews": "Profile Views",
"export-field-followercount": "Follower Count",
"export-field-followingcount": "Following Count",
"export-field-fullname": "Full Name",
"export-field-website": "Website",
"export-field-location": "Location",
"export-field-birthday": "Birthday",
"export-field-signature": "Signature",
"export-field-aboutme": "About Me",
"export-users-started": "Exporting users as csv, this might take a while. You will receive a notification when it is complete.", "export-users-started": "Exporting users as csv, this might take a while. You will receive a notification when it is complete.",
"export-users-completed": "Users exported as csv, click here to download.", "export-users-completed": "Users exported as csv, click here to download.",
"email": "Email", "email": "Email",

View File

@@ -10,7 +10,7 @@
"id": "ID: <small>optional</small>", "id": "ID: <small>optional</small>",
"properties": "Properties:", "properties": "Properties:",
"show-to-groups": "Show to Groups:", "groups": "Groups:",
"open-new-window": "Open in a new window", "open-new-window": "Open in a new window",
"dropdown": "Dropdown", "dropdown": "Dropdown",
"dropdown-placeholder": "Place your dropdown menu items below, ie: <br/>&lt;li&gt;&lt;a class=&quot;dropdown-item&quot; href&#x3D;&quot;https://myforum.com&quot;&gt;Link 1&lt;/a&gt;&lt;/li&gt;", "dropdown-placeholder": "Place your dropdown menu items below, ie: <br/>&lt;li&gt;&lt;a class=&quot;dropdown-item&quot; href&#x3D;&quot;https://myforum.com&quot;&gt;Link 1&lt;/a&gt;&lt;/li&gt;",

View File

@@ -4,11 +4,8 @@
"sorting.post-default": "Default Post Sorting", "sorting.post-default": "Default Post Sorting",
"sorting.oldest-to-newest": "Oldest to Newest", "sorting.oldest-to-newest": "Oldest to Newest",
"sorting.newest-to-oldest": "Newest to Oldest", "sorting.newest-to-oldest": "Newest to Oldest",
"sorting.recently-replied": "Recently Replied",
"sorting.recently-created": "Recently Created",
"sorting.most-votes": "Most Votes", "sorting.most-votes": "Most Votes",
"sorting.most-posts": "Most Posts", "sorting.most-posts": "Most Posts",
"sorting.most-views": "Most Views",
"sorting.topic-default": "Default Topic Sorting", "sorting.topic-default": "Default Topic Sorting",
"length": "Post Length", "length": "Post Length",
"post-queue": "Post Queue", "post-queue": "Post Queue",

View File

@@ -23,12 +23,7 @@
"flags.limit-per-target": "Maximum number of times something can be flagged", "flags.limit-per-target": "Maximum number of times something can be flagged",
"flags.limit-per-target-placeholder": "Default: 0", "flags.limit-per-target-placeholder": "Default: 0",
"flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a &quot;report&quot; and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.", "flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a &quot;report&quot; and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.",
"flags.limit-post-flags-per-day": "Maximum number of times a user can flag posts in a day", "flags.auto-flag-on-downvote-threshold": "Number of downvotes to auto flag posts (Set to 0 to disable, default: 0)",
"flags.limit-post-flags-per-day-help": "Set to 0 to disable, (default: 10)",
"flags.limit-user-flags-per-day": "Maximum number of times a user can flag users in a day",
"flags.limit-user-flags-per-day-help": "Set to 0 to disable, (default: 10)",
"flags.auto-flag-on-downvote-threshold": "Number of downvotes to auto flag posts",
"flags.auto-flag-on-downvote-threshold-help": "Set to 0 to disable, (default: 0)",
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned", "flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned",
"flags.action-on-resolve": "Do the following when a flag is resolved", "flags.action-on-resolve": "Do the following when a flag is resolved",
"flags.action-on-reject": "Do the following when a flag is rejected", "flags.action-on-reject": "Do the following when a flag is rejected",

View File

@@ -1,8 +0,0 @@
{
"post-sort-option": "Post sort option, %1",
"topic-sort-option": "Topic sort option, %1",
"user-avatar-for": "User avatar for %1",
"user-watched-tags": "User watched tags",
"delete-upload-button": "Delete upload button",
"group-page-link-for": "Group page link for %1"
}

View File

@@ -32,7 +32,7 @@
"folder-exists": "Folder exists", "folder-exists": "Folder exists",
"invalid-pagination-value": "رقم الصفحة غير صحيح ، يجب أن يكون بين %1 و %2 .", "invalid-pagination-value": "رقم الصفحة غير صحيح ، يجب أن يكون بين %1 و %2 .",
"username-taken": "اسم المستخدم مأخوذ", "username-taken": "اسم المستخدم مأخوذ",
"email-taken": "Email address is already taken.", "email-taken": "البريد الالكتروني مأخوذ",
"email-nochange": "The email entered is the same as the email already on file.", "email-nochange": "The email entered is the same as the email already on file.",
"email-invited": "Email was already invited", "email-invited": "Email was already invited",
"email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.",
@@ -184,8 +184,6 @@
"user-already-flagged": "You have already flagged this user", "user-already-flagged": "You have already flagged this user",
"post-flagged-too-many-times": "This post has been flagged by others already", "post-flagged-too-many-times": "This post has been flagged by others already",
"user-flagged-too-many-times": "This user has been flagged by others already", "user-flagged-too-many-times": "This user has been flagged by others already",
"too-many-post-flags-per-day": "You can only flag %1 post(s) per day",
"too-many-user-flags-per-day": "You can only flag %1 user(s) per day",
"cant-flag-privileged": "You are not allowed to flag the profiles or content of privileged users (moderators/global moderators/admins)", "cant-flag-privileged": "You are not allowed to flag the profiles or content of privileged users (moderators/global moderators/admins)",
"cant-locate-flag-report": "Cannot locate flag report", "cant-locate-flag-report": "Cannot locate flag report",
"self-vote": "You cannot vote on your own post", "self-vote": "You cannot vote on your own post",
@@ -221,7 +219,6 @@
"already-unblocked": "This user is already unblocked", "already-unblocked": "This user is already unblocked",
"no-connection": "There seems to be a problem with your internet connection", "no-connection": "There seems to be a problem with your internet connection",
"socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later",
"invalid-plugin-id": "Invalid plugin ID",
"plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", "plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP",
"plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.", "plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.",
"theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP", "theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP",

View File

@@ -90,6 +90,6 @@
"bulk-actions": "Bulk Actions", "bulk-actions": "Bulk Actions",
"bulk-resolve": "Resolve Flag(s)", "bulk-resolve": "Resolve Flag(s)",
"bulk-success": "%1 flags updated", "bulk-success": "%1 flags updated",
"flagged-timeago": "Flagged <span class=\"timeago\" title=\"%1\"></span>", "flagged-timeago-readable": "Flagged <span class=\"timeago\" title=\"%1\"></span> (%2)",
"auto-flagged": "[Auto Flagged] Received %1 downvotes." "auto-flagged": "[Auto Flagged] Received %1 downvotes."
} }

View File

@@ -24,15 +24,8 @@
"cancel": "Cancel", "cancel": "Cancel",
"close": "أغلق", "close": "أغلق",
"pagination": "الصفحات", "pagination": "الصفحات",
"pagination.previouspage": "Previous Page",
"pagination.nextpage": "Next Page",
"pagination.firstpage": "First Page",
"pagination.lastpage": "Last Page",
"pagination.out-of": "%1 من %2", "pagination.out-of": "%1 من %2",
"pagination.enter-index": "Go to post index", "pagination.enter-index": "Go to post index",
"pagination.go-to-page": "Go to page",
"pagination.page-x": "Page %1",
"header.brand-logo": "Brand Logo",
"header.admin": "مدير النظام", "header.admin": "مدير النظام",
"header.categories": "الأقسام", "header.categories": "الأقسام",
"header.recent": "حديث", "header.recent": "حديث",
@@ -54,6 +47,8 @@
"chats.loading": "تحميل الدردشات", "chats.loading": "تحميل الدردشات",
"drafts.loading": "Loading Drafts", "drafts.loading": "Loading Drafts",
"motd.welcome": "مرحبا بكم في NodeBB، منصة المناقشة المستقبلية.", "motd.welcome": "مرحبا بكم في NodeBB، منصة المناقشة المستقبلية.",
"previouspage": "الصفحة السابقة",
"nextpage": "الصفحة التالية",
"alert.success": "نجاح", "alert.success": "نجاح",
"alert.error": "خطأ", "alert.error": "خطأ",
"alert.warning": "Warning", "alert.warning": "Warning",
@@ -140,12 +135,9 @@
"edited": "حُرِر", "edited": "حُرِر",
"disabled": "معطل", "disabled": "معطل",
"select": "تحديد", "select": "تحديد",
"selected": "Selected",
"copied": "Copied", "copied": "Copied",
"user-search-prompt": "Type something here to find users...", "user-search-prompt": "Type something here to find users...",
"hidden": "Hidden", "hidden": "Hidden",
"sort": "Sort", "sort": "Sort",
"actions": "Actions", "actions": "Actions"
"rss-feed": "RSS Feed",
"skip-to-content": "Skip to content"
} }

View File

@@ -7,7 +7,6 @@
"in-titles": "In titles", "in-titles": "In titles",
"in-titles-posts": "In titles and posts", "in-titles-posts": "In titles and posts",
"in-posts": "In posts", "in-posts": "In posts",
"in-bookmarks": "In bookmarks",
"in-categories": "In categories", "in-categories": "In categories",
"in-users": "In users", "in-users": "In users",
"in-tags": "In tags", "in-tags": "In tags",

View File

@@ -3,7 +3,7 @@
"no-tag-topics": "لا يوجد مواضيع بهذه الكلمة الدلالية.", "no-tag-topics": "لا يوجد مواضيع بهذه الكلمة الدلالية.",
"no-tags-found": "No tags found", "no-tags-found": "No tags found",
"tags": "الكلمات الدلالية", "tags": "الكلمات الدلالية",
"enter-tags-here": "Enter tags, %1 - %2 characters.", "enter-tags-here": "Enter tags here, between %1 and %2 characters each.",
"enter-tags-here-short": "أدخل الكلمات الدلالية...", "enter-tags-here-short": "أدخل الكلمات الدلالية...",
"no-tags": "لا يوجد كلمات دلالية بعد.", "no-tags": "لا يوجد كلمات دلالية بعد.",
"select-tags": "Select Tags", "select-tags": "Select Tags",

View File

@@ -3,11 +3,9 @@
"skins": "Skins", "skins": "Skins",
"collapse": "Collapse", "collapse": "Collapse",
"expand": "Expand", "expand": "Expand",
"sidebar-toggle": "Sidebar Toggle",
"login-register-to-search": "Login or register to search.", "login-register-to-search": "Login or register to search.",
"settings.title": "Theme settings", "settings.title": "Theme settings",
"settings.enableQuickReply": "Enable quick reply", "settings.enableQuickReply": "Enable quick reply",
"settings.enableBreadcrumbs": "Enable breadcrumbs",
"settings.centerHeaderElements": "Center header elements", "settings.centerHeaderElements": "Center header elements",
"settings.mobileTopicTeasers": "Show topic teasers on mobile", "settings.mobileTopicTeasers": "Show topic teasers on mobile",
"settings.stickyToolbar": "Sticky toolbar", "settings.stickyToolbar": "Sticky toolbar",

View File

@@ -1,4 +1,4 @@
{ {
"title": "أعلى الصفحة", "title": "Top",
"no-top-topics": "لا توجد مواضيع أعلى الصفحة" "no-top-topics": "No top topics"
} }

View File

@@ -15,7 +15,6 @@
"replies-to-this-post": "%1 الردود", "replies-to-this-post": "%1 الردود",
"one-reply-to-this-post": "1 رد", "one-reply-to-this-post": "1 رد",
"last-reply-time": "آخر رد", "last-reply-time": "آخر رد",
"reply-options": "Reply options",
"reply-as-topic": "رد بموضوع", "reply-as-topic": "رد بموضوع",
"guest-login-reply": "يجب عليك تسجيل الدخول للرد", "guest-login-reply": "يجب عليك تسجيل الدخول للرد",
"login-to-view": "سجل الدخول للمشاهدة", "login-to-view": "سجل الدخول للمشاهدة",
@@ -35,7 +34,6 @@
"pinned": "مثبت", "pinned": "مثبت",
"pinned-with-expiry": "مثبت حتى %1", "pinned-with-expiry": "مثبت حتى %1",
"scheduled": "Scheduled", "scheduled": "Scheduled",
"deleted": "Deleted",
"moved": "منقول", "moved": "منقول",
"moved-from": "Moved from %1", "moved-from": "Moved from %1",
"copy-code": "Copy Code", "copy-code": "Copy Code",
@@ -182,8 +180,6 @@
"sort-by": "ترتيب حسب", "sort-by": "ترتيب حسب",
"oldest-to-newest": "من الأقدم إلى الأحدث", "oldest-to-newest": "من الأقدم إلى الأحدث",
"newest-to-oldest": "من الأحدث إلى الأقدم", "newest-to-oldest": "من الأحدث إلى الأقدم",
"recently-replied": "Recently Replied",
"recently-created": "Recently Created",
"most-votes": "Most Votes", "most-votes": "Most Votes",
"most-posts": "Most Posts", "most-posts": "Most Posts",
"most-views": "Most Views", "most-views": "Most Views",
@@ -208,13 +204,7 @@
"last-post": "Last post", "last-post": "Last post",
"go-to-my-next-post": "Go to my next post", "go-to-my-next-post": "Go to my next post",
"no-more-next-post": "You don't have more posts in this topic", "no-more-next-post": "You don't have more posts in this topic",
"open-composer": "Open composer",
"post-quick-reply": "Quick reply", "post-quick-reply": "Quick reply",
"navigator.index": "Post %1 of %2", "navigator.index": "Post %1 of %2",
"navigator.unread": "%1 unread", "navigator.unread": "%1 unread"
"upvote-post": "Upvote post",
"downvote-post": "Downvote post",
"post-tools": "Post tools",
"unread-posts-link": "Unread posts link",
"thumb-image": "Topic thumbnail image"
} }

View File

@@ -3,7 +3,6 @@
"no-unread-topics": "ليس هناك أي موضوع غير مقروء", "no-unread-topics": "ليس هناك أي موضوع غير مقروء",
"load-more": "حمل المزيد", "load-more": "حمل المزيد",
"mark-as-read": "حدد غير مقروء", "mark-as-read": "حدد غير مقروء",
"mark-as-unread": "Mark as Unread",
"selected": "المحددة", "selected": "المحددة",
"all": "الكل", "all": "الكل",
"all-categories": "كل الفئات", "all-categories": "كل الفئات",

View File

@@ -1,9 +1,6 @@
{ {
"user-menu": "User menu",
"banned": "محظور", "banned": "محظور",
"unbanned": "Unbanned",
"muted": "كتم", "muted": "كتم",
"unmuted": "Unmuted",
"offline": "غير متصل", "offline": "غير متصل",
"deleted": "محذوف", "deleted": "محذوف",
"username": "إسم المستخدم", "username": "إسم المستخدم",
@@ -144,10 +141,6 @@
"follow-topics-you-create": "متابعة المواضيع التي تقوم بإنشائها", "follow-topics-you-create": "متابعة المواضيع التي تقوم بإنشائها",
"grouptitle": "عنوان المجموعة", "grouptitle": "عنوان المجموعة",
"group-order-help": "Select a group and use the arrows to order titles", "group-order-help": "Select a group and use the arrows to order titles",
"show-group-title": "Show group title",
"hide-group-title": "Hide group title",
"order-group-up": "Order group up",
"order-group-down": "Order group down",
"no-group-title": "لا يوجد عنوان للمجموعة", "no-group-title": "لا يوجد عنوان للمجموعة",
"select-skin": "إختر سمة", "select-skin": "إختر سمة",
"default": "Default (%1)", "default": "Default (%1)",
@@ -164,16 +157,11 @@
"sso.dissociate-confirm-title": "تأكيد الفصل", "sso.dissociate-confirm-title": "تأكيد الفصل",
"sso.dissociate-confirm": "هل تريد بالتأكيد فصل حسابك عن %1؟", "sso.dissociate-confirm": "هل تريد بالتأكيد فصل حسابك عن %1؟",
"info.latest-flags": "أحدث العلامات", "info.latest-flags": "أحدث العلامات",
"info.profile": "Profile",
"info.post": "Post",
"info.view-flag": "View flag",
"info.reported-by": "Reported by:",
"info.no-flags": "لم يتم العثور على مشاركات معلمة", "info.no-flags": "لم يتم العثور على مشاركات معلمة",
"info.ban-history": "سجل الحظر الأحدث", "info.ban-history": "سجل الحظر الأحدث",
"info.no-ban-history": "هذا المستخدم لم يتم حظره مطلقا", "info.no-ban-history": "هذا المستخدم لم يتم حظره مطلقا",
"info.banned-until": "محظور حتى %1", "info.banned-until": "محظور حتى %1",
"info.banned-expiry": "Expiry", "info.banned-expiry": "Expiry",
"info.ban-expired": "Ban expired",
"info.banned-permanently": "محظور بشكل دائم", "info.banned-permanently": "محظور بشكل دائم",
"info.banned-reason-label": "سبب", "info.banned-reason-label": "سبب",
"info.banned-no-reason": "لم يتم إعطاء سبب.", "info.banned-no-reason": "لم يتم إعطاء سبب.",

View File

@@ -9,9 +9,5 @@
"filter-type": "Вид събитие", "filter-type": "Вид събитие",
"filter-start": "Начална дата", "filter-start": "Начална дата",
"filter-end": "Крайна дата", "filter-end": "Крайна дата",
"filter-user": "Филтриране по потребител",
"filter-user.placeholder": "Въведете име на потребител, за да филтрирате…",
"filter-group": "Филтриране по група",
"filter-group.placeholder": "Въведете име на група, за да филтрирате…",
"filter-per-page": "На страница" "filter-per-page": "На страница"
} }

View File

@@ -94,8 +94,5 @@
"view-as-json": "Преглед като JSON", "view-as-json": "Преглед като JSON",
"expand-analytics": "Разгъване на данните за анализ", "expand-analytics": "Разгъване на данните за анализ",
"clear-search-history": "Изчистване на историята на търсенията", "clear-search-history": "Изчистване на историята на търсенията",
"clear-search-history-confirm": "Наистина ли искате да изчистите историята на търсенията?", "clear-search-history-confirm": "Наистина ли искате да изчистите историята на търсенията?"
"search-term": "Фраза",
"search-count": "Брой",
"view-all": "Преглед на всички"
} }

View File

@@ -121,28 +121,6 @@
"alerts.email-sent-to": "Беше изпратено е-писмо за потвърждение до %1", "alerts.email-sent-to": "Беше изпратено е-писмо за потвърждение до %1",
"alerts.x-users-found": "Намерени потребители: %1 (%2 секунди)", "alerts.x-users-found": "Намерени потребители: %1 (%2 секунди)",
"alerts.select-a-single-user-to-change-email": "Изберете един потребител, чиято е-поща да промените", "alerts.select-a-single-user-to-change-email": "Изберете един потребител, чиято е-поща да промените",
"export": "Изнасяне",
"export-users-fields-title": "Изберете полета за CSV",
"export-field-email": "Е-поща",
"export-field-username": "Потребителско име",
"export-field-uid": "Потребителски идентификатор",
"export-field-ip": "IP адрес",
"export-field-joindate": "Дата на присъединяване",
"export-field-lastonline": "Последно на линия",
"export-field-lastposttime": "Време на последния отговор",
"export-field-reputation": "Репутация",
"export-field-postcount": "Брой публикации",
"export-field-topiccount": "Брой теми",
"export-field-profileviews": "Преглеждания на профила",
"export-field-followercount": "Брой последователи",
"export-field-followingcount": "Брой последвани",
"export-field-fullname": "Пълно име",
"export-field-website": "Уеб сайт",
"export-field-location": "Местоположение",
"export-field-birthday": "Рождена дата",
"export-field-signature": "Подпис",
"export-field-aboutme": "За потребителя",
"export-users-started": "Изнасяне на потребителите във формат „csv“… Това може да отнеме известно време. Ще получите известие, когато е готово.", "export-users-started": "Изнасяне на потребителите във формат „csv“… Това може да отнеме известно време. Ще получите известие, когато е готово.",
"export-users-completed": "Потребителите са изнесени във формат „csv“, щракнете за сваляне.", "export-users-completed": "Потребителите са изнесени във формат „csv“, щракнете за сваляне.",
"email": "Е-поща", "email": "Е-поща",

View File

@@ -10,7 +10,7 @@
"id": "Идентификатор: <small>незадължително</small>", "id": "Идентификатор: <small>незадължително</small>",
"properties": "Свойства:", "properties": "Свойства:",
"show-to-groups": "Показване на групите:", "groups": "Групи:",
"open-new-window": "Отваряне в нов прозорец", "open-new-window": "Отваряне в нов прозорец",
"dropdown": "Падащо меню", "dropdown": "Падащо меню",
"dropdown-placeholder": "Въведете елементите на падащото меню по-долу. Пример: <br/>&lt;li&gt;&lt;a class=&quot;dropdown-item&quot; href&#x3D;&quot;https://myforum.com&quot;&gt;Връзка 1&lt;/a&gt;&lt;/li&gt;", "dropdown-placeholder": "Въведете елементите на падащото меню по-долу. Пример: <br/>&lt;li&gt;&lt;a class=&quot;dropdown-item&quot; href&#x3D;&quot;https://myforum.com&quot;&gt;Връзка 1&lt;/a&gt;&lt;/li&gt;",

View File

@@ -4,11 +4,8 @@
"sorting.post-default": "Подредба по подразбиране на публикациите", "sorting.post-default": "Подредба по подразбиране на публикациите",
"sorting.oldest-to-newest": "Първо най-старите", "sorting.oldest-to-newest": "Първо най-старите",
"sorting.newest-to-oldest": "Първо най-новите", "sorting.newest-to-oldest": "Първо най-новите",
"sorting.recently-replied": "Първо тези с най-скорошни отговори",
"sorting.recently-created": "Първо най-скоро създадените",
"sorting.most-votes": "Първо тези с най-много гласове", "sorting.most-votes": "Първо тези с най-много гласове",
"sorting.most-posts": "Първо тези с най-много публикации", "sorting.most-posts": "Първо тези с най-много публикации",
"sorting.most-views": "Първо тези с най-много преглеждания",
"sorting.topic-default": "Подредба по подразбиране на темите", "sorting.topic-default": "Подредба по подразбиране на темите",
"length": "Дължина на публикациите", "length": "Дължина на публикациите",
"post-queue": "Опашка за публикации", "post-queue": "Опашка за публикации",

View File

@@ -23,12 +23,7 @@
"flags.limit-per-target": "Максимален брой докладвания на едно и също нещо", "flags.limit-per-target": "Максимален брой докладвания на едно и също нещо",
"flags.limit-per-target-placeholder": "По подразбиране: 0", "flags.limit-per-target-placeholder": "По подразбиране: 0",
"flags.limit-per-target-help": "Когато публикация или потребител бъде докладван няколко пъти, това се добавя към един общ доклад. Задайте на тази настройка стойност по-голяма от нула, за да ограничите броя на докладванията, които могат да бъдат натрупани към една публикация или потребител.", "flags.limit-per-target-help": "Когато публикация или потребител бъде докладван няколко пъти, това се добавя към един общ доклад. Задайте на тази настройка стойност по-голяма от нула, за да ограничите броя на докладванията, които могат да бъдат натрупани към една публикация или потребител.",
"flags.limit-post-flags-per-day": "Максимален брой публикации, които потребител може да докладва в рамките на един ден", "flags.auto-flag-on-downvote-threshold": "Брой отрицателни гласове, при които публикациите да бъдат докладвани автоматично (0 = изключено, по подразбиране: 0)",
"flags.limit-post-flags-per-day-help": "Задайте 0 за изключване (по подразбиране: 10)",
"flags.limit-user-flags-per-day": "Максимален брой потребители, които даден потребител може да докладва в рамките на един ден",
"flags.limit-user-flags-per-day-help": "Задайте 0 за изключване (по подразбиране: 10)",
"flags.auto-flag-on-downvote-threshold": "Брой отрицателни гласове за автоматично докладване на публикации",
"flags.auto-flag-on-downvote-threshold-help": "Задайте 0 за изключване (по подразбиране: 0)",
"flags.auto-resolve-on-ban": "Автоматично премахване на всички доклади за потребител, когато той бъде блокиран", "flags.auto-resolve-on-ban": "Автоматично премахване на всички доклади за потребител, когато той бъде блокиран",
"flags.action-on-resolve": "Когато докладване бъде разрешено, да се направи следното", "flags.action-on-resolve": "Когато докладване бъде разрешено, да се направи следното",
"flags.action-on-reject": "Когато докладване бъде отхвърлено, да се направи следното", "flags.action-on-reject": "Когато докладване бъде отхвърлено, да се направи следното",

View File

@@ -1,8 +0,0 @@
{
"post-sort-option": "Настройка за подредбата на публикациите, %1",
"topic-sort-option": "Настройка за подредбата на темите, %1",
"user-avatar-for": "Изображение на потребителя за %1",
"user-watched-tags": "Наблюдавани от потребителя етикети",
"delete-upload-button": "Бутон за изтриване на каченото",
"group-page-link-for": "Връзка към груповата страница за %1"
}

View File

@@ -32,7 +32,7 @@
"folder-exists": "Вече има папка с това име", "folder-exists": "Вече има папка с това име",
"invalid-pagination-value": "Грешен номер на странициране, трябва да бъде между %1 и %2", "invalid-pagination-value": "Грешен номер на странициране, трябва да бъде между %1 и %2",
"username-taken": "Потребителското име е заето", "username-taken": "Потребителското име е заето",
"email-taken": "Адресът на е-пощата вече е зает.", "email-taken": "Е-пощата е заета",
"email-nochange": "Въведената е-поща е същата като съществуващата.", "email-nochange": "Въведената е-поща е същата като съществуващата.",
"email-invited": "На тази е-поща вече е била изпратена покана", "email-invited": "На тази е-поща вече е била изпратена покана",
"email-not-confirmed": "Публикуването в някои категории и теми ще бъде възможно едва след като е-пощата Ви бъде потвърдена. Щръкнете тук, за да Ви изпратим е-писмо за потвърждение.", "email-not-confirmed": "Публикуването в някои категории и теми ще бъде възможно едва след като е-пощата Ви бъде потвърдена. Щръкнете тук, за да Ви изпратим е-писмо за потвърждение.",
@@ -184,8 +184,6 @@
"user-already-flagged": "Вече сте докладвали този потребител", "user-already-flagged": "Вече сте докладвали този потребител",
"post-flagged-too-many-times": "Тази публикация вече е докладвана от други хора", "post-flagged-too-many-times": "Тази публикация вече е докладвана от други хора",
"user-flagged-too-many-times": "Този потребител вече е докладван от други хора", "user-flagged-too-many-times": "Този потребител вече е докладван от други хора",
"too-many-post-flags-per-day": "Можете да докладвате най-много %1 публикации на ден",
"too-many-user-flags-per-day": "Можете да докладвате най-много %1 потребител(и) на ден",
"cant-flag-privileged": "Не можете да докладвате профилите или съдържанието от потребители с по-високи правомощия (модератори, глобални модератори, администратори)", "cant-flag-privileged": "Не можете да докладвате профилите или съдържанието от потребители с по-високи правомощия (модератори, глобални модератори, администратори)",
"cant-locate-flag-report": "Докладът не може да бъде намерен", "cant-locate-flag-report": "Докладът не може да бъде намерен",
"self-vote": "Не можете да гласувате за собствената си публикация", "self-vote": "Не можете да гласувате за собствената си публикация",
@@ -221,7 +219,6 @@
"already-unblocked": "Този потребител вече е отблокиран", "already-unblocked": "Този потребител вече е отблокиран",
"no-connection": "Изглежда има проблем с връзката Ви с Интернет", "no-connection": "Изглежда има проблем с връзката Ви с Интернет",
"socket-reconnect-failed": "В момента сървърът е недостъпен. Натиснете тук, за да опитате отново, или опитайте пак по-късно.", "socket-reconnect-failed": "В момента сървърът е недостъпен. Натиснете тук, за да опитате отново, или опитайте пак по-късно.",
"invalid-plugin-id": "Грешен идентификатор на добавка",
"plugin-not-whitelisted": "Добавката не може да бъде инсталирана само добавки, одобрени от пакетния мениджър на NodeBB могат да бъдат инсталирани чрез ACP", "plugin-not-whitelisted": "Добавката не може да бъде инсталирана само добавки, одобрени от пакетния мениджър на NodeBB могат да бъдат инсталирани чрез ACP",
"plugins-set-in-configuration": "Не можете да променяте състоянието на добавката, тъй като то се определя по време на работата ѝ (чрез config.json, променливи на средата или аргументи при изпълнение). Вместо това може да промените конфигурацията.", "plugins-set-in-configuration": "Не можете да променяте състоянието на добавката, тъй като то се определя по време на работата ѝ (чрез config.json, променливи на средата или аргументи при изпълнение). Вместо това може да промените конфигурацията.",
"theme-not-set-in-configuration": "Когато определяте активните добавки в конфигурацията, промяната на темите изисква да се добави новата тема към активните добавки, преди актуализирането ѝ в ACP", "theme-not-set-in-configuration": "Когато определяте активните добавки в конфигурацията, промяната на темите изисква да се добави новата тема към активните добавки, преди актуализирането ѝ в ACP",

View File

@@ -90,6 +90,6 @@
"bulk-actions": "Групови действия", "bulk-actions": "Групови действия",
"bulk-resolve": "Разрешаване на доклад(и)", "bulk-resolve": "Разрешаване на доклад(и)",
"bulk-success": "%1 доклада са обновени", "bulk-success": "%1 доклада са обновени",
"flagged-timeago": "Докладвано <span class=\"timeago\" title=\"%1\"></span>", "flagged-timeago-readable": "Докладвано <span class=\"timeago\" title=\"%1\"></span> (%2)",
"auto-flagged": "[Авт. докладвано] Получени %1 отрицателни гласа." "auto-flagged": "[Авт. докладвано] Получени %1 отрицателни гласа."
} }

View File

@@ -24,15 +24,8 @@
"cancel": "Отказ", "cancel": "Отказ",
"close": "Затваряне", "close": "Затваряне",
"pagination": "Странициране", "pagination": "Странициране",
"pagination.previouspage": "Предишна страница",
"pagination.nextpage": "Следваща страница",
"pagination.firstpage": "Първа страница",
"pagination.lastpage": "Последна страница",
"pagination.out-of": "%1 от %2", "pagination.out-of": "%1 от %2",
"pagination.enter-index": "Към публикация номер", "pagination.enter-index": "Към публикация номер",
"pagination.go-to-page": "Към страница",
"pagination.page-x": "Страница %1",
"header.brand-logo": "Лого на марката",
"header.admin": "Администратор", "header.admin": "Администратор",
"header.categories": "Категории", "header.categories": "Категории",
"header.recent": "Скорошни", "header.recent": "Скорошни",
@@ -54,6 +47,8 @@
"chats.loading": "Зареждане на разговорите", "chats.loading": "Зареждане на разговорите",
"drafts.loading": "Зареждане на черновите", "drafts.loading": "Зареждане на черновите",
"motd.welcome": "Добре дошли в NodeBB, системата за дискусии на бъдещето.", "motd.welcome": "Добре дошли в NodeBB, системата за дискусии на бъдещето.",
"previouspage": "Предишна страница",
"nextpage": "Следваща страница",
"alert.success": "Готово", "alert.success": "Готово",
"alert.error": "Грешка", "alert.error": "Грешка",
"alert.warning": "Предупреждение", "alert.warning": "Предупреждение",
@@ -140,12 +135,9 @@
"edited": "Редактирано", "edited": "Редактирано",
"disabled": "Изключено", "disabled": "Изключено",
"select": "Избиране", "select": "Избиране",
"selected": "Избрано",
"copied": "Копирано", "copied": "Копирано",
"user-search-prompt": "Започнете да пишете, за да потърсите потребител…", "user-search-prompt": "Започнете да пишете, за да потърсите потребител…",
"hidden": "Скрито", "hidden": "Скрито",
"sort": "Подреждане", "sort": "Подреждане",
"actions": "Действия", "actions": "Действия"
"rss-feed": "RSS поток",
"skip-to-content": "Преминаване към съдържанието"
} }

View File

@@ -7,7 +7,6 @@
"in-titles": "В заглавията", "in-titles": "В заглавията",
"in-titles-posts": "В заглавията и публикациите", "in-titles-posts": "В заглавията и публикациите",
"in-posts": "В публикациите", "in-posts": "В публикациите",
"in-bookmarks": "В отметките",
"in-categories": "В категориите", "in-categories": "В категориите",
"in-users": "В потребителите", "in-users": "В потребителите",
"in-tags": "В етикетите", "in-tags": "В етикетите",

View File

@@ -3,7 +3,7 @@
"no-tag-topics": "Няма теми с този етикет.", "no-tag-topics": "Няма теми с този етикет.",
"no-tags-found": "Няма намерени етикети", "no-tags-found": "Няма намерени етикети",
"tags": "Етикети", "tags": "Етикети",
"enter-tags-here": "Въведете етикети, с по %1 %2 знака.", "enter-tags-here": "Тук въведете етикети, всеки между %1 и %2 знака.",
"enter-tags-here-short": "Въведете етикети...", "enter-tags-here-short": "Въведете етикети...",
"no-tags": "Все още няма етикети.", "no-tags": "Все още няма етикети.",
"select-tags": "Изберете етикети", "select-tags": "Изберете етикети",

View File

@@ -3,11 +3,9 @@
"skins": "Облици", "skins": "Облици",
"collapse": "Свиване", "collapse": "Свиване",
"expand": "Разгъване", "expand": "Разгъване",
"sidebar-toggle": "Превключване на страничната лента",
"login-register-to-search": "Впишете се или се регистрирайте, за да можете да търсите.", "login-register-to-search": "Впишете се или се регистрирайте, за да можете да търсите.",
"settings.title": "Настройки на темата", "settings.title": "Настройки на темата",
"settings.enableQuickReply": "Включване на бързите отговори", "settings.enableQuickReply": "Включване на бързите отговори",
"settings.enableBreadcrumbs": "Включване на пътечките на страниците",
"settings.centerHeaderElements": "Центриране на заглавните елементи", "settings.centerHeaderElements": "Центриране на заглавните елементи",
"settings.mobileTopicTeasers": "Показване на резюмета на темите на мобилни устройства", "settings.mobileTopicTeasers": "Показване на резюмета на темите на мобилни устройства",
"settings.stickyToolbar": "Статична лента с инструменти", "settings.stickyToolbar": "Статична лента с инструменти",

View File

@@ -15,7 +15,6 @@
"replies-to-this-post": "%1 отговора", "replies-to-this-post": "%1 отговора",
"one-reply-to-this-post": "1 отговор", "one-reply-to-this-post": "1 отговор",
"last-reply-time": "Последен отговор", "last-reply-time": "Последен отговор",
"reply-options": "Настройки за отговора",
"reply-as-topic": "Отговор в нова тема", "reply-as-topic": "Отговор в нова тема",
"guest-login-reply": "Впишете се, за да отговорите", "guest-login-reply": "Впишете се, за да отговорите",
"login-to-view": "🔒 Впишете се, за да видите това", "login-to-view": "🔒 Впишете се, за да видите това",
@@ -35,7 +34,6 @@
"pinned": "Закачена", "pinned": "Закачена",
"pinned-with-expiry": "Закачена до %1", "pinned-with-expiry": "Закачена до %1",
"scheduled": "Насрочена", "scheduled": "Насрочена",
"deleted": "Изтрита",
"moved": "Преместена", "moved": "Преместена",
"moved-from": "Преместена от %1", "moved-from": "Преместена от %1",
"copy-code": "Копиране на кода", "copy-code": "Копиране на кода",
@@ -182,8 +180,6 @@
"sort-by": "Подреждане по", "sort-by": "Подреждане по",
"oldest-to-newest": "Първо най-старите", "oldest-to-newest": "Първо най-старите",
"newest-to-oldest": "Първо най-новите", "newest-to-oldest": "Първо най-новите",
"recently-replied": "Първо тези с най-скорошни отговори",
"recently-created": "Първо най-скоро създадените",
"most-votes": "Първо тези с най-много гласове", "most-votes": "Първо тези с най-много гласове",
"most-posts": "Първо тези с най-много публикации", "most-posts": "Първо тези с най-много публикации",
"most-views": "Първо тези с най-много преглеждания", "most-views": "Първо тези с най-много преглеждания",
@@ -208,13 +204,7 @@
"last-post": "Последна публикация", "last-post": "Последна публикация",
"go-to-my-next-post": "Към следващата ми публикация", "go-to-my-next-post": "Към следващата ми публикация",
"no-more-next-post": "Нямате повече публикации в тази тема", "no-more-next-post": "Нямате повече публикации в тази тема",
"open-composer": "Отваряне на редактора",
"post-quick-reply": "Бърз отговор", "post-quick-reply": "Бърз отговор",
"navigator.index": "Публикация %1 от %2", "navigator.index": "Публикация %1 от %2",
"navigator.unread": "%1 непрочетени", "navigator.unread": "%1 непрочетени"
"upvote-post": "Положително гласуване за публикацията",
"downvote-post": "Отрицателно гласуване за публикацията",
"post-tools": "Инструменти за публикациите",
"unread-posts-link": "Връзка към непрочетените публикации",
"thumb-image": "Иконка на темата"
} }

View File

@@ -3,7 +3,6 @@
"no-unread-topics": "Няма непрочетени теми.", "no-unread-topics": "Няма непрочетени теми.",
"load-more": "Зареждане на още", "load-more": "Зареждане на още",
"mark-as-read": "Отбелязване като прочетени", "mark-as-read": "Отбелязване като прочетени",
"mark-as-unread": "Отбелязване като непрочетени",
"selected": "Избраните", "selected": "Избраните",
"all": "Всички", "all": "Всички",
"all-categories": "Всички категории", "all-categories": "Всички категории",

View File

@@ -1,9 +1,6 @@
{ {
"user-menu": "Потребителско меню",
"banned": "Блокиран", "banned": "Блокиран",
"unbanned": "Деблокиран",
"muted": "Заглушен", "muted": "Заглушен",
"unmuted": "Премахнато заглушаване",
"offline": "Извън линия", "offline": "Извън линия",
"deleted": "Изтрит", "deleted": "Изтрит",
"username": "Потребителско име", "username": "Потребителско име",
@@ -144,10 +141,6 @@
"follow-topics-you-create": "Наблюдаване на темите, които създавате", "follow-topics-you-create": "Наблюдаване на темите, които създавате",
"grouptitle": "Заглавие на групата", "grouptitle": "Заглавие на групата",
"group-order-help": "Изберете група и използвайте стрелките, за да пренаредите заглавията", "group-order-help": "Изберете група и използвайте стрелките, за да пренаредите заглавията",
"show-group-title": "Показване на заглавието на групата",
"hide-group-title": "Скриване на заглавието на групата",
"order-group-up": "Преместване на групата нагоре",
"order-group-down": "Преместване на групата надолу",
"no-group-title": "Няма заглавие на група", "no-group-title": "Няма заглавие на група",
"select-skin": "Изберете облик", "select-skin": "Изберете облик",
"default": "По подразбиране (%1)", "default": "По подразбиране (%1)",
@@ -164,16 +157,11 @@
"sso.dissociate-confirm-title": "Потвърждаване на прекъсването", "sso.dissociate-confirm-title": "Потвърждаване на прекъсването",
"sso.dissociate-confirm": "Наистина ли искате да прекъснете връзката на акаунта си от „%1“?", "sso.dissociate-confirm": "Наистина ли искате да прекъснете връзката на акаунта си от „%1“?",
"info.latest-flags": "Последни доклади", "info.latest-flags": "Последни доклади",
"info.profile": "Профил",
"info.post": "Публикация",
"info.view-flag": "Преглед на доклада",
"info.reported-by": "Докладвано от:",
"info.no-flags": "Не са намерени докладвани публикации", "info.no-flags": "Не са намерени докладвани публикации",
"info.ban-history": "Скорошна история на блокиранията", "info.ban-history": "Скорошна история на блокиранията",
"info.no-ban-history": "Този потребител никога не е бил блокиран", "info.no-ban-history": "Този потребител никога не е бил блокиран",
"info.banned-until": "Блокиран до %1", "info.banned-until": "Блокиран до %1",
"info.banned-expiry": "Давност", "info.banned-expiry": "Давност",
"info.ban-expired": "Блокирането е изтекло",
"info.banned-permanently": "Блокиран за постоянно", "info.banned-permanently": "Блокиран за постоянно",
"info.banned-reason-label": "Причина", "info.banned-reason-label": "Причина",
"info.banned-no-reason": "Няма посочена причина.", "info.banned-no-reason": "Няма посочена причина.",

View File

@@ -9,9 +9,5 @@
"filter-type": "Event Type", "filter-type": "Event Type",
"filter-start": "Start Date", "filter-start": "Start Date",
"filter-end": "End Date", "filter-end": "End Date",
"filter-user": "Filter by User",
"filter-user.placeholder": "Type user name to filter...",
"filter-group": "Filter by Group",
"filter-group.placeholder": "Type group name to filter...",
"filter-per-page": "Per Page" "filter-per-page": "Per Page"
} }

View File

@@ -94,8 +94,5 @@
"view-as-json": "View as JSON", "view-as-json": "View as JSON",
"expand-analytics": "Expand analytics", "expand-analytics": "Expand analytics",
"clear-search-history": "Clear Search History", "clear-search-history": "Clear Search History",
"clear-search-history-confirm": "Are you sure you want to clear entire search history?", "clear-search-history-confirm": "Are you sure you want to clear entire search history?"
"search-term": "Term",
"search-count": "Count",
"view-all": "View all"
} }

View File

@@ -121,28 +121,6 @@
"alerts.email-sent-to": "An invitation email has been sent to %1", "alerts.email-sent-to": "An invitation email has been sent to %1",
"alerts.x-users-found": "%1 user(s) found, (%2 seconds)", "alerts.x-users-found": "%1 user(s) found, (%2 seconds)",
"alerts.select-a-single-user-to-change-email": "Select a single user to change email", "alerts.select-a-single-user-to-change-email": "Select a single user to change email",
"export": "Export",
"export-users-fields-title": "Select CSV Fields",
"export-field-email": "Email",
"export-field-username": "Username",
"export-field-uid": "UID",
"export-field-ip": "IP",
"export-field-joindate": "Join date",
"export-field-lastonline": "Last Online",
"export-field-lastposttime": "Last Post Time",
"export-field-reputation": "Reputation",
"export-field-postcount": "Post Count",
"export-field-topiccount": "Topic Count",
"export-field-profileviews": "Profile Views",
"export-field-followercount": "Follower Count",
"export-field-followingcount": "Following Count",
"export-field-fullname": "Full Name",
"export-field-website": "Website",
"export-field-location": "Location",
"export-field-birthday": "Birthday",
"export-field-signature": "Signature",
"export-field-aboutme": "About Me",
"export-users-started": "Exporting users as csv, this might take a while. You will receive a notification when it is complete.", "export-users-started": "Exporting users as csv, this might take a while. You will receive a notification when it is complete.",
"export-users-completed": "Users exported as csv, click here to download.", "export-users-completed": "Users exported as csv, click here to download.",
"email": "Email", "email": "Email",

View File

@@ -10,7 +10,7 @@
"id": "ID: <small>optional</small>", "id": "ID: <small>optional</small>",
"properties": "Properties:", "properties": "Properties:",
"show-to-groups": "Show to Groups:", "groups": "Groups:",
"open-new-window": "Open in a new window", "open-new-window": "Open in a new window",
"dropdown": "Dropdown", "dropdown": "Dropdown",
"dropdown-placeholder": "Place your dropdown menu items below, ie: <br/>&lt;li&gt;&lt;a class=&quot;dropdown-item&quot; href&#x3D;&quot;https://myforum.com&quot;&gt;Link 1&lt;/a&gt;&lt;/li&gt;", "dropdown-placeholder": "Place your dropdown menu items below, ie: <br/>&lt;li&gt;&lt;a class=&quot;dropdown-item&quot; href&#x3D;&quot;https://myforum.com&quot;&gt;Link 1&lt;/a&gt;&lt;/li&gt;",

View File

@@ -4,11 +4,8 @@
"sorting.post-default": "Default Post Sorting", "sorting.post-default": "Default Post Sorting",
"sorting.oldest-to-newest": "Oldest to Newest", "sorting.oldest-to-newest": "Oldest to Newest",
"sorting.newest-to-oldest": "Newest to Oldest", "sorting.newest-to-oldest": "Newest to Oldest",
"sorting.recently-replied": "Recently Replied",
"sorting.recently-created": "Recently Created",
"sorting.most-votes": "Most Votes", "sorting.most-votes": "Most Votes",
"sorting.most-posts": "Most Posts", "sorting.most-posts": "Most Posts",
"sorting.most-views": "Most Views",
"sorting.topic-default": "Default Topic Sorting", "sorting.topic-default": "Default Topic Sorting",
"length": "Post Length", "length": "Post Length",
"post-queue": "Post Queue", "post-queue": "Post Queue",

View File

@@ -23,12 +23,7 @@
"flags.limit-per-target": "Maximum number of times something can be flagged", "flags.limit-per-target": "Maximum number of times something can be flagged",
"flags.limit-per-target-placeholder": "Default: 0", "flags.limit-per-target-placeholder": "Default: 0",
"flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a &quot;report&quot; and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.", "flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a &quot;report&quot; and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.",
"flags.limit-post-flags-per-day": "Maximum number of times a user can flag posts in a day", "flags.auto-flag-on-downvote-threshold": "Number of downvotes to auto flag posts (Set to 0 to disable, default: 0)",
"flags.limit-post-flags-per-day-help": "Set to 0 to disable, (default: 10)",
"flags.limit-user-flags-per-day": "Maximum number of times a user can flag users in a day",
"flags.limit-user-flags-per-day-help": "Set to 0 to disable, (default: 10)",
"flags.auto-flag-on-downvote-threshold": "Number of downvotes to auto flag posts",
"flags.auto-flag-on-downvote-threshold-help": "Set to 0 to disable, (default: 0)",
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned", "flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned",
"flags.action-on-resolve": "Do the following when a flag is resolved", "flags.action-on-resolve": "Do the following when a flag is resolved",
"flags.action-on-reject": "Do the following when a flag is rejected", "flags.action-on-reject": "Do the following when a flag is rejected",

View File

@@ -1,8 +0,0 @@
{
"post-sort-option": "Post sort option, %1",
"topic-sort-option": "Topic sort option, %1",
"user-avatar-for": "User avatar for %1",
"user-watched-tags": "User watched tags",
"delete-upload-button": "Delete upload button",
"group-page-link-for": "Group page link for %1"
}

View File

@@ -32,7 +32,7 @@
"folder-exists": "Folder exists", "folder-exists": "Folder exists",
"invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2",
"username-taken": "ইউজারনেম আগেই ব্যবহৃত", "username-taken": "ইউজারনেম আগেই ব্যবহৃত",
"email-taken": "Email address is already taken.", "email-taken": "ইমেইল আগেই ব্যবহৃত",
"email-nochange": "The email entered is the same as the email already on file.", "email-nochange": "The email entered is the same as the email already on file.",
"email-invited": "Email was already invited", "email-invited": "Email was already invited",
"email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.",
@@ -184,8 +184,6 @@
"user-already-flagged": "You have already flagged this user", "user-already-flagged": "You have already flagged this user",
"post-flagged-too-many-times": "This post has been flagged by others already", "post-flagged-too-many-times": "This post has been flagged by others already",
"user-flagged-too-many-times": "This user has been flagged by others already", "user-flagged-too-many-times": "This user has been flagged by others already",
"too-many-post-flags-per-day": "You can only flag %1 post(s) per day",
"too-many-user-flags-per-day": "You can only flag %1 user(s) per day",
"cant-flag-privileged": "You are not allowed to flag the profiles or content of privileged users (moderators/global moderators/admins)", "cant-flag-privileged": "You are not allowed to flag the profiles or content of privileged users (moderators/global moderators/admins)",
"cant-locate-flag-report": "Cannot locate flag report", "cant-locate-flag-report": "Cannot locate flag report",
"self-vote": "You cannot vote on your own post", "self-vote": "You cannot vote on your own post",
@@ -221,7 +219,6 @@
"already-unblocked": "This user is already unblocked", "already-unblocked": "This user is already unblocked",
"no-connection": "There seems to be a problem with your internet connection", "no-connection": "There seems to be a problem with your internet connection",
"socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later",
"invalid-plugin-id": "Invalid plugin ID",
"plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", "plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP",
"plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.", "plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.",
"theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP", "theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP",

View File

@@ -90,6 +90,6 @@
"bulk-actions": "Bulk Actions", "bulk-actions": "Bulk Actions",
"bulk-resolve": "Resolve Flag(s)", "bulk-resolve": "Resolve Flag(s)",
"bulk-success": "%1 flags updated", "bulk-success": "%1 flags updated",
"flagged-timeago": "Flagged <span class=\"timeago\" title=\"%1\"></span>", "flagged-timeago-readable": "Flagged <span class=\"timeago\" title=\"%1\"></span> (%2)",
"auto-flagged": "[Auto Flagged] Received %1 downvotes." "auto-flagged": "[Auto Flagged] Received %1 downvotes."
} }

View File

@@ -24,15 +24,8 @@
"cancel": "Cancel", "cancel": "Cancel",
"close": "বন্ধ", "close": "বন্ধ",
"pagination": "পাতা নং", "pagination": "পাতা নং",
"pagination.previouspage": "Previous Page",
"pagination.nextpage": "Next Page",
"pagination.firstpage": "First Page",
"pagination.lastpage": "Last Page",
"pagination.out-of": "%2 এর মাঝে %1", "pagination.out-of": "%2 এর মাঝে %1",
"pagination.enter-index": "Go to post index", "pagination.enter-index": "Go to post index",
"pagination.go-to-page": "Go to page",
"pagination.page-x": "Page %1",
"header.brand-logo": "Brand Logo",
"header.admin": "অ্যাডমিন", "header.admin": "অ্যাডমিন",
"header.categories": "বিভাগ", "header.categories": "বিভাগ",
"header.recent": "সাম্প্রতিক", "header.recent": "সাম্প্রতিক",
@@ -54,6 +47,8 @@
"chats.loading": "কথোপকথনগুলি লোড হচ্ছে", "chats.loading": "কথোপকথনগুলি লোড হচ্ছে",
"drafts.loading": "Loading Drafts", "drafts.loading": "Loading Drafts",
"motd.welcome": "ভবিষ্যতের আলোচনার প্লাটফর্ম, NodeBB তে স্বাগতম।", "motd.welcome": "ভবিষ্যতের আলোচনার প্লাটফর্ম, NodeBB তে স্বাগতম।",
"previouspage": "আগের পাতা",
"nextpage": "পরের পাতা",
"alert.success": "সফল", "alert.success": "সফল",
"alert.error": "ত্রুটি", "alert.error": "ত্রুটি",
"alert.warning": "Warning", "alert.warning": "Warning",
@@ -140,12 +135,9 @@
"edited": "Edited", "edited": "Edited",
"disabled": "Disabled", "disabled": "Disabled",
"select": "Select", "select": "Select",
"selected": "Selected",
"copied": "Copied", "copied": "Copied",
"user-search-prompt": "Type something here to find users...", "user-search-prompt": "Type something here to find users...",
"hidden": "Hidden", "hidden": "Hidden",
"sort": "Sort", "sort": "Sort",
"actions": "Actions", "actions": "Actions"
"rss-feed": "RSS Feed",
"skip-to-content": "Skip to content"
} }

View File

@@ -7,7 +7,6 @@
"in-titles": "In titles", "in-titles": "In titles",
"in-titles-posts": "In titles and posts", "in-titles-posts": "In titles and posts",
"in-posts": "In posts", "in-posts": "In posts",
"in-bookmarks": "In bookmarks",
"in-categories": "In categories", "in-categories": "In categories",
"in-users": "In users", "in-users": "In users",
"in-tags": "In tags", "in-tags": "In tags",

View File

@@ -3,7 +3,7 @@
"no-tag-topics": "এই ট্যাগ সম্বলিত কোন টপিক নেই", "no-tag-topics": "এই ট্যাগ সম্বলিত কোন টপিক নেই",
"no-tags-found": "No tags found", "no-tags-found": "No tags found",
"tags": "ট্যাগসমূহ", "tags": "ট্যাগসমূহ",
"enter-tags-here": "Enter tags, %1 - %2 characters.", "enter-tags-here": "Enter tags here, between %1 and %2 characters each.",
"enter-tags-here-short": "ট্যাগ বসান", "enter-tags-here-short": "ট্যাগ বসান",
"no-tags": "এখন পর্যন্ত কোন ট্যাগ নেই", "no-tags": "এখন পর্যন্ত কোন ট্যাগ নেই",
"select-tags": "Select Tags", "select-tags": "Select Tags",

View File

@@ -3,11 +3,9 @@
"skins": "Skins", "skins": "Skins",
"collapse": "Collapse", "collapse": "Collapse",
"expand": "Expand", "expand": "Expand",
"sidebar-toggle": "Sidebar Toggle",
"login-register-to-search": "Login or register to search.", "login-register-to-search": "Login or register to search.",
"settings.title": "Theme settings", "settings.title": "Theme settings",
"settings.enableQuickReply": "Enable quick reply", "settings.enableQuickReply": "Enable quick reply",
"settings.enableBreadcrumbs": "Enable breadcrumbs",
"settings.centerHeaderElements": "Center header elements", "settings.centerHeaderElements": "Center header elements",
"settings.mobileTopicTeasers": "Show topic teasers on mobile", "settings.mobileTopicTeasers": "Show topic teasers on mobile",
"settings.stickyToolbar": "Sticky toolbar", "settings.stickyToolbar": "Sticky toolbar",

View File

@@ -15,7 +15,6 @@
"replies-to-this-post": "%1 Replies", "replies-to-this-post": "%1 Replies",
"one-reply-to-this-post": "1 Reply", "one-reply-to-this-post": "1 Reply",
"last-reply-time": "Last reply", "last-reply-time": "Last reply",
"reply-options": "Reply options",
"reply-as-topic": "Reply as topic", "reply-as-topic": "Reply as topic",
"guest-login-reply": "Log in to reply", "guest-login-reply": "Log in to reply",
"login-to-view": "🔒 Log in to view", "login-to-view": "🔒 Log in to view",
@@ -35,7 +34,6 @@
"pinned": "Pinned", "pinned": "Pinned",
"pinned-with-expiry": "Pinned until %1", "pinned-with-expiry": "Pinned until %1",
"scheduled": "Scheduled", "scheduled": "Scheduled",
"deleted": "Deleted",
"moved": "Moved", "moved": "Moved",
"moved-from": "Moved from %1", "moved-from": "Moved from %1",
"copy-code": "Copy Code", "copy-code": "Copy Code",
@@ -182,8 +180,6 @@
"sort-by": "সাজানোর ভিত্তি:", "sort-by": "সাজানোর ভিত্তি:",
"oldest-to-newest": "পুরাতন থেকে নতুন", "oldest-to-newest": "পুরাতন থেকে নতুন",
"newest-to-oldest": "নতুন থেকে পুরাতন", "newest-to-oldest": "নতুন থেকে পুরাতন",
"recently-replied": "Recently Replied",
"recently-created": "Recently Created",
"most-votes": "Most Votes", "most-votes": "Most Votes",
"most-posts": "Most Posts", "most-posts": "Most Posts",
"most-views": "Most Views", "most-views": "Most Views",
@@ -208,13 +204,7 @@
"last-post": "Last post", "last-post": "Last post",
"go-to-my-next-post": "Go to my next post", "go-to-my-next-post": "Go to my next post",
"no-more-next-post": "You don't have more posts in this topic", "no-more-next-post": "You don't have more posts in this topic",
"open-composer": "Open composer",
"post-quick-reply": "Quick reply", "post-quick-reply": "Quick reply",
"navigator.index": "Post %1 of %2", "navigator.index": "Post %1 of %2",
"navigator.unread": "%1 unread", "navigator.unread": "%1 unread"
"upvote-post": "Upvote post",
"downvote-post": "Downvote post",
"post-tools": "Post tools",
"unread-posts-link": "Unread posts link",
"thumb-image": "Topic thumbnail image"
} }

View File

@@ -3,7 +3,6 @@
"no-unread-topics": "কোন অপঠিত টপিক নেই", "no-unread-topics": "কোন অপঠিত টপিক নেই",
"load-more": "আরো লোড করুন", "load-more": "আরো লোড করুন",
"mark-as-read": "পঠিত হিসেবে চিহ্নিত করুন", "mark-as-read": "পঠিত হিসেবে চিহ্নিত করুন",
"mark-as-unread": "Mark as Unread",
"selected": "নির্বাচিত", "selected": "নির্বাচিত",
"all": "সবগুলো", "all": "সবগুলো",
"all-categories": "All categories", "all-categories": "All categories",

View File

@@ -1,9 +1,6 @@
{ {
"user-menu": "User menu",
"banned": "নিষিদ্ধ", "banned": "নিষিদ্ধ",
"unbanned": "Unbanned",
"muted": "Muted", "muted": "Muted",
"unmuted": "Unmuted",
"offline": "অফলাইন", "offline": "অফলাইন",
"deleted": "Deleted", "deleted": "Deleted",
"username": "সদস্যের নাম", "username": "সদস্যের নাম",
@@ -144,10 +141,6 @@
"follow-topics-you-create": "Watch topics you create", "follow-topics-you-create": "Watch topics you create",
"grouptitle": "Group Title", "grouptitle": "Group Title",
"group-order-help": "Select a group and use the arrows to order titles", "group-order-help": "Select a group and use the arrows to order titles",
"show-group-title": "Show group title",
"hide-group-title": "Hide group title",
"order-group-up": "Order group up",
"order-group-down": "Order group down",
"no-group-title": "No group title", "no-group-title": "No group title",
"select-skin": "Select a Skin", "select-skin": "Select a Skin",
"default": "Default (%1)", "default": "Default (%1)",
@@ -164,16 +157,11 @@
"sso.dissociate-confirm-title": "Confirm Dissociation", "sso.dissociate-confirm-title": "Confirm Dissociation",
"sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?",
"info.latest-flags": "Latest Flags", "info.latest-flags": "Latest Flags",
"info.profile": "Profile",
"info.post": "Post",
"info.view-flag": "View flag",
"info.reported-by": "Reported by:",
"info.no-flags": "No Flagged Posts Found", "info.no-flags": "No Flagged Posts Found",
"info.ban-history": "Recent Ban History", "info.ban-history": "Recent Ban History",
"info.no-ban-history": "This user has never been banned", "info.no-ban-history": "This user has never been banned",
"info.banned-until": "Banned until %1", "info.banned-until": "Banned until %1",
"info.banned-expiry": "Expiry", "info.banned-expiry": "Expiry",
"info.ban-expired": "Ban expired",
"info.banned-permanently": "Banned permanently", "info.banned-permanently": "Banned permanently",
"info.banned-reason-label": "Reason", "info.banned-reason-label": "Reason",
"info.banned-no-reason": "No reason given.", "info.banned-no-reason": "No reason given.",

View File

@@ -9,9 +9,5 @@
"filter-type": "Typ události", "filter-type": "Typ události",
"filter-start": "Datum začátku", "filter-start": "Datum začátku",
"filter-end": "Datum konce", "filter-end": "Datum konce",
"filter-user": "Filter by User",
"filter-user.placeholder": "Type user name to filter...",
"filter-group": "Filter by Group",
"filter-group.placeholder": "Type group name to filter...",
"filter-per-page": "Na stránku" "filter-per-page": "Na stránku"
} }

View File

@@ -94,8 +94,5 @@
"view-as-json": "View as JSON", "view-as-json": "View as JSON",
"expand-analytics": "Expand analytics", "expand-analytics": "Expand analytics",
"clear-search-history": "Clear Search History", "clear-search-history": "Clear Search History",
"clear-search-history-confirm": "Are you sure you want to clear entire search history?", "clear-search-history-confirm": "Are you sure you want to clear entire search history?"
"search-term": "Term",
"search-count": "Count",
"view-all": "View all"
} }

View File

@@ -121,28 +121,6 @@
"alerts.email-sent-to": "E-mail s pozvánkou byl odeslán na %1", "alerts.email-sent-to": "E-mail s pozvánkou byl odeslán na %1",
"alerts.x-users-found": "%1 user(s) found, (%2 seconds)", "alerts.x-users-found": "%1 user(s) found, (%2 seconds)",
"alerts.select-a-single-user-to-change-email": "Select a single user to change email", "alerts.select-a-single-user-to-change-email": "Select a single user to change email",
"export": "Export",
"export-users-fields-title": "Select CSV Fields",
"export-field-email": "Email",
"export-field-username": "Username",
"export-field-uid": "UID",
"export-field-ip": "IP",
"export-field-joindate": "Join date",
"export-field-lastonline": "Last Online",
"export-field-lastposttime": "Last Post Time",
"export-field-reputation": "Reputation",
"export-field-postcount": "Post Count",
"export-field-topiccount": "Topic Count",
"export-field-profileviews": "Profile Views",
"export-field-followercount": "Follower Count",
"export-field-followingcount": "Following Count",
"export-field-fullname": "Full Name",
"export-field-website": "Website",
"export-field-location": "Location",
"export-field-birthday": "Birthday",
"export-field-signature": "Signature",
"export-field-aboutme": "About Me",
"export-users-started": "Exporting users as csv, this might take a while. You will receive a notification when it is complete.", "export-users-started": "Exporting users as csv, this might take a while. You will receive a notification when it is complete.",
"export-users-completed": "Users exported as csv, click here to download.", "export-users-completed": "Users exported as csv, click here to download.",
"email": "Email", "email": "Email",

View File

@@ -10,7 +10,7 @@
"id": "ID: <small>doporučené</small>", "id": "ID: <small>doporučené</small>",
"properties": "Vlastnosti:", "properties": "Vlastnosti:",
"show-to-groups": "Show to Groups:", "groups": "Skupiny:",
"open-new-window": "Otevřít v novém okně", "open-new-window": "Otevřít v novém okně",
"dropdown": "Dropdown", "dropdown": "Dropdown",
"dropdown-placeholder": "Place your dropdown menu items below, ie: <br/>&lt;li&gt;&lt;a class=&quot;dropdown-item&quot; href&#x3D;&quot;https://myforum.com&quot;&gt;Link 1&lt;/a&gt;&lt;/li&gt;", "dropdown-placeholder": "Place your dropdown menu items below, ie: <br/>&lt;li&gt;&lt;a class=&quot;dropdown-item&quot; href&#x3D;&quot;https://myforum.com&quot;&gt;Link 1&lt;/a&gt;&lt;/li&gt;",

View File

@@ -4,11 +4,8 @@
"sorting.post-default": "Výchozí třídění příspěvků", "sorting.post-default": "Výchozí třídění příspěvků",
"sorting.oldest-to-newest": "Od nejstarších po nejnovější", "sorting.oldest-to-newest": "Od nejstarších po nejnovější",
"sorting.newest-to-oldest": "Od nejnovějších po nejstarší", "sorting.newest-to-oldest": "Od nejnovějších po nejstarší",
"sorting.recently-replied": "Recently Replied",
"sorting.recently-created": "Recently Created",
"sorting.most-votes": "Dle počtu hlasů", "sorting.most-votes": "Dle počtu hlasů",
"sorting.most-posts": "Dle počtu příspěvků", "sorting.most-posts": "Dle počtu příspěvků",
"sorting.most-views": "Most Views",
"sorting.topic-default": "Výchozí třídění tématu", "sorting.topic-default": "Výchozí třídění tématu",
"length": "Délka příspěvku", "length": "Délka příspěvku",
"post-queue": "Příspěvky ve frontě", "post-queue": "Příspěvky ve frontě",

View File

@@ -23,12 +23,7 @@
"flags.limit-per-target": "Maximum number of times something can be flagged", "flags.limit-per-target": "Maximum number of times something can be flagged",
"flags.limit-per-target-placeholder": "Default: 0", "flags.limit-per-target-placeholder": "Default: 0",
"flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a &quot;report&quot; and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.", "flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a &quot;report&quot; and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.",
"flags.limit-post-flags-per-day": "Maximum number of times a user can flag posts in a day", "flags.auto-flag-on-downvote-threshold": "Number of downvotes to auto flag posts (Set to 0 to disable, default: 0)",
"flags.limit-post-flags-per-day-help": "Set to 0 to disable, (default: 10)",
"flags.limit-user-flags-per-day": "Maximum number of times a user can flag users in a day",
"flags.limit-user-flags-per-day-help": "Set to 0 to disable, (default: 10)",
"flags.auto-flag-on-downvote-threshold": "Number of downvotes to auto flag posts",
"flags.auto-flag-on-downvote-threshold-help": "Set to 0 to disable, (default: 0)",
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned", "flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned",
"flags.action-on-resolve": "Do the following when a flag is resolved", "flags.action-on-resolve": "Do the following when a flag is resolved",
"flags.action-on-reject": "Do the following when a flag is rejected", "flags.action-on-reject": "Do the following when a flag is rejected",

View File

@@ -1,8 +0,0 @@
{
"post-sort-option": "Post sort option, %1",
"topic-sort-option": "Topic sort option, %1",
"user-avatar-for": "User avatar for %1",
"user-watched-tags": "User watched tags",
"delete-upload-button": "Delete upload button",
"group-page-link-for": "Group page link for %1"
}

View File

@@ -32,7 +32,7 @@
"folder-exists": "Folder exists", "folder-exists": "Folder exists",
"invalid-pagination-value": "Neplatná hodnota stránkování, musí být alespoň %1 a nejvýše %2", "invalid-pagination-value": "Neplatná hodnota stránkování, musí být alespoň %1 a nejvýše %2",
"username-taken": "Uživatelské jméno je již použito", "username-taken": "Uživatelské jméno je již použito",
"email-taken": "Email address is already taken.", "email-taken": "Tento e-mail je již použit",
"email-nochange": "The email entered is the same as the email already on file.", "email-nochange": "The email entered is the same as the email already on file.",
"email-invited": "Email was already invited", "email-invited": "Email was already invited",
"email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.",
@@ -184,8 +184,6 @@
"user-already-flagged": "You have already flagged this user", "user-already-flagged": "You have already flagged this user",
"post-flagged-too-many-times": "This post has been flagged by others already", "post-flagged-too-many-times": "This post has been flagged by others already",
"user-flagged-too-many-times": "This user has been flagged by others already", "user-flagged-too-many-times": "This user has been flagged by others already",
"too-many-post-flags-per-day": "You can only flag %1 post(s) per day",
"too-many-user-flags-per-day": "You can only flag %1 user(s) per day",
"cant-flag-privileged": "You are not allowed to flag the profiles or content of privileged users (moderators/global moderators/admins)", "cant-flag-privileged": "You are not allowed to flag the profiles or content of privileged users (moderators/global moderators/admins)",
"cant-locate-flag-report": "Cannot locate flag report", "cant-locate-flag-report": "Cannot locate flag report",
"self-vote": "U svého vlastního příspěvku nemůžete hlasovat", "self-vote": "U svého vlastního příspěvku nemůžete hlasovat",
@@ -221,7 +219,6 @@
"already-unblocked": "Tento uživatel již byl odblokován", "already-unblocked": "Tento uživatel již byl odblokován",
"no-connection": "Zdá se, že nastal problém s připojením k internetu", "no-connection": "Zdá se, že nastal problém s připojením k internetu",
"socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later",
"invalid-plugin-id": "Invalid plugin ID",
"plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", "plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP",
"plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.", "plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.",
"theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP", "theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP",

View File

@@ -90,6 +90,6 @@
"bulk-actions": "Bulk Actions", "bulk-actions": "Bulk Actions",
"bulk-resolve": "Resolve Flag(s)", "bulk-resolve": "Resolve Flag(s)",
"bulk-success": "%1 flags updated", "bulk-success": "%1 flags updated",
"flagged-timeago": "Flagged <span class=\"timeago\" title=\"%1\"></span>", "flagged-timeago-readable": "Flagged <span class=\"timeago\" title=\"%1\"></span> (%2)",
"auto-flagged": "[Auto Flagged] Received %1 downvotes." "auto-flagged": "[Auto Flagged] Received %1 downvotes."
} }

View File

@@ -24,15 +24,8 @@
"cancel": "Cancel", "cancel": "Cancel",
"close": "Zrušit", "close": "Zrušit",
"pagination": "Stránkování", "pagination": "Stránkování",
"pagination.previouspage": "Previous Page",
"pagination.nextpage": "Next Page",
"pagination.firstpage": "First Page",
"pagination.lastpage": "Last Page",
"pagination.out-of": "%1 z %2", "pagination.out-of": "%1 z %2",
"pagination.enter-index": "Přejít na n-tý příspěvek", "pagination.enter-index": "Přejít na n-tý příspěvek",
"pagination.go-to-page": "Go to page",
"pagination.page-x": "Page %1",
"header.brand-logo": "Brand Logo",
"header.admin": "Administrace", "header.admin": "Administrace",
"header.categories": "Kategorie", "header.categories": "Kategorie",
"header.recent": "Nejnovější", "header.recent": "Nejnovější",
@@ -54,6 +47,8 @@
"chats.loading": "Načítání chatů", "chats.loading": "Načítání chatů",
"drafts.loading": "Loading Drafts", "drafts.loading": "Loading Drafts",
"motd.welcome": "Vítejte na NodeBB, diskusní platforma buducnosti.", "motd.welcome": "Vítejte na NodeBB, diskusní platforma buducnosti.",
"previouspage": "Předchozí stránka",
"nextpage": "Další stránka",
"alert.success": "Úspěšné", "alert.success": "Úspěšné",
"alert.error": "Chyba", "alert.error": "Chyba",
"alert.warning": "Warning", "alert.warning": "Warning",
@@ -140,12 +135,9 @@
"edited": "Upraveno", "edited": "Upraveno",
"disabled": "Nepovoleno", "disabled": "Nepovoleno",
"select": "Vyberte", "select": "Vyberte",
"selected": "Selected",
"copied": "Copied", "copied": "Copied",
"user-search-prompt": "Pro hledání uživatelů, zde pište...", "user-search-prompt": "Pro hledání uživatelů, zde pište...",
"hidden": "Hidden", "hidden": "Hidden",
"sort": "Sort", "sort": "Sort",
"actions": "Actions", "actions": "Actions"
"rss-feed": "RSS Feed",
"skip-to-content": "Skip to content"
} }

View File

@@ -7,7 +7,6 @@
"in-titles": "In titles", "in-titles": "In titles",
"in-titles-posts": "In titles and posts", "in-titles-posts": "In titles and posts",
"in-posts": "In posts", "in-posts": "In posts",
"in-bookmarks": "In bookmarks",
"in-categories": "In categories", "in-categories": "In categories",
"in-users": "In users", "in-users": "In users",
"in-tags": "In tags", "in-tags": "In tags",

View File

@@ -3,7 +3,7 @@
"no-tag-topics": "Není zde žádné téma s tímto označením.", "no-tag-topics": "Není zde žádné téma s tímto označením.",
"no-tags-found": "No tags found", "no-tags-found": "No tags found",
"tags": "Označení", "tags": "Označení",
"enter-tags-here": "Enter tags, %1 - %2 characters.", "enter-tags-here": "Zde vložte označení, každé o délce %1 %2 znaků.",
"enter-tags-here-short": "Zadejte označení…", "enter-tags-here-short": "Zadejte označení…",
"no-tags": "Zatím tu není žádné označení.", "no-tags": "Zatím tu není žádné označení.",
"select-tags": "Select Tags", "select-tags": "Select Tags",

View File

@@ -3,11 +3,9 @@
"skins": "Skins", "skins": "Skins",
"collapse": "Collapse", "collapse": "Collapse",
"expand": "Expand", "expand": "Expand",
"sidebar-toggle": "Sidebar Toggle",
"login-register-to-search": "Login or register to search.", "login-register-to-search": "Login or register to search.",
"settings.title": "Theme settings", "settings.title": "Theme settings",
"settings.enableQuickReply": "Enable quick reply", "settings.enableQuickReply": "Enable quick reply",
"settings.enableBreadcrumbs": "Enable breadcrumbs",
"settings.centerHeaderElements": "Center header elements", "settings.centerHeaderElements": "Center header elements",
"settings.mobileTopicTeasers": "Show topic teasers on mobile", "settings.mobileTopicTeasers": "Show topic teasers on mobile",
"settings.stickyToolbar": "Sticky toolbar", "settings.stickyToolbar": "Sticky toolbar",

View File

@@ -15,7 +15,6 @@
"replies-to-this-post": "%1 odpovědí", "replies-to-this-post": "%1 odpovědí",
"one-reply-to-this-post": "1 odpověď", "one-reply-to-this-post": "1 odpověď",
"last-reply-time": "Poslední odpověď", "last-reply-time": "Poslední odpověď",
"reply-options": "Reply options",
"reply-as-topic": "Odpovědět jako Téma", "reply-as-topic": "Odpovědět jako Téma",
"guest-login-reply": "Přihlásit se pro odpověď", "guest-login-reply": "Přihlásit se pro odpověď",
"login-to-view": "Přihlásit se pro zobrazení", "login-to-view": "Přihlásit se pro zobrazení",
@@ -35,7 +34,6 @@
"pinned": "Připnuto", "pinned": "Připnuto",
"pinned-with-expiry": "Pinned until %1", "pinned-with-expiry": "Pinned until %1",
"scheduled": "Scheduled", "scheduled": "Scheduled",
"deleted": "Deleted",
"moved": "Přesunuto", "moved": "Přesunuto",
"moved-from": "Moved from %1", "moved-from": "Moved from %1",
"copy-code": "Copy Code", "copy-code": "Copy Code",
@@ -182,8 +180,6 @@
"sort-by": "Seřadit dle", "sort-by": "Seřadit dle",
"oldest-to-newest": "Od nejstarších po nejnovější", "oldest-to-newest": "Od nejstarších po nejnovější",
"newest-to-oldest": "Od nejnovějších po nejstarší", "newest-to-oldest": "Od nejnovějších po nejstarší",
"recently-replied": "Recently Replied",
"recently-created": "Recently Created",
"most-votes": "S nejvíce hlasy", "most-votes": "S nejvíce hlasy",
"most-posts": "S nejvíce příspěvky", "most-posts": "S nejvíce příspěvky",
"most-views": "Most Views", "most-views": "Most Views",
@@ -208,13 +204,7 @@
"last-post": "Last post", "last-post": "Last post",
"go-to-my-next-post": "Go to my next post", "go-to-my-next-post": "Go to my next post",
"no-more-next-post": "You don't have more posts in this topic", "no-more-next-post": "You don't have more posts in this topic",
"open-composer": "Open composer",
"post-quick-reply": "Quick reply", "post-quick-reply": "Quick reply",
"navigator.index": "Post %1 of %2", "navigator.index": "Post %1 of %2",
"navigator.unread": "%1 unread", "navigator.unread": "%1 unread"
"upvote-post": "Upvote post",
"downvote-post": "Downvote post",
"post-tools": "Post tools",
"unread-posts-link": "Unread posts link",
"thumb-image": "Topic thumbnail image"
} }

View File

@@ -3,7 +3,6 @@
"no-unread-topics": "Nejsou zde žádné nepřečtené témata.", "no-unread-topics": "Nejsou zde žádné nepřečtené témata.",
"load-more": "Načíst další", "load-more": "Načíst další",
"mark-as-read": "Označit jako přečtené", "mark-as-read": "Označit jako přečtené",
"mark-as-unread": "Mark as Unread",
"selected": "Vybrané", "selected": "Vybrané",
"all": "Vše", "all": "Vše",
"all-categories": "Všechny kategorie", "all-categories": "Všechny kategorie",

View File

@@ -1,9 +1,6 @@
{ {
"user-menu": "User menu",
"banned": "Zablokován", "banned": "Zablokován",
"unbanned": "Unbanned",
"muted": "Ztlumen", "muted": "Ztlumen",
"unmuted": "Unmuted",
"offline": "Nepřipojen", "offline": "Nepřipojen",
"deleted": "Odstraněno", "deleted": "Odstraněno",
"username": "Uživatelské jméno", "username": "Uživatelské jméno",
@@ -144,10 +141,6 @@
"follow-topics-you-create": "Sledovat témata, která vytvoříte", "follow-topics-you-create": "Sledovat témata, která vytvoříte",
"grouptitle": "Nadpis skupiny", "grouptitle": "Nadpis skupiny",
"group-order-help": "Vyberte si skupiny a použijte šipky pro seřazení titulů", "group-order-help": "Vyberte si skupiny a použijte šipky pro seřazení titulů",
"show-group-title": "Show group title",
"hide-group-title": "Hide group title",
"order-group-up": "Order group up",
"order-group-down": "Order group down",
"no-group-title": "Žádný nadpis skupiny", "no-group-title": "Žádný nadpis skupiny",
"select-skin": "Vybrat vzhled", "select-skin": "Vybrat vzhled",
"default": "Default (%1)", "default": "Default (%1)",
@@ -164,16 +157,11 @@
"sso.dissociate-confirm-title": "Potvrdit odloučení", "sso.dissociate-confirm-title": "Potvrdit odloučení",
"sso.dissociate-confirm": "Jste si jist/a, že chcete odloučit váš účet z %1?", "sso.dissociate-confirm": "Jste si jist/a, že chcete odloučit váš účet z %1?",
"info.latest-flags": "Poslední označené", "info.latest-flags": "Poslední označené",
"info.profile": "Profile",
"info.post": "Post",
"info.view-flag": "View flag",
"info.reported-by": "Reported by:",
"info.no-flags": "Nebyly nalezeny žádné označené příspěvky", "info.no-flags": "Nebyly nalezeny žádné označené příspěvky",
"info.ban-history": "Poslední historie blokovaných", "info.ban-history": "Poslední historie blokovaných",
"info.no-ban-history": "Tento uživatel nebyl nikdy zablokován", "info.no-ban-history": "Tento uživatel nebyl nikdy zablokován",
"info.banned-until": "Zablokován do %1", "info.banned-until": "Zablokován do %1",
"info.banned-expiry": "Expiry", "info.banned-expiry": "Expiry",
"info.ban-expired": "Ban expired",
"info.banned-permanently": "Trvale zablokován", "info.banned-permanently": "Trvale zablokován",
"info.banned-reason-label": "Důvod", "info.banned-reason-label": "Důvod",
"info.banned-no-reason": "Bez důvodu", "info.banned-no-reason": "Bez důvodu",

View File

@@ -9,9 +9,5 @@
"filter-type": "Event Type", "filter-type": "Event Type",
"filter-start": "Start Date", "filter-start": "Start Date",
"filter-end": "End Date", "filter-end": "End Date",
"filter-user": "Filter by User",
"filter-user.placeholder": "Type user name to filter...",
"filter-group": "Filter by Group",
"filter-group.placeholder": "Type group name to filter...",
"filter-per-page": "Per Page" "filter-per-page": "Per Page"
} }

View File

@@ -94,8 +94,5 @@
"view-as-json": "View as JSON", "view-as-json": "View as JSON",
"expand-analytics": "Expand analytics", "expand-analytics": "Expand analytics",
"clear-search-history": "Clear Search History", "clear-search-history": "Clear Search History",
"clear-search-history-confirm": "Are you sure you want to clear entire search history?", "clear-search-history-confirm": "Are you sure you want to clear entire search history?"
"search-term": "Term",
"search-count": "Count",
"view-all": "View all"
} }

View File

@@ -121,28 +121,6 @@
"alerts.email-sent-to": "An invitation email has been sent to %1", "alerts.email-sent-to": "An invitation email has been sent to %1",
"alerts.x-users-found": "%1 user(s) found, (%2 seconds)", "alerts.x-users-found": "%1 user(s) found, (%2 seconds)",
"alerts.select-a-single-user-to-change-email": "Select a single user to change email", "alerts.select-a-single-user-to-change-email": "Select a single user to change email",
"export": "Export",
"export-users-fields-title": "Select CSV Fields",
"export-field-email": "Email",
"export-field-username": "Username",
"export-field-uid": "UID",
"export-field-ip": "IP",
"export-field-joindate": "Join date",
"export-field-lastonline": "Last Online",
"export-field-lastposttime": "Last Post Time",
"export-field-reputation": "Reputation",
"export-field-postcount": "Post Count",
"export-field-topiccount": "Topic Count",
"export-field-profileviews": "Profile Views",
"export-field-followercount": "Follower Count",
"export-field-followingcount": "Following Count",
"export-field-fullname": "Full Name",
"export-field-website": "Website",
"export-field-location": "Location",
"export-field-birthday": "Birthday",
"export-field-signature": "Signature",
"export-field-aboutme": "About Me",
"export-users-started": "Exporting users as csv, this might take a while. You will receive a notification when it is complete.", "export-users-started": "Exporting users as csv, this might take a while. You will receive a notification when it is complete.",
"export-users-completed": "Users exported as csv, click here to download.", "export-users-completed": "Users exported as csv, click here to download.",
"email": "Email", "email": "Email",

View File

@@ -10,7 +10,7 @@
"id": "ID: <small>optional</small>", "id": "ID: <small>optional</small>",
"properties": "Properties:", "properties": "Properties:",
"show-to-groups": "Show to Groups:", "groups": "Groups:",
"open-new-window": "Open in a new window", "open-new-window": "Open in a new window",
"dropdown": "Dropdown", "dropdown": "Dropdown",
"dropdown-placeholder": "Place your dropdown menu items below, ie: <br/>&lt;li&gt;&lt;a class=&quot;dropdown-item&quot; href&#x3D;&quot;https://myforum.com&quot;&gt;Link 1&lt;/a&gt;&lt;/li&gt;", "dropdown-placeholder": "Place your dropdown menu items below, ie: <br/>&lt;li&gt;&lt;a class=&quot;dropdown-item&quot; href&#x3D;&quot;https://myforum.com&quot;&gt;Link 1&lt;/a&gt;&lt;/li&gt;",

View File

@@ -4,11 +4,8 @@
"sorting.post-default": "Default Post Sorting", "sorting.post-default": "Default Post Sorting",
"sorting.oldest-to-newest": "Oldest to Newest", "sorting.oldest-to-newest": "Oldest to Newest",
"sorting.newest-to-oldest": "Newest to Oldest", "sorting.newest-to-oldest": "Newest to Oldest",
"sorting.recently-replied": "Recently Replied",
"sorting.recently-created": "Recently Created",
"sorting.most-votes": "Most Votes", "sorting.most-votes": "Most Votes",
"sorting.most-posts": "Most Posts", "sorting.most-posts": "Most Posts",
"sorting.most-views": "Most Views",
"sorting.topic-default": "Default Topic Sorting", "sorting.topic-default": "Default Topic Sorting",
"length": "Post Length", "length": "Post Length",
"post-queue": "Post Queue", "post-queue": "Post Queue",

View File

@@ -23,12 +23,7 @@
"flags.limit-per-target": "Maximum number of times something can be flagged", "flags.limit-per-target": "Maximum number of times something can be flagged",
"flags.limit-per-target-placeholder": "Default: 0", "flags.limit-per-target-placeholder": "Default: 0",
"flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a &quot;report&quot; and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.", "flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a &quot;report&quot; and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.",
"flags.limit-post-flags-per-day": "Maximum number of times a user can flag posts in a day", "flags.auto-flag-on-downvote-threshold": "Number of downvotes to auto flag posts (Set to 0 to disable, default: 0)",
"flags.limit-post-flags-per-day-help": "Set to 0 to disable, (default: 10)",
"flags.limit-user-flags-per-day": "Maximum number of times a user can flag users in a day",
"flags.limit-user-flags-per-day-help": "Set to 0 to disable, (default: 10)",
"flags.auto-flag-on-downvote-threshold": "Number of downvotes to auto flag posts",
"flags.auto-flag-on-downvote-threshold-help": "Set to 0 to disable, (default: 0)",
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned", "flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned",
"flags.action-on-resolve": "Do the following when a flag is resolved", "flags.action-on-resolve": "Do the following when a flag is resolved",
"flags.action-on-reject": "Do the following when a flag is rejected", "flags.action-on-reject": "Do the following when a flag is rejected",

View File

@@ -1,8 +0,0 @@
{
"post-sort-option": "Post sort option, %1",
"topic-sort-option": "Topic sort option, %1",
"user-avatar-for": "User avatar for %1",
"user-watched-tags": "User watched tags",
"delete-upload-button": "Delete upload button",
"group-page-link-for": "Group page link for %1"
}

View File

@@ -32,7 +32,7 @@
"folder-exists": "Folder exists", "folder-exists": "Folder exists",
"invalid-pagination-value": "Ugyldig side værdi, skal mindst være %1 og maks. %2", "invalid-pagination-value": "Ugyldig side værdi, skal mindst være %1 og maks. %2",
"username-taken": "Brugernavn optaget", "username-taken": "Brugernavn optaget",
"email-taken": "Email address is already taken.", "email-taken": "Emailadresse allerede i brug",
"email-nochange": "The email entered is the same as the email already on file.", "email-nochange": "The email entered is the same as the email already on file.",
"email-invited": "Email was already invited", "email-invited": "Email was already invited",
"email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.",
@@ -184,8 +184,6 @@
"user-already-flagged": "You have already flagged this user", "user-already-flagged": "You have already flagged this user",
"post-flagged-too-many-times": "This post has been flagged by others already", "post-flagged-too-many-times": "This post has been flagged by others already",
"user-flagged-too-many-times": "This user has been flagged by others already", "user-flagged-too-many-times": "This user has been flagged by others already",
"too-many-post-flags-per-day": "You can only flag %1 post(s) per day",
"too-many-user-flags-per-day": "You can only flag %1 user(s) per day",
"cant-flag-privileged": "You are not allowed to flag the profiles or content of privileged users (moderators/global moderators/admins)", "cant-flag-privileged": "You are not allowed to flag the profiles or content of privileged users (moderators/global moderators/admins)",
"cant-locate-flag-report": "Cannot locate flag report", "cant-locate-flag-report": "Cannot locate flag report",
"self-vote": "You cannot vote on your own post", "self-vote": "You cannot vote on your own post",
@@ -221,7 +219,6 @@
"already-unblocked": "This user is already unblocked", "already-unblocked": "This user is already unblocked",
"no-connection": "There seems to be a problem with your internet connection", "no-connection": "There seems to be a problem with your internet connection",
"socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later",
"invalid-plugin-id": "Invalid plugin ID",
"plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", "plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP",
"plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.", "plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.",
"theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP", "theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP",

View File

@@ -90,6 +90,6 @@
"bulk-actions": "Bulk Actions", "bulk-actions": "Bulk Actions",
"bulk-resolve": "Resolve Flag(s)", "bulk-resolve": "Resolve Flag(s)",
"bulk-success": "%1 flags updated", "bulk-success": "%1 flags updated",
"flagged-timeago": "Flagged <span class=\"timeago\" title=\"%1\"></span>", "flagged-timeago-readable": "Flagged <span class=\"timeago\" title=\"%1\"></span> (%2)",
"auto-flagged": "[Auto Flagged] Received %1 downvotes." "auto-flagged": "[Auto Flagged] Received %1 downvotes."
} }

View File

@@ -24,15 +24,8 @@
"cancel": "Cancel", "cancel": "Cancel",
"close": "Luk", "close": "Luk",
"pagination": "Sidetal", "pagination": "Sidetal",
"pagination.previouspage": "Previous Page",
"pagination.nextpage": "Next Page",
"pagination.firstpage": "First Page",
"pagination.lastpage": "Last Page",
"pagination.out-of": "%1 ud af %2", "pagination.out-of": "%1 ud af %2",
"pagination.enter-index": "Go to post index", "pagination.enter-index": "Go to post index",
"pagination.go-to-page": "Go to page",
"pagination.page-x": "Page %1",
"header.brand-logo": "Brand Logo",
"header.admin": "Administrator", "header.admin": "Administrator",
"header.categories": "Kategorier", "header.categories": "Kategorier",
"header.recent": "Seneste", "header.recent": "Seneste",
@@ -54,6 +47,8 @@
"chats.loading": "Indlæser chats", "chats.loading": "Indlæser chats",
"drafts.loading": "Loading Drafts", "drafts.loading": "Loading Drafts",
"motd.welcome": "Velkommen til NodeBB, fremtidens diskussion platform.", "motd.welcome": "Velkommen til NodeBB, fremtidens diskussion platform.",
"previouspage": "Forrige side",
"nextpage": "Næste side",
"alert.success": "Succes", "alert.success": "Succes",
"alert.error": "Fejl", "alert.error": "Fejl",
"alert.warning": "Warning", "alert.warning": "Warning",
@@ -140,12 +135,9 @@
"edited": "Edited", "edited": "Edited",
"disabled": "Disabled", "disabled": "Disabled",
"select": "Select", "select": "Select",
"selected": "Selected",
"copied": "Copied", "copied": "Copied",
"user-search-prompt": "Type something here to find users...", "user-search-prompt": "Type something here to find users...",
"hidden": "Hidden", "hidden": "Hidden",
"sort": "Sort", "sort": "Sort",
"actions": "Actions", "actions": "Actions"
"rss-feed": "RSS Feed",
"skip-to-content": "Skip to content"
} }

Some files were not shown because too many files have changed in this diff Show More