Compare commits
298 Commits
release/1.5.1
...
apache
| Author | SHA1 | Date | |
|---|---|---|---|
| 3a5e6c272d | |||
| d32694a8bc | |||
| 1d7ef0c219 | |||
| c92e7b8417 | |||
| b4d583b745 | |||
| 1f9e44931d | |||
| a218924ba0 | |||
| 316417961a | |||
| b1da65fbe4 | |||
| 0aca063077 | |||
| 11091244f6 | |||
| d1a4092c61 | |||
| 11c80384f1 | |||
| ab236f2d6a | |||
| 97924574c4 | |||
| e3831b6f52 | |||
| c93f3bc5c3 | |||
| 278fdfd8c3 | |||
| 2836d0ea81 | |||
| ac7bdda074 | |||
| 057679a2bf | |||
| 5d923f8ca3 | |||
| 7d0714dd1a | |||
| 8dd55af6cd | |||
| 22c2a5c276 | |||
| f346bcc8fa | |||
| dc71f4a292 | |||
| dea18f997c | |||
| 71d11b6205 | |||
| 9da00a807d | |||
| cfc3e54f30 | |||
| 2dbe594da2 | |||
| 36b548140e | |||
| 3c5c47b91b | |||
| 6fc25c69f4 | |||
| ff997cb014 | |||
| 09599e4c20 | |||
| 844c73cd7f | |||
| d6cb1b119f | |||
| 52880f9d5a | |||
| 659d1f6ad9 | |||
| 7952075ce5 | |||
| 52d057ef18 | |||
| 869b040e92 | |||
| 0db88d63e3 | |||
| 92994b4997 | |||
| 638fb082c5 | |||
| fca80abbaf | |||
| a6bfd402b6 | |||
| a55b4c65d2 | |||
| 5ec9d8b623 | |||
| ff6b5736c3 | |||
| d47d7cc452 | |||
| 90022ce039 | |||
| 50a96809d8 | |||
| a08c124748 | |||
| b522a168e3 | |||
| e5cb38bd74 | |||
| 7dfb8b320e | |||
| 34c1e8a38a | |||
| 4fd96675f3 | |||
| a5edc4fc01 | |||
| 2a99d234ea | |||
| 8b61cad014 | |||
| bdd1949a96 | |||
| 9ea13af860 | |||
| b83d0214c7 | |||
| ef54781b77 | |||
| cc1567ac4b | |||
| f403eadb2c | |||
| 94c030829d | |||
| ce5aadf30d | |||
| 9fbf9e4ff4 | |||
| dc7f752128 | |||
| c1549d2909 | |||
| c509723f29 | |||
| 06e9d437e0 | |||
| 2d02452e17 | |||
| 630ac20a38 | |||
| f3dddfeb0e | |||
| 86c2d64dbf | |||
| 73cfbace70 | |||
| 18b76f3e23 | |||
| 6369056914 | |||
| 128c44f5a3 | |||
| 3264fdd1d9 | |||
| c2a0bee7dc | |||
| 9efa9471bd | |||
| f05f1eb80d | |||
| d65e257f92 | |||
| 8b8550e9ca | |||
| 81511e386a | |||
| 60f8cd1803 | |||
| 0bb33e7ea4 | |||
| 94de21361e | |||
| f0636d4369 | |||
| 0d7979e901 | |||
| 3cd3e4a888 | |||
| 29ec29bde7 | |||
| 6b834c745a | |||
| 5be6ec9e71 | |||
| 3d5465334c | |||
| f6d30a5b57 | |||
| d773b86906 | |||
| 1fbb802e8f | |||
| 5ff6106d37 | |||
| 26d868b123 | |||
| d7d692bb37 | |||
| d5c07f18ad | |||
| a1f0b0963b | |||
| 57f31ec7eb | |||
| c8908b7b34 | |||
| 42f8947e7c | |||
| 61d9bf34d3 | |||
| 9e236f65a3 | |||
| 762e8a739d | |||
| 78714e83cf | |||
| aa7e19b896 | |||
| cf7f601cb0 | |||
| c8881889c8 | |||
| 462931a309 | |||
| f92d3a3481 | |||
| 92d853ce3c | |||
| 2ae309abc3 | |||
| b5ae2d0351 | |||
| d3a29e7ad9 | |||
| 0bad2c7249 | |||
| 1c2c733190 | |||
| ffa8dc2bb8 | |||
| 7a4b57d1ff | |||
| d87726bd6e | |||
| 498c142198 | |||
| 3d43700556 | |||
| 762773cedb | |||
| c2a62804b0 | |||
| 9ef55ca07c | |||
| 3000e3aec0 | |||
| 59408774fb | |||
| e35b955159 | |||
| 3ddec99837 | |||
| fbb877ab11 | |||
| 216786a6de | |||
| dd836497e3 | |||
| 8412ccdc12 | |||
| 8f5c164e38 | |||
| c82f0a4fdd | |||
| f5600865e0 | |||
| 82a1127c64 | |||
| 0065e355aa | |||
| bf2127dbd0 | |||
| 5fa638a3e1 | |||
| e1255373cb | |||
| 4950009248 | |||
| 62e765f70a | |||
| 74654f2703 | |||
| 92de2ef16f | |||
| bb60dca5eb | |||
| 480474d7be | |||
| d15d55abe3 | |||
| 2b64983464 | |||
| c0a9f3155a | |||
| f86e98167f | |||
| 9b64d7d64d | |||
| 4609e200ae | |||
| 8b739c5a59 | |||
| 27cd77358c | |||
| 1418745b00 | |||
| 9bb87bf8d6 | |||
| 59df184bab | |||
| 7a1c96d2cb | |||
| d468e2ba8d | |||
| 57ba299543 | |||
| 48b1de8314 | |||
| 8e395d421e | |||
| 740ac61bb2 | |||
| 6660cdf6e2 | |||
| 670aa32325 | |||
| 5e705a124b | |||
| 9540ef6005 | |||
| f723d120d9 | |||
| fc2a1d8afe | |||
| bc629db132 | |||
| 0777291e80 | |||
| ce053ccfa6 | |||
| a15dd41550 | |||
| 09b6b34b05 | |||
| 9a7eb0f450 | |||
| 54e602c5e6 | |||
| 157dbfd08a | |||
| 666ab706a6 | |||
| 20cd4d7c44 | |||
| 4cbdd43738 | |||
| 833ea4fcb2 | |||
| eb1b20ab96 | |||
| 439e786294 | |||
| b79fb38300 | |||
| 93e183be62 | |||
| b33e9fc93e | |||
| 63e2fb9005 | |||
| 4fca0c4271 | |||
| e1ff07318e | |||
| e3151c1da9 | |||
| 2d2451f78d | |||
| 9154b9ba5b | |||
| f238aa5051 | |||
| 52e1b8bd86 | |||
| 433b8d5d1b | |||
| 4fa1d0f494 | |||
| 403dec5e39 | |||
| 9b65fed9f0 | |||
| a678946032 | |||
| c78cadb159 | |||
| 3ae38a14f0 | |||
| a63fe5b26c | |||
| dc47e1a511 | |||
| aa75f4455d | |||
| f93ab41140 | |||
| 78df776449 | |||
| bca8273fb5 | |||
| 4c2564e276 | |||
| bec3e355a9 | |||
| 5ad97801b0 | |||
| aeb7b08371 | |||
| e071f3e7b6 | |||
| 6a0f9f15e5 | |||
| 44beb6d15c | |||
| d738ec2121 | |||
| f709968463 | |||
| 7f9af84093 | |||
| fc4959c3bb | |||
| 235c69e9b9 | |||
| 7a8afbb353 | |||
| 413c39184d | |||
| f73641eff9 | |||
| 81837c9fe0 | |||
| df3b1a1a39 | |||
| 1b97952601 | |||
| e9ea91d260 | |||
| 6d2dd57df8 | |||
| 7ffd86e14a | |||
| 0376a00d73 | |||
| 6389c3b34e | |||
| 1aeea01c6f | |||
| c2c7ea84d5 | |||
| a6d95ae8f9 | |||
| dc582eec54 | |||
| bfa48a8ca9 | |||
| 19aed9f9c8 | |||
| af80380f23 | |||
| fbd5a55c5d | |||
| 7e4edb18d4 | |||
| 2e646af56a | |||
| 23d2a915dc | |||
| fa7ff6a9c6 | |||
| fda869f1dc | |||
| 1871e2e580 | |||
| 9897d92e53 | |||
| 1ef67972df | |||
| e90be519a7 | |||
| d04d18dff2 | |||
| 05fab1c999 | |||
| 8560c89e06 | |||
| d2768b1f11 | |||
| 60f87fd294 | |||
| 736d07a30b | |||
| 2bc3167dbd | |||
| 17e1b30175 | |||
| b78be61ee8 | |||
| 3b8b5871a6 | |||
| 19eca49d2a | |||
| 6d02706d4d | |||
| 550a92684e | |||
| e6f94c924d | |||
| b863ad6b78 | |||
| 157291c2d5 | |||
| 246f307980 | |||
| 67b9c0b462 | |||
| d82c75d7cc | |||
| 03ec0ddfbb | |||
| d02d09bb9a | |||
| dc98f61d69 | |||
| a62c975c7e | |||
| ee6e67243d | |||
| ef8c1ebb88 | |||
| b6a23d69d6 | |||
| 530812f810 | |||
| fd361d47ed | |||
| 401c8a7637 | |||
| a963f5a881 | |||
| 07217e25ab | |||
| 3ce9dfb10f | |||
| eddedfdf1b | |||
| 1f07d8eb15 | |||
| f4368f54c5 | |||
| 4a8ab2ef23 | |||
| 76db516499 | |||
| 3d41181365 | |||
| da62d41486 |
@@ -43,6 +43,6 @@ github:
|
||||
|
||||
notifications:
|
||||
commits: commits@answer.apache.org
|
||||
issues: commits@answer.apache.org
|
||||
pullrequests: commits@answer.apache.org
|
||||
discussions: commits@answer.apache.org
|
||||
issues: issues@answer.apache.org
|
||||
pullrequests: issues@answer.apache.org
|
||||
discussions: issues@answer.apache.org
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
# Installation
|
||||
INSTALL_PORT=80
|
||||
AUTO_INSTALL=false
|
||||
|
||||
# Database
|
||||
DB_TYPE=
|
||||
DB_USERNAME=
|
||||
DB_PASSWORD=
|
||||
DB_HOST=
|
||||
DB_NAME=
|
||||
DB_FILE=
|
||||
|
||||
# Site
|
||||
LANGUAGE=en-US
|
||||
SITE_NAME=Apache Answer
|
||||
SITE_URL=
|
||||
CONTACT_EMAIL=
|
||||
|
||||
# Admin
|
||||
ADMIN_NAME=
|
||||
ADMIN_PASSWORD=
|
||||
ADMIN_EMAIL=
|
||||
|
||||
# Content
|
||||
EXTERNAL_CONTENT_DISPLAY=ask_before_display
|
||||
|
||||
# Swagger
|
||||
SWAGGER_HOST=
|
||||
SWAGGER_ADDRESS_PORT=
|
||||
|
||||
# Server
|
||||
SITE_ADDR=0.0.0.0:3000
|
||||
|
||||
# Logging
|
||||
LOG_LEVEL=INFO
|
||||
LOG_PATH=
|
||||
@@ -12,7 +12,7 @@ assignees: ''
|
||||
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
### To Reproduce
|
||||
## To Reproduce
|
||||
|
||||
Steps to reproduce the behavior:
|
||||
|
||||
@@ -21,15 +21,15 @@ Steps to reproduce the behavior:
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
### Expected behavior
|
||||
## Expected behavior
|
||||
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
### Screenshots
|
||||
## Screenshots
|
||||
|
||||
If applicable, add screenshots or video to help explain your problem.
|
||||
|
||||
### Platform
|
||||
## Platform
|
||||
|
||||
- Device: [e.g. Desktop, Mobile]
|
||||
- OS: [e.g. macOS]
|
||||
|
||||
@@ -34,7 +34,7 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Node
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.18.1
|
||||
|
||||
@@ -42,15 +42,16 @@ jobs:
|
||||
run: make install-ui-packages ui
|
||||
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v3
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: 1.22
|
||||
go-version: 1.23
|
||||
|
||||
- name: Install GoReleaser
|
||||
run: go install github.com/goreleaser/goreleaser/v2@latest
|
||||
|
||||
- name: Run GoReleaser
|
||||
uses: goreleaser/goreleaser-action@v4
|
||||
with:
|
||||
distribution: goreleaser
|
||||
version: latest
|
||||
args: release --clean --skip=validate
|
||||
run: |
|
||||
"$(go env GOPATH)/bin/goreleaser" release --clean --skip=validate
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- uses: actions/upload-artifact@v4
|
||||
|
||||
@@ -37,26 +37,26 @@ jobs:
|
||||
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v4
|
||||
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5.10.0
|
||||
with:
|
||||
images: apache/answer
|
||||
tags: |
|
||||
type=raw,value=latest
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v3
|
||||
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USER }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v4
|
||||
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64
|
||||
@@ -64,5 +64,3 @@ jobs:
|
||||
file: ./Dockerfile
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ jobs:
|
||||
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v4
|
||||
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5.10.0
|
||||
with:
|
||||
images: apache/answer
|
||||
tags: |
|
||||
@@ -43,19 +43,19 @@ jobs:
|
||||
type=semver,pattern={{version}}
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v3
|
||||
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USER }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v4
|
||||
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64
|
||||
|
||||
@@ -36,7 +36,7 @@ jobs:
|
||||
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v4
|
||||
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5.10.0
|
||||
with:
|
||||
images: apache/answer
|
||||
tags: |
|
||||
@@ -44,19 +44,19 @@ jobs:
|
||||
type=semver,pattern={{version}}
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v3
|
||||
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USER }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v4
|
||||
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64
|
||||
@@ -64,5 +64,3 @@ jobs:
|
||||
file: ./Dockerfile
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
|
||||
|
||||
|
||||
@@ -32,26 +32,26 @@ jobs:
|
||||
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v4
|
||||
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5.10.0
|
||||
with:
|
||||
images: apache/answer
|
||||
tags: |
|
||||
type=raw,value=test
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v3
|
||||
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USER }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v4
|
||||
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
|
||||
with:
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
name: Lint
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.number || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
name: Lint (${{ matrix.os }})
|
||||
runs-on: ${{ matrix.os }}
|
||||
timeout-minutes: 15
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-latest]
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: "1.23"
|
||||
cache: true
|
||||
|
||||
- name: Run go mod tidy
|
||||
run: go mod tidy
|
||||
|
||||
- name: Run golangci-lint
|
||||
run: make lint
|
||||
|
||||
- name: Check for uncommitted changes
|
||||
shell: bash
|
||||
run: |
|
||||
if [ -n "$(git status --porcelain)" ]; then
|
||||
echo "::error::Uncommitted changes detected"
|
||||
git status
|
||||
git diff
|
||||
exit 1
|
||||
fi
|
||||
+4
-1
@@ -28,8 +28,11 @@ vendor/
|
||||
/answer-data/
|
||||
/answer
|
||||
/new_answer
|
||||
|
||||
build/tools/
|
||||
dist/
|
||||
|
||||
# Lint setup generated file
|
||||
.husky/
|
||||
|
||||
# Environment variables
|
||||
.env
|
||||
@@ -0,0 +1,49 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
version: "2"
|
||||
linters:
|
||||
exclusions:
|
||||
paths:
|
||||
- answer-data
|
||||
- ui
|
||||
- i18n
|
||||
enable:
|
||||
- asasalint # checks for pass []any as any in variadic func(...any)
|
||||
- asciicheck # checks that your code does not contain non-ASCII identifiers
|
||||
- bidichk # checks for dangerous unicode character sequences
|
||||
- bodyclose # checks whether HTTP response body is closed successfully
|
||||
- canonicalheader # checks whether net/http.Header uses canonical header
|
||||
- copyloopvar # detects places where loop variables are copied (Go 1.22+)
|
||||
- gocritic # provides diagnostics that check for bugs, performance and style issues
|
||||
- misspell # finds commonly misspelled English words in comments and strings
|
||||
- modernize # detects code that can be modernized to use newer Go features
|
||||
- testifylint # checks usage of github.com/stretchr/testify
|
||||
- unconvert # removes unnecessary type conversions
|
||||
- unparam # reports unused function parameters
|
||||
- whitespace # detects leading and trailing whitespace
|
||||
|
||||
formatters:
|
||||
enable:
|
||||
- gofmt
|
||||
- goimports
|
||||
settings:
|
||||
gofmt:
|
||||
simplify: true
|
||||
rewrite-rules:
|
||||
- pattern: 'interface{}'
|
||||
replacement: 'any'
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
FROM golang:1.22-alpine AS golang-builder
|
||||
FROM golang:1.24-alpine AS golang-builder
|
||||
LABEL maintainer="linkinstar@apache.org"
|
||||
|
||||
ARG GOPROXY
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.PHONY: build clean ui
|
||||
|
||||
VERSION=1.5.1
|
||||
VERSION=2.0.1
|
||||
BIN=answer
|
||||
DIR_SRC=./cmd/answer
|
||||
DOCKER_CMD=docker
|
||||
@@ -10,6 +10,15 @@ Revision=$(shell git rev-parse --short HEAD 2>/dev/null || echo "")
|
||||
GO_FLAGS=-ldflags="-X github.com/apache/answer/cmd.Version=$(VERSION) -X 'github.com/apache/answer/cmd.Revision=$(Revision)' -X 'github.com/apache/answer/cmd.Time=`date +%s`' -extldflags -static"
|
||||
GO=$(GO_ENV) "$(shell which go)"
|
||||
|
||||
GOLANGCI_VERSION ?= v2.6.2
|
||||
TOOLS_BIN := $(shell mkdir -p build/tools && realpath build/tools)
|
||||
|
||||
GOLANGCI = $(TOOLS_BIN)/golangci-lint-$(GOLANGCI_VERSION)
|
||||
$(GOLANGCI):
|
||||
rm -f $(TOOLS_BIN)/golangci-lint*
|
||||
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/$(GOLANGCI_VERSION)/install.sh | sh -s -- -b $(TOOLS_BIN) $(GOLANGCI_VERSION)
|
||||
mv $(TOOLS_BIN)/golangci-lint $(TOOLS_BIN)/golangci-lint-$(GOLANGCI_VERSION)
|
||||
|
||||
build: generate
|
||||
@$(GO) build $(GO_FLAGS) -o $(BIN) $(DIR_SRC)
|
||||
|
||||
@@ -23,10 +32,10 @@ universal: generate
|
||||
generate:
|
||||
@$(GO) get github.com/swaggo/swag/cmd/swag@v1.16.3
|
||||
@$(GO) get github.com/google/wire/cmd/wire@v0.5.0
|
||||
@$(GO) get go.uber.org/mock/mockgen@v0.5.0
|
||||
@$(GO) get go.uber.org/mock/mockgen@v0.6.0
|
||||
@$(GO) install github.com/swaggo/swag/cmd/swag@v1.16.3
|
||||
@$(GO) install github.com/google/wire/cmd/wire@v0.5.0
|
||||
@$(GO) install go.uber.org/mock/mockgen@v0.5.0
|
||||
@$(GO) install go.uber.org/mock/mockgen@v0.6.0
|
||||
@$(GO) generate ./...
|
||||
@$(GO) mod tidy
|
||||
|
||||
@@ -50,8 +59,12 @@ install-ui-packages:
|
||||
ui:
|
||||
@cd ui && pnpm pre-install && pnpm build && cd -
|
||||
|
||||
lint: generate
|
||||
lint: generate $(GOLANGCI)
|
||||
@bash ./script/check-asf-header.sh
|
||||
@gofmt -w -l .
|
||||
$(GOLANGCI) run
|
||||
|
||||
lint-fix: generate $(GOLANGCI)
|
||||
@bash ./script/check-asf-header.sh
|
||||
$(GOLANGCI) run --fix
|
||||
|
||||
all: clean build
|
||||
|
||||
@@ -23,7 +23,7 @@ To learn more about the project, visit [answer.apache.org](https://answer.apache
|
||||
### Running with docker
|
||||
|
||||
```bash
|
||||
docker run -d -p 9080:80 -v answer-data:/data --name answer apache/answer:1.5.1
|
||||
docker run -d -p 9080:80 -v answer-data:/data --name answer apache/answer:2.0.1
|
||||
```
|
||||
|
||||
For more information, see [Installation](https://answer.apache.org/docs/installation).
|
||||
@@ -40,10 +40,10 @@ You can also check out the [plugins here](https://answer.apache.org/plugins).
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Golang >= 1.22
|
||||
- Golang >= 1.23
|
||||
- Node.js >= 20
|
||||
- pnpm >= 9
|
||||
- [mockgen](https://github.com/uber-go/mock?tab=readme-ov-file#installation) >= 1.6.0
|
||||
- [mockgen](https://github.com/uber-go/mock?tab=readme-ov-file#installation) >= 0.6.0
|
||||
- [wire](https://github.com/google/wire/) >= 0.5.0
|
||||
|
||||
### Build
|
||||
|
||||
@@ -64,8 +64,23 @@ spec:
|
||||
port: http
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
{{- if .Values.env }}
|
||||
{{- $envNames := list }}
|
||||
{{- range .Values.env }}
|
||||
{{- $envNames = append $envNames .name }}
|
||||
{{- end }}
|
||||
env:
|
||||
{{- if not (has "INSTALL_PORT" $envNames) }}
|
||||
- name: INSTALL_PORT
|
||||
value: {{ .Values.service.port | quote }}
|
||||
{{- end }}
|
||||
{{- if not (has "SITE_ADDR" $envNames) }}
|
||||
- name: SITE_ADDR
|
||||
value: {{ printf "0.0.0.0:%v" .Values.service.port | quote }}
|
||||
{{- end }}
|
||||
{{- if not (has "SWAGGER_ADDRESS_PORT" $envNames) }}
|
||||
- name: SWAGGER_ADDRESS_PORT
|
||||
value: {{ printf ":%v" .Values.service.port | quote }}
|
||||
{{- end }}
|
||||
{{- range .Values.env }}
|
||||
- name: {{ .name }}
|
||||
{{- if .value | quote }}
|
||||
@@ -76,7 +91,6 @@ spec:
|
||||
{{- toYaml .valueFrom | nindent 16 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: "/data"
|
||||
@@ -102,4 +116,4 @@ spec:
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
+53
-15
@@ -20,11 +20,13 @@
|
||||
package answercmd
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/apache/answer/internal/base/conf"
|
||||
"github.com/apache/answer/internal/base/path"
|
||||
"github.com/apache/answer/internal/cli"
|
||||
"github.com/apache/answer/internal/install"
|
||||
"github.com/apache/answer/internal/migrations"
|
||||
@@ -53,6 +55,10 @@ var (
|
||||
i18nSourcePath string
|
||||
// i18nTargetPath i18n to path
|
||||
i18nTargetPath string
|
||||
// resetPasswordEmail user email for password reset
|
||||
resetPasswordEmail string
|
||||
// resetPasswordPassword new password for password reset
|
||||
resetPasswordPassword string
|
||||
)
|
||||
|
||||
func init() {
|
||||
@@ -76,7 +82,10 @@ func init() {
|
||||
|
||||
i18nCmd.Flags().StringVarP(&i18nTargetPath, "target", "t", "", "i18n target path, eg: -t ./i18n/target")
|
||||
|
||||
for _, cmd := range []*cobra.Command{initCmd, checkCmd, runCmd, dumpCmd, upgradeCmd, buildCmd, pluginCmd, configCmd, i18nCmd} {
|
||||
resetPasswordCmd.Flags().StringVarP(&resetPasswordEmail, "email", "e", "", "user email address")
|
||||
resetPasswordCmd.Flags().StringVarP(&resetPasswordPassword, "password", "p", "", "new password (not recommended, will be recorded in shell history)")
|
||||
|
||||
for _, cmd := range []*cobra.Command{initCmd, checkCmd, runCmd, dumpCmd, upgradeCmd, buildCmd, pluginCmd, configCmd, i18nCmd, resetPasswordCmd} {
|
||||
rootCmd.AddCommand(cmd)
|
||||
}
|
||||
}
|
||||
@@ -96,8 +105,8 @@ To run answer, use:
|
||||
Short: "Run Answer",
|
||||
Long: `Start running Answer`,
|
||||
Run: func(_ *cobra.Command, _ []string) {
|
||||
cli.FormatAllPath(dataDirPath)
|
||||
fmt.Println("config file path: ", cli.GetConfigFilePath())
|
||||
path.FormatAllPath(dataDirPath)
|
||||
fmt.Println("config file path: ", path.GetConfigFilePath())
|
||||
fmt.Println("Answer is starting..........................")
|
||||
runApp()
|
||||
},
|
||||
@@ -111,10 +120,10 @@ To run answer, use:
|
||||
// check config file and database. if config file exists and database is already created, init done
|
||||
cli.InstallAllInitialEnvironment(dataDirPath)
|
||||
|
||||
configFileExist := cli.CheckConfigFile(cli.GetConfigFilePath())
|
||||
configFileExist := cli.CheckConfigFile(path.GetConfigFilePath())
|
||||
if configFileExist {
|
||||
fmt.Println("config file exists, try to read the config...")
|
||||
c, err := conf.ReadConfig(cli.GetConfigFilePath())
|
||||
c, err := conf.ReadConfig(path.GetConfigFilePath())
|
||||
if err != nil {
|
||||
fmt.Println("read config failed: ", err.Error())
|
||||
return
|
||||
@@ -125,10 +134,13 @@ To run answer, use:
|
||||
fmt.Println("connect to database successfully and table already exists, do nothing.")
|
||||
return
|
||||
}
|
||||
if len(os.Getenv("SKIP_INIT")) > 0 {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// start installation server to install
|
||||
install.Run(cli.GetConfigFilePath())
|
||||
install.Run(path.GetConfigFilePath())
|
||||
},
|
||||
}
|
||||
|
||||
@@ -138,9 +150,9 @@ To run answer, use:
|
||||
Long: `Upgrade Answer to the latest version`,
|
||||
Run: func(_ *cobra.Command, _ []string) {
|
||||
log.SetLogger(log.NewStdLogger(os.Stdout))
|
||||
cli.FormatAllPath(dataDirPath)
|
||||
path.FormatAllPath(dataDirPath)
|
||||
cli.InstallI18nBundle(true)
|
||||
c, err := conf.ReadConfig(cli.GetConfigFilePath())
|
||||
c, err := conf.ReadConfig(path.GetConfigFilePath())
|
||||
if err != nil {
|
||||
fmt.Println("read config failed: ", err.Error())
|
||||
return
|
||||
@@ -159,8 +171,8 @@ To run answer, use:
|
||||
Long: `Back up database into an SQL file`,
|
||||
Run: func(_ *cobra.Command, _ []string) {
|
||||
fmt.Println("Answer is backing up data")
|
||||
cli.FormatAllPath(dataDirPath)
|
||||
c, err := conf.ReadConfig(cli.GetConfigFilePath())
|
||||
path.FormatAllPath(dataDirPath)
|
||||
c, err := conf.ReadConfig(path.GetConfigFilePath())
|
||||
if err != nil {
|
||||
fmt.Println("read config failed: ", err.Error())
|
||||
return
|
||||
@@ -179,9 +191,9 @@ To run answer, use:
|
||||
Short: "Check the required environment",
|
||||
Long: `Check if the current environment meets the startup requirements`,
|
||||
Run: func(_ *cobra.Command, _ []string) {
|
||||
cli.FormatAllPath(dataDirPath)
|
||||
path.FormatAllPath(dataDirPath)
|
||||
fmt.Println("Start checking the required environment...")
|
||||
if cli.CheckConfigFile(cli.GetConfigFilePath()) {
|
||||
if cli.CheckConfigFile(path.GetConfigFilePath()) {
|
||||
fmt.Println("config file exists [✔]")
|
||||
} else {
|
||||
fmt.Println("config file not exists [x]")
|
||||
@@ -193,7 +205,7 @@ To run answer, use:
|
||||
fmt.Println("upload directory not exists [x]")
|
||||
}
|
||||
|
||||
c, err := conf.ReadConfig(cli.GetConfigFilePath())
|
||||
c, err := conf.ReadConfig(path.GetConfigFilePath())
|
||||
if err != nil {
|
||||
fmt.Println("read config failed: ", err.Error())
|
||||
return
|
||||
@@ -246,9 +258,9 @@ To run answer, use:
|
||||
Short: "Set some config to default value",
|
||||
Long: `Set some config to default value`,
|
||||
Run: func(_ *cobra.Command, _ []string) {
|
||||
cli.FormatAllPath(dataDirPath)
|
||||
path.FormatAllPath(dataDirPath)
|
||||
|
||||
c, err := conf.ReadConfig(cli.GetConfigFilePath())
|
||||
c, err := conf.ReadConfig(path.GetConfigFilePath())
|
||||
if err != nil {
|
||||
fmt.Println("read config failed: ", err.Error())
|
||||
return
|
||||
@@ -297,6 +309,32 @@ To run answer, use:
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
resetPasswordCmd = &cobra.Command{
|
||||
Use: "passwd",
|
||||
Aliases: []string{"password", "reset-password"},
|
||||
Short: "Reset user password",
|
||||
Long: "Reset user password by email address.",
|
||||
Example: ` # Interactive mode (recommended, safest)
|
||||
answer passwd -C ./answer-data
|
||||
|
||||
# Specify email only (will prompt for password securely)
|
||||
answer passwd -C ./answer-data --email user@example.com
|
||||
answer passwd -C ./answer-data -e user@example.com
|
||||
|
||||
# Specify email and password (NOT recommended, will be recorded in shell history)
|
||||
answer passwd -C ./answer-data -e user@example.com -p newpassword123`,
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
opts := &cli.ResetPasswordOptions{
|
||||
Email: resetPasswordEmail,
|
||||
Password: resetPasswordPassword,
|
||||
}
|
||||
if err := cli.ResetPassword(context.Background(), dataDirPath, opts); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
// Execute adds all child commands to the root command and sets flags appropriately.
|
||||
|
||||
+9
-3
@@ -28,15 +28,21 @@ import (
|
||||
"github.com/apache/answer/internal/base/conf"
|
||||
"github.com/apache/answer/internal/base/constant"
|
||||
"github.com/apache/answer/internal/base/cron"
|
||||
"github.com/apache/answer/internal/cli"
|
||||
"github.com/apache/answer/internal/base/path"
|
||||
"github.com/apache/answer/internal/schema"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/joho/godotenv"
|
||||
"github.com/segmentfault/pacman"
|
||||
"github.com/segmentfault/pacman/contrib/log/zap"
|
||||
"github.com/segmentfault/pacman/contrib/server/http"
|
||||
"github.com/segmentfault/pacman/log"
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Load .env if present, ignore error to keep backward compatibility
|
||||
_ = godotenv.Load()
|
||||
}
|
||||
|
||||
// go build -ldflags "-X github.com/apache/answer/cmd.Version=x.y.z"
|
||||
var (
|
||||
// Name is the name of the project
|
||||
@@ -49,7 +55,7 @@ var (
|
||||
// Time is the build time of the project
|
||||
Time = ""
|
||||
// GoVersion is the go version of the project
|
||||
GoVersion = "1.22"
|
||||
GoVersion = "1.23"
|
||||
// log level
|
||||
logLevel = os.Getenv("LOG_LEVEL")
|
||||
// log path
|
||||
@@ -67,7 +73,7 @@ func Main() {
|
||||
}
|
||||
|
||||
func runApp() {
|
||||
c, err := conf.ReadConfig(cli.GetConfigFilePath())
|
||||
c, err := conf.ReadConfig(path.GetConfigFilePath())
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
+1
-2
@@ -1,5 +1,4 @@
|
||||
//go:build wireinject
|
||||
// +build wireinject
|
||||
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
@@ -32,7 +31,7 @@ import (
|
||||
"github.com/apache/answer/internal/base/server"
|
||||
"github.com/apache/answer/internal/base/translator"
|
||||
"github.com/apache/answer/internal/controller"
|
||||
"github.com/apache/answer/internal/controller/template_render"
|
||||
templaterender "github.com/apache/answer/internal/controller/template_render"
|
||||
"github.com/apache/answer/internal/controller_admin"
|
||||
"github.com/apache/answer/internal/repo"
|
||||
"github.com/apache/answer/internal/router"
|
||||
|
||||
+52
-32
@@ -38,7 +38,9 @@ import (
|
||||
"github.com/apache/answer/internal/controller_admin"
|
||||
"github.com/apache/answer/internal/repo/activity"
|
||||
"github.com/apache/answer/internal/repo/activity_common"
|
||||
"github.com/apache/answer/internal/repo/ai_conversation"
|
||||
"github.com/apache/answer/internal/repo/answer"
|
||||
"github.com/apache/answer/internal/repo/api_key"
|
||||
"github.com/apache/answer/internal/repo/auth"
|
||||
"github.com/apache/answer/internal/repo/badge"
|
||||
"github.com/apache/answer/internal/repo/badge_award"
|
||||
@@ -72,8 +74,10 @@ import (
|
||||
"github.com/apache/answer/internal/service/action"
|
||||
activity2 "github.com/apache/answer/internal/service/activity"
|
||||
activity_common2 "github.com/apache/answer/internal/service/activity_common"
|
||||
"github.com/apache/answer/internal/service/activity_queue"
|
||||
"github.com/apache/answer/internal/service/activityqueue"
|
||||
ai_conversation2 "github.com/apache/answer/internal/service/ai_conversation"
|
||||
"github.com/apache/answer/internal/service/answer_common"
|
||||
"github.com/apache/answer/internal/service/apikey"
|
||||
auth2 "github.com/apache/answer/internal/service/auth"
|
||||
badge2 "github.com/apache/answer/internal/service/badge"
|
||||
collection2 "github.com/apache/answer/internal/service/collection"
|
||||
@@ -83,14 +87,16 @@ import (
|
||||
config2 "github.com/apache/answer/internal/service/config"
|
||||
"github.com/apache/answer/internal/service/content"
|
||||
"github.com/apache/answer/internal/service/dashboard"
|
||||
"github.com/apache/answer/internal/service/event_queue"
|
||||
"github.com/apache/answer/internal/service/embedding"
|
||||
"github.com/apache/answer/internal/service/eventqueue"
|
||||
export2 "github.com/apache/answer/internal/service/export"
|
||||
"github.com/apache/answer/internal/service/feature_toggle"
|
||||
file_record2 "github.com/apache/answer/internal/service/file_record"
|
||||
"github.com/apache/answer/internal/service/follow"
|
||||
"github.com/apache/answer/internal/service/importer"
|
||||
meta2 "github.com/apache/answer/internal/service/meta"
|
||||
"github.com/apache/answer/internal/service/meta_common"
|
||||
"github.com/apache/answer/internal/service/notice_queue"
|
||||
"github.com/apache/answer/internal/service/noticequeue"
|
||||
"github.com/apache/answer/internal/service/notification"
|
||||
"github.com/apache/answer/internal/service/notification_common"
|
||||
"github.com/apache/answer/internal/service/object_info"
|
||||
@@ -114,6 +120,7 @@ import (
|
||||
"github.com/apache/answer/internal/service/user_common"
|
||||
user_external_login2 "github.com/apache/answer/internal/service/user_external_login"
|
||||
user_notification_config2 "github.com/apache/answer/internal/service/user_notification_config"
|
||||
"github.com/apache/answer/internal/service/vector_sync"
|
||||
"github.com/segmentfault/pacman"
|
||||
"github.com/segmentfault/pacman/log"
|
||||
)
|
||||
@@ -144,7 +151,8 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
|
||||
siteInfoCommonService := siteinfo_common.NewSiteInfoCommonService(siteInfoRepo)
|
||||
langController := controller.NewLangController(i18nTranslator, siteInfoCommonService)
|
||||
authRepo := auth.NewAuthRepo(dataData)
|
||||
authService := auth2.NewAuthService(authRepo)
|
||||
apiKeyRepo := api_key.NewAPIKeyRepo(dataData)
|
||||
authService := auth2.NewAuthService(authRepo, apiKeyRepo)
|
||||
userRepo := user.NewUserRepo(dataData)
|
||||
uniqueIDRepo := unique.NewUniqueIDRepo(dataData)
|
||||
configRepo := config.NewConfigRepo(dataData)
|
||||
@@ -172,27 +180,30 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
|
||||
tagRepo := tag.NewTagRepo(dataData, uniqueIDRepo)
|
||||
revisionRepo := revision.NewRevisionRepo(dataData, uniqueIDRepo)
|
||||
revisionService := revision_common.NewRevisionService(revisionRepo, userRepo)
|
||||
activityQueueService := activity_queue.NewActivityQueueService()
|
||||
tagCommonService := tag_common2.NewTagCommonService(tagCommonRepo, tagRelRepo, tagRepo, revisionService, siteInfoCommonService, activityQueueService)
|
||||
service := activityqueue.NewService()
|
||||
tagCommonService := tag_common2.NewTagCommonService(tagCommonRepo, tagRelRepo, tagRepo, revisionService, siteInfoCommonService, service)
|
||||
collectionRepo := collection.NewCollectionRepo(dataData, uniqueIDRepo)
|
||||
collectionCommon := collectioncommon.NewCollectionCommon(collectionRepo)
|
||||
answerCommon := answercommon.NewAnswerCommon(answerRepo)
|
||||
metaRepo := meta.NewMetaRepo(dataData)
|
||||
metaCommonService := metacommon.NewMetaCommonService(metaRepo)
|
||||
questionCommon := questioncommon.NewQuestionCommon(questionRepo, answerRepo, voteRepo, followRepo, tagCommonService, userCommon, collectionCommon, answerCommon, metaCommonService, configService, activityQueueService, revisionRepo, siteInfoCommonService, dataData)
|
||||
eventQueueService := event_queue.NewEventQueueService()
|
||||
questionCommon := questioncommon.NewQuestionCommon(questionRepo, answerRepo, voteRepo, followRepo, tagCommonService, userCommon, collectionCommon, answerCommon, metaCommonService, configService, service, revisionRepo, siteInfoCommonService, dataData)
|
||||
eventqueueService := eventqueue.NewService()
|
||||
fileRecordRepo := file_record.NewFileRecordRepo(dataData)
|
||||
fileRecordService := file_record2.NewFileRecordService(fileRecordRepo, revisionRepo, serviceConf, siteInfoCommonService, userCommon)
|
||||
userService := content.NewUserService(userRepo, userActiveActivityRepo, activityRepo, emailService, authService, siteInfoCommonService, userRoleRelService, userCommon, userExternalLoginService, userNotificationConfigRepo, userNotificationConfigService, questionCommon, eventQueueService, fileRecordService)
|
||||
userService := content.NewUserService(userRepo, userActiveActivityRepo, activityRepo, emailService, authService, siteInfoCommonService, userRoleRelService, userCommon, userExternalLoginService, userNotificationConfigRepo, userNotificationConfigService, questionCommon, eventqueueService, fileRecordService)
|
||||
captchaRepo := captcha.NewCaptchaRepo(dataData)
|
||||
captchaService := action.NewCaptchaService(captchaRepo)
|
||||
userController := controller.NewUserController(authService, userService, captchaService, emailService, siteInfoCommonService, userNotificationConfigService)
|
||||
commentRepo := comment.NewCommentRepo(dataData, uniqueIDRepo)
|
||||
commentCommonRepo := comment.NewCommentCommonRepo(dataData, uniqueIDRepo)
|
||||
objService := object_info.NewObjService(answerRepo, questionRepo, commentCommonRepo, tagCommonRepo, tagCommonService)
|
||||
notificationQueueService := notice_queue.NewNotificationQueueService()
|
||||
externalNotificationQueueService := notice_queue.NewNewQuestionNotificationQueueService()
|
||||
commentService := comment2.NewCommentService(commentRepo, commentCommonRepo, userCommon, objService, voteRepo, emailService, userRepo, notificationQueueService, externalNotificationQueueService, activityQueueService, eventQueueService)
|
||||
noticequeueService := noticequeue.NewService()
|
||||
externalService := noticequeue.NewExternalService()
|
||||
reviewRepo := review.NewReviewRepo(dataData)
|
||||
vector_syncService := vector_sync.NewService(dataData)
|
||||
reviewService := review2.NewReviewService(reviewRepo, objService, userCommon, userRepo, questionRepo, answerRepo, userRoleRelService, externalService, tagCommonService, questionCommon, noticequeueService, siteInfoCommonService, commentCommonRepo, vector_syncService)
|
||||
commentService := comment2.NewCommentService(commentRepo, commentCommonRepo, userCommon, objService, voteRepo, emailService, userRepo, noticequeueService, externalService, service, eventqueueService, reviewService, vector_syncService)
|
||||
rolePowerRelRepo := role.NewRolePowerRelRepo(dataData)
|
||||
rolePowerRelService := role2.NewRolePowerRelService(rolePowerRelRepo, userRoleRelService)
|
||||
rankService := rank2.NewRankService(userCommon, userRankRepo, objService, userRoleRelService, rolePowerRelService, configService)
|
||||
@@ -200,19 +211,17 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
|
||||
rateLimitMiddleware := middleware.NewRateLimitMiddleware(limitRepo)
|
||||
commentController := controller.NewCommentController(commentService, rankService, captchaService, rateLimitMiddleware)
|
||||
reportRepo := report.NewReportRepo(dataData, uniqueIDRepo)
|
||||
tagService := tag2.NewTagService(tagRepo, tagCommonService, revisionService, followRepo, siteInfoCommonService, activityQueueService)
|
||||
answerActivityRepo := activity.NewAnswerActivityRepo(dataData, activityRepo, userRankRepo, notificationQueueService)
|
||||
tagService := tag2.NewTagService(tagRepo, tagCommonService, revisionService, followRepo, siteInfoCommonService, service)
|
||||
answerActivityRepo := activity.NewAnswerActivityRepo(dataData, activityRepo, userRankRepo, noticequeueService)
|
||||
answerActivityService := activity2.NewAnswerActivityService(answerActivityRepo, configService)
|
||||
externalNotificationService := notification.NewExternalNotificationService(dataData, userNotificationConfigRepo, followRepo, emailService, userRepo, externalNotificationQueueService, userExternalLoginRepo, siteInfoCommonService)
|
||||
reviewRepo := review.NewReviewRepo(dataData)
|
||||
reviewService := review2.NewReviewService(reviewRepo, objService, userCommon, userRepo, questionRepo, answerRepo, userRoleRelService, externalNotificationQueueService, tagCommonService, questionCommon, notificationQueueService, siteInfoCommonService)
|
||||
questionService := content.NewQuestionService(activityRepo, questionRepo, answerRepo, tagCommonService, tagService, questionCommon, userCommon, userRepo, userRoleRelService, revisionService, metaCommonService, collectionCommon, answerActivityService, emailService, notificationQueueService, externalNotificationQueueService, activityQueueService, siteInfoCommonService, externalNotificationService, reviewService, configService, eventQueueService, reviewRepo)
|
||||
answerService := content.NewAnswerService(answerRepo, questionRepo, questionCommon, userCommon, collectionCommon, userRepo, revisionService, answerActivityService, answerCommon, voteRepo, emailService, userRoleRelService, notificationQueueService, externalNotificationQueueService, activityQueueService, reviewService, eventQueueService)
|
||||
externalNotificationService := notification.NewExternalNotificationService(dataData, userNotificationConfigRepo, followRepo, emailService, userRepo, externalService, userExternalLoginRepo, siteInfoCommonService)
|
||||
questionService := content.NewQuestionService(activityRepo, questionRepo, answerRepo, tagCommonService, tagService, questionCommon, userCommon, userRepo, userRoleRelService, revisionService, metaCommonService, collectionCommon, answerActivityService, emailService, noticequeueService, externalService, service, siteInfoCommonService, externalNotificationService, reviewService, configService, eventqueueService, reviewRepo, vector_syncService)
|
||||
answerService := content.NewAnswerService(answerRepo, questionRepo, questionCommon, userCommon, collectionCommon, userRepo, revisionService, answerActivityService, answerCommon, voteRepo, emailService, userRoleRelService, noticequeueService, externalService, service, reviewService, eventqueueService, vector_syncService)
|
||||
reportHandle := report_handle.NewReportHandle(questionService, answerService, commentService)
|
||||
reportService := report2.NewReportService(reportRepo, objService, userCommon, answerRepo, questionRepo, commentCommonRepo, reportHandle, configService, eventQueueService)
|
||||
reportService := report2.NewReportService(reportRepo, objService, userCommon, answerRepo, questionRepo, commentCommonRepo, reportHandle, configService, eventqueueService)
|
||||
reportController := controller.NewReportController(reportService, rankService, captchaService)
|
||||
contentVoteRepo := activity.NewVoteRepo(dataData, activityRepo, userRankRepo, notificationQueueService)
|
||||
voteService := content.NewVoteService(contentVoteRepo, configService, questionRepo, answerRepo, commentCommonRepo, objService, eventQueueService)
|
||||
contentVoteRepo := activity.NewVoteRepo(dataData, activityRepo, userRankRepo, noticequeueService)
|
||||
voteService := content.NewVoteService(contentVoteRepo, configService, questionRepo, answerRepo, commentCommonRepo, objService, eventqueueService)
|
||||
voteController := controller.NewVoteController(voteService, rankService, captchaService)
|
||||
tagController := controller.NewTagController(tagService, tagCommonService, rankService)
|
||||
followFollowRepo := activity.NewFollowRepo(dataData, uniqueIDRepo, activityRepo)
|
||||
@@ -228,7 +237,7 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
|
||||
searchService := content.NewSearchService(searchParser, searchRepo)
|
||||
searchController := controller.NewSearchController(searchService, captchaService)
|
||||
reviewActivityRepo := activity.NewReviewActivityRepo(dataData, activityRepo, userRankRepo, configService)
|
||||
contentRevisionService := content.NewRevisionService(revisionRepo, userCommon, questionCommon, answerService, objService, questionRepo, answerRepo, tagRepo, tagCommonService, notificationQueueService, activityQueueService, reportRepo, reviewService, reviewActivityRepo)
|
||||
contentRevisionService := content.NewRevisionService(revisionRepo, userCommon, questionCommon, answerService, objService, questionRepo, answerRepo, tagRepo, tagCommonService, noticequeueService, service, reportRepo, reviewService, reviewActivityRepo)
|
||||
revisionController := controller.NewRevisionController(contentRevisionService, rankService)
|
||||
rankController := controller.NewRankController(rankService)
|
||||
userAdminRepo := user.NewUserAdminRepo(dataData, authRepo)
|
||||
@@ -244,7 +253,7 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
|
||||
siteInfoService := siteinfo.NewSiteInfoService(siteInfoRepo, siteInfoCommonService, emailService, tagCommonService, configService, questionCommon, fileRecordService)
|
||||
siteInfoController := controller_admin.NewSiteInfoController(siteInfoService)
|
||||
controllerSiteInfoController := controller.NewSiteInfoController(siteInfoCommonService)
|
||||
notificationCommon := notificationcommon.NewNotificationCommon(dataData, notificationRepo, userCommon, activityRepo, followRepo, objService, notificationQueueService, userExternalLoginRepo, siteInfoCommonService)
|
||||
notificationCommon := notificationcommon.NewNotificationCommon(dataData, notificationRepo, userCommon, activityRepo, followRepo, objService, noticequeueService, userExternalLoginRepo, siteInfoCommonService)
|
||||
badgeRepo := badge.NewBadgeRepo(dataData, uniqueIDRepo)
|
||||
notificationService := notification.NewNotificationService(dataData, notificationRepo, notificationCommon, revisionService, userRepo, reportRepo, reviewService, badgeRepo)
|
||||
notificationController := controller.NewNotificationController(notificationService, rankService)
|
||||
@@ -253,7 +262,7 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
|
||||
uploaderService := uploader.NewUploaderService(serviceConf, siteInfoCommonService, fileRecordService)
|
||||
uploadController := controller.NewUploadController(uploaderService)
|
||||
activityActivityRepo := activity.NewActivityRepo(dataData, configService)
|
||||
activityCommon := activity_common2.NewActivityCommon(activityRepo, activityQueueService)
|
||||
activityCommon := activity_common2.NewActivityCommon(activityRepo, service)
|
||||
commentCommonService := comment_common.NewCommentCommonService(commentCommonRepo)
|
||||
activityService := activity2.NewActivityService(activityActivityRepo, userCommon, activityCommon, tagCommonService, objService, commentCommonService, revisionService, metaCommonService, configService)
|
||||
activityController := controller.NewActivityController(activityService)
|
||||
@@ -265,23 +274,33 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
|
||||
permissionController := controller.NewPermissionController(rankService)
|
||||
userPluginController := controller.NewUserPluginController(pluginCommonService)
|
||||
reviewController := controller.NewReviewController(reviewService, rankService, captchaService)
|
||||
metaService := meta2.NewMetaService(metaCommonService, userCommon, answerRepo, questionRepo, eventQueueService)
|
||||
metaService := meta2.NewMetaService(metaCommonService, userCommon, answerRepo, questionRepo, eventqueueService)
|
||||
metaController := controller.NewMetaController(metaService)
|
||||
badgeGroupRepo := badge_group.NewBadgeGroupRepo(dataData, uniqueIDRepo)
|
||||
eventRuleRepo := badge.NewEventRuleRepo(dataData)
|
||||
badgeAwardService := badge2.NewBadgeAwardService(badgeAwardRepo, badgeRepo, userCommon, objService, notificationQueueService)
|
||||
badgeEventService := badge2.NewBadgeEventService(dataData, eventQueueService, badgeRepo, eventRuleRepo, badgeAwardService)
|
||||
badgeAwardService := badge2.NewBadgeAwardService(badgeAwardRepo, badgeRepo, userCommon, objService, noticequeueService)
|
||||
badgeEventService := badge2.NewBadgeEventService(dataData, eventqueueService, badgeRepo, eventRuleRepo, badgeAwardService)
|
||||
badgeService := badge2.NewBadgeService(badgeRepo, badgeGroupRepo, badgeAwardRepo, badgeEventService, siteInfoCommonService)
|
||||
badgeController := controller.NewBadgeController(badgeService, badgeAwardService)
|
||||
controller_adminBadgeController := controller_admin.NewBadgeController(badgeService)
|
||||
answerAPIRouter := router.NewAnswerAPIRouter(langController, userController, commentController, reportController, voteController, tagController, followController, collectionController, questionController, answerController, searchController, revisionController, rankController, userAdminController, reasonController, themeController, siteInfoController, controllerSiteInfoController, notificationController, dashboardController, uploadController, activityController, roleController, pluginController, permissionController, userPluginController, reviewController, metaController, badgeController, controller_adminBadgeController)
|
||||
apiKeyService := apikey.NewAPIKeyService(apiKeyRepo)
|
||||
adminAPIKeyController := controller_admin.NewAdminAPIKeyController(apiKeyService)
|
||||
featureToggleService := feature_toggle.NewFeatureToggleService(siteInfoRepo)
|
||||
embeddingService := embedding.NewEmbeddingService()
|
||||
mcpController := controller.NewMCPController(searchService, siteInfoCommonService, tagCommonService, questionCommon, commentRepo, userCommon, answerRepo, featureToggleService, embeddingService)
|
||||
aiConversationRepo := ai_conversation.NewAIConversationRepo(dataData)
|
||||
aiConversationService := ai_conversation2.NewAIConversationService(aiConversationRepo, userCommon)
|
||||
aiController := controller.NewAIController(searchService, siteInfoCommonService, tagCommonService, questionCommon, commentRepo, userCommon, answerRepo, mcpController, aiConversationService, featureToggleService)
|
||||
aiConversationController := controller.NewAIConversationController(aiConversationService, featureToggleService)
|
||||
aiConversationAdminController := controller_admin.NewAIConversationAdminController(aiConversationService, featureToggleService)
|
||||
answerAPIRouter := router.NewAnswerAPIRouter(langController, userController, commentController, reportController, voteController, tagController, followController, collectionController, questionController, answerController, searchController, revisionController, rankController, userAdminController, reasonController, themeController, siteInfoController, controllerSiteInfoController, notificationController, dashboardController, uploadController, activityController, roleController, pluginController, permissionController, userPluginController, reviewController, metaController, badgeController, controller_adminBadgeController, adminAPIKeyController, aiController, aiConversationController, aiConversationAdminController, mcpController)
|
||||
swaggerRouter := router.NewSwaggerRouter(swaggerConf)
|
||||
uiRouter := router.NewUIRouter(controllerSiteInfoController, siteInfoCommonService)
|
||||
authUserMiddleware := middleware.NewAuthUserMiddleware(authService, siteInfoCommonService)
|
||||
avatarMiddleware := middleware.NewAvatarMiddleware(serviceConf, uploaderService)
|
||||
shortIDMiddleware := middleware.NewShortIDMiddleware(siteInfoCommonService)
|
||||
templateRenderController := templaterender.NewTemplateRenderController(questionService, userService, tagService, answerService, commentService, siteInfoCommonService, questionRepo)
|
||||
templateController := controller.NewTemplateController(templateRenderController, siteInfoCommonService, eventQueueService, userService, questionService)
|
||||
templateController := controller.NewTemplateController(templateRenderController, siteInfoCommonService, eventqueueService, userService, questionService)
|
||||
templateRouter := router.NewTemplateRouter(templateController, templateRenderController, siteInfoController, authUserMiddleware)
|
||||
connectorController := controller.NewConnectorController(siteInfoCommonService, emailService, userExternalLoginService)
|
||||
userCenterLoginService := user_external_login2.NewUserCenterLoginService(userRepo, userCommon, userExternalLoginRepo, userActiveActivityRepo, siteInfoCommonService)
|
||||
@@ -289,9 +308,10 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
|
||||
captchaController := controller.NewCaptchaController()
|
||||
embedController := controller.NewEmbedController()
|
||||
renderController := controller.NewRenderController()
|
||||
pluginAPIRouter := router.NewPluginAPIRouter(connectorController, userCenterController, captchaController, embedController, renderController)
|
||||
sidebarController := controller.NewSidebarController()
|
||||
pluginAPIRouter := router.NewPluginAPIRouter(connectorController, userCenterController, captchaController, embedController, renderController, sidebarController)
|
||||
ginEngine := server.NewHTTPServer(debug, staticRouter, answerAPIRouter, swaggerRouter, uiRouter, authUserMiddleware, avatarMiddleware, shortIDMiddleware, templateRouter, pluginAPIRouter, uiConf)
|
||||
scheduledTaskManager := cron.NewScheduledTaskManager(siteInfoCommonService, questionService, fileRecordService, serviceConf)
|
||||
scheduledTaskManager := cron.NewScheduledTaskManager(siteInfoCommonService, questionService, fileRecordService, userAdminService, serviceConf)
|
||||
application := newApplication(serverConf, ginEngine, scheduledTaskManager)
|
||||
return application, func() {
|
||||
cleanup2()
|
||||
|
||||
@@ -40,4 +40,5 @@ ui:
|
||||
public_url: '/'
|
||||
api_url: '/'
|
||||
base_url: ''
|
||||
api_base_url: ''
|
||||
|
||||
|
||||
+1926
-256
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 96 KiB |
@@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015-present Jeevanandam M., https://myjeeva.com <jeeva@myjeeva.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,22 @@
|
||||
Copyright (c) 2013 John Barton
|
||||
|
||||
MIT License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Anthropic, PBC
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,201 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
+1926
-256
File diff suppressed because it is too large
Load Diff
+1212
-181
File diff suppressed because it is too large
Load Diff
@@ -17,7 +17,7 @@
|
||||
|
||||
module github.com/apache/answer
|
||||
|
||||
go 1.22.0
|
||||
go 1.24.0
|
||||
|
||||
require (
|
||||
github.com/Machiel/slugify v1.0.1
|
||||
@@ -30,6 +30,7 @@ require (
|
||||
github.com/go-playground/locales v0.14.1
|
||||
github.com/go-playground/universal-translator v0.18.1
|
||||
github.com/go-playground/validator/v10 v10.22.1
|
||||
github.com/go-resty/resty/v2 v2.17.1
|
||||
github.com/go-sql-driver/mysql v1.8.1
|
||||
github.com/goccy/go-json v0.10.3
|
||||
github.com/google/uuid v1.6.0
|
||||
@@ -37,11 +38,14 @@ require (
|
||||
github.com/grokify/html-strip-tags-go v0.1.0
|
||||
github.com/jinzhu/copier v0.4.0
|
||||
github.com/jinzhu/now v1.1.5
|
||||
github.com/joho/godotenv v1.5.1
|
||||
github.com/lib/pq v1.10.9
|
||||
github.com/mark3labs/mcp-go v0.43.2
|
||||
github.com/microcosm-cc/bluemonday v1.0.27
|
||||
github.com/mozillazg/go-pinyin v0.20.0
|
||||
github.com/ory/dockertest/v3 v3.11.0
|
||||
github.com/robfig/cron/v3 v3.0.1
|
||||
github.com/sashabaranov/go-openai v1.41.2
|
||||
github.com/scottleedavis/go-exif-remove v0.0.0-20230314195146-7e059d593405
|
||||
github.com/segmentfault/pacman v1.0.5-0.20230822083413-c0075a2d401f
|
||||
github.com/segmentfault/pacman/contrib/cache/memory v0.0.0-20230822083413-c0075a2d401f
|
||||
@@ -56,11 +60,12 @@ require (
|
||||
github.com/swaggo/swag v1.16.3
|
||||
github.com/tidwall/gjson v1.17.3
|
||||
github.com/yuin/goldmark v1.7.4
|
||||
go.uber.org/mock v0.5.0
|
||||
golang.org/x/crypto v0.27.0
|
||||
go.uber.org/mock v0.6.0
|
||||
golang.org/x/crypto v0.41.0
|
||||
golang.org/x/image v0.20.0
|
||||
golang.org/x/net v0.29.0
|
||||
golang.org/x/text v0.18.0
|
||||
golang.org/x/net v0.43.0
|
||||
golang.org/x/term v0.34.0
|
||||
golang.org/x/text v0.28.0
|
||||
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
|
||||
gopkg.in/yaml.v3 v3.0.1
|
||||
modernc.org/sqlite v1.33.0
|
||||
@@ -78,6 +83,8 @@ require (
|
||||
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect
|
||||
github.com/andybalholm/brotli v1.1.0 // indirect
|
||||
github.com/aymerick/douceur v0.2.0 // indirect
|
||||
github.com/bahlo/generic-list-go v0.2.0 // indirect
|
||||
github.com/buger/jsonparser v1.1.1 // indirect
|
||||
github.com/bytedance/sonic v1.12.2 // indirect
|
||||
github.com/bytedance/sonic/loader v0.2.0 // indirect
|
||||
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
|
||||
@@ -116,6 +123,7 @@ require (
|
||||
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
|
||||
github.com/hashicorp/hcl v1.0.0 // indirect
|
||||
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
||||
github.com/invopop/jsonschema v0.13.0 // indirect
|
||||
github.com/josharian/intern v1.0.0 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/klauspost/cpuid/v2 v2.2.8 // indirect
|
||||
@@ -144,7 +152,7 @@ require (
|
||||
github.com/sirupsen/logrus v1.9.3 // indirect
|
||||
github.com/sourcegraph/conc v0.3.0 // indirect
|
||||
github.com/spf13/afero v1.11.0 // indirect
|
||||
github.com/spf13/cast v1.7.0 // indirect
|
||||
github.com/spf13/cast v1.7.1 // indirect
|
||||
github.com/spf13/pflag v1.0.5 // indirect
|
||||
github.com/spf13/viper v1.19.0 // indirect
|
||||
github.com/subosito/gotenv v1.6.0 // indirect
|
||||
@@ -153,15 +161,17 @@ require (
|
||||
github.com/tidwall/pretty v1.2.1 // indirect
|
||||
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
|
||||
github.com/ugorji/go/codec v1.2.12 // indirect
|
||||
github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect
|
||||
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
|
||||
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
|
||||
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
|
||||
github.com/yosida95/uritemplate/v3 v3.0.2 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
go.uber.org/zap v1.27.0 // indirect
|
||||
golang.org/x/arch v0.10.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect
|
||||
golang.org/x/sys v0.25.0 // indirect
|
||||
golang.org/x/tools v0.25.0 // indirect
|
||||
golang.org/x/sys v0.35.0 // indirect
|
||||
golang.org/x/tools v0.36.0 // indirect
|
||||
google.golang.org/protobuf v1.34.2 // indirect
|
||||
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
|
||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||
@@ -177,3 +187,5 @@ require (
|
||||
replace lukechampine.com/uint128 v1.1.1 => github.com/aichy126/uint128 v1.1.1
|
||||
|
||||
replace modernc.org/cc/v3 v3.40.0 => gitlab.com/cznic/cc/v3 v3.40.0
|
||||
|
||||
replace github.com/lyft/protoc-gen-validate v0.0.13 => github.com/LinkinStars/protoc-gen-validate v0.0.0-20251030022322-3fddbbe5a0e6
|
||||
|
||||
@@ -17,6 +17,7 @@ github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc
|
||||
github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE=
|
||||
github.com/LinkinStars/go-i18n/v2 v2.2.2 h1:ZfjpzbW13dv6btv3RALKZkpN9A+7K1JA//2QcNeWaxU=
|
||||
github.com/LinkinStars/go-i18n/v2 v2.2.2/go.mod h1:hLglSJ4/3M0Y7ZVcoEJI+OwqkglHCA32DdjuJJR2LbM=
|
||||
github.com/LinkinStars/protoc-gen-validate v0.0.0-20251030022322-3fddbbe5a0e6/go.mod h1:Lu7LbM9PBAPmasRqVew2kylj56Z1vH/UUM2REVkLh7k=
|
||||
github.com/Machiel/slugify v1.0.1 h1:EfWSlRWstMadsgzmiV7d0yVd2IFlagWH68Q+DcYCm4E=
|
||||
github.com/Machiel/slugify v1.0.1/go.mod h1:fTFGn5uWEynW4CUMG7sWkYXOf1UgDxyTM3DbR6Qfg3k=
|
||||
github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
|
||||
@@ -53,10 +54,14 @@ github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN
|
||||
github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
|
||||
github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
|
||||
github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
|
||||
github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk=
|
||||
github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg=
|
||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
|
||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
||||
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
|
||||
github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=
|
||||
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
|
||||
github.com/bwmarrin/snowflake v0.3.0 h1:xm67bEhkKh6ij1790JB83OujPR5CzNe8QuQqAgISZN0=
|
||||
github.com/bwmarrin/snowflake v0.3.0/go.mod h1:NdZxfVWX+oR6y2K0o6qAYv6gIOP9rjG0/E9WsDpxqwE=
|
||||
github.com/bytedance/sonic v1.12.2 h1:oaMFuRTpMHYLpCntGca65YWt5ny+wAceDERTkT2L9lg=
|
||||
@@ -196,6 +201,8 @@ github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91
|
||||
github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
|
||||
github.com/go-playground/validator/v10 v10.22.1 h1:40JcKH+bBNGFczGuoBYgX4I6m/i27HYW8P9FDk5PbgA=
|
||||
github.com/go-playground/validator/v10 v10.22.1/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
|
||||
github.com/go-resty/resty/v2 v2.17.1 h1:x3aMpHK1YM9e4va/TMDRlusDDoZiQ+ViDu/WpA6xTM4=
|
||||
github.com/go-resty/resty/v2 v2.17.1/go.mod h1:kCKZ3wWmwJaNc7S29BRtUhJwy7iqmn+2mLtQrOyQlVA=
|
||||
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
|
||||
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
|
||||
@@ -300,6 +307,8 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt
|
||||
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
||||
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
|
||||
github.com/invopop/jsonschema v0.13.0 h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E=
|
||||
github.com/invopop/jsonschema v0.13.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0=
|
||||
github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo=
|
||||
github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
|
||||
github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
|
||||
@@ -353,6 +362,8 @@ github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S
|
||||
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
|
||||
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
||||
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
||||
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
|
||||
github.com/jonboulle/clockwork v0.3.0 h1:9BSCMi8C+0qdApAp4auwX0RkLGUjs956h0EkuQymUhg=
|
||||
github.com/jonboulle/clockwork v0.3.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8=
|
||||
@@ -403,11 +414,12 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
|
||||
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
||||
github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
|
||||
github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
|
||||
github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
|
||||
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
|
||||
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
|
||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
|
||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
|
||||
github.com/mark3labs/mcp-go v0.43.2 h1:21PUSlWWiSbUPQwXIJ5WKlETixpFpq+WBpbMGDSVy/I=
|
||||
github.com/mark3labs/mcp-go v0.43.2/go.mod h1:YnJfOL382MIWDx1kMY+2zsRHU/q78dBg9aFb8W6Thdw=
|
||||
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
|
||||
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
|
||||
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
||||
@@ -541,6 +553,8 @@ github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE
|
||||
github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
|
||||
github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
|
||||
github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
|
||||
github.com/sashabaranov/go-openai v1.41.2 h1:vfPRBZNMpnqu8ELsclWcAvF19lDNgh1t6TVfFFOPiSM=
|
||||
github.com/sashabaranov/go-openai v1.41.2/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg=
|
||||
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
|
||||
github.com/scottleedavis/go-exif-remove v0.0.0-20230314195146-7e059d593405 h1:2ieGkj4z/YPXVyQ2ayZUg3GwE1pYWd5f1RB6DzAOXKM=
|
||||
github.com/scottleedavis/go-exif-remove v0.0.0-20230314195146-7e059d593405/go.mod h1:rIxVzVLKlBwLxO+lC+k/I4HJfRQcemg/f/76Xmmzsec=
|
||||
@@ -574,8 +588,8 @@ github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9yS
|
||||
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
|
||||
github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
|
||||
github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
|
||||
github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w=
|
||||
github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
|
||||
github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y=
|
||||
github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
|
||||
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
|
||||
github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
|
||||
github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
|
||||
@@ -628,6 +642,8 @@ github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65E
|
||||
github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
|
||||
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
|
||||
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
|
||||
github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc=
|
||||
github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw=
|
||||
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
|
||||
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo=
|
||||
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
|
||||
@@ -636,6 +652,8 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:
|
||||
github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
|
||||
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
|
||||
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
||||
github.com/yosida95/uritemplate/v3 v3.0.2 h1:Ed3Oyj9yrmi9087+NczuL5BwkIc4wvTb5zIM+UJPGz4=
|
||||
github.com/yosida95/uritemplate/v3 v3.0.2/go.mod h1:ILOh0sOhIJR3+L/8afwt/kE++YT040gmv5BQTMR2HP4=
|
||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
@@ -654,8 +672,8 @@ go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
|
||||
go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
|
||||
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
|
||||
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
|
||||
go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU=
|
||||
go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM=
|
||||
go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y=
|
||||
go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU=
|
||||
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
|
||||
go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
|
||||
go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
|
||||
@@ -685,8 +703,8 @@ golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWP
|
||||
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
||||
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A=
|
||||
golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70=
|
||||
golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
|
||||
golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk=
|
||||
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY=
|
||||
@@ -703,8 +721,8 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB
|
||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0=
|
||||
golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
|
||||
golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ=
|
||||
golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
@@ -731,8 +749,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
|
||||
golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0=
|
||||
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
|
||||
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
@@ -743,8 +761,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
|
||||
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
|
||||
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
@@ -779,12 +797,14 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
|
||||
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
|
||||
golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4=
|
||||
golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
@@ -793,10 +813,12 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224=
|
||||
golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
|
||||
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
|
||||
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
|
||||
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE=
|
||||
golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
|
||||
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
@@ -818,8 +840,8 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY
|
||||
golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE=
|
||||
golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg=
|
||||
golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg=
|
||||
golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s=
|
||||
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
|
||||
+1
-1
@@ -684,7 +684,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
|
||||
+1
-1
@@ -684,7 +684,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
|
||||
+1
-1
@@ -677,7 +677,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username up to 30 characters
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
|
||||
+1
-1
@@ -677,7 +677,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username up to 30 characters
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
|
||||
+1
-1
@@ -677,7 +677,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username up to 30 characters
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
|
||||
+1
-1
@@ -677,7 +677,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username up to 30 characters
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
|
||||
+1
-1
@@ -677,7 +677,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username up to 30 characters
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
|
||||
+1
-1
@@ -684,7 +684,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
|
||||
+152
-21
@@ -58,7 +58,7 @@ backend:
|
||||
undelete:
|
||||
other: Obnovit
|
||||
merge:
|
||||
other: Merge
|
||||
other: Sloučit
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
@@ -234,6 +234,8 @@ backend:
|
||||
other: Nemáte oprávnění pro aktualizaci.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: Hodnost reputace nesplňuje podmínku.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: Nemůžete odstranit štítek, který se používá.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: Aktuální štítek nelze jako synonymum stejného štítku.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: Jméno odesílatele nemůže být emailová adresa.
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "Chyba formátu pole {{.Field}} poblíž '{{.Content}}' na řádku {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "Počet uživatelů, které přidáte najednou, by měl být v rozsahu 1-{{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Načtení konfigurace selhalo
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: tag wiki
|
||||
create_tag: Create Tag
|
||||
edit_tag: Edit Tag
|
||||
ask_a_question: Add Question
|
||||
ask_a_question: Create Question
|
||||
edit_question: Edit Question
|
||||
edit_answer: Edit Answer
|
||||
search: Search
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: HTTP Error 500
|
||||
http_403: HTTP Error 403
|
||||
logout: Log Out
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: Notifications
|
||||
inbox: Inbox
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: day
|
||||
hours: hours
|
||||
days: days
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: heart
|
||||
smile: smile
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: More
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: Add Question
|
||||
title: Create Question
|
||||
edit_title: Edit Question
|
||||
default_reason: Edit question
|
||||
default_first_reason: Add question
|
||||
default_first_reason: Create question
|
||||
similar_questions: Similar questions
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: Revision
|
||||
title:
|
||||
label: Title
|
||||
placeholder: Be specific and imagine you're asking a question to another person
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: Title cannot be empty.
|
||||
range: Title up to 150 characters
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: Body
|
||||
msg:
|
||||
empty: Body cannot be empty.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Tags
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: Add tag
|
||||
create_btn: Create new tag
|
||||
search_tag: Search tag
|
||||
hint: "Describe what your question is about, at least one tag is required."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: No tags matched
|
||||
tag_required_text: Required tag (at least one)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: Search
|
||||
footer:
|
||||
build_on: >-
|
||||
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Change
|
||||
loading: loading...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -1281,7 +1311,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile image
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: Your revision will show after review.
|
||||
sent_success: Sent successfully
|
||||
related_question:
|
||||
title: Related Questions
|
||||
title: Related
|
||||
answers: answers
|
||||
linked_question:
|
||||
title: Linked Questions
|
||||
description: Questions linked to
|
||||
no_linked_question: No questions linked from this question.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: Pozvěte další uživatele
|
||||
desc: Pozvěte lidi, o kterých si myslíte, že mohou odpovědět.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
created: Created
|
||||
Asked: Asked
|
||||
asked: asked
|
||||
update: Modified
|
||||
Edited: Edited
|
||||
edit: edited
|
||||
commented: commented
|
||||
Views: Viewed
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: Follow
|
||||
following: Following
|
||||
counts: "{{count}} Results"
|
||||
counts_loading: "... Results"
|
||||
more: More
|
||||
sort_btns:
|
||||
relevance: Relevance
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: All Questions
|
||||
x_questions: "{{ count }} Questions"
|
||||
x_answers: "{{ count }} answers"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Questions
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: Name
|
||||
msg: Name cannot be empty.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: Password
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: Branding
|
||||
legal: Legal
|
||||
write: Write
|
||||
terms: Terms
|
||||
tos: Terms of Service
|
||||
privacy: Privacy
|
||||
seo: SEO
|
||||
customize: Customize
|
||||
themes: Themes
|
||||
css_html: CSS/HTML
|
||||
login: Login
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
user_center:
|
||||
login: Login
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: Name
|
||||
email: Email
|
||||
reputation: Reputation
|
||||
created_at: Created Time
|
||||
delete_at: Deleted Time
|
||||
suspend_at: Suspended Time
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Suspend until
|
||||
status: Status
|
||||
role: Role
|
||||
action: Action
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Suspend this user
|
||||
content: A suspended user can't log in.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: Questions
|
||||
unlisted: Unlisted
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: Timezone
|
||||
msg: Timezone cannot be empty.
|
||||
text: Choose a city in the same timezone as you.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: Write
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Answer write
|
||||
label: Každý uživatel může napsat pouze jednu odpověď na stejný dotaz
|
||||
text: "Turn off to allow users to write multiple answers to the same question, which may cause answers to be unfocused."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Recommend tags
|
||||
text: "Recommend tags will show in the dropdown list by default."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Color scheme
|
||||
navbar_style:
|
||||
label: Navbar style
|
||||
label: Navbar background style
|
||||
primary_color:
|
||||
label: Primary color
|
||||
text: Modify the colors used by your themes
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS and HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Show logs
|
||||
status: Status
|
||||
title: Badges
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: cannot be empty
|
||||
@@ -2307,6 +2437,7 @@ ui:
|
||||
user_normal: This user is already normal.
|
||||
user_suspended: This user has been suspended.
|
||||
user_deleted: This user has been deleted.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: This badge has been activated.
|
||||
badge_inactivated: This badge has been inactivated.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
+151
-20
@@ -234,6 +234,8 @@ backend:
|
||||
other: Dim caniatâd i ddiweddaru.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: Reputation rank fail to meet the condition.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: You cannot delete a tag that is in use.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: Ni allwch osod cyfystyr y tag cyfredol fel ei hun.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: The from name cannot be a email address.
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "Error {{.Field}} format near '{{.Content}}' at line {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "The number of users you add at once should be in the range of 1-{{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Wedi methu darllen y ffurfwedd
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: tag wiki
|
||||
create_tag: Creu Tag
|
||||
edit_tag: Golygu Tag
|
||||
ask_a_question: Ychwanegu Cwestiwn
|
||||
ask_a_question: Create Question
|
||||
edit_question: Golygu Cwestiwn
|
||||
edit_answer: Golygu Ateb
|
||||
search: Chwiliwch
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: Gwall HTTP 500
|
||||
http_403: Gwall HTTP 403
|
||||
logout: Log Out
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: Hysbysiadau
|
||||
inbox: Mewnflwch
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: day
|
||||
hours: hours
|
||||
days: days
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: heart
|
||||
smile: smile
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: Mwy
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: Ychwanegu Cwestiwn
|
||||
title: Create Question
|
||||
edit_title: Golygu Cwestiwn
|
||||
default_reason: Golygu Cwestiwn
|
||||
default_first_reason: Add question
|
||||
default_first_reason: Create question
|
||||
similar_questions: Cwestiynau tebyg
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: Diwygiad
|
||||
title:
|
||||
label: Teitl
|
||||
placeholder: Byddwch yn benodol a dychmygwch eich bod yn gofyn cwestiwn i berson arall
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: Ni all teitl fod yn wag.
|
||||
range: Teitl hyd at 20 nod
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: Corff
|
||||
msg:
|
||||
empty: Ni all corff fod yn wag.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Tagiau
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: Ychwanegu tag
|
||||
create_btn: Creu tag newydd
|
||||
search_tag: Chwilio tag
|
||||
hint: "Disgrifiwch beth yw eich cwestiwn, mae angen o leiaf un tag."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: No tags matched
|
||||
tag_required_text: Required tag (at least one)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: Search
|
||||
footer:
|
||||
build_on: >-
|
||||
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Change
|
||||
loading: loading...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -1281,7 +1311,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile image
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: Your revision will show after review.
|
||||
sent_success: Sent successfully
|
||||
related_question:
|
||||
title: Related Questions
|
||||
title: Related
|
||||
answers: answers
|
||||
linked_question:
|
||||
title: Linked Questions
|
||||
description: Questions linked to
|
||||
no_linked_question: No questions linked from this question.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: People Asked
|
||||
desc: Select people who you think might know the answer.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
created: Created
|
||||
Asked: Asked
|
||||
asked: asked
|
||||
update: Modified
|
||||
Edited: Edited
|
||||
edit: edited
|
||||
commented: commented
|
||||
Views: Viewed
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: Follow
|
||||
following: Following
|
||||
counts: "{{count}} Results"
|
||||
counts_loading: "... Results"
|
||||
more: More
|
||||
sort_btns:
|
||||
relevance: Relevance
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: All Questions
|
||||
x_questions: "{{ count }} Questions"
|
||||
x_answers: "{{ count }} answers"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Questions
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: Name
|
||||
msg: Name cannot be empty.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: Password
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: Branding
|
||||
legal: Legal
|
||||
write: Write
|
||||
terms: Terms
|
||||
tos: Terms of Service
|
||||
privacy: Privacy
|
||||
seo: SEO
|
||||
customize: Customize
|
||||
themes: Themes
|
||||
css_html: CSS/HTML
|
||||
login: Login
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
user_center:
|
||||
login: Login
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: Name
|
||||
email: Email
|
||||
reputation: Reputation
|
||||
created_at: Created Time
|
||||
delete_at: Deleted Time
|
||||
suspend_at: Suspended Time
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Suspend until
|
||||
status: Status
|
||||
role: Role
|
||||
action: Action
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Suspend this user
|
||||
content: A suspended user can't log in.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: Questions
|
||||
unlisted: Unlisted
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: Timezone
|
||||
msg: Timezone cannot be empty.
|
||||
text: Choose a city in the same timezone as you.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: Write
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Answer write
|
||||
label: Each user can only write one answer for each question
|
||||
text: "Turn off to allow users to write multiple answers to the same question, which may cause answers to be unfocused."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Recommend tags
|
||||
text: "Recommend tags will show in the dropdown list by default."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Color scheme
|
||||
navbar_style:
|
||||
label: Navbar style
|
||||
label: Navbar background style
|
||||
primary_color:
|
||||
label: Primary color
|
||||
text: Modify the colors used by your themes
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS and HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Show logs
|
||||
status: Status
|
||||
title: Badges
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: cannot be empty
|
||||
@@ -2307,6 +2437,7 @@ ui:
|
||||
user_normal: This user is already normal.
|
||||
user_suspended: This user has been suspended.
|
||||
user_deleted: This user has been deleted.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: This badge has been activated.
|
||||
badge_inactivated: This badge has been inactivated.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
+445
-314
File diff suppressed because it is too large
Load Diff
+220
-89
@@ -58,7 +58,7 @@ backend:
|
||||
undelete:
|
||||
other: Wiederherstellen
|
||||
merge:
|
||||
other: Merge
|
||||
other: Zusammenführen
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
@@ -140,7 +140,7 @@ backend:
|
||||
pass:
|
||||
other: Passwort
|
||||
old_pass:
|
||||
other: Current password
|
||||
other: Aktuelles Passwort
|
||||
original_text:
|
||||
other: Dieser Beitrag
|
||||
email_or_password_wrong_error:
|
||||
@@ -173,7 +173,7 @@ backend:
|
||||
question_closed_cannot_add:
|
||||
other: Fragen sind geschlossen und können nicht hinzugefügt werden.
|
||||
content_cannot_empty:
|
||||
other: Answer content cannot be empty.
|
||||
other: Die Antwort darf nicht leer sein.
|
||||
comment:
|
||||
edit_without_permission:
|
||||
other: Kommentar kann nicht bearbeitet werden.
|
||||
@@ -182,7 +182,7 @@ backend:
|
||||
cannot_edit_after_deadline:
|
||||
other: Die Kommentarzeit war zu lang, um sie zu ändern.
|
||||
content_cannot_empty:
|
||||
other: Comment content cannot be empty.
|
||||
other: Der Kommentar darf nicht leer sein.
|
||||
email:
|
||||
duplicate:
|
||||
other: E-Mail existiert bereits.
|
||||
@@ -233,7 +233,9 @@ backend:
|
||||
cannot_update:
|
||||
other: Keine Berechtigung zum Aktualisieren.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
other: Der Inhalt darf nicht leer sein.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: Ansehenssrang erfüllt die Bedingung nicht.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: Du kannst keinen Tag löschen, der in Gebrauch ist.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: Du kannst das Synonym des aktuellen Tags nicht als sich selbst festlegen.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: Der Absendername kann keine E-Mail-Adresse sein.
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "Fehler {{.Field}}-Format in der Nähe von '{{.Content}}' in Zeile {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "Die Anzahl der Benutzer, die du auf einmal hinzufügst, sollte im Bereich von 1-{{.MaxAmount}} liegen."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Lesekonfiguration fehlgeschlagen
|
||||
@@ -336,7 +348,7 @@ backend:
|
||||
name:
|
||||
other: unhöflich oder beleidigend
|
||||
desc:
|
||||
other: "Eine vernünftige Person würde diesen Inhalt für respektvoll diskutierten Diskurs für unangemessen halten."
|
||||
other: "Eine vernünftige Person würde diesen Inhalt im respektvoll diskutierten Diskurs für unangemessen halten."
|
||||
a_duplicate:
|
||||
name:
|
||||
other: ein Duplikat
|
||||
@@ -348,7 +360,7 @@ backend:
|
||||
name:
|
||||
other: keine Antwort
|
||||
desc:
|
||||
other: "Das wurde als Antwort gepostet, aber es versucht nicht, die Frage zu beantworten. Sie sollte entweder bearbeitet, kommentiert, als weitere Frage gestellt oder ganz gelöscht werden."
|
||||
other: "Die Antwort versucht nicht, die Frage zu beantworten. Sie sollte entweder bearbeitet, kommentiert, als weitere Frage gestellt oder ganz gelöscht werden."
|
||||
no_longer_needed:
|
||||
name:
|
||||
other: nicht mehr benötigt
|
||||
@@ -479,7 +491,7 @@ backend:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} hat deine Frage beantwortet"
|
||||
body:
|
||||
other: "<a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a><br><br>\n\n{{.DisplayName}}:<br>\n<blockquote>{{.AnswerSummary}}</blockquote><br>\n\n<a href='{{.AnswerUrl}}'>Auf {{.SiteName}} anschauen</a><br><br>\n\n--<br>\nHinweis: Dies ist eine automatische System-E-Mail, Bitte antworten Sie nicht auf diese Nachricht, da Ihre Antwort nicht angezeigt wird.<br><br>\n\n<small><a href='{{.UnsubscribeUrl}}'>Abmelden</a></small>"
|
||||
other: "<a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a><br><br>\n\n{{.DisplayName}}:<br>\n<blockquote>{{.AnswerSummary}}</blockquote><br>\n\n<a href='{{.AnswerUrl}}'>Auf {{.SiteName}} anschauen</a><br><br>\n\n--<br>\nHinweis: Dies ist eine automatische System-E-Mail, bitte antworten Sie nicht auf diese Nachricht, da Ihre Antwort nicht angezeigt wird.<br><br>\n\n<small><a href='{{.UnsubscribeUrl}}'>Abmelden</a></small>"
|
||||
invited_you_to_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} hat dich eingeladen zu antworten"
|
||||
@@ -494,7 +506,7 @@ backend:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Neue Frage: {{.QuestionTitle}}"
|
||||
body:
|
||||
other: "<a href='{{.QuestionUrl}}'>{{.QuestionTitle}}</a><br>\n<small>{{.Tags}}</small><br><br>\n\n--<br>\nNote: This is an automatic system email, please do not reply to this message as your response will not be seen.<br><br>\n\n<small><a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
other: "<a href='{{.QuestionUrl}}'>{{.QuestionTitle}}</a><br>\n<small>{{.Tags}}</small><br><br>\n\n--<br>\nHinweis: Dies ist eine automatische Systemnachricht, bitte antworten Sie nicht darauf. Antworten werden nicht gelesen oder bearbeitet.<br><br>\n\n<small><a href='{{.UnsubscribeUrl}}'>Benachrichtigung abbestellen</a></small>"
|
||||
pass_reset:
|
||||
title:
|
||||
other: "[{{.SiteName }}] Passwort zurücksetzen"
|
||||
@@ -559,14 +571,14 @@ backend:
|
||||
other: Erste Meldung eines Beitrags.
|
||||
first_upvote:
|
||||
name:
|
||||
other: Erste Abstimmung
|
||||
other: Erster Upvote
|
||||
desc:
|
||||
other: Erste Like eines Beitrags.
|
||||
first_link:
|
||||
name:
|
||||
other: Erster Link
|
||||
desc:
|
||||
other: First added a link to another post.
|
||||
other: Hat erstmals einen Link zu einem anderen Beitrag hinzugefügt.
|
||||
first_reaction:
|
||||
name:
|
||||
other: Erste Reaktion
|
||||
@@ -614,7 +626,7 @@ backend:
|
||||
other: Hat einen Beitrag mit 25 einzigartigen Besuchern freigegeben.
|
||||
good_share:
|
||||
name:
|
||||
other: Gute Teile
|
||||
other: Gut geteilt
|
||||
desc:
|
||||
other: Hat einen Beitrag mit 300 einzigartigen Besuchern freigegeben.
|
||||
great_share:
|
||||
@@ -634,7 +646,7 @@ backend:
|
||||
other: Hat an einem Tag 50 Upvotes 5 Mal verwendet.
|
||||
crazy_in_love:
|
||||
name:
|
||||
other: Verrückt in Liebe
|
||||
other: Im siebten Himmel
|
||||
desc:
|
||||
other: Hat an einem Tag 50 Upvotes 20 Mal verwendet.
|
||||
promoter:
|
||||
@@ -644,7 +656,7 @@ backend:
|
||||
other: Hat einen Benutzer eingeladen.
|
||||
campaigner:
|
||||
name:
|
||||
other: Kampagner
|
||||
other: Kampagnenleiter
|
||||
desc:
|
||||
other: Lade 3 einfache Benutzer ein.
|
||||
champion:
|
||||
@@ -681,7 +693,7 @@ backend:
|
||||
name:
|
||||
other: Anhänger
|
||||
desc:
|
||||
other: Besucht 365 aufeinander folgende Tage.
|
||||
other: 365 aufeinander folgende Tage besucht.
|
||||
anniversary:
|
||||
name:
|
||||
other: Jahrestag
|
||||
@@ -689,7 +701,7 @@ backend:
|
||||
other: Aktives Mitglied für ein Jahr, mindestens einmal veröffentlicht.
|
||||
appreciated:
|
||||
name:
|
||||
other: Wertschätzt
|
||||
other: Gewertschätzt
|
||||
desc:
|
||||
other: Erhalten 1 up vote für 20 posts.
|
||||
respected:
|
||||
@@ -701,7 +713,7 @@ backend:
|
||||
name:
|
||||
other: Bewundert
|
||||
desc:
|
||||
other: Erhalten 5 up vote für 300 posts.
|
||||
other: 5 upvotes für 300 posts erhalten.
|
||||
solved:
|
||||
name:
|
||||
other: Gelöst
|
||||
@@ -719,7 +731,7 @@ backend:
|
||||
other: 50 Antworten wurden akzeptiert.
|
||||
solution_institution:
|
||||
name:
|
||||
other: Solution Institution
|
||||
other: Lösungsfinder
|
||||
desc:
|
||||
other: 150 Antworten wurden akzeptiert.
|
||||
nice_answer:
|
||||
@@ -734,7 +746,7 @@ backend:
|
||||
other: Die Antwortpunktzahl beträgt mehr als 25 Punkte.
|
||||
great_answer:
|
||||
name:
|
||||
other: Großartiges Antwort
|
||||
other: Großartige Antwort
|
||||
desc:
|
||||
other: Die Antwortpunktzahl beträgt mehr als 50 Punkte.
|
||||
nice_question:
|
||||
@@ -746,12 +758,12 @@ backend:
|
||||
name:
|
||||
other: Gute Frage
|
||||
desc:
|
||||
other: Fragenpunktzahl von 25 oder mehr.
|
||||
other: Fragen mit 25 oder mehr Punkten.
|
||||
great_question:
|
||||
name:
|
||||
other: Große Frage
|
||||
desc:
|
||||
other: Fragenpunktzahl von 50 oder mehr.
|
||||
other: Frage mit 50 oder mehr Punkten.
|
||||
popular_question:
|
||||
name:
|
||||
other: Populäre Frage
|
||||
@@ -761,17 +773,17 @@ backend:
|
||||
name:
|
||||
other: Bemerkenswerte Frage
|
||||
desc:
|
||||
other: Frage mit 1,000 Ansichten.
|
||||
other: Frage mit 1.000 Ansichten.
|
||||
famous_question:
|
||||
name:
|
||||
other: Erstklassige Frage
|
||||
desc:
|
||||
other: Frage mit 5,000 Ansichten.
|
||||
other: Frage mit 5.000 Ansichten.
|
||||
popular_link:
|
||||
name:
|
||||
other: Populärer Link
|
||||
desc:
|
||||
other: Geschrieben einen externen Link mit 50 Klicks.
|
||||
other: Hat einen externen Link mit 50 Klicks gepostet.
|
||||
hot_link:
|
||||
name:
|
||||
other: Heißer Link
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: tag Wiki
|
||||
create_tag: Tag erstellen
|
||||
edit_tag: Tag bearbeiten
|
||||
ask_a_question: Frage hinzufügen
|
||||
ask_a_question: Create Question
|
||||
edit_question: Frage bearbeiten
|
||||
edit_answer: Antwort bearbeiten
|
||||
search: Suchen
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: HTTP-Fehler 500
|
||||
http_403: HTTP Fehler 403
|
||||
logout: Ausloggen
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: Benachrichtigungen
|
||||
inbox: Posteingang
|
||||
@@ -1030,14 +1053,14 @@ ui:
|
||||
tip: Bist du sicher, dass du löschen möchtest?
|
||||
close: Schließen
|
||||
merge:
|
||||
title: Merge tag
|
||||
source_tag_title: Source tag
|
||||
source_tag_description: The source tag and its associated data will be remapped to the target tag.
|
||||
target_tag_title: Target tag
|
||||
target_tag_description: A synonym between these two tags will be created after merging.
|
||||
no_results: No tags matched
|
||||
btn_submit: Submit
|
||||
btn_close: Close
|
||||
title: Tags zusammenführen
|
||||
source_tag_title: Quell-Tag
|
||||
source_tag_description: Das Quell-Tag und seine zugehörigen Daten werden dem Ziel-Tag zugeordnet.
|
||||
target_tag_title: Ziel-Tag
|
||||
target_tag_description: Ein Synonym zwischen diesen beiden Tags wird nach dem Zusammenführen erstellt.
|
||||
no_results: Keine zusammenpassenden Tags gefunden
|
||||
btn_submit: Absenden
|
||||
btn_close: Schließen
|
||||
edit_tag:
|
||||
title: Tag bearbeiten
|
||||
default_reason: Tag bearbeiten
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: tag
|
||||
hours: Stunden
|
||||
days: Tage
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: Herz
|
||||
smile: Lächeln
|
||||
@@ -1063,7 +1089,7 @@ ui:
|
||||
btn_label: Reaktionen hinzufügen oder entfernen
|
||||
undo_emoji: '{{ emoji }} Reaktion rückgängig machen'
|
||||
react_emoji: mit {{ emoji }} reagieren
|
||||
unreact_emoji: mit {{ emoji }} unreagieren
|
||||
unreact_emoji: '{{ emoji }} Reaktion entfernen'
|
||||
comment:
|
||||
btn_add_comment: Einen Kommentar hinzufügen
|
||||
reply_to: Antwort an
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: Mehr
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: Frage stellen
|
||||
title: Create Question
|
||||
edit_title: Frage bearbeiten
|
||||
default_reason: Frage bearbeiten
|
||||
default_first_reason: Frage stellen
|
||||
default_first_reason: Create question
|
||||
similar_questions: Ähnliche Fragen
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: Version
|
||||
title:
|
||||
label: Titel
|
||||
placeholder: Sei spezifisch und stelle dir vor, du stelle eine Frage an eine andere Person
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: Der Titel darf nicht leer sein.
|
||||
range: Titel bis zu 150 Zeichen
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: Körper
|
||||
msg:
|
||||
empty: Körper darf nicht leer sein.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Stichworte
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: Schlagwort hinzufügen
|
||||
create_btn: Neuen Tag erstellen
|
||||
search_tag: Tag suchen
|
||||
hint: "Beschreibe, worum es in deiner Frage geht, mindestens ein Tag ist erforderlich."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: Keine Tags gefunden
|
||||
tag_required_text: Benötigter Tag (mindestens eins)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: Suchen
|
||||
footer:
|
||||
build_on: >-
|
||||
Betrieben von <1> Apache Answer </1>- die Open-Source-Software, die Q&A-Communities betreibt.<br />Made with love © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Ändern
|
||||
loading: wird geladen...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: Der Name darf nicht leer sein.
|
||||
range: Der Name muss zwischen 2 und 30 Zeichen lang sein.
|
||||
character: 'Muss den Zeichensatz "a-z", "A-Z", "0-9", " - . _" verwenden'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: E-Mail
|
||||
msg:
|
||||
@@ -1275,13 +1305,13 @@ ui:
|
||||
display_name:
|
||||
label: Anzeigename
|
||||
msg: Anzeigename darf nicht leer sein.
|
||||
msg_range: Anzeigename bis zu 30 Zeichen.
|
||||
msg_range: Der Anzeigename muss zwischen 2 und 30 Zeichen lang sein.
|
||||
username:
|
||||
label: Nutzername
|
||||
caption: Leute können dich als "@Benutzername" erwähnen.
|
||||
msg: Benutzername darf nicht leer sein.
|
||||
msg_range: Benutzername bis zu 30 Zeichen.
|
||||
character: 'Muss den Zeichensatz "a-z", "0-9", " - . _" verwenden'
|
||||
msg_range: Der Benutzername muss zwischen 2 und 30 Zeichen lang sein.
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profilbild
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: Deine Überarbeitung wird nach der Überprüfung angezeigt.
|
||||
sent_success: Erfolgreich gesendet
|
||||
related_question:
|
||||
title: Verwandte Fragen
|
||||
title: Related
|
||||
answers: antworten
|
||||
linked_question:
|
||||
title: Verwandte Fragen
|
||||
description: Fragen verbunden mit
|
||||
no_linked_question: Keine Fragen aus dieser Frage verbunden.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: Frage jemanden
|
||||
desc: Lade Leute ein, von denen du glaubst, dass sie die Antwort wissen könnten.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Personen suchen
|
||||
question_detail:
|
||||
action: Aktion
|
||||
created: Created
|
||||
Asked: Gefragt
|
||||
asked: gefragt
|
||||
update: Geändert
|
||||
Edited: Edited
|
||||
edit: bearbeitet
|
||||
commented: kommentiert
|
||||
Views: Gesehen
|
||||
@@ -1452,7 +1484,7 @@ ui:
|
||||
signup: Registrieren
|
||||
logout: Ausloggen
|
||||
verify: Überprüfen
|
||||
create: Create
|
||||
create: Erstellen
|
||||
approve: Genehmigen
|
||||
reject: Ablehnen
|
||||
skip: Überspringen
|
||||
@@ -1484,16 +1516,16 @@ ui:
|
||||
normal: Normal
|
||||
closed: Geschlossen
|
||||
deleted: Gelöscht
|
||||
deleted_permanently: Deleted permanently
|
||||
deleted_permanently: Dauerhaft gelöscht
|
||||
pending: Ausstehend
|
||||
more: Mehr
|
||||
view: View
|
||||
card: Card
|
||||
compact: Compact
|
||||
display_below: Display below
|
||||
always_display: Always display
|
||||
or: or
|
||||
back_sites: Back to sites
|
||||
view: Betrachten
|
||||
card: Karte
|
||||
compact: Kompakt
|
||||
display_below: Unten anzeigen
|
||||
always_display: Immer anzeigen
|
||||
or: oder
|
||||
back_sites: Zurück zur Website
|
||||
search:
|
||||
title: Suchergebnisse
|
||||
keywords: Schlüsselwörter
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: Folgen
|
||||
following: Folgend
|
||||
counts: "{{count}} Ergebnisse"
|
||||
counts_loading: "... Results"
|
||||
more: Mehr
|
||||
sort_btns:
|
||||
relevance: Relevanz
|
||||
@@ -1523,13 +1556,13 @@ ui:
|
||||
via: Beitrag teilen über...
|
||||
copied: Kopiert
|
||||
facebook: Auf Facebook teilen
|
||||
twitter: Share to X
|
||||
twitter: Auf X teilen
|
||||
cannot_vote_for_self: Du kannst nicht für deinen eigenen Beitrag stimmen.
|
||||
modal_confirm:
|
||||
title: Fehler...
|
||||
delete_permanently:
|
||||
title: Delete permanently
|
||||
content: Are you sure you want to delete permanently?
|
||||
title: Endgültig löschen
|
||||
content: Sind Sie sicher, dass Sie den Inhalt endgültig löschen möchten?
|
||||
account_result:
|
||||
success: Dein neues Konto ist bestätigt; du wirst zur Startseite weitergeleitet.
|
||||
link: Weiter zur Startseite
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: Alle Fragen
|
||||
x_questions: "{{ count }} Fragen"
|
||||
x_answers: "{{ count }} Antworten"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Fragen
|
||||
answers: Antworten
|
||||
newest: Neueste
|
||||
@@ -1634,22 +1668,22 @@ ui:
|
||||
placeholder: /data/answer.Weder noch
|
||||
msg: Datenbankdatei kann nicht leer sein.
|
||||
ssl_enabled:
|
||||
label: Enable SSL
|
||||
label: SSL aktivieren
|
||||
ssl_enabled_on:
|
||||
label: On
|
||||
ssl_enabled_off:
|
||||
label: Off
|
||||
ssl_mode:
|
||||
label: SSL Mode
|
||||
label: SSL-Modus
|
||||
ssl_root_cert:
|
||||
placeholder: sslrootcert file path
|
||||
msg: Path to sslrootcert file cannot be empty
|
||||
placeholder: SSL-Root-Zertifikat Pfad
|
||||
msg: Pfad zum Ssl-Root-Zertifikat darf nicht leer sein
|
||||
ssl_cert:
|
||||
placeholder: sslcert file path
|
||||
msg: Path to sslcert file cannot be empty
|
||||
placeholder: SSL-Zertifikat Pfad
|
||||
msg: Pfad zum SSL-Zertifikat darf nicht leer sein
|
||||
ssl_key:
|
||||
placeholder: sslkey file path
|
||||
msg: Path to sslkey file cannot be empty
|
||||
placeholder: SSL-Key Pfad
|
||||
msg: Der Pfad zum SSL-Key darf nicht leer sein
|
||||
config_yaml:
|
||||
title: config.yaml erstellen
|
||||
label: Die erstellte config.yaml-Datei.
|
||||
@@ -1682,8 +1716,8 @@ ui:
|
||||
admin_name:
|
||||
label: Name
|
||||
msg: Der Name darf nicht leer sein.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Der Name muss zwischen 2 und 30 Zeichen lang sein.
|
||||
admin_password:
|
||||
label: Passwort
|
||||
text: >-
|
||||
@@ -1692,9 +1726,9 @@ ui:
|
||||
msg_min_length: Passwort muss mindestens 8 Zeichen lang sein.
|
||||
msg_max_length: Das Passwort darf maximal 32 Zeichen lang sein.
|
||||
admin_confirm_password:
|
||||
label: "Confirm Password"
|
||||
text: "Please re-enter your password to confirm."
|
||||
msg: "Confirm password does not match."
|
||||
label: "Passwort bestätigen"
|
||||
text: "Bitte geben Sie Ihr Passwort erneut ein, um es zu bestätigen."
|
||||
msg: "Passwortbestätigung stimmt nicht überein!"
|
||||
admin_email:
|
||||
label: E-Mail
|
||||
text: Du brauchst diese E-Mail, um dich einzuloggen.
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: Branding
|
||||
legal: Rechtliches
|
||||
write: Schreiben
|
||||
terms: Terms
|
||||
tos: Nutzungsbedingungen
|
||||
privacy: Privatsphäre
|
||||
seo: SEO
|
||||
customize: Anpassen
|
||||
themes: Themen
|
||||
css_html: CSS/HTML
|
||||
login: Anmeldung
|
||||
privileges: Berechtigungen
|
||||
plugins: Erweiterungen (Plugins)
|
||||
installed_plugins: Installierte Plugins
|
||||
apperance: Erscheinungsbild
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Willkommen auf {{site_name}}
|
||||
user_center:
|
||||
login: Anmelden
|
||||
@@ -1852,10 +1899,10 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Anzeigename
|
||||
msg_range: Anzeigename bis zu 30 Zeichen.
|
||||
msg_range: Der Anzeigename muss zwischen 2 und 30 Zeichen lang sein.
|
||||
username:
|
||||
label: Nutzername
|
||||
msg_range: Nutzername bis zu 30 Zeichen.
|
||||
msg_range: Der Benutzername muss 2-30 Zeichen lang sein.
|
||||
email:
|
||||
label: E-Mail
|
||||
msg_invalid: Ungültige E-Mail-Adresse.
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: Name
|
||||
email: E-Mail
|
||||
reputation: Ansehen
|
||||
created_at: Erstellt
|
||||
created_at: Angelegt am
|
||||
delete_at: Löschzeit
|
||||
suspend_at: Sperrzeit
|
||||
suspend_until: Suspend until
|
||||
status: Status
|
||||
role: Rolle
|
||||
action: Aktion
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Diesen Benutzer sperren
|
||||
content: Ein gesperrter Benutzer kann sich nicht einloggen.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: Fragen
|
||||
unlisted: Nicht gelistet
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: Zeitzone
|
||||
msg: Die Zeitzone darf nicht leer sein.
|
||||
text: Wähle eine Stadt in der gleichen Zeitzone wie du.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2050,16 +2106,22 @@ ui:
|
||||
label: Datenschutzbestimmungen
|
||||
text: "Du kannst hier Inhalte zur Datenschutzerklärung hinzufügen. Wenn du bereits ein Dokument hast, das anderswo gehostet wird, gib hier die vollständige URL an."
|
||||
external_content_display:
|
||||
label: External content
|
||||
text: "Content includes images, videos, and media embedded from external websites."
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
label: Externer Inhalt
|
||||
text: "Inhalte umfassen Bilder, Videos und Medien, die von externen Websites eingebettet sind."
|
||||
always_display: Externen Inhalt immer anzeigen
|
||||
ask_before_display: Vor der Anzeige externer Inhalte fragen
|
||||
write:
|
||||
page_title: Schreiben
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Antwort bearbeiten
|
||||
label: Jeder Benutzer kann für jede Frage nur eine Antwort schreiben
|
||||
text: "Schalten Sie aus, um es Benutzern zu ermöglichen, mehrere Antworten auf dieselbe Frage zu schreiben, was dazu führen kann, dass Antworten nicht im Fokus stehen."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Empfohlene Tags
|
||||
text: "Empfohlene Tags werden standardmäßig in der Dropdown-Liste angezeigt."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Farbschema
|
||||
navbar_style:
|
||||
label: Stil der Navigationsleiste
|
||||
label: Hintergrundstil der Navigationsleiste
|
||||
primary_color:
|
||||
label: Primäre Farbe
|
||||
text: Ändere die Farben, die von deinen Themes verwendet werden
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS und HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Protokolle anzeigen
|
||||
status: Status
|
||||
title: Abzeichen
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: kann nicht leer sein
|
||||
@@ -2307,13 +2437,14 @@ ui:
|
||||
user_normal: Dieser Benutzer ist bereits normal.
|
||||
user_suspended: Dieser Nutzer wurde gesperrt.
|
||||
user_deleted: Benutzer wurde gelöscht.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: Dieses Abzeichen wurde aktiviert.
|
||||
badge_inactivated: Dieses Abzeichen wurde deaktiviert.
|
||||
users_deleted: These users have been deleted.
|
||||
posts_deleted: These questions have been deleted.
|
||||
answers_deleted: These answers have been deleted.
|
||||
copy: Copy to clipboard
|
||||
copied: Copied
|
||||
external_content_warning: External images/media are not displayed.
|
||||
users_deleted: Der Benutzer wurde gelöscht.
|
||||
posts_deleted: Deine Frage wurde gelöscht.
|
||||
answers_deleted: Deine Antwort wurde gelöscht.
|
||||
copy: In die Zwischenablage kopieren
|
||||
copied: Kopiert
|
||||
external_content_warning: Externe Bilder/Medien werden nicht angezeigt.
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -684,7 +684,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
|
||||
+146
-17
@@ -235,6 +235,8 @@ backend:
|
||||
other: No permission to update.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: Reputation rank fail to meet the condition.
|
||||
@@ -264,6 +266,8 @@ backend:
|
||||
other: You cannot delete a tag that is in use.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: You cannot set the synonym of the current tag as itself.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: The from name cannot be a email address.
|
||||
@@ -307,6 +311,14 @@ backend:
|
||||
other: "Error {{.Field}} format near '{{.Content}}' at line {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "The number of users you add at once should be in the range of 1-{{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Read config failed
|
||||
@@ -820,7 +832,7 @@ ui:
|
||||
tag_wiki: tag wiki
|
||||
create_tag: Create Tag
|
||||
edit_tag: Edit Tag
|
||||
ask_a_question: Add Question
|
||||
ask_a_question: Create Question
|
||||
edit_question: Edit Question
|
||||
edit_answer: Edit Answer
|
||||
search: Search
|
||||
@@ -844,6 +856,17 @@ ui:
|
||||
http_50X: HTTP Error 500
|
||||
http_403: HTTP Error 403
|
||||
logout: Log Out
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: Notifications
|
||||
inbox: Inbox
|
||||
@@ -1070,6 +1093,9 @@ ui:
|
||||
day: day
|
||||
hours: hours
|
||||
days: days
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: heart
|
||||
smile: smile
|
||||
@@ -1128,10 +1154,10 @@ ui:
|
||||
more: More
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: Add Question
|
||||
title: Create Question
|
||||
edit_title: Edit Question
|
||||
default_reason: Edit question
|
||||
default_first_reason: Add question
|
||||
default_first_reason: Create question
|
||||
similar_questions: Similar questions
|
||||
form:
|
||||
fields:
|
||||
@@ -1139,7 +1165,7 @@ ui:
|
||||
label: Revision
|
||||
title:
|
||||
label: Title
|
||||
placeholder: Be specific and imagine you're asking a question to another person
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: Title cannot be empty.
|
||||
range: Title up to 150 characters
|
||||
@@ -1147,6 +1173,9 @@ ui:
|
||||
label: Body
|
||||
msg:
|
||||
empty: Body cannot be empty.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Tags
|
||||
msg:
|
||||
@@ -1168,7 +1197,9 @@ ui:
|
||||
add_btn: Add tag
|
||||
create_btn: Create new tag
|
||||
search_tag: Search tag
|
||||
hint: "Describe what your question is about, at least one tag is required."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: No tags matched
|
||||
tag_required_text: Required tag (at least one)
|
||||
header:
|
||||
@@ -1187,9 +1218,7 @@ ui:
|
||||
search:
|
||||
placeholder: Search
|
||||
footer:
|
||||
build_on: >-
|
||||
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A
|
||||
communities.<br />Made with love © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Change
|
||||
loading: loading...
|
||||
@@ -1224,7 +1253,7 @@ ui:
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -1306,7 +1335,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile image
|
||||
gravatar: Gravatar
|
||||
@@ -1382,12 +1411,12 @@ ui:
|
||||
review: Your revision will show after review.
|
||||
sent_success: Sent successfully
|
||||
related_question:
|
||||
title: Related Questions
|
||||
title: Related
|
||||
answers: answers
|
||||
linked_question:
|
||||
title: Linked Questions
|
||||
description: Questions linked to
|
||||
no_linked_question: No questions linked from this question.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: Invite People
|
||||
desc: Invite people you think can answer.
|
||||
@@ -1396,9 +1425,11 @@ ui:
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
created: Created
|
||||
Asked: Asked
|
||||
asked: asked
|
||||
update: Modified
|
||||
Edited: Edited
|
||||
edit: edited
|
||||
commented: commented
|
||||
Views: Viewed
|
||||
@@ -1534,6 +1565,7 @@ ui:
|
||||
follow: Follow
|
||||
following: Following
|
||||
counts: "{{count}} Results"
|
||||
counts_loading: "... Results"
|
||||
more: More
|
||||
sort_btns:
|
||||
relevance: Relevance
|
||||
@@ -1586,6 +1618,7 @@ ui:
|
||||
all_questions: All Questions
|
||||
x_questions: "{{ count }} Questions"
|
||||
x_answers: "{{ count }} answers"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Questions
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
@@ -1717,7 +1750,7 @@ ui:
|
||||
admin_name:
|
||||
label: Name
|
||||
msg: Name cannot be empty.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: Password
|
||||
@@ -1782,6 +1815,7 @@ ui:
|
||||
branding: Branding
|
||||
legal: Legal
|
||||
write: Write
|
||||
terms: Terms
|
||||
tos: Terms of Service
|
||||
privacy: Privacy
|
||||
seo: SEO
|
||||
@@ -1792,6 +1826,18 @@ ui:
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
user_center:
|
||||
login: Login
|
||||
@@ -1930,6 +1976,7 @@ ui:
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Suspend until
|
||||
status: Status
|
||||
role: Role
|
||||
action: Action
|
||||
@@ -1964,6 +2011,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Suspend this user
|
||||
content: A suspended user can't log in.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: Questions
|
||||
unlisted: Unlisted
|
||||
@@ -2024,6 +2073,12 @@ ui:
|
||||
label: Timezone
|
||||
msg: Timezone cannot be empty.
|
||||
text: Choose a city in the same timezone as you.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2095,11 +2150,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: Write
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Answer write
|
||||
label: Each user can only write one answer for the same question
|
||||
text: "Turn off to allow users to write multiple answers to the same question, which may cause answers to be unfocused."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Recommend tags
|
||||
text: "Recommend tags will show in the dropdown list by default."
|
||||
@@ -2147,6 +2208,10 @@ ui:
|
||||
primary_color:
|
||||
label: Primary color
|
||||
text: Modify the colors used by your themes
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS and HTML
|
||||
custom_css:
|
||||
@@ -2248,6 +2313,70 @@ ui:
|
||||
show_logs: Show logs
|
||||
status: Status
|
||||
title: Badges
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: cannot be empty
|
||||
@@ -2255,7 +2384,6 @@ ui:
|
||||
btn_submit: Save
|
||||
not_found_props: "Required property {{ key }} not found."
|
||||
select: Select
|
||||
|
||||
page_review:
|
||||
review: Review
|
||||
proposed: proposed
|
||||
@@ -2345,6 +2473,7 @@ ui:
|
||||
user_normal: This user is already normal.
|
||||
user_suspended: This user has been suspended.
|
||||
user_deleted: This user has been deleted.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: This badge has been activated.
|
||||
badge_inactivated: This badge has been inactivated.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
+155
-24
@@ -234,6 +234,8 @@ backend:
|
||||
other: Sin permiso para actualizar.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: El rango de reputación no cumple la condición.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: No puedes eliminar una etiqueta que está en uso.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: No se puede establecer como sinónimo de una etiqueta la propia etiqueta.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: El nombre no puede ser una dirección de correo electrónico.
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "Error {{.Field}} formato cerca de '{{.Content}}' en la línea {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "El número de usuarios que añadas a la vez debe estar en el rango de 1 a {{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Lectura de configuración fallida
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: wiki de Etiquetas
|
||||
create_tag: Crear etiqueta
|
||||
edit_tag: Editar etiqueta
|
||||
ask_a_question: Añadir Pregunta
|
||||
ask_a_question: Create Question
|
||||
edit_question: Editar Pregunta
|
||||
edit_answer: Editar respuesta
|
||||
search: Buscar
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: HTTP Error 500
|
||||
http_403: HTTP Error 403
|
||||
logout: Cerrar sesión
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: Notificaciones
|
||||
inbox: Buzón de entrada
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: día
|
||||
hours: horas
|
||||
days: días
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: corazón
|
||||
smile: sonrisa
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: Mas
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: Agregar una pregunta
|
||||
title: Create Question
|
||||
edit_title: Editar pregunta
|
||||
default_reason: Editar pregunta
|
||||
default_first_reason: Añadir pregunta
|
||||
default_first_reason: Create question
|
||||
similar_questions: Preguntas similares
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: Revisión
|
||||
title:
|
||||
label: Título
|
||||
placeholder: Sé preciso e imagina que le estás preguntando esto a una persona
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: El título no puede estar vacío.
|
||||
range: Título hasta 150 caracteres
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: Cuerpo
|
||||
msg:
|
||||
empty: Cuerpo no puede estar vacío.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Etiquetas
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: Añadir etiqueta
|
||||
create_btn: Crear nueva etiqueta
|
||||
search_tag: Buscar etiqueta
|
||||
hint: "Describe de qué trata tu pregunta, se requiere al menos una etiqueta."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: Ninguna etiqueta coincide
|
||||
tag_required_text: Etiqueta requerida (al menos una)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: Buscar
|
||||
footer:
|
||||
build_on: >-
|
||||
Sitio creado por <1> Apache Answer </1>- el software libre que impulsa comunidades de Q&A.<br />Hecho con amor © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Cambiar
|
||||
loading: cargando...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: El nombre no puede estar vacío.
|
||||
range: El nombre debe tener entre 2 y 30 caracteres de largo.
|
||||
character: 'Debe usar el juego de caracteres "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Correo electrónico
|
||||
msg:
|
||||
@@ -1275,13 +1305,13 @@ ui:
|
||||
display_name:
|
||||
label: Nombre público
|
||||
msg: El nombre a mostrar no puede estar vacío.
|
||||
msg_range: Mostrar nombre de hasta 30 caracteres.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Nombre de usuario
|
||||
caption: La gente puede mencionarte con "@nombredeusuario".
|
||||
msg: El nombre de usuario no puede estar vacío.
|
||||
msg_range: Nombre de usuario de hasta 30 caracteres.
|
||||
character: 'Debe usar el conjunto de caracteres "a-z", "0-9", " - . _"'
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Imagen de perfil
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: Tu revisión será visible luego de ser aprobada.
|
||||
sent_success: Enviado con éxito
|
||||
related_question:
|
||||
title: Preguntas relacionadas
|
||||
title: Related
|
||||
answers: respuestas
|
||||
linked_question:
|
||||
title: Preguntas relacionadas
|
||||
description: Pregunta relacionada con
|
||||
no_linked_question: No hay preguntas enlazadas a esta pregunta.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: Personas Preguntadas
|
||||
desc: Selecciona personas que creas que sepan la respuesta.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Buscar personas
|
||||
question_detail:
|
||||
action: Acción
|
||||
created: Created
|
||||
Asked: Preguntada
|
||||
asked: preguntada
|
||||
update: Modificada
|
||||
Edited: Edited
|
||||
edit: editada
|
||||
commented: comentado
|
||||
Views: Visto
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: Seguir
|
||||
following: Siguiendo
|
||||
counts: "{{count}} Resultados"
|
||||
counts_loading: "... Results"
|
||||
more: Más
|
||||
sort_btns:
|
||||
relevance: Relevancia
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: Todas las preguntas
|
||||
x_questions: "{{ count }} Preguntas"
|
||||
x_answers: "{{ count }} respuestas"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Preguntas
|
||||
answers: Respuestas
|
||||
newest: Más reciente
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: Nombre
|
||||
msg: El nombre no puede estar vacío.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: Contraseña
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: Marca
|
||||
legal: Legal
|
||||
write: Escribir
|
||||
terms: Terms
|
||||
tos: Términos de servicio
|
||||
privacy: Privacidad
|
||||
seo: ESTE
|
||||
customize: Personalizar
|
||||
themes: Temas
|
||||
css_html: CSS/HTML
|
||||
login: Iniciar sesión
|
||||
privileges: Privilegios
|
||||
plugins: Extensiones
|
||||
installed_plugins: Extensiones Instaladas
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Bienvenido a {{site_name}}
|
||||
user_center:
|
||||
login: Iniciar sesión
|
||||
@@ -1852,10 +1899,10 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Nombre para mostrar
|
||||
msg_range: Mostrar nombre de hasta 30 caracteres.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Nombre de usuario
|
||||
msg_range: Nombre de usuario hasta 30 caracteres.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
email:
|
||||
label: Correo electrónico
|
||||
msg_invalid: Dirección de correo inválida.
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: Nombre
|
||||
email: Correo electrónico
|
||||
reputation: Reputación
|
||||
created_at: Creado Tiempo
|
||||
delete_at: Hora eliminada
|
||||
suspend_at: Tiempo suspendido
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Suspend until
|
||||
status: Estado
|
||||
role: Rol
|
||||
action: Acción
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Suspender a este usuario
|
||||
content: Un usuario suspendido no puede iniciar sesión.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: Preguntas
|
||||
unlisted: No listado
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: Zona horaria
|
||||
msg: El huso horario no puede estar vacío.
|
||||
text: Elija una ciudad en la misma zona horaria que usted.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: Escribir
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Escribir respuesta
|
||||
label: Cada usuario solo puede escribir una respuesta por pregunta
|
||||
text: "Desactivar para permitir a los usuarios escribir múltiples respuestas a la misma pregunta, lo que puede causar que las respuestas no estén enfocadas."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Etiquetas recomendadas
|
||||
text: "Las etiquetas recomendadas se mostrarán en la lista desplegable por defecto."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Esquema de color
|
||||
navbar_style:
|
||||
label: Estilo de barra de navegación
|
||||
label: Navbar background style
|
||||
primary_color:
|
||||
label: Color primario
|
||||
text: Modifica los colores usados por tus temas
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS y HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Mostrar logs
|
||||
status: Status
|
||||
title: Insignias
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (opcional)
|
||||
empty: no puede estar en blanco
|
||||
@@ -2307,6 +2437,7 @@ ui:
|
||||
user_normal: Este usuario ya es normal.
|
||||
user_suspended: Este usuario ha sido suspendido.
|
||||
user_deleted: Este usuario ha sido eliminado.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: Esta insignia ha sido activada.
|
||||
badge_inactivated: Esta insignia ha sido desactivada.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
+154
-23
@@ -234,6 +234,8 @@ backend:
|
||||
other: اجازه بروزرسانی ندارید.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: شهرت ناکافی.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: نمی توانید تگی که در حال استفاده است را حذف کنید.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: شما نمی توانید مترادفی برای برچسب فعلی به عوان خودش تنظیم کنین.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: '"از طرفه" نمی تواند آدرس ایمیل باشد.'
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "مشکل پیش آمده در فرمت {{.Field}} در کنار {{.Content}} در خط {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "تعداد کاربرانی که اضافه می کنید باید رنج بین ۱-{{.MaxAmount}} باشند."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: خواندن کافیگ با مشکل مواجه شد
|
||||
@@ -348,7 +360,7 @@ backend:
|
||||
name:
|
||||
other: این یک پاسخ نیست
|
||||
desc:
|
||||
other: "This was posted as an answer, but it does not attempt to answer the question. It should possibly be an edit, a comment, another question,or deleted altogether."
|
||||
other: "."
|
||||
no_longer_needed:
|
||||
name:
|
||||
other: دیگر نیازی نیست
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: ویکی تگ
|
||||
create_tag: ایجاد برچسب
|
||||
edit_tag: ویرایش برچسب
|
||||
ask_a_question: اضافه کردن سوال
|
||||
ask_a_question: Create Question
|
||||
edit_question: ویرایش سوال
|
||||
edit_answer: ویرایش پاسخ
|
||||
search: جستجو
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: خطای 500 HTTP
|
||||
http_403: خطای 403 HTTP
|
||||
logout: خروج
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: اعلانات
|
||||
inbox: پیغامهای دریافتی
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: روز
|
||||
hours: ساعات
|
||||
days: روزها
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: heart
|
||||
smile: smile
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: بیشتر
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: سوالی اضافه کنید
|
||||
title: Create Question
|
||||
edit_title: سوال را ویرایش کنید
|
||||
default_reason: سوال را ویرایش کنید
|
||||
default_first_reason: سوال اضافه کنید
|
||||
default_first_reason: Create question
|
||||
similar_questions: سؤال های مشابه
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: تجدید نظر
|
||||
title:
|
||||
label: عنوان
|
||||
placeholder: به طور خاص فرض کنید که شما یک سؤال از یک شخص دیگری می پرسید
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: عنوان نمی تواند خالی باشد.
|
||||
range: عنوان میتواند تا ۳۰ حرف باشد
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: بدنه
|
||||
msg:
|
||||
empty: بدنه نمی تواند خالی باشد.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: برچسب ها
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: اضافه کردن برچسب
|
||||
create_btn: ایجاد یک برچسب جدید
|
||||
search_tag: جستوجوی برچسب
|
||||
hint: "درمورد سوال خود توضیحی دهید، حداقل یک برچسب نیاز است."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: هیچ تگی مطابقت ندارد
|
||||
tag_required_text: تگ نیاز هست (حداقل یک مورد)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: جستجو
|
||||
footer:
|
||||
build_on: >-
|
||||
پشتیبانی شده توسط <1> Apache Answer </1> - نرمافزار منبع باز که باهمستان های پرسش و پاسخ را تقویت می کند.<br />ساخته شده با عشق © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: تغییر
|
||||
loading: درحال بارگذاری...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: نام نمیتواند خالی باشد.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: ایمیل
|
||||
msg:
|
||||
@@ -1275,13 +1305,13 @@ ui:
|
||||
display_name:
|
||||
label: نام
|
||||
msg: نام نمی تواند خالی باشد.
|
||||
msg_range: نام میتواند تا ۳۰ حرف باشد.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: نامکاربری
|
||||
caption: دیگران میتوانند به شما به بصورت "@username" اشاره کنند.
|
||||
msg: نام کاربری نمی تواند خالی باشد.
|
||||
msg_range: نام کاربری میتواند تا ۳۰ حرف باشد.
|
||||
character: 'باید از حروف "a-z", "0-9", " - . _" استفاده شود'
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: عکس پروفایل
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: بازبینی شما پس از بررسی نشان داده خواهد شد.
|
||||
sent_success: با موفقيت ارسال شد
|
||||
related_question:
|
||||
title: سوالات مرتبط
|
||||
title: Related
|
||||
answers: جواب ها
|
||||
linked_question:
|
||||
title: Linked Questions
|
||||
description: Questions linked to
|
||||
no_linked_question: No questions linked from this question.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: مردم پرسیدند
|
||||
desc: افرادی را دعوت کنید که فکر می کنید ممکن است پاسخ را بدانند.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: جستجوی افراد
|
||||
question_detail:
|
||||
action: عملیات
|
||||
created: Created
|
||||
Asked: پرسیده شده
|
||||
asked: پرسیده شده
|
||||
update: تغییر یافته
|
||||
Edited: Edited
|
||||
edit: ویرایش شده
|
||||
commented: commented
|
||||
Views: مشاهده شده
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: دنبال کردن
|
||||
following: دنبال میکنید
|
||||
counts: "{{count}} نتیجه"
|
||||
counts_loading: "... Results"
|
||||
more: بیشتر
|
||||
sort_btns:
|
||||
relevance: مرتبط
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: تمام سوالات
|
||||
x_questions: "{{ count }} سوال"
|
||||
x_answers: "{{ count }} جواب"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: سوالات
|
||||
answers: پاسخ ها
|
||||
newest: جدیدترین
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: نام
|
||||
msg: نام نمیتواند خالی باشد.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: رمز عبور
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: نام تجاری
|
||||
legal: قانونی
|
||||
write: نوشتن
|
||||
terms: Terms
|
||||
tos: قوانین
|
||||
privacy: حریم خصوصی
|
||||
seo: سئو
|
||||
customize: شخصیسازی
|
||||
themes: پوسته ها
|
||||
css_html: CSS/HTML
|
||||
login: ورود
|
||||
privileges: مجوزها
|
||||
plugins: افزونهها
|
||||
installed_plugins: پلاگین های نصب شده
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: به {{site_name}} خوش آمدید
|
||||
user_center:
|
||||
login: ورود
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: نام
|
||||
email: ایمیل
|
||||
reputation: محبوبیت
|
||||
created_at: زمان ایجاد
|
||||
delete_at: زمان حذف
|
||||
suspend_at: زمان معلق
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Suspend until
|
||||
status: وضعیت
|
||||
role: نقش
|
||||
action: عمل
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: تعلیق این کاربر
|
||||
content: کاربر تعلیق شده نمیتواند وارد شود.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: سوالات
|
||||
unlisted: Unlisted
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: منطقه زمانی
|
||||
msg: منطقه زمانی نمی تواند خالی باشد.
|
||||
text: شهری را در همان منطقه زمانی خود انتخاب کنید.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: نوشتن
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Answer write
|
||||
label: Each user can only write one answer for each question
|
||||
text: "Turn off to allow users to write multiple answers to the same question, which may cause answers to be unfocused."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Recommend tags
|
||||
text: "Recommend tags will show in the dropdown list by default."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Color scheme
|
||||
navbar_style:
|
||||
label: Navbar style
|
||||
label: Navbar background style
|
||||
primary_color:
|
||||
label: Primary color
|
||||
text: Modify the colors used by your themes
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS and HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Show logs
|
||||
status: Status
|
||||
title: Badges
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: cannot be empty
|
||||
@@ -2307,6 +2437,7 @@ ui:
|
||||
user_normal: This user is already normal.
|
||||
user_suspended: This user has been suspended.
|
||||
user_deleted: This user has been deleted.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: This badge has been activated.
|
||||
badge_inactivated: This badge has been inactivated.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
+1
-1
@@ -684,7 +684,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
|
||||
+201
-70
@@ -58,7 +58,7 @@ backend:
|
||||
undelete:
|
||||
other: Annuler la suppression
|
||||
merge:
|
||||
other: Merge
|
||||
other: Fusionner
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
@@ -140,7 +140,7 @@ backend:
|
||||
pass:
|
||||
other: Mot de passe
|
||||
old_pass:
|
||||
other: Current password
|
||||
other: Mot de passe actuel
|
||||
original_text:
|
||||
other: Ce post
|
||||
email_or_password_wrong_error:
|
||||
@@ -173,7 +173,7 @@ backend:
|
||||
question_closed_cannot_add:
|
||||
other: Les questions sont fermées et ne peuvent pas être ajoutées.
|
||||
content_cannot_empty:
|
||||
other: Answer content cannot be empty.
|
||||
other: La réponse ne peut être vide.
|
||||
comment:
|
||||
edit_without_permission:
|
||||
other: Les commentaires ne sont pas autorisés à être modifiés.
|
||||
@@ -182,7 +182,7 @@ backend:
|
||||
cannot_edit_after_deadline:
|
||||
other: Le commentaire a été posté il y a trop longtemps pour être modifié.
|
||||
content_cannot_empty:
|
||||
other: Comment content cannot be empty.
|
||||
other: Le commentaire ne peut être vide.
|
||||
email:
|
||||
duplicate:
|
||||
other: L'adresse e-mail existe déjà.
|
||||
@@ -233,7 +233,9 @@ backend:
|
||||
cannot_update:
|
||||
other: Pas de permission pour mettre à jour.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
other: Le contenu ne peut pas être vide.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: Le rang de réputation ne remplit pas la condition.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: Vous ne pouvez pas supprimer un tag utilisé.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: Vous ne pouvez pas définir le synonyme de la balise actuelle comme elle-même.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: Le nom d'expéditeur ne peut pas être une adresse e-mail.
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "Erreur format {{.Field}} près de '{{.Content}}' à la ligne {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "Le nombre d'utilisateurs que vous ajoutez simultanément doit être compris entre 1-{{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: La lecture de la configuration a échoué
|
||||
@@ -494,7 +506,7 @@ backend:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Nouvelle question : {{.QuestionTitle}}"
|
||||
body:
|
||||
other: "<a href='{{.QuestionUrl}}'>{{.QuestionTitle}}</a><br>\n<small>{{.Tags}}</small><br><br>\n\n--<br>\nNote: This is an automatic system email, please do not reply to this message as your response will not be seen.<br><br>\n\n<small><a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
other: "<a href='{{.QuestionUrl}}'>{{.QuestionTitle}}</a><br>\n<small>{{.Tags}}</small><br><br>\n\n--<br>\nNote : Il s'agit d'un e-mail automatique, merci de ne pas répondre à ce message, votre réponse ne pourra être considérée.<br><br>\n\n<small><a href='{{.UnsubscribeUrl}}'>Se désabonner</a></small>"
|
||||
pass_reset:
|
||||
title:
|
||||
other: "[{{.SiteName }}] Réinitialisation du mot de passe"
|
||||
@@ -566,7 +578,7 @@ backend:
|
||||
name:
|
||||
other: Premier lien
|
||||
desc:
|
||||
other: First added a link to another post.
|
||||
other: A ajouté un lien vers un autre message.
|
||||
first_reaction:
|
||||
name:
|
||||
other: Première réaction
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: tag wiki
|
||||
create_tag: Créer un tag
|
||||
edit_tag: Modifier l'étiquette
|
||||
ask_a_question: Ajouter une question
|
||||
ask_a_question: Create Question
|
||||
edit_question: Modifier la question
|
||||
edit_answer: Modifier la réponse
|
||||
search: Rechercher
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: Erreur HTTP 500
|
||||
http_403: Erreur HTTP 403
|
||||
logout: Se déconnecter
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: Notifications
|
||||
inbox: Boîte de réception
|
||||
@@ -1030,14 +1053,14 @@ ui:
|
||||
tip: Êtes-vous sûr de vouloir supprimer ?
|
||||
close: Fermer
|
||||
merge:
|
||||
title: Merge tag
|
||||
source_tag_title: Source tag
|
||||
source_tag_description: The source tag and its associated data will be remapped to the target tag.
|
||||
target_tag_title: Target tag
|
||||
target_tag_description: A synonym between these two tags will be created after merging.
|
||||
no_results: No tags matched
|
||||
btn_submit: Submit
|
||||
btn_close: Close
|
||||
title: Étiquette de fusion
|
||||
source_tag_title: Étiquette de source
|
||||
source_tag_description: Cette étiquette de source et ses données associées seront réorganisées vers l'étiquette cible.
|
||||
target_tag_title: Étiquette cible
|
||||
target_tag_description: Un synonyme entre ces deux étiquettes sera créé après la fusion.
|
||||
no_results: Aucune étiquette correspondante
|
||||
btn_submit: Valider
|
||||
btn_close: Fermer
|
||||
edit_tag:
|
||||
title: Editer le tag
|
||||
default_reason: Éditer le tag
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: jour
|
||||
hours: heures
|
||||
days: jours
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: cœur
|
||||
smile: sourire
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: Plus
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: Ajouter une question
|
||||
title: Create Question
|
||||
edit_title: Modifier la question
|
||||
default_reason: Modifier la question
|
||||
default_first_reason: Ajouter une question
|
||||
default_first_reason: Create question
|
||||
similar_questions: Questions similaires
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: Modification
|
||||
title:
|
||||
label: Titre
|
||||
placeholder: Soyez précis et imaginez que vous posez une question à une autre personne
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: Le titre ne peut pas être vide.
|
||||
range: Titre de 150 caractères maximum
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: Corps
|
||||
msg:
|
||||
empty: Le corps ne peut pas être vide.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Étiquettes
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: Ajouter une étiquette
|
||||
create_btn: Créer une nouvelle étiquette
|
||||
search_tag: Rechercher une étiquette
|
||||
hint: "Décrivez en quoi consiste votre question, au moins une étiquette est requise."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: Aucune étiquette correspondante
|
||||
tag_required_text: Étiquette requise (au moins une)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: Rechercher
|
||||
footer:
|
||||
build_on: >-
|
||||
Propulsé par <1> Apache Answer </1>- le logiciel open-source qui alimente les communautés de Q&A.<br />Fait avec amour ©️ {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Remplacer
|
||||
loading: chargement en cours...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: Le nom ne peut pas être vide.
|
||||
range: Le nom doit contenir entre 2 et 30 caractères.
|
||||
character: 'Doit utiliser le jeu de caractères "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -1275,13 +1305,13 @@ ui:
|
||||
display_name:
|
||||
label: Nom affiché
|
||||
msg: Le nom ne peut être vide.
|
||||
msg_range: Le nom doit contenir moins de 30 caractères.
|
||||
msg_range: Le nom d'affichage doit contenir entre 2 et 30 caractères.
|
||||
username:
|
||||
label: Nom d'utilisateur
|
||||
caption: Les gens peuvent vous mentionner avec "@username".
|
||||
msg: Le nom d'utilisateur ne peut pas être vide.
|
||||
msg_range: Le nom d'utilisateur doit contenir moins de 30 caractères.
|
||||
character: 'Doit utiliser seulement les caractères "a-z", "0-9", " - . _"'
|
||||
msg_range: Le nom d'utilisateur doit contenir entre 2 et 30 caractères.
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Photo de profil
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: Votre révision s'affichera après vérification.
|
||||
sent_success: Envoyé avec succès
|
||||
related_question:
|
||||
title: Questions liées
|
||||
title: Related
|
||||
answers: réponses
|
||||
linked_question:
|
||||
title: Questions connexes
|
||||
description: Questions liées à
|
||||
no_linked_question: Aucune question liée à cette question.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: Personnes interrogées
|
||||
desc: Invite people who you think might know the answer.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Rechercher des personnes
|
||||
question_detail:
|
||||
action: Action
|
||||
created: Created
|
||||
Asked: Demandé
|
||||
asked: demandé
|
||||
update: Modifié
|
||||
Edited: Edited
|
||||
edit: modifié
|
||||
commented: commenté
|
||||
Views: Consultée
|
||||
@@ -1452,7 +1484,7 @@ ui:
|
||||
signup: S'inscrire
|
||||
logout: Se déconnecter
|
||||
verify: Vérifier
|
||||
create: Create
|
||||
create: Créer
|
||||
approve: Approuver
|
||||
reject: Rejeter
|
||||
skip: Ignorer
|
||||
@@ -1484,16 +1516,16 @@ ui:
|
||||
normal: Normal
|
||||
closed: Fermé
|
||||
deleted: Supprimé
|
||||
deleted_permanently: Deleted permanently
|
||||
deleted_permanently: Supprimé définitivement
|
||||
pending: En attente de traitement
|
||||
more: Plus
|
||||
view: View
|
||||
card: Card
|
||||
view: Vue
|
||||
card: Carte
|
||||
compact: Compact
|
||||
display_below: Display below
|
||||
always_display: Always display
|
||||
or: or
|
||||
back_sites: Back to sites
|
||||
display_below: Afficher dessous
|
||||
always_display: Toujours afficher
|
||||
or: ou
|
||||
back_sites: Retour aux sites
|
||||
search:
|
||||
title: Résultats de la recherche
|
||||
keywords: Mots-clés
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: Suivre
|
||||
following: Abonnements
|
||||
counts: "{{count}} Résultats"
|
||||
counts_loading: "... Results"
|
||||
more: Plus
|
||||
sort_btns:
|
||||
relevance: Pertinence
|
||||
@@ -1523,13 +1556,13 @@ ui:
|
||||
via: Partager via...
|
||||
copied: Copié
|
||||
facebook: Partager sur Facebook
|
||||
twitter: Share to X
|
||||
twitter: Partager sur X
|
||||
cannot_vote_for_self: Vous ne pouvez pas voter pour votre propre message.
|
||||
modal_confirm:
|
||||
title: Erreur...
|
||||
delete_permanently:
|
||||
title: Delete permanently
|
||||
content: Are you sure you want to delete permanently?
|
||||
title: Supprimer définitivement
|
||||
content: Êtes-vous sûr de vouloir supprimer définitivement ?
|
||||
account_result:
|
||||
success: Votre nouveau compte est confirmé; vous serez redirigé vers la page d'accueil.
|
||||
link: Continuer vers la page d'accueil
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: Toutes les questions
|
||||
x_questions: "{{ count }} questions"
|
||||
x_answers: "{{ count }} réponses"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Questions
|
||||
answers: Réponses
|
||||
newest: Les plus récents
|
||||
@@ -1634,22 +1668,22 @@ ui:
|
||||
placeholder: /data/answer.db
|
||||
msg: Le fichier de base de données ne doit pas être vide.
|
||||
ssl_enabled:
|
||||
label: Enable SSL
|
||||
label: Activer SSL
|
||||
ssl_enabled_on:
|
||||
label: On
|
||||
ssl_enabled_off:
|
||||
label: Off
|
||||
ssl_mode:
|
||||
label: SSL Mode
|
||||
label: Mode SSL
|
||||
ssl_root_cert:
|
||||
placeholder: sslrootcert file path
|
||||
msg: Path to sslrootcert file cannot be empty
|
||||
placeholder: Chemin du fichier sslrootcert
|
||||
msg: Le chemin vers le fichier sslrootcert ne peut pas être vide
|
||||
ssl_cert:
|
||||
placeholder: sslcert file path
|
||||
msg: Path to sslcert file cannot be empty
|
||||
placeholder: Chemin du fichier sslcert
|
||||
msg: Le chemin vers le fichier sslcert ne peut pas être vide
|
||||
ssl_key:
|
||||
placeholder: sslkey file path
|
||||
msg: Path to sslkey file cannot be empty
|
||||
placeholder: Chemin du fichier sslkey
|
||||
msg: Le chemin vers le fichier sslkey ne peut pas être vide
|
||||
config_yaml:
|
||||
title: Créer config.yaml
|
||||
label: Le fichier config.yaml a été créé.
|
||||
@@ -1682,8 +1716,8 @@ ui:
|
||||
admin_name:
|
||||
label: Nom
|
||||
msg: Le nom ne peut pas être vide.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: La longueur du nom doit être comprise entre 2 et 30 caractères.
|
||||
admin_password:
|
||||
label: Mot de passe
|
||||
text: >-
|
||||
@@ -1692,9 +1726,9 @@ ui:
|
||||
msg_min_length: Le mot de passe doit comporter au moins 8 caractères.
|
||||
msg_max_length: Le mot de passe doit comporter au maximum 32 caractères.
|
||||
admin_confirm_password:
|
||||
label: "Confirm Password"
|
||||
text: "Please re-enter your password to confirm."
|
||||
msg: "Confirm password does not match."
|
||||
label: "Répétez le mot de passe"
|
||||
text: "Veuillez saisir à nouveau votre mot de passe pour confirmer."
|
||||
msg: "Les mots de passe ne correspondent pas."
|
||||
admin_email:
|
||||
label: Email
|
||||
text: Vous aurez besoin de cet email pour vous connecter.
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: Marque
|
||||
legal: Légal
|
||||
write: Écrire
|
||||
terms: Terms
|
||||
tos: Conditions d'utilisation
|
||||
privacy: Confidentialité
|
||||
seo: SEO
|
||||
customize: Personnaliser
|
||||
themes: Thèmes
|
||||
css_html: CSS/HTML
|
||||
login: Se connecter
|
||||
privileges: Privilèges
|
||||
plugins: Extensions
|
||||
installed_plugins: Extensions installées
|
||||
apperance: Apparence
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Bienvenue sur {{site_name}}
|
||||
user_center:
|
||||
login: Connexion
|
||||
@@ -1852,10 +1899,10 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Nom affiché
|
||||
msg_range: Afficher le nom jusqu'à 30 caractères.
|
||||
msg_range: Le nom d'affichage doit contenir entre 2 et 30 caractères.
|
||||
username:
|
||||
label: Nom d'utilisateur
|
||||
msg_range: Nom d'utilisateur jusqu'à 30 caractères.
|
||||
msg_range: Le nom d'utilisateur doit contenir entre 2 et 30 caractères.
|
||||
email:
|
||||
label: Email
|
||||
msg_invalid: Adresse e-mail non valide.
|
||||
@@ -1889,7 +1936,8 @@ ui:
|
||||
reputation: Réputation
|
||||
created_at: Date de création
|
||||
delete_at: Date de suppression
|
||||
suspend_at: Temps de suspension
|
||||
suspend_at: Date de suspension
|
||||
suspend_until: Suspend until
|
||||
status: Statut
|
||||
role: Rôle
|
||||
action: Action
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Suspendre cet utilisateur
|
||||
content: Un utilisateur suspendu ne peut pas se connecter.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: Questions
|
||||
unlisted: Non listé
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: Fuseau Horaire
|
||||
msg: Le fuseau horaire ne peut pas être vide.
|
||||
text: Choisissez une ville dans le même fuseau horaire que vous.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2050,16 +2106,22 @@ ui:
|
||||
label: Protection des données
|
||||
text: "Vous pouvez ajouter le contenu des conditions de service ici. Si vous avez déjà un document hébergé ailleurs, veuillez fournir l'URL complète ici."
|
||||
external_content_display:
|
||||
label: External content
|
||||
text: "Content includes images, videos, and media embedded from external websites."
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
label: Contenu externe
|
||||
text: "Le contenu comprend des images, des vidéos et des médias intégrés à partir de sites web externes."
|
||||
always_display: Toujours afficher le contenu externe
|
||||
ask_before_display: Demander avant d'afficher le contenu externe
|
||||
write:
|
||||
page_title: Écrire
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Écriture de la réponse
|
||||
label: Chaque utilisateur ne peut écrire qu'une seule réponse pour chaque question
|
||||
text: "Désactivez pour permettre aux utilisateurs d'écrire plusieurs réponses à la même question, ce qui peut causer une perte de concentration des réponses."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Tags recommandés
|
||||
text: "Les balises recommandées apparaîtront par défaut dans la liste déroulante."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Jeu de couleurs
|
||||
navbar_style:
|
||||
label: Style de la Navbar
|
||||
label: Style d'arrière-plan de la barre de navigation
|
||||
primary_color:
|
||||
label: Couleur primaire
|
||||
text: Modifier les couleurs utilisées par vos thèmes
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS et HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Voir les logs
|
||||
status: Statut
|
||||
title: Badges
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (optionnel)
|
||||
empty: ne peut pas être vide
|
||||
@@ -2307,13 +2437,14 @@ ui:
|
||||
user_normal: Cet utilisateur est déjà normal.
|
||||
user_suspended: Cet utilisateur a été suspendu.
|
||||
user_deleted: Cet utilisateur a été supprimé.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: Ce badge a été activé.
|
||||
badge_inactivated: Ce badge a été désactivé.
|
||||
users_deleted: These users have been deleted.
|
||||
posts_deleted: These questions have been deleted.
|
||||
answers_deleted: These answers have been deleted.
|
||||
copy: Copy to clipboard
|
||||
copied: Copied
|
||||
external_content_warning: External images/media are not displayed.
|
||||
users_deleted: Ces utilisateurs ont été supprimés.
|
||||
posts_deleted: Ces questions ont été supprimées.
|
||||
answers_deleted: Ces réponses ont été supprimées.
|
||||
copy: Copier dans le presse-papier
|
||||
copied: Copié
|
||||
external_content_warning: Les images/médias externes ne sont pas affichés.
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -684,7 +684,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
|
||||
+151
-20
@@ -234,6 +234,8 @@ backend:
|
||||
other: No permission to update.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: Reputation rank fail to meet the condition.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: You cannot delete a tag that is in use.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: You cannot set the synonym of the current tag as itself.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: The from name cannot be a email address.
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "Error {{.Field}} format near '{{.Content}}' at line {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "The number of users you add at once should be in the range of 1-{{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Read config failed
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: tag wiki
|
||||
create_tag: Create Tag
|
||||
edit_tag: Edit Tag
|
||||
ask_a_question: Add Question
|
||||
ask_a_question: Create Question
|
||||
edit_question: Edit Question
|
||||
edit_answer: Edit Answer
|
||||
search: Search
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: HTTP Error 500
|
||||
http_403: HTTP Error 403
|
||||
logout: Log Out
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: Notifications
|
||||
inbox: Inbox
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: day
|
||||
hours: hours
|
||||
days: days
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: heart
|
||||
smile: smile
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: More
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: Add Question
|
||||
title: Create Question
|
||||
edit_title: Edit Question
|
||||
default_reason: Edit question
|
||||
default_first_reason: Add question
|
||||
default_first_reason: Create question
|
||||
similar_questions: Similar questions
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: Revision
|
||||
title:
|
||||
label: Title
|
||||
placeholder: Be specific and imagine you're asking a question to another person
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: Title cannot be empty.
|
||||
range: Title up to 150 characters
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: Body
|
||||
msg:
|
||||
empty: Body cannot be empty.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Tags
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: Add tag
|
||||
create_btn: Create new tag
|
||||
search_tag: Search tag
|
||||
hint: "Describe what your question is about, at least one tag is required."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: No tags matched
|
||||
tag_required_text: Required tag (at least one)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: Search
|
||||
footer:
|
||||
build_on: >-
|
||||
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Change
|
||||
loading: loading...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -1281,7 +1311,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile image
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: Your revision will show after review.
|
||||
sent_success: Sent successfully
|
||||
related_question:
|
||||
title: Related Questions
|
||||
title: Related
|
||||
answers: answers
|
||||
linked_question:
|
||||
title: Linked Questions
|
||||
description: Questions linked to
|
||||
no_linked_question: No questions linked from this question.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: People Asked
|
||||
desc: Select people who you think might know the answer.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
created: Created
|
||||
Asked: Asked
|
||||
asked: asked
|
||||
update: Modified
|
||||
Edited: Edited
|
||||
edit: edited
|
||||
commented: commented
|
||||
Views: Viewed
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: Follow
|
||||
following: Following
|
||||
counts: "{{count}} Results"
|
||||
counts_loading: "... Results"
|
||||
more: More
|
||||
sort_btns:
|
||||
relevance: Relevance
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: All Questions
|
||||
x_questions: "{{ count }} Questions"
|
||||
x_answers: "{{ count }} answers"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Questions
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: Name
|
||||
msg: Name cannot be empty.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: Password
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: Branding
|
||||
legal: Legal
|
||||
write: Write
|
||||
terms: Terms
|
||||
tos: Terms of Service
|
||||
privacy: Privacy
|
||||
seo: SEO
|
||||
customize: Customize
|
||||
themes: Themes
|
||||
css_html: CSS/HTML
|
||||
login: Login
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
user_center:
|
||||
login: Login
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: Name
|
||||
email: Email
|
||||
reputation: Reputation
|
||||
created_at: Created Time
|
||||
delete_at: Deleted Time
|
||||
suspend_at: Suspended Time
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Suspend until
|
||||
status: Status
|
||||
role: Role
|
||||
action: Action
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Suspend this user
|
||||
content: A suspended user can't log in.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: Questions
|
||||
unlisted: Unlisted
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: Timezone
|
||||
msg: Timezone cannot be empty.
|
||||
text: Choose a city in the same timezone as you.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: Write
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Answer write
|
||||
label: Each user can only write one answer for each question
|
||||
text: "Turn off to allow users to write multiple answers to the same question, which may cause answers to be unfocused."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Recommend tags
|
||||
text: "Recommend tags will show in the dropdown list by default."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Color scheme
|
||||
navbar_style:
|
||||
label: Navbar style
|
||||
label: Navbar background style
|
||||
primary_color:
|
||||
label: Primary color
|
||||
text: Modify the colors used by your themes
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS and HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Show logs
|
||||
status: Status
|
||||
title: Badges
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: cannot be empty
|
||||
@@ -2307,6 +2437,7 @@ ui:
|
||||
user_normal: This user is already normal.
|
||||
user_suspended: This user has been suspended.
|
||||
user_deleted: This user has been deleted.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: This badge has been activated.
|
||||
badge_inactivated: This badge has been inactivated.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
+1
-1
@@ -684,7 +684,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
|
||||
+1
-1
@@ -677,7 +677,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username up to 30 characters
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
|
||||
+153
-22
@@ -110,7 +110,7 @@ backend:
|
||||
rank_invite_someone_to_answer_label:
|
||||
other: Undang seseorang untuk menjawab
|
||||
rank_tag_add_label:
|
||||
other:
|
||||
other: Buat tag baru
|
||||
rank_tag_edit_label:
|
||||
other: Edit tag description (need to review)
|
||||
rank_question_edit_label:
|
||||
@@ -132,7 +132,7 @@ backend:
|
||||
rank_tag_synonym_label:
|
||||
other: Manage tag synonyms
|
||||
email:
|
||||
other:
|
||||
other: Email
|
||||
e_mail:
|
||||
other: Email
|
||||
password:
|
||||
@@ -234,6 +234,8 @@ backend:
|
||||
other: Tidak diizinkan untuk memperbarui.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: Reputation rank fail to meet the condition.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: You cannot delete a tag that is in use.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: Anda tidak bisa menetapkan sinonim dari tag saat ini dengan tag yang sama.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: The from name cannot be a email address.
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "Error {{.Field}} format near '{{.Content}}' at line {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "The number of users you add at once should be in the range of 1-{{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Gagal membaca konfigurasi
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: tag wiki
|
||||
create_tag: Create Tag
|
||||
edit_tag: Ubah Tag
|
||||
ask_a_question: Tambahkan Pertanyaan
|
||||
ask_a_question: Create Question
|
||||
edit_question: Sunting Pertanyaan
|
||||
edit_answer: Sunting jawaban
|
||||
search: Cari
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: HTTP Error 500
|
||||
http_403: HTTP Error 403
|
||||
logout: Log Out
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: Pemberitahuan
|
||||
inbox: Kotak Masuk
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: hari
|
||||
hours: hours
|
||||
days: days
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: heart
|
||||
smile: smile
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: More
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: Add Question
|
||||
title: Create Question
|
||||
edit_title: Edit Question
|
||||
default_reason: Edit question
|
||||
default_first_reason: Add question
|
||||
default_first_reason: Create question
|
||||
similar_questions: Similar questions
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: Revision
|
||||
title:
|
||||
label: Title
|
||||
placeholder: Be specific and imagine you're asking a question to another person
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: Title cannot be empty.
|
||||
range: Title up to 150 characters
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: Body
|
||||
msg:
|
||||
empty: Body cannot be empty.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Tags
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: Add tag
|
||||
create_btn: Create new tag
|
||||
search_tag: Search tag
|
||||
hint: "Describe what your question is about, at least one tag is required."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: No tags matched
|
||||
tag_required_text: Required tag (at least one)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: Cari
|
||||
footer:
|
||||
build_on: >-
|
||||
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Ubah
|
||||
loading: sedang memuat...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: Nama tidak boleh kosong.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -1281,7 +1311,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile image
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: Revisi Anda akan ditampilkan setelah ditinjau.
|
||||
sent_success: Sent successfully
|
||||
related_question:
|
||||
title: Pertanyaan Terkait
|
||||
title: Related
|
||||
answers: jawaban
|
||||
linked_question:
|
||||
title: Linked Questions
|
||||
description: Questions linked to
|
||||
no_linked_question: No questions linked from this question.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: People Asked
|
||||
desc: Select people who you think might know the answer.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
created: Created
|
||||
Asked: Ditanyakan
|
||||
asked: ditanyakan
|
||||
update: Diubah
|
||||
Edited: Edited
|
||||
edit: disunting
|
||||
commented: commented
|
||||
Views: Dilihat
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: Follow
|
||||
following: Following
|
||||
counts: "{{count}} Results"
|
||||
counts_loading: "... Results"
|
||||
more: More
|
||||
sort_btns:
|
||||
relevance: Relevance
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: All Questions
|
||||
x_questions: "{{ count }} Questions"
|
||||
x_answers: "{{ count }} answers"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Questions
|
||||
answers: Jawaban
|
||||
newest: Terbaru
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: Name
|
||||
msg: Name cannot be empty.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: Password
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: Branding
|
||||
legal: Legal
|
||||
write: Write
|
||||
terms: Terms
|
||||
tos: Terms of Service
|
||||
privacy: Privasi
|
||||
seo: SEO
|
||||
customize: Kostumisasi
|
||||
themes: Tema
|
||||
css_html: CSS/HTML
|
||||
login: Masuk
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
user_center:
|
||||
login: Login
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: Name
|
||||
email: Email
|
||||
reputation: Reputation
|
||||
created_at: Waktu Pembuatan
|
||||
delete_at: Waktu Penghapusan
|
||||
suspend_at: Waktu penundaan
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Suspend until
|
||||
status: Status
|
||||
role: Role
|
||||
action: Action
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Suspend this user
|
||||
content: A suspended user can't log in.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: Pertanyaan
|
||||
unlisted: Unlisted
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: Timezone
|
||||
msg: Timezone cannot be empty.
|
||||
text: Choose a city in the same timezone as you.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: Write
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Answer write
|
||||
label: Each user can only write one answer for each question
|
||||
text: "Turn off to allow users to write multiple answers to the same question, which may cause answers to be unfocused."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Recommend tags
|
||||
text: "Recommend tags will show in the dropdown list by default."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Color scheme
|
||||
navbar_style:
|
||||
label: Navbar style
|
||||
label: Navbar background style
|
||||
primary_color:
|
||||
label: Primary color
|
||||
text: Modify the colors used by your themes
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS and HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Show logs
|
||||
status: Status
|
||||
title: Badges
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: cannot be empty
|
||||
@@ -2307,6 +2437,7 @@ ui:
|
||||
user_normal: This user is already normal.
|
||||
user_suspended: This user has been suspended.
|
||||
user_deleted: This user has been deleted.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: This badge has been activated.
|
||||
badge_inactivated: This badge has been inactivated.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
+165
-34
@@ -58,7 +58,7 @@ backend:
|
||||
undelete:
|
||||
other: Ripristina
|
||||
merge:
|
||||
other: Merge
|
||||
other: Unisci
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
@@ -140,7 +140,7 @@ backend:
|
||||
pass:
|
||||
other: Password
|
||||
old_pass:
|
||||
other: Current password
|
||||
other: Password attuale
|
||||
original_text:
|
||||
other: Questo post
|
||||
email_or_password_wrong_error:
|
||||
@@ -173,7 +173,7 @@ backend:
|
||||
question_closed_cannot_add:
|
||||
other: Le domande sono chiuse e non possono essere aggiunte.
|
||||
content_cannot_empty:
|
||||
other: Answer content cannot be empty.
|
||||
other: Il contenuto della risposta non può essere vuoto.
|
||||
comment:
|
||||
edit_without_permission:
|
||||
other: Non si hanno di privilegi sufficienti per modificare il commento.
|
||||
@@ -182,7 +182,7 @@ backend:
|
||||
cannot_edit_after_deadline:
|
||||
other: Il tempo per editare è scaduto.
|
||||
content_cannot_empty:
|
||||
other: Comment content cannot be empty.
|
||||
other: Il commento non può essere vuoto.
|
||||
email:
|
||||
duplicate:
|
||||
other: Email già esistente.
|
||||
@@ -233,7 +233,9 @@ backend:
|
||||
cannot_update:
|
||||
other: Nessun permesso per l'aggiornamento.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
other: Il contenuto non può essere vuoto.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: Il rango di reputazione non soddisfa le condizioni.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: Non è possibile eliminare un tag in uso.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: Non puoi impostare il sinonimo del tag corrente come se stesso.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: Il mittente non può essere un indirizzo email.
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "Errore {{.Field}} formato vicino a '{{.Content}}' alla riga {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "Il numero di utenti che aggiungi contemporaneamente dovrebbe essere compreso tra 1 e {{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>Questo utente è stato sospeso per sempre.</strong> Questo utente non soddisfa le linee guida della comunità."
|
||||
status_suspended_until:
|
||||
other: "<strong>Questo utente è stato sospeso fino a {{.SuspendedUntil}}.</strong> Questo utente non soddisfa le linee guida della comunità."
|
||||
status_deleted:
|
||||
other: "Utente eliminato."
|
||||
status_inactive:
|
||||
other: "L'utente è inattivo."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Configurazione lettura fallita
|
||||
@@ -494,7 +506,7 @@ backend:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Nuova domanda: {{.QuestionTitle}}"
|
||||
body:
|
||||
other: "<a href='{{.QuestionUrl}}'>{{.QuestionTitle}}</a><br>\n<small>{{.Tags}}</small><br><br>\n\n--<br>\nNote: This is an automatic system email, please do not reply to this message as your response will not be seen.<br><br>\n\n<small><a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
other: "<a href='{{.QuestionUrl}}'>{{.QuestionTitle}}</a><br>\n<small>{{.Tags}}</small><br><br>\n\n--<br>\nNota: Si tratta di un'email di sistema automatica, non rispondere a questo messaggio perché la tua risposta non sarà visualizzata.<br><br>\n\n<small><a href='{{.UnsubscribeUrl}}'>Cancellati</a></small>"
|
||||
pass_reset:
|
||||
title:
|
||||
other: "[{{.SiteName }}] Reimpostazione della password"
|
||||
@@ -566,7 +578,7 @@ backend:
|
||||
name:
|
||||
other: Primo Link
|
||||
desc:
|
||||
other: First added a link to another post.
|
||||
other: Per prima cosa è stato aggiunto un link ad un altro post.
|
||||
first_reaction:
|
||||
name:
|
||||
other: Prima Reazione
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: tag wiki
|
||||
create_tag: Crea tag
|
||||
edit_tag: Modifica Tag
|
||||
ask_a_question: Aggiungi una domanda
|
||||
ask_a_question: Crea domanda
|
||||
edit_question: Modifica Domanda
|
||||
edit_answer: Modifica risposta
|
||||
search: Cerca
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: Errore HTTP 500
|
||||
http_403: Errore HTTP 403
|
||||
logout: Disconnetti
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: Notifiche
|
||||
inbox: Posta in arrivo
|
||||
@@ -1030,9 +1053,9 @@ ui:
|
||||
tip: Sei sicuro di voler cancellare?
|
||||
close: Chiudi
|
||||
merge:
|
||||
title: Merge tag
|
||||
source_tag_title: Source tag
|
||||
source_tag_description: The source tag and its associated data will be remapped to the target tag.
|
||||
title: Unisci tag
|
||||
source_tag_title: Cerca tag
|
||||
source_tag_description: Il tag sorgente e i dati associati verranno rimappati al tag di destinazione.
|
||||
target_tag_title: Target tag
|
||||
target_tag_description: A synonym between these two tags will be created after merging.
|
||||
no_results: No tags matched
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: giorno
|
||||
hours: ore
|
||||
days: giorni
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: cuore
|
||||
smile: sorriso
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: Altro
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: Aggiungi una domanda
|
||||
title: Create Question
|
||||
edit_title: Modifica Domanda
|
||||
default_reason: Modifica domanda
|
||||
default_first_reason: Aggiungi una domanda
|
||||
default_first_reason: Create question
|
||||
similar_questions: Domande simili
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: Revisione
|
||||
title:
|
||||
label: Titolo
|
||||
placeholder: Sii specifico e immagina tu stia facendo una domanda ad un'altra persona
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: Il titolo non può essere vuoto.
|
||||
range: Il titolo non può superare i 150 caratteri
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: Contenuto
|
||||
msg:
|
||||
empty: Il corpo del testo non può essere vuoto.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Tags
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: Aggiungi tag
|
||||
create_btn: Crea un nuovo tag
|
||||
search_tag: Cerca tag
|
||||
hint: "Descrivi qual è la tua domanda, è richiesto almeno un tag."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: Nessun tag corrispondente
|
||||
tag_required_text: Tag richiesto (almeno uno)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: Cerca
|
||||
footer:
|
||||
build_on: >-
|
||||
Basato su <1> Apache Answer </1>, il software open source che alimenta le comunità di domande e risposte.<br />Fatto con amore © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Modifica
|
||||
loading: caricamento in corso...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: Il nome non può essere vuoto.
|
||||
range: Il nome deve essere di lunghezza compresa tra 2 e 30 caratteri.
|
||||
character: 'È necessario utilizzare il set di caratteri "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: E-mail
|
||||
msg:
|
||||
@@ -1275,13 +1305,13 @@ ui:
|
||||
display_name:
|
||||
label: Visualizza nome
|
||||
msg: Il nome utente non può essere vuoto.
|
||||
msg_range: Il nome utente non può superare i 30 caratteri.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Nome utente
|
||||
caption: Gli altri utenti possono menzionarti con @{{username}}.
|
||||
msg: Il nome utente non può essere vuoto.
|
||||
msg_range: Nome utente fino a 30 caratteri.
|
||||
character: 'È necessario utilizzare il set di caratteri "a-z", "0-9", " - . _"'
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Immagine del profilo
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: Le tue modifiche verranno visualizzata dopo la revisione.
|
||||
sent_success: Inviato correttamente
|
||||
related_question:
|
||||
title: Domande correlate
|
||||
title: Related
|
||||
answers: risposte
|
||||
linked_question:
|
||||
title: Domande correlate
|
||||
description: Domande connesse a
|
||||
no_linked_question: Nessuna domanda legata a questa domanda.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: Persone Interpellate
|
||||
desc: Seleziona le persone che pensi potrebbero conoscere la risposta.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Cerca persone
|
||||
question_detail:
|
||||
action: Azione
|
||||
created: Created
|
||||
Asked: Chiesto
|
||||
asked: chiesto
|
||||
update: Modificato
|
||||
Edited: Edited
|
||||
edit: modificato
|
||||
commented: commentato
|
||||
Views: Visualizzati
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: Segui
|
||||
following: Segui già
|
||||
counts: "{{count}} Risultati"
|
||||
counts_loading: "... Results"
|
||||
more: Altro
|
||||
sort_btns:
|
||||
relevance: Rilevanza
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: Tutte le domande
|
||||
x_questions: "{{ count }} Domande"
|
||||
x_answers: "{{count}} risposte"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Domande
|
||||
answers: Risposte
|
||||
newest: Più recenti
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: Nome
|
||||
msg: Il nome non può essere vuoto.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: Password
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: Marchio
|
||||
legal: Legale
|
||||
write: Scrivi
|
||||
terms: Terms
|
||||
tos: Termini del servizio
|
||||
privacy: Privacy
|
||||
seo: SEO
|
||||
customize: Personalizza
|
||||
themes: Temi
|
||||
css_html: CSS/HTML
|
||||
login: Accedi
|
||||
privileges: Privilegi
|
||||
plugins: Plugin
|
||||
installed_plugins: Plugin installati
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Benvenuto/a su {{site_name}}!
|
||||
user_center:
|
||||
login: Accedi
|
||||
@@ -1852,10 +1899,10 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Visualizza nome
|
||||
msg_range: Il nome utente non può superare i 30 caratteri.
|
||||
msg_range: Il nome visualizzato deve essere di 2-30 caratteri di lunghezza.
|
||||
username:
|
||||
label: Nome utente
|
||||
msg_range: Nome utente fino a 30 caratteri.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg_invalid: Indirizzo e-mail non valido.
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: Nome
|
||||
email: E-mail
|
||||
reputation: Reputazione
|
||||
created_at: Data di creazione
|
||||
delete_at: Data di cancellazione
|
||||
suspend_at: Data di sospensione
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Sospendi fino al
|
||||
status: Stato
|
||||
role: Ruolo
|
||||
action: Azione
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Sospendi questo utente
|
||||
content: Un utente sospeso non può accedere.
|
||||
label: Per quanto tempo vuoi sospendere l'utente?
|
||||
forever: Per sempre
|
||||
questions:
|
||||
page_title: Domande
|
||||
unlisted: Rimosso dall'elenco
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: Fuso orario
|
||||
msg: Il fuso orario non può essere vuoto.
|
||||
text: Scegli una città con il tuo stesso fuso orario.
|
||||
avatar:
|
||||
label: Avatar Predefinito
|
||||
text: Per gli utenti senza un proprio avatar personalizzato.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: Protocollo di Trasferimento Posta Semplice
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: Scrivi
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Risposta a scrivere
|
||||
label: Ogni utente può scrivere una sola risposta per ogni domanda
|
||||
text: "Disattiva per consentire agli utenti di scrivere risposte multiple alla stessa domanda, il che potrebbe causare una risposta sfocata."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Raccomanda tag
|
||||
text: "I tag consigliati verranno mostrati nell'elenco a discesa per impostazione predefinita."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Schema colore
|
||||
navbar_style:
|
||||
label: Stile della barra di navigazione
|
||||
label: Navbar background style
|
||||
primary_color:
|
||||
label: Colore primario
|
||||
text: Modifica i colori utilizzati dai tuoi temi
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS e HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Visualizza i log
|
||||
status: Stato
|
||||
title: Badges
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (opzionale)
|
||||
empty: non può essere vuoto
|
||||
@@ -2307,6 +2437,7 @@ ui:
|
||||
user_normal: Questo utente è già normale.
|
||||
user_suspended: Questo utente è stato sospeso.
|
||||
user_deleted: Questo utente è stato eliminato.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: Questo badge è stato attivato.
|
||||
badge_inactivated: Questo badge è stato disattivato.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
+210
-79
@@ -58,7 +58,7 @@ backend:
|
||||
undelete:
|
||||
other: 復元する
|
||||
merge:
|
||||
other: Merge
|
||||
other: マージ
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
@@ -140,7 +140,7 @@ backend:
|
||||
pass:
|
||||
other: パスワード
|
||||
old_pass:
|
||||
other: Current password
|
||||
other: 現在のパスワード
|
||||
original_text:
|
||||
other: 投稿
|
||||
email_or_password_wrong_error:
|
||||
@@ -173,7 +173,7 @@ backend:
|
||||
question_closed_cannot_add:
|
||||
other: 質問はクローズされて、追加できません。
|
||||
content_cannot_empty:
|
||||
other: Answer content cannot be empty.
|
||||
other: 回答を入力してください。
|
||||
comment:
|
||||
edit_without_permission:
|
||||
other: コメントを編集することはできません。
|
||||
@@ -182,7 +182,7 @@ backend:
|
||||
cannot_edit_after_deadline:
|
||||
other: コメント時間が長すぎて変更できません。
|
||||
content_cannot_empty:
|
||||
other: Comment content cannot be empty.
|
||||
other: コメントを入力してください。
|
||||
email:
|
||||
duplicate:
|
||||
other: メールアドレスは既に存在しています。
|
||||
@@ -233,7 +233,9 @@ backend:
|
||||
cannot_update:
|
||||
other: 更新する権限がありません。
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
other: 内容を入力してください。
|
||||
content_less_than_minimum:
|
||||
other: 入力された内容の文字数が足りません。
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: 評判ランクが条件を満たしていません
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: 使用中のタグは削除できません。
|
||||
cannot_set_synonym_as_itself:
|
||||
other: 現在のタグの同義語をそのものとして設定することはできません。
|
||||
minimum_count:
|
||||
other: タグが不足しています。
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: Fromの名前はメールアドレスにできません。
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "Error {{.Field}} format near '{{.Content}}' at line {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "一度に追加するユーザーの数は、1 -{{.MaxAmount}} の範囲にする必要があります。"
|
||||
status_suspended_forever:
|
||||
other: "<strong>このユーザーは永久に停止されました。</strong> このユーザーはコミュニティガイドラインに準拠していません。"
|
||||
status_suspended_until:
|
||||
other: "<strong>このユーザーは {{.SuspendedUntil}} まで利用停止となりました。</strong> このユーザーはコミュニティ ガイドラインに準拠していません。"
|
||||
status_deleted:
|
||||
other: "このユーザーは削除されました。"
|
||||
status_inactive:
|
||||
other: "このユーザーは非アクティブです。"
|
||||
config:
|
||||
read_config_failed:
|
||||
other: configの読み込みに失敗しました
|
||||
@@ -494,7 +506,7 @@ backend:
|
||||
title:
|
||||
other: "[{{.SiteName}}] 新しい質問: {{.QuestionTitle}}"
|
||||
body:
|
||||
other: "<a href='{{.QuestionUrl}}'>{{.QuestionTitle}}</a><br>\n<small>{{.Tags}}</small><br><br>\n\n--<br>\nNote: This is an automatic system email, please do not reply to this message as your response will not be seen.<br><br>\n\n<small><a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
other: "<a href='{{.QuestionUrl}}'>{{.QuestionTitle}}</a><br>\n<small>{{.Tags}}</small><br><br>\n\n--<br>\n注: これはシステムから送信される自動メールです。ご返信いただいても返信は表示されませんので、ご返信はご遠慮ください。<br><br>\n\n<small><a href='{{.UnsubscribeUrl}}'>購読解除</a></small>"
|
||||
pass_reset:
|
||||
title:
|
||||
other: "[{{.SiteName }}] パスワードリセット"
|
||||
@@ -566,7 +578,7 @@ backend:
|
||||
name:
|
||||
other: はじめてのリンク
|
||||
desc:
|
||||
other: First added a link to another post.
|
||||
other: 初めて別の投稿へのリンクを追加した。
|
||||
first_reaction:
|
||||
name:
|
||||
other: 初めてのリアクション
|
||||
@@ -586,17 +598,17 @@ backend:
|
||||
name:
|
||||
other: コメントマン
|
||||
desc:
|
||||
other: 5つコメントをした
|
||||
other: 5つのコメントをした
|
||||
new_user_of_the_month:
|
||||
name:
|
||||
other: 今月の新しいユーザー
|
||||
desc:
|
||||
other: 最初の月に優れた貢献
|
||||
other: 最初の1ヶ月で優れた貢献をした
|
||||
read_guidelines:
|
||||
name:
|
||||
other: ガイドラインを読んだ
|
||||
desc:
|
||||
other: '「コミュニティガイドライン」をご覧ください。'
|
||||
other: '「コミュニティガイドライン」を読んだ'
|
||||
reader:
|
||||
name:
|
||||
other: リーダー
|
||||
@@ -736,7 +748,7 @@ backend:
|
||||
name:
|
||||
other: 素晴らしい回答
|
||||
desc:
|
||||
other: 回答スコアは50以上!!!!1
|
||||
other: 回答スコアは50以上!!!!
|
||||
nice_question:
|
||||
name:
|
||||
other: ナイスな質問
|
||||
@@ -808,7 +820,7 @@ ui:
|
||||
tag_wiki: タグ wiki
|
||||
create_tag: タグを作成
|
||||
edit_tag: タグを編集
|
||||
ask_a_question: 質問を追加
|
||||
ask_a_question: 質問を作成
|
||||
edit_question: 質問を編集
|
||||
edit_answer: 回答を編集
|
||||
search: 検索
|
||||
@@ -832,6 +844,17 @@ ui:
|
||||
http_50X: HTTP エラー 500
|
||||
http_403: HTTP エラー 403
|
||||
logout: ログアウト
|
||||
posts: 投稿
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: 通知
|
||||
inbox: 受信トレイ
|
||||
@@ -1029,14 +1052,14 @@ ui:
|
||||
tip: 本当に削除してもよろしいですか?
|
||||
close: クローズ
|
||||
merge:
|
||||
title: Merge tag
|
||||
source_tag_title: Source tag
|
||||
source_tag_description: The source tag and its associated data will be remapped to the target tag.
|
||||
target_tag_title: Target tag
|
||||
target_tag_description: A synonym between these two tags will be created after merging.
|
||||
no_results: No tags matched
|
||||
btn_submit: Submit
|
||||
btn_close: Close
|
||||
title: タグをマージ
|
||||
source_tag_title: ソース タグ
|
||||
source_tag_description: ソースタグとそれに関連付けられたデータは、ターゲットタグに再マップされます。
|
||||
target_tag_title: ターゲットタグ
|
||||
target_tag_description: マージ後、これら2つのタグの同義語が作成されます。
|
||||
no_results: 一致するタグはありません
|
||||
btn_submit: 送信
|
||||
btn_close: 閉じる
|
||||
edit_tag:
|
||||
title: タグを編集
|
||||
default_reason: タグを編集
|
||||
@@ -1055,6 +1078,9 @@ ui:
|
||||
day: 日
|
||||
hours: 時
|
||||
days: 日
|
||||
month: 月
|
||||
months: ヶ月
|
||||
year: 年
|
||||
reaction:
|
||||
heart: ハート
|
||||
smile: 笑顔
|
||||
@@ -1110,10 +1136,10 @@ ui:
|
||||
more: もっと見る
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: 質問を追加
|
||||
title: 質問を作成
|
||||
edit_title: 質問を編集
|
||||
default_reason: 質問を編集
|
||||
default_first_reason: 質問を追加
|
||||
default_first_reason: 質問を作成
|
||||
similar_questions: 類似の質問
|
||||
form:
|
||||
fields:
|
||||
@@ -1121,7 +1147,7 @@ ui:
|
||||
label: 修正
|
||||
title:
|
||||
label: タイトル
|
||||
placeholder: 具体的にして、あなたが他の人に質問していると想像してください
|
||||
placeholder: どのようなトピックですか?具体的に教えてください。
|
||||
msg:
|
||||
empty: タイトルを空にすることはできません。
|
||||
range: タイトルは最大150文字までです
|
||||
@@ -1129,6 +1155,9 @@ ui:
|
||||
label: 本文
|
||||
msg:
|
||||
empty: 本文を空にすることはできません。
|
||||
hint:
|
||||
optional_body: 質問を記載してください。
|
||||
minimum_characters: "質問を記載してください。{{min_content_length}} 文字以上の記載が必要です。"
|
||||
tags:
|
||||
label: タグ
|
||||
msg:
|
||||
@@ -1149,7 +1178,9 @@ ui:
|
||||
add_btn: タグを追加
|
||||
create_btn: 新しタグを作成
|
||||
search_tag: タグを検索
|
||||
hint: "質問について説明してください。少なくとも1つのタグが必要です。"
|
||||
hint: 内容を記載してください。1つ以上のタグが必要です。
|
||||
hint_zero_tags: 内容を記載してください。
|
||||
hint_more_than_one_tag: "内容を記載してください。{{min_content_length}} 文字以上の記載が必要です。"
|
||||
no_result: 一致するタグはありません
|
||||
tag_required_text: 必須タグ (少なくとも 1 つ)
|
||||
header:
|
||||
@@ -1168,8 +1199,7 @@ ui:
|
||||
search:
|
||||
placeholder: 検索
|
||||
footer:
|
||||
build_on: >-
|
||||
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: 変更
|
||||
loading: 読み込み中…
|
||||
@@ -1202,7 +1232,7 @@ ui:
|
||||
msg:
|
||||
empty: 名前を空にすることはできません。
|
||||
range: 2~30文字の名前を設定してください。
|
||||
character: '文字セット "a-z", "A-Z", "0-9", " - " を使用する必要があります。'
|
||||
character: '使用可能な文字は、英小字「a-z」、数字「0-9」、記号「- . _ 」のみです'
|
||||
email:
|
||||
label: メールアドレス
|
||||
msg:
|
||||
@@ -1274,13 +1304,13 @@ ui:
|
||||
display_name:
|
||||
label: 表示名
|
||||
msg: 表示名は必須です。
|
||||
msg_range: 表示名は最大 30 文字までです。
|
||||
msg_range: 表示名は 2 ~ 30 文字で入力してください。
|
||||
username:
|
||||
label: ユーザー名
|
||||
caption: ユーザーは "@username" としてあなたをメンションできます。
|
||||
msg: ユーザー名は空にできません。
|
||||
msg_range: 表示名は最大 30 文字までです。
|
||||
character: '文字セット "a-z", "0-9", " - . _" を使用してください。'
|
||||
msg_range: ユーザー名は2 ~ 30文字で入力してください。
|
||||
character: '使用可能な文字は、英小字「a-z」、数字「0-9」、記号「- . _ 」のみです'
|
||||
avatar:
|
||||
label: プロフィール画像
|
||||
gravatar: Gravatar
|
||||
@@ -1355,23 +1385,25 @@ ui:
|
||||
review: レビュー後にあなたのリビジョンが表示されます。
|
||||
sent_success: 正常に送信されました。
|
||||
related_question:
|
||||
title: 関係のある質問
|
||||
title: 関連
|
||||
answers: 回答
|
||||
linked_question:
|
||||
title: リンクされた質問
|
||||
description: リンクされている質問
|
||||
no_linked_question: この質問からリンクされた質問はありません。
|
||||
title: リンク済
|
||||
description: リンクされた投稿
|
||||
no_linked_question: このコンテンツからリンクされたコンテンツはありません。
|
||||
invite_to_answer:
|
||||
title: People Asked
|
||||
desc: Select people who you think might know the answer.
|
||||
title: 回答をリクエスト
|
||||
desc: 答えられそうな人を招待します。
|
||||
invite: 回答に招待する
|
||||
add: ユーザーを追加
|
||||
search: ユーザーを検索
|
||||
question_detail:
|
||||
action: 動作
|
||||
created: 作成済
|
||||
Asked: 質問済み
|
||||
asked: 質問済み
|
||||
update: 修正済み
|
||||
Edited: 編集済
|
||||
edit: 編集済み
|
||||
commented: コメントしました
|
||||
Views: 閲覧回数
|
||||
@@ -1453,7 +1485,7 @@ ui:
|
||||
signup: 新規登録
|
||||
logout: ログアウト
|
||||
verify: 認証
|
||||
create: Create
|
||||
create: 作成
|
||||
approve: 承認
|
||||
reject: 却下
|
||||
skip: スキップする
|
||||
@@ -1485,16 +1517,16 @@ ui:
|
||||
normal: 通常
|
||||
closed: クローズ済み
|
||||
deleted: 削除済み
|
||||
deleted_permanently: Deleted permanently
|
||||
deleted_permanently: 完全に削除する
|
||||
pending: 処理待ち
|
||||
more: もっと見る
|
||||
view: View
|
||||
card: Card
|
||||
compact: Compact
|
||||
display_below: Display below
|
||||
always_display: Always display
|
||||
or: or
|
||||
back_sites: Back to sites
|
||||
view: 表示方法
|
||||
card: カード
|
||||
compact: コンパクト
|
||||
display_below: 以下に表示
|
||||
always_display: 常に表示
|
||||
or: または
|
||||
back_sites: サイトに戻る
|
||||
search:
|
||||
title: 検索結果
|
||||
keywords: キーワード
|
||||
@@ -1502,6 +1534,7 @@ ui:
|
||||
follow: フォロー
|
||||
following: フォロー中
|
||||
counts: "結果:{{count}}"
|
||||
counts_loading: "... 結果"
|
||||
more: もっと見る
|
||||
sort_btns:
|
||||
relevance: 関連性
|
||||
@@ -1524,13 +1557,13 @@ ui:
|
||||
via: 投稿を共有...
|
||||
copied: コピーしました
|
||||
facebook: Facebookで共有
|
||||
twitter: Share to X
|
||||
twitter: Xでシェア
|
||||
cannot_vote_for_self: 自分の投稿には投票できません。
|
||||
modal_confirm:
|
||||
title: エラー...
|
||||
delete_permanently:
|
||||
title: Delete permanently
|
||||
content: Are you sure you want to delete permanently?
|
||||
title: 完全に削除する
|
||||
content: 完全に削除しても良いですか?
|
||||
account_result:
|
||||
success: 新しいアカウントが確認されました。ホームページにリダイレクトされます。
|
||||
link: ホームページへ
|
||||
@@ -1553,12 +1586,13 @@ ui:
|
||||
all_questions: すべての質問
|
||||
x_questions: "{{ count }} の質問"
|
||||
x_answers: "{{ count }} の回答"
|
||||
x_posts: "{{ count }} の回答"
|
||||
questions: 質問
|
||||
answers: 回答
|
||||
newest: 最新
|
||||
active: 有効
|
||||
hot: 人気
|
||||
frequent: Frequent
|
||||
frequent: 関心順
|
||||
recommend: おすすめ
|
||||
score: スコア
|
||||
unanswered: 未回答
|
||||
@@ -1635,22 +1669,22 @@ ui:
|
||||
placeholder: /data/answer.db
|
||||
msg: データベースファイルは空にできません。
|
||||
ssl_enabled:
|
||||
label: Enable SSL
|
||||
label: SSLを有効化
|
||||
ssl_enabled_on:
|
||||
label: On
|
||||
ssl_enabled_off:
|
||||
label: Off
|
||||
ssl_mode:
|
||||
label: SSL Mode
|
||||
label: SSL モード
|
||||
ssl_root_cert:
|
||||
placeholder: sslrootcert file path
|
||||
msg: Path to sslrootcert file cannot be empty
|
||||
placeholder: sslrootcert ファイルパス
|
||||
msg: sslrootcert ファイルパスは空にできません
|
||||
ssl_cert:
|
||||
placeholder: sslcert file path
|
||||
msg: Path to sslcert file cannot be empty
|
||||
placeholder: sslcert ファイルパス
|
||||
msg: sslcert ファイルパスは空にできません
|
||||
ssl_key:
|
||||
placeholder: sslkey file path
|
||||
msg: Path to sslkey file cannot be empty
|
||||
placeholder: sslkey ファイルパス
|
||||
msg: sslkey ファイルパスは空にできません
|
||||
config_yaml:
|
||||
title: config.yamlを作成
|
||||
label: config.yaml ファイルが作成されました。
|
||||
@@ -1683,8 +1717,8 @@ ui:
|
||||
admin_name:
|
||||
label: 名前
|
||||
msg: 名前を空にすることはできません。
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
character: '使用可能な文字は、英小字「a-z」、数字「0-9」、記号「- . _ 」のみです'
|
||||
msg_max_length: 名前は2 ~ 30文字で入力してください。
|
||||
admin_password:
|
||||
label: パスワード
|
||||
text: >-
|
||||
@@ -1693,9 +1727,9 @@ ui:
|
||||
msg_min_length: パスワードは8文字以上でなければなりません。
|
||||
msg_max_length: パスワードは最大 32 文字でなければなりません。
|
||||
admin_confirm_password:
|
||||
label: "Confirm Password"
|
||||
text: "Please re-enter your password to confirm."
|
||||
msg: "Confirm password does not match."
|
||||
label: "パスワードの確認"
|
||||
text: "確認のため、パスワードを再入力してください。"
|
||||
msg: "確認用パスワードが一致しません"
|
||||
admin_email:
|
||||
label: メールアドレス
|
||||
text: ログインするにはこのメールアドレスが必要です。
|
||||
@@ -1743,17 +1777,30 @@ ui:
|
||||
smtp: SMTP
|
||||
branding: ブランディング
|
||||
legal: 法的事項
|
||||
write: 書き
|
||||
write: 編集
|
||||
terms: 規約
|
||||
tos: 利用規約
|
||||
privacy: プライバシー
|
||||
seo: SEO
|
||||
customize: カスタマイズ
|
||||
themes: テーマ
|
||||
css_html: CSS/HTML
|
||||
login: ログイン
|
||||
privileges: 特典
|
||||
plugins: プラグイン
|
||||
installed_plugins: 使用中のプラグイン
|
||||
apperance: 外観
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: '{{site_name}} へようこそ'
|
||||
user_center:
|
||||
login: ログイン
|
||||
@@ -1853,10 +1900,10 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: 表示名
|
||||
msg_range: 表示名は最大 30 文字までです。
|
||||
msg_range: 表示名は 2 ~ 30 文字で入力してください。
|
||||
username:
|
||||
label: ユーザー名
|
||||
msg_range: ユーザー名は30文字までです。
|
||||
msg_range: ユーザー名は 2 ~ 30 文字で入力してください。
|
||||
email:
|
||||
label: メールアドレス
|
||||
msg_invalid: 無効なメールアドレス
|
||||
@@ -1890,7 +1937,8 @@ ui:
|
||||
reputation: 評価
|
||||
created_at: 作成日時
|
||||
delete_at: 削除日時
|
||||
suspend_at: サスペンド時間
|
||||
suspend_at: 凍結時間
|
||||
suspend_until: まで凍結
|
||||
status: ステータス
|
||||
role: ロール
|
||||
action: 操作
|
||||
@@ -1925,6 +1973,8 @@ ui:
|
||||
suspend_user:
|
||||
title: ユーザーをサスペンドにする
|
||||
content: 一時停止中のユーザーはログインできません。
|
||||
label: いつまで凍結しますか?
|
||||
forever: 無期限
|
||||
questions:
|
||||
page_title: 質問
|
||||
unlisted: 限定公開済み
|
||||
@@ -1985,6 +2035,12 @@ ui:
|
||||
label: タイムゾーン
|
||||
msg: タイムゾーンを空にすることはできません。
|
||||
text: あなたのタイムゾーンを選択してください。
|
||||
avatar:
|
||||
label: デフォルトのアバター
|
||||
text: 独自のカスタムアバターを持たないユーザー向け。
|
||||
gravatar_base_url:
|
||||
label: GravatarのベースURL
|
||||
text: GravatarプロバイダーのAPIベースのURL。空の場合は無視されます。
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2051,16 +2107,22 @@ ui:
|
||||
label: プライバシーポリシー
|
||||
text: "ここにプライバシーポリシーの内容を追加できます。すでに他の場所でホストされているドキュメントを持っている場合は、こちらにフルURLを入力してください。"
|
||||
external_content_display:
|
||||
label: External content
|
||||
text: "Content includes images, videos, and media embedded from external websites."
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
label: 外部コンテンツ
|
||||
text: "コンテンツには、外部ウェブサイトから埋め込まれた画像、ビデオ、およびメディアが含まれます"
|
||||
always_display: 常に外部コンテンツを表示する
|
||||
ask_before_display: 外部コンテンツを表示する前に確認する
|
||||
write:
|
||||
page_title: 編集
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: 質問に必要な文字数
|
||||
text: 質問の投稿に必要な本文の文字数です。
|
||||
restrict_answer:
|
||||
title: 回答を書く
|
||||
label: 各ユーザーは同じ質問に対して1つの回答しか書けません
|
||||
text: "ユーザが同じ質問に複数の回答を書き込めるようにするにはオフにします。これにより回答がフォーカスされていない可能性があります。"
|
||||
min_tags:
|
||||
label: "質問に必要なタグ数"
|
||||
text: "質問の投稿に必要なタグの数です。"
|
||||
recommend_tags:
|
||||
label: おすすめタグ
|
||||
text: "デフォルトでドロップダウンリストに推奨タグが表示されます。"
|
||||
@@ -2104,10 +2166,14 @@ ui:
|
||||
color_scheme:
|
||||
label: 配色
|
||||
navbar_style:
|
||||
label: ナビゲーションバーのスタイル
|
||||
label: ナビゲーションバーの背景スタイル
|
||||
primary_color:
|
||||
label: メインカラー
|
||||
text: テーマで使用される色を変更する
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS と HTML
|
||||
custom_css:
|
||||
@@ -2212,6 +2278,70 @@ ui:
|
||||
show_logs: ログを表示
|
||||
status: ステータス
|
||||
title: バッジ
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (任意)
|
||||
empty: 空にすることはできません
|
||||
@@ -2308,13 +2438,14 @@ ui:
|
||||
user_normal: このユーザーは既に有効です。
|
||||
user_suspended: このユーザーは凍結されています。
|
||||
user_deleted: このユーザーは削除されました。
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: このバッジは有効化されました。
|
||||
badge_inactivated: このバッジは無効化されています。
|
||||
users_deleted: These users have been deleted.
|
||||
posts_deleted: These questions have been deleted.
|
||||
answers_deleted: These answers have been deleted.
|
||||
copy: Copy to clipboard
|
||||
copied: Copied
|
||||
external_content_warning: External images/media are not displayed.
|
||||
users_deleted: このユーザーは削除されました。
|
||||
posts_deleted: この質問は削除されています。
|
||||
answers_deleted: この回答は削除されています。
|
||||
copy: クリップボードにコピー
|
||||
copied: コピーしました
|
||||
external_content_warning: 外部の画像/メディアは表示されません。
|
||||
|
||||
|
||||
|
||||
+411
-280
File diff suppressed because it is too large
Load Diff
+151
-20
@@ -234,6 +234,8 @@ backend:
|
||||
other: No permission to update.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: Reputation rank fail to meet the condition.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: You cannot delete a tag that is in use.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: You cannot set the synonym of the current tag as itself.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: The from name cannot be a email address.
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "Error {{.Field}} format near '{{.Content}}' at line {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "The number of users you add at once should be in the range of 1-{{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Read config failed
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: tag wiki
|
||||
create_tag: Create Tag
|
||||
edit_tag: Edit Tag
|
||||
ask_a_question: Add Question
|
||||
ask_a_question: Create Question
|
||||
edit_question: Edit Question
|
||||
edit_answer: Edit Answer
|
||||
search: Search
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: HTTP Error 500
|
||||
http_403: HTTP Error 403
|
||||
logout: Log Out
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: Notifications
|
||||
inbox: Inbox
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: day
|
||||
hours: hours
|
||||
days: days
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: heart
|
||||
smile: smile
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: More
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: Add Question
|
||||
title: Create Question
|
||||
edit_title: Edit Question
|
||||
default_reason: Edit question
|
||||
default_first_reason: Add question
|
||||
default_first_reason: Create question
|
||||
similar_questions: Similar questions
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: Revision
|
||||
title:
|
||||
label: Title
|
||||
placeholder: Be specific and imagine you're asking a question to another person
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: Title cannot be empty.
|
||||
range: Title up to 150 characters
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: Body
|
||||
msg:
|
||||
empty: Body cannot be empty.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Tags
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: Add tag
|
||||
create_btn: Create new tag
|
||||
search_tag: Search tag
|
||||
hint: "Describe what your question is about, at least one tag is required."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: No tags matched
|
||||
tag_required_text: Required tag (at least one)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: Search
|
||||
footer:
|
||||
build_on: >-
|
||||
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Change
|
||||
loading: loading...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -1281,7 +1311,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile image
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: Your revision will show after review.
|
||||
sent_success: Sent successfully
|
||||
related_question:
|
||||
title: Related Questions
|
||||
title: Related
|
||||
answers: answers
|
||||
linked_question:
|
||||
title: Linked Questions
|
||||
description: Questions linked to
|
||||
no_linked_question: No questions linked from this question.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: Invite People
|
||||
desc: Invite people you think can answer.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
created: Created
|
||||
Asked: Asked
|
||||
asked: asked
|
||||
update: Modified
|
||||
Edited: Edited
|
||||
edit: edited
|
||||
commented: commented
|
||||
Views: Viewed
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: Follow
|
||||
following: Following
|
||||
counts: "{{count}} Results"
|
||||
counts_loading: "... Results"
|
||||
more: More
|
||||
sort_btns:
|
||||
relevance: Relevance
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: All Questions
|
||||
x_questions: "{{ count }} Questions"
|
||||
x_answers: "{{ count }} answers"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Questions
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: Name
|
||||
msg: Name cannot be empty.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: Password
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: Branding
|
||||
legal: Legal
|
||||
write: Write
|
||||
terms: Terms
|
||||
tos: Terms of Service
|
||||
privacy: Privacy
|
||||
seo: SEO
|
||||
customize: Customize
|
||||
themes: Themes
|
||||
css_html: CSS/HTML
|
||||
login: Login
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
user_center:
|
||||
login: Login
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: Name
|
||||
email: Email
|
||||
reputation: Reputation
|
||||
created_at: Created Time
|
||||
delete_at: Deleted Time
|
||||
suspend_at: Suspended Time
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Suspend until
|
||||
status: Status
|
||||
role: Role
|
||||
action: Action
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Suspend this user
|
||||
content: A suspended user can't log in.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: Questions
|
||||
unlisted: Unlisted
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: Timezone
|
||||
msg: Timezone cannot be empty.
|
||||
text: Choose a city in the same timezone as you.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: Write
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Answer write
|
||||
label: Each user can only write one answer for the same question
|
||||
text: "Turn off to allow users to write multiple answers to the same question, which may cause answers to be unfocused."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Recommend tags
|
||||
text: "Recommend tags will show in the dropdown list by default."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Color scheme
|
||||
navbar_style:
|
||||
label: Navbar style
|
||||
label: Navbar background style
|
||||
primary_color:
|
||||
label: Primary color
|
||||
text: Modify the colors used by your themes
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS and HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Show logs
|
||||
status: Status
|
||||
title: Badges
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: cannot be empty
|
||||
@@ -2307,6 +2437,7 @@ ui:
|
||||
user_normal: This user is already normal.
|
||||
user_suspended: This user has been suspended.
|
||||
user_deleted: This user has been deleted.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: This badge has been activated.
|
||||
badge_inactivated: This badge has been inactivated.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
+1
-1
@@ -684,7 +684,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
|
||||
+1
-1
@@ -684,7 +684,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
|
||||
+155
-24
@@ -234,6 +234,8 @@ backend:
|
||||
other: Brak uprawnień do edycji.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: Ranga nie spełnia warunku.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: Nie możesz usunąć tagu, który jest w użyciu.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: Nie można ustawić synonimu aktualnego tagu jako takiego.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: Nazwą nadawcy nie może być adresem e-mail.
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "Błąd {{.Field}} w pobliżu '{{.Content}}' w linii {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "Liczba użytkowników, których dodasz na raz, powinna mieścić się w przedziale 1-{{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Nie udało się odczytać pliku konfiguracyjnego.
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: wiki tagu
|
||||
create_tag: Utwórz tag
|
||||
edit_tag: Edytuj tag
|
||||
ask_a_question: Zadaj pytanie
|
||||
ask_a_question: Create Question
|
||||
edit_question: Edytuj pytanie
|
||||
edit_answer: Edytuj odpowiedź
|
||||
search: Szukaj
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: Błąd HTTP 500
|
||||
http_403: Błąd HTTP 403
|
||||
logout: Wyloguj się
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: Powiadomienia
|
||||
inbox: Skrzynka odbiorcza
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: dzień
|
||||
hours: godziny
|
||||
days: dni
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: serce
|
||||
smile: uśmiech
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: Więcej
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: Dodaj pytanie
|
||||
title: Create Question
|
||||
edit_title: Edytuj pytanie
|
||||
default_reason: Edytuj pytanie
|
||||
default_first_reason: Dodaj pytanie
|
||||
default_first_reason: Create question
|
||||
similar_questions: Podobne pytania
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: Rewizja
|
||||
title:
|
||||
label: Tytuł
|
||||
placeholder: Bądź konkretny i wyobraź sobie, że zadajesz pytanie innej osobie
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: Tytuł nie może być pusty.
|
||||
range: Tytuł do 150 znaków
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: Treść
|
||||
msg:
|
||||
empty: Treść nie może być pusta.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Tagi
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: Dodaj tag
|
||||
create_btn: Utwórz nowy tag
|
||||
search_tag: Wyszukaj tag
|
||||
hint: "Opisz, o czym jest Twoje pytanie, wymagany jest co najmniej jeden tag."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: Nie znaleziono pasujących tagów
|
||||
tag_required_text: Wymagany tag (co najmniej jeden)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: Szukaj
|
||||
footer:
|
||||
build_on: >-
|
||||
Zbudowane na platformie <1> Apache Answer </1> - oprogramowanie open-source, które napędza społeczności pytań i odpowiedzi.<br />Stworzone z miłością © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Zmień
|
||||
loading: Wczytywanie...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: Imię nie może być puste.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Możesz użyć dozwolone znaki "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Adres e-mail
|
||||
msg:
|
||||
@@ -1275,13 +1305,13 @@ ui:
|
||||
display_name:
|
||||
label: Nazwa wyświetlana
|
||||
msg: Wyświetlana nazwa nie może być pusta.
|
||||
msg_range: Wyświetlana nazwa do 30 znaków.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Nazwa użytkownika
|
||||
caption: Ludzie mogą oznaczać Cię jako "@nazwa_użytkownika".
|
||||
msg: Nazwa użytkownika nie może być pusta.
|
||||
msg_range: Nazwa użytkownika do 30 znaków.
|
||||
character: 'Należy używać zestawu znaków "a-z", "0-9", " - . _"'
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Zdjęcie profilowe
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: Twoja poprawka zostanie wyświetlona po zatwierdzeniu.
|
||||
sent_success: Wysyłanie zakończone powodzeniem
|
||||
related_question:
|
||||
title: Powiązane pytania
|
||||
title: Related
|
||||
answers: odpowiedzi
|
||||
linked_question:
|
||||
title: Linked Questions
|
||||
description: Questions linked to
|
||||
no_linked_question: No questions linked from this question.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: Ludzie pytali
|
||||
desc: Wybierz osoby, które mogą znać odpowiedź.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Wyszukaj osoby
|
||||
question_detail:
|
||||
action: Akcja
|
||||
created: Created
|
||||
Asked: Zadane
|
||||
asked: zadał(a)
|
||||
update: Zmodyfikowane
|
||||
Edited: Edited
|
||||
edit: edytowany
|
||||
commented: skomentowano
|
||||
Views: Wyświetlone
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: Obserwuj
|
||||
following: Obserwuje
|
||||
counts: "Liczba wyników: {{count}}"
|
||||
counts_loading: "... Results"
|
||||
more: Więcej
|
||||
sort_btns:
|
||||
relevance: Relewantność
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: Wszystkie pytania
|
||||
x_questions: "{{ count }} pytań"
|
||||
x_answers: "{{ count }} odpowiedzi"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Pytania
|
||||
answers: Odpowiedzi
|
||||
newest: Najnowsze
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: Imię
|
||||
msg: Imię nie może być puste.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: Hasło
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: Marka
|
||||
legal: Prawne
|
||||
write: Pisanie
|
||||
terms: Terms
|
||||
tos: Warunki korzystania z usługi
|
||||
privacy: Prywatność
|
||||
seo: SEO
|
||||
customize: Dostosowywanie
|
||||
themes: Motywy
|
||||
css_html: CSS/HTML
|
||||
login: Logowanie
|
||||
privileges: Uprawnienia
|
||||
plugins: Wtyczki
|
||||
installed_plugins: Zainstalowane wtyczki
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Witamy w serwisie {{site_name}}
|
||||
user_center:
|
||||
login: Zaloguj się
|
||||
@@ -1852,10 +1899,10 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display name
|
||||
msg_range: Wyświetlana nazwa użytkownika maksymalnie 30 znaków.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Nazwa
|
||||
msg_range: Nazwa użytkownika maksymalnie 30 znaków.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg_invalid: Błędny adresy email.
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: Imię
|
||||
email: E-mail
|
||||
reputation: Reputacja
|
||||
created_at: Czas utworzenia
|
||||
delete_at: Czas usunięcia
|
||||
suspend_at: Czas zawieszenia
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Suspend until
|
||||
status: Status
|
||||
role: Rola
|
||||
action: Akcja
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Zawieś tego użytkownika
|
||||
content: Zawieszony użytkownik nie może się logować.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: Pytania
|
||||
unlisted: Unlisted
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: Strefa czasowa
|
||||
msg: Strefa czasowa nie może być pusta.
|
||||
text: Wybierz miasto w tej samej strefie czasowej, co Ty.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: Pisanie
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Answer write
|
||||
label: Każdy użytkownik może napisać tylko jedną odpowiedź na każde pytanie
|
||||
text: "Turn off to allow users to write multiple answers to the same question, which may cause answers to be unfocused."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Rekomendowane tagi
|
||||
text: "Recommend tags will show in the dropdown list by default."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Schemat kolorów
|
||||
navbar_style:
|
||||
label: Styl paska nawigacyjnego
|
||||
label: Navbar background style
|
||||
primary_color:
|
||||
label: Kolor podstawowy
|
||||
text: Zmodyfikuj kolory używane przez Twoje motywy.
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS i HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Wyświetl dzienniki
|
||||
status: Status
|
||||
title: Badges
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (opcjonalne)
|
||||
empty: nie może być puste
|
||||
@@ -2307,6 +2437,7 @@ ui:
|
||||
user_normal: This user is already normal.
|
||||
user_suspended: This user has been suspended.
|
||||
user_deleted: This user has been deleted.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: This badge has been activated.
|
||||
badge_inactivated: This badge has been inactivated.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
+125
-125
@@ -288,7 +288,7 @@ ui:
|
||||
change_email: Modificar e-mail
|
||||
install: Instalação do Resposta
|
||||
upgrade: Atualização do Resposta
|
||||
maintenance: Manutençã do Website
|
||||
maintenance: Manutenção do Website
|
||||
users: Usuários
|
||||
notifications:
|
||||
title: Notificações
|
||||
@@ -327,7 +327,7 @@ ui:
|
||||
empty: Código não pode ser vazio.
|
||||
language:
|
||||
label: Idioma (opcional)
|
||||
placeholder: Tetecção automática
|
||||
placeholder: Detecção automática
|
||||
btn_cancel: Cancelar
|
||||
btn_confirm: Adicionar
|
||||
formula:
|
||||
@@ -351,7 +351,7 @@ ui:
|
||||
image:
|
||||
text: Imagem
|
||||
add_image: Adicionar imagem
|
||||
tab_image: Enviar image,
|
||||
tab_image: Enviar imagem
|
||||
form_image:
|
||||
fields:
|
||||
file:
|
||||
@@ -380,7 +380,7 @@ ui:
|
||||
outdent:
|
||||
text: Não identado
|
||||
italic:
|
||||
text: Emphase
|
||||
text: Ênfase
|
||||
link:
|
||||
text: Superlink (Hyperlink)
|
||||
add_link: Adicionar superlink (hyperlink)
|
||||
@@ -537,7 +537,7 @@ ui:
|
||||
title: Adicionar Pergunta
|
||||
edit_title: Editar Pergunta
|
||||
default_reason: Editar pergunta
|
||||
similar_questions: Similar perguntas
|
||||
similar_questions: Perguntas similares
|
||||
form:
|
||||
fields:
|
||||
revision:
|
||||
@@ -564,10 +564,10 @@ ui:
|
||||
label: Resumo da edição
|
||||
placeholder: >-
|
||||
Explique resumidamente suas alterações (ortografia corrigida, gramática corrigida, formatação aprimorada)
|
||||
btn_post_question: Publicação a sua pergunta
|
||||
btn_post_question: Publicar a sua pergunta
|
||||
btn_save_edits: Salvar edições
|
||||
answer_question: Responda a sua própria pergunta
|
||||
post_question&answer: Publicação a sua pergunta e resposta
|
||||
post_question&answer: Publicar a sua pergunta e resposta
|
||||
tag_selector:
|
||||
add_btn: Adicionar marcador
|
||||
create_btn: Criar novo marcador
|
||||
@@ -589,7 +589,7 @@ ui:
|
||||
placeholder: Procurar
|
||||
footer:
|
||||
build_on: >-
|
||||
Built on <1> Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
|
||||
Desenvolvido com base no <1> Answer </1> — o software de código aberto que alimenta comunidades de perguntas e respostas.<br />Feito com amor © {{cc}}.
|
||||
upload_img:
|
||||
name: Mudar
|
||||
loading: carregando...
|
||||
@@ -604,13 +604,13 @@ ui:
|
||||
info: "Se não chegar, verifique sua pasta de spam."
|
||||
another: >-
|
||||
Enviamos outro e-mail de ativação para você em <bold>{{mail}}</bold>. Pode levar alguns minutos para chegar; certifique-se de verificar sua pasta de spam.
|
||||
btn_name: Resend activation email
|
||||
btn_name: Reenviar e-mail de ativação
|
||||
change_btn_name: Mudar email
|
||||
msg:
|
||||
empty: Não pode ser vazio.
|
||||
login:
|
||||
page_title: Bem vindo ao {{site_name}}
|
||||
login_to_continue: Entre para continue
|
||||
login_to_continue: Entre para continuar
|
||||
info_sign: Não possui uma conta? <1>Cadastrar-se</1>
|
||||
info_login: Já possui uma conta? <1>Entre</1>
|
||||
agreements: Ao se registrar, você concorda com as <1>políticas de privacidades</1> e os <3>termos de serviços</3>.
|
||||
@@ -683,7 +683,7 @@ ui:
|
||||
caption: As pessoas poderão mensionar você com "@usuário".
|
||||
msg: Nome de usuário não pode ser vazio.
|
||||
msg_range: Nome de usuário até 30 caracteres.
|
||||
character: 'Deve usar o conjunto de caracteres "a-z", "0-9", " - . _"'
|
||||
character: 'Deve usar o conjunto de caracteres "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Perfil Imagem
|
||||
gravatar: Gravatar
|
||||
@@ -776,9 +776,9 @@ ui:
|
||||
delete:
|
||||
title: Excluir esta postagem
|
||||
question: >-
|
||||
Nós não recomendamos <strong>excluindo perguntas com respostas</strong> porque isso priva os futuros leitores desse conhecimento.</p><p>Repeated deletion of answered questions can result in a sua account being blocked from asking. Você tem certeza que deseja deletar?
|
||||
Nós não recomendamos <strong> excluir perguntas com respostas</strong> porque isso priva os futuros leitores desse conhecimento.</p><p>A exclusão repetida de perguntas respondidas pode resultar no bloqueio de perguntas de sua conta. Você tem certeza que deseja excluir?
|
||||
answer_accepted: >-
|
||||
<p>Nós não recomendamos <strong>deleting accepted answer</strong> porque isso priva os futuros leitores desse conhecimento. </p> Repeated deletion of accepted answers can result in a sua account being blocked from answering. Você tem certeza que deseja deletar?
|
||||
<p>Não recomendamos <strong>excluir resposta aceita</strong> porque isso priva os futuros leitores desse conhecimento. </p> A exclusão repetida de respostas aceitas pode resultar no bloqueio de respostas de uma conta sua. Você tem certeza que deseja excluir?
|
||||
other: Você tem certeza que deseja deletar?
|
||||
tip_question_deleted: Esta postagem foi deletada
|
||||
tip_answer_deleted: Esta resposta foi deletada
|
||||
@@ -834,7 +834,7 @@ ui:
|
||||
link: Continuar para a página inicial.
|
||||
invalid: >-
|
||||
Desculpe, este link de confirmação não é mais válido. Talvez a sua já está ativa.
|
||||
confirm_new_email: Your email has been updated.
|
||||
confirm_new_email: Seu e-mail foi atualizado.
|
||||
confirm_new_email_invalid: >-
|
||||
Desculpe, este link de confirmação não é mais válido. Talvez o seu e-mail já tenha sido alterado.
|
||||
unsubscribe:
|
||||
@@ -846,7 +846,7 @@ ui:
|
||||
following_tags: Seguindo Marcadores
|
||||
edit: Editar
|
||||
save: Salvar
|
||||
follow_tag_tip: Seguir tags to curate a sua lista de perguntas.
|
||||
follow_tag_tip: Siga as tags para selecionar sua lista de perguntas.
|
||||
hot_questions: Perguntas quentes
|
||||
all_questions: Todas Perguntas
|
||||
x_questions: "{{ count }} perguntas"
|
||||
@@ -878,7 +878,7 @@ ui:
|
||||
score: Pontuação
|
||||
edit_profile: Editar Perfil
|
||||
visited_x_days: "Visitado {{ count }} dias"
|
||||
viewed: Viewed
|
||||
viewed: Visualizado
|
||||
joined: Ingressou
|
||||
last_login: Visto
|
||||
about_me: Sobre mim
|
||||
@@ -900,13 +900,13 @@ ui:
|
||||
x_questions: perguntas
|
||||
install:
|
||||
title: Instalação
|
||||
next: Proximo
|
||||
next: Próximo
|
||||
done: Completo
|
||||
config_yaml_error: Não é possível criar o arquivo config.yaml.
|
||||
lang:
|
||||
label: Por favor Escolha um Idioma
|
||||
db_type:
|
||||
label: Database Engine
|
||||
label: Mecanismo de banco de dados
|
||||
db_username:
|
||||
label: Nome de usuário
|
||||
placeholder: root
|
||||
@@ -916,68 +916,68 @@ ui:
|
||||
placeholder: root
|
||||
msg: Senha não pode ser vazio.
|
||||
db_host:
|
||||
label: Database Host
|
||||
label: Host do banco de dados
|
||||
placeholder: "db:3306"
|
||||
msg: Database Host não pode ser vazio.
|
||||
msg: Host de banco de dados não pode ficar vazio.
|
||||
db_name:
|
||||
label: Database Nome
|
||||
label: Nome do banco de dados
|
||||
placeholder: answer
|
||||
msg: Database Nome não pode ser vazio.
|
||||
msg: O nome do banco de dados não pode ficar vazio.
|
||||
db_file:
|
||||
label: Database File
|
||||
label: Arquivo de banco de dados
|
||||
placeholder: /data/answer.db
|
||||
msg: Database File não pode ser vazio.
|
||||
msg: O arquivo de banco de dados não pode ficar vazio.
|
||||
config_yaml:
|
||||
title: Create config.yaml
|
||||
label: The config.yaml file created.
|
||||
title: Criar config.yaml
|
||||
label: O arquivo config.yaml foi criado.
|
||||
desc: >-
|
||||
You can create the <1>config.yaml</1> file manually in the <1>/var/wwww/xxx/</1> directory and paste the following text into it.
|
||||
info: After you've done that, click "Next" button.
|
||||
site_information: Site Information
|
||||
Você pode criar o arquivo <1>config.yaml</1> manualmente no diretório <1>/var/www/xxx/</1> e colar o seguinte texto nele.
|
||||
info: Depois de fazer isso, clique no botão "Avançar".
|
||||
site_information: Informações do site
|
||||
admin_account: Administrador Conta
|
||||
site_name:
|
||||
label: Site Nome
|
||||
msg: Site Nome não pode ser vazio.
|
||||
site_url:
|
||||
label: Site URL
|
||||
text: The address of a sua site.
|
||||
text: O endereço do seu site.
|
||||
msg:
|
||||
empty: Site URL não pode ser vazio.
|
||||
incorrect: Site URL incorrect format.
|
||||
incorrect: Formato incorreto da URL do site.
|
||||
contact_email:
|
||||
label: E-mail par contato
|
||||
text: Email address of key contact responsible for this site.
|
||||
label: E-mail para contato
|
||||
text: Endereço de e-mail do contato principal responsável por este site.
|
||||
msg:
|
||||
empty: E-mail par contato não pode ser vazio.
|
||||
incorrect: E-mail par contato incorrect format.
|
||||
empty: E-mail para contato não pode ser vazio.
|
||||
incorrect: E-mail para contato em formato incorreto.
|
||||
admin_name:
|
||||
label: Nome
|
||||
msg: Nome não pode ser vazio.
|
||||
admin_password:
|
||||
label: Senha
|
||||
text: >-
|
||||
You will need this password to log in. Por favor store it in a secure location.
|
||||
msg: Senha não pode ser vazio.
|
||||
Você precisará dessa senha para efetuar login. Por favor, guarde-a em um local seguro.
|
||||
msg: Senha não pode ser vazia.
|
||||
admin_email:
|
||||
label: Email
|
||||
text: You will need this email to log in.
|
||||
text: Você precisará deste e-mail para fazer login.
|
||||
msg:
|
||||
empty: Email não pode ser vazio.
|
||||
incorrect: Email incorrect format.
|
||||
ready_title: Your Resposta is Ready!
|
||||
incorrect: Formato de e-mail incorreto.
|
||||
ready_title: Sua resposta está pronta!
|
||||
ready_desc: >-
|
||||
If you ever feel like changing more settings, visit <1>admin section</1>; find it in the site menu.
|
||||
good_luck: "Have fun, and good luck!"
|
||||
warn_title: Warning
|
||||
Se você quiser alterar mais configurações, visite a <1>seção de administração</1>; encontre-a no menu do site.
|
||||
good_luck: "Divirta-se e boa sorte!"
|
||||
warn_title: Aviso
|
||||
warn_desc: >-
|
||||
The file <1>config.yaml</1> already exists. If you need to reset any of the configuration items in this file, please delete it first.
|
||||
install_now: You may try <1>installing now</1>.
|
||||
installed: Already installed
|
||||
O arquivo <1>config.yaml</1> já existe. Se precisar redefinir algum item de configuração neste arquivo, exclua-o primeiro.
|
||||
install_now: Você pode tentar <1>instalar agora</1>.
|
||||
installed: Já instalado
|
||||
installed_desc: >-
|
||||
You appear to have already installed. To reinstall please clear a sua old database tables first.
|
||||
db_failed: Database connection failed
|
||||
Parece que você já instalou. Para reinstalar, limpe primeiro as tabelas antigas do seu banco de dados.
|
||||
db_failed: Falha na conexão do banco de dados
|
||||
db_failed_desc: >-
|
||||
This either means that the database information in a sua <1>config.yaml</1> file is incorrect or that contact with the database server could not be established. This could mean a sua host's database server is down.
|
||||
Isso significa que as informações do banco de dados em um arquivo <1>config.yaml</1> do SUA estão incorretas ou que o contato com o servidor do banco de dados não pôde ser estabelecido. Isso pode significar que o servidor de banco de dados de um host SUA está inativo.
|
||||
counts:
|
||||
views: visualizações
|
||||
Votos: votos
|
||||
@@ -987,7 +987,7 @@ ui:
|
||||
desc: "Infelizmente, esta postagem não existe mais."
|
||||
back_home: Voltar para a página inicial
|
||||
page_50X:
|
||||
desc: O servidor encontrou um erro e não pôde concluir uma solicitação sua.
|
||||
desc: O servidor encontrou um erro e não pôde concluir sua solicitação.
|
||||
back_home: Voltar para a página inicial
|
||||
page_maintenance:
|
||||
desc: "Estamos em manutenção, voltaremos em breve."
|
||||
@@ -1037,7 +1037,7 @@ ui:
|
||||
answer_links: Links das Respostas
|
||||
documents: Documentos
|
||||
feedback: Opinião
|
||||
support: Supporte
|
||||
support: Suporte
|
||||
review: Revisar
|
||||
config: Configurações
|
||||
update_to: Atualizar ao
|
||||
@@ -1233,7 +1233,7 @@ ui:
|
||||
smtp_port:
|
||||
label: SMTP Port
|
||||
msg: SMTP port must be number 1 ~ 65535.
|
||||
text: The port to a sua mail server.
|
||||
text: A porta para seu servidor de e-mail.
|
||||
smtp_username:
|
||||
label: SMTP Nome de usuário
|
||||
msg: SMTP username não pode ser vazio.
|
||||
@@ -1241,9 +1241,9 @@ ui:
|
||||
label: SMTP Senha
|
||||
msg: SMTP password não pode ser vazio.
|
||||
test_email_recipient:
|
||||
label: Test Email Recipients
|
||||
text: Provide email address that will receive test sends.
|
||||
msg: Test email recipients is invalid
|
||||
label: Destinatários de e-mail de teste
|
||||
text: Forneça o endereço de e-mail que receberá os envios de testes.
|
||||
msg: Os destinatários do e-mail de teste são inválidos
|
||||
smtp_authentication:
|
||||
label: Enable authentication
|
||||
title: SMTP Authentication
|
||||
@@ -1255,127 +1255,127 @@ ui:
|
||||
logo:
|
||||
label: Logo (opcional)
|
||||
msg: Logo não pode ser vazio.
|
||||
text: The logo image at the top left of a sua site. Use a wide rectangular image with a height of 56 and an aspect ratio greater than 3:1. If left blank, the site title text will be shown.
|
||||
text: A imagem do logotipo no canto superior esquerdo do seu site. Use uma imagem retangular larga com altura de 56 e proporção maior que 3:1. Se deixada em branco, o texto do título do site será exibido.
|
||||
mobile_logo:
|
||||
label: Mobile Logo (opcional)
|
||||
text: The logo used on mobile version of a sua site. Use a wide rectangular image with a height of 56. If left blank, the image from the "logo" setting will be used.
|
||||
text: O logotipo usado na versão mobile do seu site. Use uma imagem retangular larga com altura de 56. Se deixado em branco, a imagem da configuração "logotipo" será usada.
|
||||
square_icon:
|
||||
label: Square Icon (opcional)
|
||||
msg: Square icon não pode ser vazio.
|
||||
text: Imagem used as the base for metadata icons. Should ideally be larger than 512x512.
|
||||
text: Imagem usada como base para ícones de metadados. Idealmente, deve ser maior que 512x512.
|
||||
favicon:
|
||||
label: Favicon (opcional)
|
||||
text: A favicon for a sua site. To work correctly over a CDN it must be a png. Will be resized to 32x32. If left blank, "square icon" will be used.
|
||||
text: Um favicon para o seu site. Para funcionar corretamente em uma CDN, ele deve ser um png. Será redimensionado para 32x32. Se deixado em branco, o "ícone quadrado" será usado.
|
||||
legal:
|
||||
page_title: Legal
|
||||
terms_of_service:
|
||||
label: Terms of Service
|
||||
text: "You can add terms of service content here. If you already have a document hosted elsewhere, provide the full URL here."
|
||||
label: Termos de Serviço
|
||||
text: "Você pode adicionar conteúdo dos termos de serviço aqui. Se você já possui um documento hospedado em outro lugar, informe o URL completo aqui."
|
||||
privacy_policy:
|
||||
label: Privacy Policy
|
||||
text: "You can add privacy policy content here. If you already have a document hosted elsewhere, provide the full URL here."
|
||||
label: Política de Privacidade
|
||||
text: "Você pode adicionar o conteúdo da política de privacidade aqui. Se você já possui um documento hospedado em outro lugar, informe o URL completo aqui."
|
||||
write:
|
||||
page_title: Write
|
||||
page_title: Escrever
|
||||
recommend_tags:
|
||||
label: Recommend Marcadores
|
||||
text: "Por favor input tag slug above, one tag per line."
|
||||
label: Recomendar Marcadores
|
||||
text: "Por favor, insira o slug da tag acima, uma tag por linha."
|
||||
required_tag:
|
||||
title: Required Tag
|
||||
label: Set recommend tag as requirido
|
||||
text: "Every new question must have ao menos one recommend tag."
|
||||
title: Tag necessária
|
||||
label: Definir tag recomendada como necessária
|
||||
text: "Cada nova pergunta deve ter pelo menos uma tag de recomendação."
|
||||
reserved_tags:
|
||||
label: Reserved Marcadores
|
||||
text: "Reserved tags can only be added to a post by moderator."
|
||||
label: Marcadores Reservados
|
||||
text: "Tags reservadas só podem ser adicionadas a uma postagem pelo moderador."
|
||||
seo:
|
||||
page_title: SEO
|
||||
permalink:
|
||||
label: Permalink
|
||||
text: Custom URL structures can improve the usability, and forward-compatibility of a sua links.
|
||||
text: Estruturas de URL personalizadas podem melhorar a usabilidade e a compatibilidade futura de seus links.
|
||||
robots:
|
||||
label: robots.txt
|
||||
text: This will permanently override any related site settings.
|
||||
text: Isso substituirá permanentemente todas as configurações relacionadas do site.
|
||||
Temas:
|
||||
page_title: Temas
|
||||
Temas:
|
||||
label: Temas
|
||||
text: Select an existing Tema.
|
||||
text: Selecione um tema existente.
|
||||
navbar_style:
|
||||
label: Navbar Style
|
||||
text: Select an existing Tema.
|
||||
label: Estilo da barra de navegação
|
||||
text: Selecione um tema existente.
|
||||
primary_color:
|
||||
label: Primary Color
|
||||
text: Modify the colors used by a sua Temas
|
||||
label: Cor primária
|
||||
text: Modifique as cores usadas por seus Temas
|
||||
css_and_html:
|
||||
page_title: CSS and HTML
|
||||
page_title: CSS e HTML
|
||||
custom_css:
|
||||
label: Custom CSS
|
||||
text: This will insert as <link>
|
||||
text: Isto será inserido como <link>
|
||||
head:
|
||||
label: Head
|
||||
text: This will insert before </head>
|
||||
text: Isto será inserido antes de </head>
|
||||
header:
|
||||
label: Header
|
||||
text: This will insert after <body>
|
||||
text: Isto será inserido após <body>
|
||||
footer:
|
||||
label: Footer
|
||||
text: This will insert before </html>.
|
||||
text: Isso será inserido antes de </html>.
|
||||
login:
|
||||
page_title: Login
|
||||
membership:
|
||||
title: Membership
|
||||
label: Allow new registrations
|
||||
text: Turn off to prevent anyone from creating a new account.
|
||||
title: Associação
|
||||
label: Permitir novos registros
|
||||
text: Desative para impedir que alguém crie uma nova conta.
|
||||
private:
|
||||
title: Private
|
||||
title: Privado
|
||||
label: Login requirido
|
||||
text: Only logged in users can access this community.
|
||||
text: Somente usuários logados podem acessar esta comunidade.
|
||||
form:
|
||||
empty: não pode ser vazio
|
||||
invalid: is invalid
|
||||
invalid: é inválido
|
||||
btn_submit: Salvar
|
||||
not_found_props: "Required property {{ key }} not found."
|
||||
not_found_props: "Propriedade necessária {{ key }} não encontrada."
|
||||
page_review:
|
||||
review: Revisar
|
||||
proposed: proposed
|
||||
question_edit: Pergunta edit
|
||||
answer_edit: Resposta edit
|
||||
tag_edit: Tag edit
|
||||
edit_summary: Editar summary
|
||||
edit_question: Editar question
|
||||
edit_answer: Editar answer
|
||||
proposed: proposta
|
||||
question_edit: Editar Pergunta
|
||||
answer_edit: Editar Resposta
|
||||
tag_edit: Editar Tag
|
||||
edit_summary: Editar resumo
|
||||
edit_question: Editar pergunta
|
||||
edit_answer: Editar resposta
|
||||
edit_tag: Editar tag
|
||||
empty: No review tasks left.
|
||||
empty: Não há mais tarefas de revisão.
|
||||
timeline:
|
||||
undeleted: undeleted
|
||||
deleted: deleted
|
||||
downvote: downvote
|
||||
upvote: upvote
|
||||
accept: accept
|
||||
cancelled: cancelled
|
||||
commented: commented
|
||||
undeleted: não excluído
|
||||
deleted: apagado
|
||||
downvote: voto negativo
|
||||
upvote: voto positivo
|
||||
accept: aceitar
|
||||
cancelled: cancelado
|
||||
commented: comentado
|
||||
rollback: rollback
|
||||
edited: edited
|
||||
answered: answered
|
||||
asked: asked
|
||||
closed: closed
|
||||
reopened: reopened
|
||||
created: created
|
||||
title: "Histórico for"
|
||||
tag_title: "Timeline for"
|
||||
show_Votos: "Show Votos"
|
||||
edited: editado
|
||||
answered: respondido
|
||||
asked: perguntado
|
||||
closed: fechado
|
||||
reopened: reaberto
|
||||
created: criado
|
||||
title: "Histórico para"
|
||||
tag_title: "Linha do tempo para"
|
||||
show_Votos: "Mostrar votos"
|
||||
n_or_a: N/A
|
||||
title_for_question: "Timeline for"
|
||||
title_for_answer: "Timeline for answer to {{ title }} by {{ author }}"
|
||||
title_for_tag: "Timeline for tag"
|
||||
title_for_question: "Linha do tempo para"
|
||||
title_for_answer: "Linha do tempo para resposta a {{ title }} por {{ author }}"
|
||||
title_for_tag: "Linha do tempo para tag"
|
||||
datetime: Datetime
|
||||
type: Type
|
||||
by: By
|
||||
comment: Comment
|
||||
no_data: "We couldn't find anything."
|
||||
type: Tipo
|
||||
by: Por
|
||||
comment: Comentário
|
||||
no_data: "Não conseguimos encontrar nada."
|
||||
users:
|
||||
title: Usuários
|
||||
users_with_the_most_reputation: Usuários with the highest reputation scores
|
||||
users_with_the_most_vote: Usuários who voted the most
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
users_with_the_most_reputation: Usuários com as maiores pontuações de reputação
|
||||
users_with_the_most_vote: Usuários que mais votaram
|
||||
staffs: Nossa equipe comunitária
|
||||
reputation: reputação
|
||||
Votos: Votos
|
||||
|
||||
+155
-24
@@ -234,6 +234,8 @@ backend:
|
||||
other: Sem permissão para atualizar.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: A classificação não atende à condição.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: Não é possível excluir um marcador em uso.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: Você não pode definir o sinônimo do marcador atual como a si mesmo.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: O De Nome não pode ser um endereço de e-mail.
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "Erro no formato {{.Field}} próximo '{{.Content}}' na linha {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "O número de usuários que você adicionou de uma vez deve estar no intervalo de 1 -{{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Falha ao ler configuração
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: marcador wiki
|
||||
create_tag: Criar Marcador
|
||||
edit_tag: Editar Marcador
|
||||
ask_a_question: Adicionar Pergunta
|
||||
ask_a_question: Create Question
|
||||
edit_question: Editar Pergunta
|
||||
edit_answer: Editar Resposta
|
||||
search: Busca
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: HTTP Erro 500
|
||||
http_403: HTTP Erro 403
|
||||
logout: Encerrar Sessão
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: Notificações
|
||||
inbox: Caixa de entrada
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: dia
|
||||
hours: horas
|
||||
days: dias
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: coração
|
||||
smile: sorrir
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: Mais
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: Adicionar Pergunta
|
||||
title: Create Question
|
||||
edit_title: Editar Pergunta
|
||||
default_reason: Editar pergunta
|
||||
default_first_reason: Adicionar questão
|
||||
default_first_reason: Create question
|
||||
similar_questions: Similar perguntas
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: Revisão
|
||||
title:
|
||||
label: Título
|
||||
placeholder: Seja específico e tenha em mente que está fazendo uma pergunta a outra pessoa
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: Título não pode ser vazio.
|
||||
range: Título até 150 caracteres
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: Corpo
|
||||
msg:
|
||||
empty: Corpo da mensagem não pode ser vazio.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Marcadores
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: Adicionar marcador
|
||||
create_btn: Criar novo marcador
|
||||
search_tag: Procurar marcador
|
||||
hint: "Descreva do quê se trata a sua pergunta, ao menos um marcador é requirido."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: Nenhum marcador correspondente
|
||||
tag_required_text: Marcador obrigatório (ao menos um)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: Procurar
|
||||
footer:
|
||||
build_on: >-
|
||||
Construído com <1> Apache answer </1> o software de código aberto que ajuda comunidades de Q&A.<br />Feito com amor © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Mudar
|
||||
loading: carregando...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: Nome não pode ser vazio.
|
||||
range: O nome deve ter entre 2 e 30 caracteres.
|
||||
character: 'Deve usar o conjunto de caracteres "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: E-mail
|
||||
msg:
|
||||
@@ -1275,13 +1305,13 @@ ui:
|
||||
display_name:
|
||||
label: Nome de exibição
|
||||
msg: Nome de exibição não pode ser vazio.
|
||||
msg_range: Nome de exibição tem que ter até 30 caracteres.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Nome de usuário
|
||||
caption: As pessoas poderão mensionar você com "@usuário".
|
||||
msg: Nome de usuário não pode ser vazio.
|
||||
msg_range: Nome de usuário até 30 caracteres.
|
||||
character: 'Deve usar o conjunto de caracteres "a-z", "0-9", " - . _"'
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Perfil Imagem
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: A sua resposta irá aparecer após a revisão.
|
||||
sent_success: Enviado com sucesso
|
||||
related_question:
|
||||
title: Perguntas relacionadas
|
||||
title: Related
|
||||
answers: respostas
|
||||
linked_question:
|
||||
title: Perguntas relacionadas
|
||||
description: Questões ligadas a
|
||||
no_linked_question: Nenhuma pergunta relacionada a esta questão.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: Pessoas Perguntaram
|
||||
desc: Select people who you think might know the answer.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Procurar pessoas
|
||||
question_detail:
|
||||
action: Acção
|
||||
created: Created
|
||||
Asked: Perguntado
|
||||
asked: perguntado
|
||||
update: Modificado
|
||||
Edited: Edited
|
||||
edit: modificado
|
||||
commented: comentado
|
||||
Views: Visualizado
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: Seguir
|
||||
following: Seguindo
|
||||
counts: "{{count}} Resultados"
|
||||
counts_loading: "... Results"
|
||||
more: Mais
|
||||
sort_btns:
|
||||
relevance: Relevância
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: Todas Perguntas
|
||||
x_questions: "{{ count }} perguntas"
|
||||
x_answers: "{{ count }} respostas"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Perguntas
|
||||
answers: Respostas
|
||||
newest: Mais recente
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: Nome
|
||||
msg: Nome não pode ser vazio.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: Senha
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: Marca
|
||||
legal: Informação legal
|
||||
write: Escrever
|
||||
terms: Terms
|
||||
tos: Termos de Serviços
|
||||
privacy: Privacidade
|
||||
seo: SEO
|
||||
customize: Personalização
|
||||
themes: Temas
|
||||
css_html: CSS/HTML
|
||||
login: Entrar
|
||||
privileges: Privilégios
|
||||
plugins: Extensões
|
||||
installed_plugins: Plugins instalados
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Bem vindo(a) ao {{site_name}}
|
||||
user_center:
|
||||
login: Entrar
|
||||
@@ -1852,10 +1899,10 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Nome no display
|
||||
msg_range: Nome no display pode conter até 30 caracteres.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Nome do usuário
|
||||
msg_range: Nome do usuário pode conter até 30 caracteres.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
email:
|
||||
label: Correio eletrônico
|
||||
msg_invalid: Correio eletrônico invalido.
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: Nome
|
||||
email: E-mail
|
||||
reputation: Reputação
|
||||
created_at: Hora de criação
|
||||
delete_at: Hora da remoção
|
||||
suspend_at: Hora da suspensão
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Suspend until
|
||||
status: Estado
|
||||
role: Função
|
||||
action: Ação
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Suspender este usuário
|
||||
content: Um usuário suspenso não pode fazer login.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: Perguntas
|
||||
unlisted: Não-listado
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: Fuso horário
|
||||
msg: Fuso horário não pode ser vazio.
|
||||
text: Escolha a cidade no mesmo fuso horário que você.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: Escrever
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Escrever resposta
|
||||
label: Each user can only write one answer for each question
|
||||
text: "Desative para permitir que os usuários escrevam várias respostas para a mesma pergunta, o que pode fazer com que as respostas fiquem menos focadas."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Recommend Marcadores
|
||||
text: "Os marcadores recomendados serão exibidos na lista dropdown por padrão."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Esquema de cores
|
||||
navbar_style:
|
||||
label: Estilo da barra de navegação
|
||||
label: Navbar background style
|
||||
primary_color:
|
||||
label: Cor primária
|
||||
text: Modifica as cores usadas por seus temas
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS e HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Mostrar registros
|
||||
status: Status
|
||||
title: Emblemas
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (opcional)
|
||||
empty: não pode ser vazio
|
||||
@@ -2307,6 +2437,7 @@ ui:
|
||||
user_normal: Este usuário já está normal.
|
||||
user_suspended: Este usuário foi suspenso.
|
||||
user_deleted: Este usuário foi removido.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: Este emblema foi ativado.
|
||||
badge_inactivated: Este emblema foi desativado.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
+167
-36
@@ -58,7 +58,7 @@ backend:
|
||||
undelete:
|
||||
other: Restabilește
|
||||
merge:
|
||||
other: Merge
|
||||
other: Îmbinare
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
@@ -140,17 +140,17 @@ backend:
|
||||
pass:
|
||||
other: Parolă
|
||||
old_pass:
|
||||
other: Current password
|
||||
other: Parolă actuală
|
||||
original_text:
|
||||
other: This post
|
||||
other: Acest articol
|
||||
email_or_password_wrong_error:
|
||||
other: E-mailul și parola nu se potrivesc.
|
||||
error:
|
||||
common:
|
||||
invalid_url:
|
||||
other: Invalid URL.
|
||||
other: URL invalid.
|
||||
status_invalid:
|
||||
other: Invalid status.
|
||||
other: Stare nevalidă.
|
||||
password:
|
||||
space_invalid:
|
||||
other: Parola nu poate conține spații.
|
||||
@@ -158,7 +158,7 @@ backend:
|
||||
cannot_update_their_password:
|
||||
other: Nu vă puteți modifica parola.
|
||||
cannot_edit_their_profile:
|
||||
other: You cannot modify your profile.
|
||||
other: Nu vă puteți modifica profilul.
|
||||
cannot_modify_self_status:
|
||||
other: Nu vă puteți modifica starea.
|
||||
email_or_password_wrong:
|
||||
@@ -173,7 +173,7 @@ backend:
|
||||
question_closed_cannot_add:
|
||||
other: Întrebările sunt închise şi nu pot fi adăugate.
|
||||
content_cannot_empty:
|
||||
other: Answer content cannot be empty.
|
||||
other: Conținutul răspunsului nu poate fi gol.
|
||||
comment:
|
||||
edit_without_permission:
|
||||
other: Comentariul nu poate fi editat.
|
||||
@@ -182,7 +182,7 @@ backend:
|
||||
cannot_edit_after_deadline:
|
||||
other: Comentariul a durat prea mult pentru a fi modificat.
|
||||
content_cannot_empty:
|
||||
other: Comment content cannot be empty.
|
||||
other: Conținutul comentariului nu poate fi gol.
|
||||
email:
|
||||
duplicate:
|
||||
other: Email-ul există deja.
|
||||
@@ -215,15 +215,15 @@ backend:
|
||||
new_password_same_as_previous_setting:
|
||||
other: Noua parolă este identică cu cea anterioară.
|
||||
already_deleted:
|
||||
other: This post has been deleted.
|
||||
other: Acest articol a fost șters.
|
||||
meta:
|
||||
object_not_found:
|
||||
other: Meta object not found
|
||||
other: Nu s-a găsit obiectul Meta
|
||||
question:
|
||||
already_deleted:
|
||||
other: Această postare a fost ștearsă.
|
||||
under_review:
|
||||
other: Your post is awaiting review. It will be visible after it has been approved.
|
||||
other: Articolul tău este în așteptare. Acesta va fi vizibil după ce a fost aprobat.
|
||||
not_found:
|
||||
other: Întrebarea nu a fost găsită.
|
||||
cannot_deleted:
|
||||
@@ -233,7 +233,9 @@ backend:
|
||||
cannot_update:
|
||||
other: Nu aveți permisiunea de a actualiza.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
other: Conținutul nu poate fi gol.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: Rangul de reputaţie nu îndeplineşte condiţia.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: Nu puteți șterge o etichetă care este în uz.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: Nu se poate seta sinonimul etichetei curente ca atare.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: Numele nu poate fi o adresă de e-mail.
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "{{.Field}} format lângă '{{.Content}}' la linia {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "Numărul de utilizatori pe care îi adăugați odată trebuie să fie în intervalul 1-{{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Citirea configurației a eșuat
|
||||
@@ -325,7 +337,7 @@ backend:
|
||||
other: Configurarea site-ului nu a fost găsită.
|
||||
badge:
|
||||
object_not_found:
|
||||
other: Badge object not found
|
||||
other: Nu s-a găsit obiectul Insignă
|
||||
reason:
|
||||
spam:
|
||||
name:
|
||||
@@ -336,7 +348,7 @@ backend:
|
||||
name:
|
||||
other: nepoliticos sau abuziv
|
||||
desc:
|
||||
other: "A reasonable person would find this content inappropriate for respectful discourse."
|
||||
other: "O persoană rezonabilă ar considera acest conținut nepotrivit pentru un discurs respectuos."
|
||||
a_duplicate:
|
||||
name:
|
||||
other: un duplicat
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: etichetă wiki
|
||||
create_tag: Creați etichetă
|
||||
edit_tag: Modificați eticheta
|
||||
ask_a_question: Adăugați întrebarea
|
||||
ask_a_question: Create Question
|
||||
edit_question: Editați întrebarea
|
||||
edit_answer: Editaţi răspunsul
|
||||
search: Caută
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: Eroare HTTP 500
|
||||
http_403: Eroare HTTP 403
|
||||
logout: Deconectare
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: Notificări
|
||||
inbox: Mesaje primite
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: zi
|
||||
hours: ore
|
||||
days: zile
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: heart
|
||||
smile: smile
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: Mai multe
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: Adăugați întrebarea
|
||||
title: Create Question
|
||||
edit_title: Editați întrebarea
|
||||
default_reason: Editați întrebarea
|
||||
default_first_reason: Adaugă o întrebare
|
||||
default_first_reason: Create question
|
||||
similar_questions: Întrebări similare
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: Revizuire
|
||||
title:
|
||||
label: Titlu
|
||||
placeholder: Fii specific și imaginează-ți că pui o întrebare unei alte persoane
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: Titlul nu poate fi gol.
|
||||
range: Titlu de până la 150 de caractere
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: Corp
|
||||
msg:
|
||||
empty: Corpul mesajului trebuie să conțină text.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Etichete
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: Adaugă etichetă
|
||||
create_btn: Creează o etichetă nouă
|
||||
search_tag: Căutare etichetă
|
||||
hint: "Descrie despre ce este intrebarea ta, este necesar cel putin o eticheta."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: Nicio etichetă potrivită
|
||||
tag_required_text: Etichetă necesară (cel puțin una)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: Caută
|
||||
footer:
|
||||
build_on: >-
|
||||
Susținut de <1> Apache Răspuns </1>- software-ul open-source care asigură Q&A comunități.<br />Făcut cu dragoste ©️ {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Schimbare
|
||||
loading: încarcare...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: Câmpul Nume trebuie completat.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: E-mail
|
||||
msg:
|
||||
@@ -1275,13 +1305,13 @@ ui:
|
||||
display_name:
|
||||
label: Nume afișat
|
||||
msg: Numele afișat nu poate fi gol.
|
||||
msg_range: Nume afișat până la 30 de caractere.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Nume de utilizator
|
||||
caption: Oamenii te pot menționa ca "@utilizator".
|
||||
msg: Numele de utilizator nu poate fi gol.
|
||||
msg_range: Nume utilizator de până la 30 de caractere.
|
||||
character: 'Trebuie să utilizați setul de caractere "a-z", "0-9", " - . _"'
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Imaginea de profil
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: Revizuirea ta va arăta după recenzie.
|
||||
sent_success: Trimis cu succes
|
||||
related_question:
|
||||
title: Întrebări conexe
|
||||
title: Related
|
||||
answers: răspunsuri
|
||||
linked_question:
|
||||
title: Linked Questions
|
||||
description: Questions linked to
|
||||
no_linked_question: No questions linked from this question.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: Persoane întrebate
|
||||
desc: Invită persoane care crezi că știu răspunsul.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Caută persoane
|
||||
question_detail:
|
||||
action: Acţiune
|
||||
created: Created
|
||||
Asked: Întrebat
|
||||
asked: întrebat
|
||||
update: Modificat
|
||||
Edited: Edited
|
||||
edit: editat
|
||||
commented: commented
|
||||
Views: Văzute
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: Urmărește
|
||||
following: Urmăriți
|
||||
counts: "{{count}} rezultatele"
|
||||
counts_loading: "... Results"
|
||||
more: Mai mult
|
||||
sort_btns:
|
||||
relevance: Relevanță
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: Toate întrebările
|
||||
x_questions: "{{ count }} Întrebări"
|
||||
x_answers: "{{ count }} răspunsuri"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Întrebări
|
||||
answers: Răspunsuri
|
||||
newest: Cele mai noi
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: Nume
|
||||
msg: Câmpul Nume trebuie completat.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: Parolă
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: Marcă
|
||||
legal: Juridic
|
||||
write: Scrie
|
||||
terms: Terms
|
||||
tos: Condiții de utilizare
|
||||
privacy: Confidențialitate
|
||||
seo: SEO
|
||||
customize: Personalizează
|
||||
themes: Teme
|
||||
css_html: CSS/HTML
|
||||
login: Autentifică-te
|
||||
privileges: Privilegii
|
||||
plugins: Extensii
|
||||
installed_plugins: Extensii instalate
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Bun venit la {{site_name}}
|
||||
user_center:
|
||||
login: Autentifică-te
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: Nume
|
||||
email: E-mail
|
||||
reputation: Reputație
|
||||
created_at: Ora crearii
|
||||
delete_at: Oră ștergerii
|
||||
suspend_at: Ora suspendării
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Suspend until
|
||||
status: Stare
|
||||
role: Rol
|
||||
action: Acţiune
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Suspendă acest utilizator
|
||||
content: Un utilizator suspendat nu se poate autentifica.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: Întrebări
|
||||
unlisted: Unlisted
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: Fusul orar
|
||||
msg: Fusul orar nu poate fi gol.
|
||||
text: Alege un oraș în același fus orar cu tine.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: Scrie
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Answer write
|
||||
label: Fiecare utilizator poate scrie doar câte un răspuns pentru fiecare întrebare
|
||||
text: "Turn off to allow users to write multiple answers to the same question, which may cause answers to be unfocused."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Etichete recomandate
|
||||
text: "Recommend tags will show in the dropdown list by default."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Paletă de culori
|
||||
navbar_style:
|
||||
label: Navbar style
|
||||
label: Navbar background style
|
||||
primary_color:
|
||||
label: Culoare primară
|
||||
text: Modifică culorile folosite de temele tale
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS și HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Show logs
|
||||
status: Status
|
||||
title: Badges
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (opțional)
|
||||
empty: nu poate fi lăsat necompletat
|
||||
@@ -2307,6 +2437,7 @@ ui:
|
||||
user_normal: This user is already normal.
|
||||
user_suspended: This user has been suspended.
|
||||
user_deleted: This user has been deleted.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: This badge has been activated.
|
||||
badge_inactivated: This badge has been inactivated.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
+158
-27
@@ -58,7 +58,7 @@ backend:
|
||||
undelete:
|
||||
other: Отменить удаление
|
||||
merge:
|
||||
other: Merge
|
||||
other: Объединить
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
@@ -173,7 +173,7 @@ backend:
|
||||
question_closed_cannot_add:
|
||||
other: Вопросы закрыты и не могут быть добавлены.
|
||||
content_cannot_empty:
|
||||
other: Answer content cannot be empty.
|
||||
other: Содержимое ответа не может быть пустым.
|
||||
comment:
|
||||
edit_without_permission:
|
||||
other: Комментарий не может редактироваться.
|
||||
@@ -233,7 +233,9 @@ backend:
|
||||
cannot_update:
|
||||
other: Нет разрешения на обновление.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
other: .
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: Ранг репутации не соответствует условию.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: Вы не можете удалить метку, которая используется.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: Вы не можете установить синоним текущего тега.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: Поле отправителя не может содержать email адрес.
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "Ошибка формата {{.Field}} рядом с '{{.Content}}' в строке {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "Количество пользователей, которое Вы добавляете, должно быть в промежутке от 1 до {{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Не удалось прочитать конфигурацию
|
||||
@@ -686,7 +698,7 @@ backend:
|
||||
name:
|
||||
other: Anniversary
|
||||
desc:
|
||||
other: Active member for a year, posted at least once.
|
||||
other: Активный участник на год, опубликовал по крайней мере один раз.
|
||||
appreciated:
|
||||
name:
|
||||
other: Appreciated
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: wiki тэг
|
||||
create_tag: Создать тег
|
||||
edit_tag: Изменить тег
|
||||
ask_a_question: Задать вопрос
|
||||
ask_a_question: Create Question
|
||||
edit_question: Редактировать вопрос
|
||||
edit_answer: Редактировать ответ
|
||||
search: Поиск
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: Ошибка HTTP 500
|
||||
http_403: Ошибка HTTP 403
|
||||
logout: Выйти
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: Уведомления
|
||||
inbox: Входящие
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: дней
|
||||
hours: часов
|
||||
days: дней
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: сердечко
|
||||
smile: smile
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: Подробнее
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: Задать вопрос
|
||||
title: Create Question
|
||||
edit_title: Редактировать вопрос
|
||||
default_reason: Редактировать вопрос
|
||||
default_first_reason: Задать вопрос
|
||||
default_first_reason: Create question
|
||||
similar_questions: Похожие вопросы
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: Версия
|
||||
title:
|
||||
label: Заголовок
|
||||
placeholder: Будьте конкретны и представьте, что вы задаете вопрос другому человеку
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: Заголовок не может быть пустым.
|
||||
range: Заголовок должен быть меньше 150 символов
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: 'Вопрос:'
|
||||
msg:
|
||||
empty: Вопрос не может быть пустым.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Теги
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: Тег
|
||||
create_btn: новый тег
|
||||
search_tag: Поиск тега
|
||||
hint: "Добавьте хотя бы один тег."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: Нет соответствующих тэгов
|
||||
tag_required_text: Обязательный тег (хотя бы один)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: Поиск
|
||||
footer:
|
||||
build_on: >-
|
||||
Работает на <1> Apache Answer </1> - программном обеспечении с открытым исходным кодом, которое поддерживает сообщества вопросов и ответов.<br />Сделано с любовью © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Изменить
|
||||
loading: загрузка...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: Имя пользователя не должно быть пустым.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email адрес
|
||||
msg:
|
||||
@@ -1275,13 +1305,13 @@ ui:
|
||||
display_name:
|
||||
label: Отображаемое имя
|
||||
msg: Отображаемое имя не может быть пустым.
|
||||
msg_range: Имя пользователя должно быть до 30 символов.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Имя пользователя
|
||||
caption: Люди могут упоминать вас как "@username".
|
||||
msg: Имя пользователя не может быть пустым.
|
||||
msg_range: Имя пользователя должно быть до 30 символов.
|
||||
character: 'Необходимо использовать набор символов "a-z", "0-9", " - . _"'
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Изображение профиля
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: Ваша версия будет отображаться после проверки.
|
||||
sent_success: Отправлено успешно
|
||||
related_question:
|
||||
title: Похожие вопросы
|
||||
title: Related
|
||||
answers: ответы
|
||||
linked_question:
|
||||
title: Связанные вопросы
|
||||
description: Questions linked to
|
||||
no_linked_question: No questions linked from this question.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: Позвать на помощь
|
||||
desc: Выберите людей, которые, по вашему мнению, могут знать ответ.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Поиск людей
|
||||
question_detail:
|
||||
action: Действия
|
||||
created: Created
|
||||
Asked: Спросил(а)
|
||||
asked: спросил(а)
|
||||
update: Изменён
|
||||
Edited: Edited
|
||||
edit: отредактировал
|
||||
commented: commented
|
||||
Views: Просмотрен
|
||||
@@ -1422,7 +1454,7 @@ ui:
|
||||
content: Are you sure you want to list?
|
||||
unlist:
|
||||
confirm_btn: Убрать из списка
|
||||
title:
|
||||
title: Unlist this post
|
||||
content: Are you sure you want to unlist?
|
||||
pin:
|
||||
title: Закрепить сообщение
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: Подписаться
|
||||
following: Подписка
|
||||
counts: "Результатов: {{count}}"
|
||||
counts_loading: "... Results"
|
||||
more: Ещё
|
||||
sort_btns:
|
||||
relevance: По релевантности
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: Все вопросы
|
||||
x_questions: "{{ count }} вопросов"
|
||||
x_answers: "{{ count }} ответов"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Вопросы
|
||||
answers: Ответы
|
||||
newest: Последние
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: Имя
|
||||
msg: Имя не может быть пустым.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: Пароль
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: Фирменное оформление
|
||||
legal: Правовая информация
|
||||
write: Написать
|
||||
terms: Terms
|
||||
tos: Пользовательское Соглашение
|
||||
privacy: Конфиденциальность
|
||||
seo: SEO
|
||||
customize: Настройки интерфейса
|
||||
themes: Темы
|
||||
css_html: CSS/HTML
|
||||
login: Вход
|
||||
privileges: Привилегии
|
||||
plugins: Плагины
|
||||
installed_plugins: Установленные плагины
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Добро пожаловать на {{site_name}}
|
||||
user_center:
|
||||
login: Вход
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: Имя
|
||||
email: Email
|
||||
reputation: Репутация
|
||||
created_at: Дата создания
|
||||
delete_at: Время удаления
|
||||
suspend_at: Дата блокировки
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Suspend until
|
||||
status: Статус
|
||||
role: Роль
|
||||
action: Действия
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Заблокировать этого пользователя
|
||||
content: Заблокированный пользователь не сможет войти.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: Вопросы
|
||||
unlisted: Unlisted
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: Часовой пояс
|
||||
msg: Часовой пояс не может быть пустым.
|
||||
text: Выберите город в том же часовом поясе, что и вы.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: Написать
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Answer write
|
||||
label: Каждый пользователь может написать только один ответ на каждый вопрос
|
||||
text: "Turn off to allow users to write multiple answers to the same question, which may cause answers to be unfocused."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Рекомендованные теги
|
||||
text: "Recommend tags will show in the dropdown list by default."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Цветовая схема
|
||||
navbar_style:
|
||||
label: Стиль панели навигации
|
||||
label: Navbar background style
|
||||
primary_color:
|
||||
label: Основной цвет
|
||||
text: Измените цвета, используемые в ваших темах
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS и HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Show logs
|
||||
status: Status
|
||||
title: Badges
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (опционально)
|
||||
empty: не может быть пустым
|
||||
@@ -2307,6 +2437,7 @@ ui:
|
||||
user_normal: This user is already normal.
|
||||
user_suspended: This user has been suspended.
|
||||
user_deleted: This user has been deleted.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: This badge has been activated.
|
||||
badge_inactivated: This badge has been inactivated.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
+153
-22
@@ -234,6 +234,8 @@ backend:
|
||||
other: Žiadne povolenie na aktualizáciu.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: Reputation rank fail to meet the condition.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: You cannot delete a tag that is in use.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: Synonymum aktuálnej značky nemôžete nastaviť ako samotnú.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: The from name cannot be a email address.
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "Error {{.Field}} format near '{{.Content}}' at line {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "The number of users you add at once should be in the range of 1-{{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Read Config zlyhal
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: značka wiki
|
||||
create_tag: Vytvoriť štítok
|
||||
edit_tag: Upraviť značku
|
||||
ask_a_question: Pridať otázku
|
||||
ask_a_question: Create Question
|
||||
edit_question: Úpraviť otázku
|
||||
edit_answer: Úpraviť odpoveť
|
||||
search: Vyhľadávanie
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: HTTP chyba 403
|
||||
http_403: HTTP Error 403
|
||||
logout: Log Out
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: Oznámenia
|
||||
inbox: Doručená pošta
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: deň
|
||||
hours: hours
|
||||
days: days
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: heart
|
||||
smile: smile
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: Viac
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: Pridať otázku
|
||||
title: Create Question
|
||||
edit_title: Upraviť otázku
|
||||
default_reason: Upraviť otázku
|
||||
default_first_reason: Add question
|
||||
default_first_reason: Create question
|
||||
similar_questions: Podobné otázky
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: Revízia
|
||||
title:
|
||||
label: Názov
|
||||
placeholder: Buďte konkrétni a predstavte si, že kladiete otázku inej osobe
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: Názov nemôže byť prázdny.
|
||||
range: Názov do 150 znakov
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: Telo
|
||||
msg:
|
||||
empty: Telo nemôže byť prázdne.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Značky --
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: Pridať značku
|
||||
create_btn: Vytvoriť novú značku
|
||||
search_tag: Vyhľadať značku --
|
||||
hint: "Popíšte, čoho sa vaša otázka týka, vyžaduje sa aspoň jedna značka."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: Nezodpovedajú žiadne značky
|
||||
tag_required_text: Povinný štítok (aspoň jeden)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: Vyhľadávanie
|
||||
footer:
|
||||
build_on: >-
|
||||
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Zmena
|
||||
loading: načítavanie...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: Prihlasovacie meno nemôže byť prázdne.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: E-mail
|
||||
msg:
|
||||
@@ -1275,13 +1305,13 @@ ui:
|
||||
display_name:
|
||||
label: Display name
|
||||
msg: Zobrazované meno nemôže byť prázdne.
|
||||
msg_range: Zobrazované meno nesmie mať viac ako 30 znakov.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Užívateľské meno
|
||||
caption: Ľudia vás môžu spomenúť ako „@používateľské meno“.
|
||||
msg: Užívateľské meno nemôže byť prázdne.
|
||||
msg_range: Používateľské meno nesmie mať viac ako 30 znakov.
|
||||
character: 'Musíte použiť znakovú sadu "a-z", "0-9", "- . _"'
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile image
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: Vaša revízia sa zobrazí po preskúmaní.
|
||||
sent_success: Sent successfully
|
||||
related_question:
|
||||
title: Súvisiace otázky
|
||||
title: Related
|
||||
answers: odpovede
|
||||
linked_question:
|
||||
title: Linked Questions
|
||||
description: Questions linked to
|
||||
no_linked_question: No questions linked from this question.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: People Asked
|
||||
desc: Select people who you think might know the answer.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
created: Created
|
||||
Asked: Opýtané
|
||||
asked: opýtané
|
||||
update: Aktualizované
|
||||
Edited: Edited
|
||||
edit: upravené
|
||||
commented: commented
|
||||
Views: Videné
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: Sledovať
|
||||
following: Sledované
|
||||
counts: "{{count}} výsledky"
|
||||
counts_loading: "... Results"
|
||||
more: Viac
|
||||
sort_btns:
|
||||
relevance: Relevantnosť
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: Všetky otázky
|
||||
x_questions: "{{ count }} otázky/otázok"
|
||||
x_answers: "{{ count }} odpovede/odpovedí"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Otázky
|
||||
answers: Odpovede
|
||||
newest: Najnovšie
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: Meno
|
||||
msg: Meno nemôže byť prázdne.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: Heslo
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: Budovanie značky
|
||||
legal: legálne
|
||||
write: písať
|
||||
terms: Terms
|
||||
tos: Podmienky služby
|
||||
privacy: Súkromie
|
||||
seo: SEO
|
||||
customize: Prispôsobiť
|
||||
themes: Témy
|
||||
css_html: CSS/HTML
|
||||
login: Prihlásiť sa
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
user_center:
|
||||
login: Login
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: Meno
|
||||
email: E-mail
|
||||
reputation: Reputácia
|
||||
created_at: Čas vytvorenia
|
||||
delete_at: Čas vymazania
|
||||
suspend_at: Čas pozastavenia
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Suspend until
|
||||
status: Stav
|
||||
role: Rola
|
||||
action: Akcia
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Suspend this user
|
||||
content: A suspended user can't log in.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: Otázky
|
||||
unlisted: Unlisted
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: Časové pásmo
|
||||
msg: Časové pásmo nemôže byť prázdne.
|
||||
text: Vyberte si mesto v rovnakom časovom pásme ako vy.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: Písať
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Answer write
|
||||
label: Each user can only write one answer for each question
|
||||
text: "Turn off to allow users to write multiple answers to the same question, which may cause answers to be unfocused."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Recommend tags
|
||||
text: "Recommend tags will show in the dropdown list by default."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Color scheme
|
||||
navbar_style:
|
||||
label: Navbar style
|
||||
label: Navbar background style
|
||||
primary_color:
|
||||
label: Primary color
|
||||
text: Upraviť farby používané vašími motívmi
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS a HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Show logs
|
||||
status: Status
|
||||
title: Badges
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (voliteľné)
|
||||
empty: nemôže byť prázdne
|
||||
@@ -2307,6 +2437,7 @@ ui:
|
||||
user_normal: This user is already normal.
|
||||
user_suspended: This user has been suspended.
|
||||
user_deleted: This user has been deleted.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: This badge has been activated.
|
||||
badge_inactivated: This badge has been inactivated.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
+1
-1
@@ -677,7 +677,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username up to 30 characters
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
|
||||
+1
-1
@@ -684,7 +684,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
|
||||
+223
-92
@@ -19,13 +19,13 @@
|
||||
backend:
|
||||
base:
|
||||
success:
|
||||
other: Success.
|
||||
other: Åtgärden lyckades
|
||||
unknown:
|
||||
other: Okänt fel.
|
||||
request_format_error:
|
||||
other: Request format is not valid.
|
||||
unauthorized_error:
|
||||
other: Unauthorized.
|
||||
other: Access saknas
|
||||
database_error:
|
||||
other: Data server error.
|
||||
forbidden_error:
|
||||
@@ -34,7 +34,7 @@ backend:
|
||||
other: Dubblett inlämning.
|
||||
action:
|
||||
report:
|
||||
other: Flag
|
||||
other: Flagga
|
||||
edit:
|
||||
other: Redigera
|
||||
delete:
|
||||
@@ -48,103 +48,103 @@ backend:
|
||||
pin:
|
||||
other: Fäst
|
||||
hide:
|
||||
other: Unlist
|
||||
other: Göm
|
||||
unpin:
|
||||
other: Unpin
|
||||
other: Lossa
|
||||
show:
|
||||
other: Lista
|
||||
invite_someone_to_answer:
|
||||
other: Redigera
|
||||
undelete:
|
||||
other: Undelete
|
||||
other: Återskapa
|
||||
merge:
|
||||
other: Merge
|
||||
other: Sammanfoga
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
other: Användare
|
||||
admin:
|
||||
other: Admin
|
||||
other: Administratör
|
||||
moderator:
|
||||
other: Moderator
|
||||
description:
|
||||
user:
|
||||
other: Default with no special access.
|
||||
other: Normal tillgång
|
||||
admin:
|
||||
other: Have the full power to access the site.
|
||||
other: Full kontroll över webbplatsen
|
||||
moderator:
|
||||
other: Has access to all posts except admin settings.
|
||||
other: Tillgång till allt utom administratörsinställningar
|
||||
privilege:
|
||||
level_1:
|
||||
description:
|
||||
other: Level 1 (less reputation required for private team, group)
|
||||
other: Nivå 1
|
||||
level_2:
|
||||
description:
|
||||
other: Level 2 (low reputation required for startup community)
|
||||
other: Nivå 2
|
||||
level_3:
|
||||
description:
|
||||
other: Level 3 (high reputation required for mature community)
|
||||
other: Nivå 3
|
||||
level_custom:
|
||||
description:
|
||||
other: Custom Level
|
||||
other: Anpassad nivå
|
||||
rank_question_add_label:
|
||||
other: Ask question
|
||||
other: Ställ en fråga
|
||||
rank_answer_add_label:
|
||||
other: Write answer
|
||||
other: Skriv ett svar
|
||||
rank_comment_add_label:
|
||||
other: Write comment
|
||||
other: Skriv en kommentar
|
||||
rank_report_add_label:
|
||||
other: Flag
|
||||
other: Flagga
|
||||
rank_comment_vote_up_label:
|
||||
other: Upvote comment
|
||||
other: Bra kommentar
|
||||
rank_link_url_limit_label:
|
||||
other: Post more than 2 links at a time
|
||||
other: Mer än 2 länkar samtidigt
|
||||
rank_question_vote_up_label:
|
||||
other: Upvote question
|
||||
other: Bra fråga
|
||||
rank_answer_vote_up_label:
|
||||
other: Upvote answer
|
||||
other: Bra svar
|
||||
rank_question_vote_down_label:
|
||||
other: Downvote question
|
||||
other: Dålig fråga
|
||||
rank_answer_vote_down_label:
|
||||
other: Downvote answer
|
||||
other: Dåligt svar
|
||||
rank_invite_someone_to_answer_label:
|
||||
other: Invite someone to answer
|
||||
other: Bjud in någon att svara
|
||||
rank_tag_add_label:
|
||||
other: Skapa ny tagg
|
||||
rank_tag_edit_label:
|
||||
other: Edit tag description (need to review)
|
||||
other: Beskriv etiketten (behöver granskas)
|
||||
rank_question_edit_label:
|
||||
other: Edit other's question (need to review)
|
||||
other: Editera annans fråga (behöver granskas)
|
||||
rank_answer_edit_label:
|
||||
other: Edit other's answer (need to review)
|
||||
other: Editera annans svar (behöver granskas)
|
||||
rank_question_edit_without_review_label:
|
||||
other: Edit other's question without review
|
||||
other: Editera annans fråga utan granskning
|
||||
rank_answer_edit_without_review_label:
|
||||
other: Edit other's answer without review
|
||||
other: Editera annans svar utan granskning
|
||||
rank_question_audit_label:
|
||||
other: Review question edits
|
||||
other: Granska ändringar av fråga
|
||||
rank_answer_audit_label:
|
||||
other: Review answer edits
|
||||
other: Granska ändringar av svar
|
||||
rank_tag_audit_label:
|
||||
other: Review tag edits
|
||||
other: Granska ändringar av etikett
|
||||
rank_tag_edit_without_review_label:
|
||||
other: Edit tag description without review
|
||||
other: Ändra etikett-beskrivningen utan granskning
|
||||
rank_tag_synonym_label:
|
||||
other: Manage tag synonyms
|
||||
other: Hantera etikett-synonymer
|
||||
email:
|
||||
other: Email
|
||||
other: E-post
|
||||
e_mail:
|
||||
other: Email
|
||||
other: E-post
|
||||
password:
|
||||
other: Lösenord
|
||||
pass:
|
||||
other: Lösenord
|
||||
old_pass:
|
||||
other: Current password
|
||||
other: Nuvarande lösenord
|
||||
original_text:
|
||||
other: This post
|
||||
other: Detta inlägg
|
||||
email_or_password_wrong_error:
|
||||
other: Email and password do not match.
|
||||
other: Fel e-post eller lösenord
|
||||
error:
|
||||
common:
|
||||
invalid_url:
|
||||
@@ -153,21 +153,21 @@ backend:
|
||||
other: Ogiltig status.
|
||||
password:
|
||||
space_invalid:
|
||||
other: Password cannot contain spaces.
|
||||
other: Lösenordet får inte innehålla mellanslag.
|
||||
admin:
|
||||
cannot_update_their_password:
|
||||
other: You cannot modify your password.
|
||||
other: Du får inte ändra ditt lösenord.
|
||||
cannot_edit_their_profile:
|
||||
other: You cannot modify your profile.
|
||||
other: Du får inte ändra din profil.
|
||||
cannot_modify_self_status:
|
||||
other: You cannot modify your status.
|
||||
other: Du får inte ändra din status.
|
||||
email_or_password_wrong:
|
||||
other: Email and password do not match.
|
||||
other: Fel e-post eller lösenord.
|
||||
answer:
|
||||
not_found:
|
||||
other: Answer do not found.
|
||||
other: Svar hittades inte.
|
||||
cannot_deleted:
|
||||
other: No permission to delete.
|
||||
other: Radering tillåts inte.
|
||||
cannot_update:
|
||||
other: No permission to update.
|
||||
question_closed_cannot_add:
|
||||
@@ -182,50 +182,50 @@ backend:
|
||||
cannot_edit_after_deadline:
|
||||
other: The comment time has been too long to modify.
|
||||
content_cannot_empty:
|
||||
other: Comment content cannot be empty.
|
||||
other: Kommentarsfältet får inte vara tomt.
|
||||
email:
|
||||
duplicate:
|
||||
other: Email already exists.
|
||||
other: E-postadressen finns redan.
|
||||
need_to_be_verified:
|
||||
other: Email should be verified.
|
||||
other: E-postadressen ska vara verifierad.
|
||||
verify_url_expired:
|
||||
other: Email verified URL has expired, please resend the email.
|
||||
other: Länken för att verifiera e-postadressen har gått ut. Vänligen skicka igen.
|
||||
illegal_email_domain_error:
|
||||
other: Email is not allowed from that email domain. Please use another one.
|
||||
other: E-post från den domänen tillåts inte. Vänligen använt en annan.
|
||||
lang:
|
||||
not_found:
|
||||
other: Language file not found.
|
||||
other: Språkfilen hittas inte.
|
||||
object:
|
||||
captcha_verification_failed:
|
||||
other: Captcha wrong.
|
||||
other: Fel Captcha.
|
||||
disallow_follow:
|
||||
other: You are not allowed to follow.
|
||||
other: Du tillåts inte följa.
|
||||
disallow_vote:
|
||||
other: You are not allowed to vote.
|
||||
other: Du tillåts inte rösta.
|
||||
disallow_vote_your_self:
|
||||
other: You can't vote for your own post.
|
||||
other: Du får inte rösta på ditt eget inlägg.
|
||||
not_found:
|
||||
other: Object not found.
|
||||
other: Objektet hittas inte.
|
||||
verification_failed:
|
||||
other: Verification failed.
|
||||
other: Verifiering misslyckades.
|
||||
email_or_password_incorrect:
|
||||
other: Email and password do not match.
|
||||
other: Fel e-postadress eller lösenord.
|
||||
old_password_verification_failed:
|
||||
other: The old password verification failed
|
||||
other: Den gamla verifieringen av lösenordet misslyckades.
|
||||
new_password_same_as_previous_setting:
|
||||
other: The new password is the same as the previous one.
|
||||
other: Det nya lösenordet är samma som det förra.
|
||||
already_deleted:
|
||||
other: This post has been deleted.
|
||||
other: Det här inlägget har raderats.
|
||||
meta:
|
||||
object_not_found:
|
||||
other: Meta object not found
|
||||
other: Meta-objekt hittas inte.
|
||||
question:
|
||||
already_deleted:
|
||||
other: This post has been deleted.
|
||||
other: Det här inlägget har raderats.
|
||||
under_review:
|
||||
other: Your post is awaiting review. It will be visible after it has been approved.
|
||||
other: Ditt inlägg väntar på granskning. Det kommer att publiceras så snart det har blivit godkänt.
|
||||
not_found:
|
||||
other: Question not found.
|
||||
other: .
|
||||
cannot_deleted:
|
||||
other: No permission to delete.
|
||||
cannot_close:
|
||||
@@ -234,6 +234,8 @@ backend:
|
||||
other: No permission to update.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: Reputation rank fail to meet the condition.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: You cannot delete a tag that is in use.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: You cannot set the synonym of the current tag as itself.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: The from name cannot be a email address.
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "Error {{.Field}} format near '{{.Content}}' at line {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "The number of users you add at once should be in the range of 1-{{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Read config failed
|
||||
@@ -313,16 +325,16 @@ backend:
|
||||
connection_failed:
|
||||
other: Database connection failed
|
||||
create_table_failed:
|
||||
other: Create table failed
|
||||
other: Tabellen kunde inte skapas.
|
||||
install:
|
||||
create_config_failed:
|
||||
other: Can't create the config.yaml file.
|
||||
other: Filen config.yaml kan inte skapas.
|
||||
upload:
|
||||
unsupported_file_format:
|
||||
other: Unsupported file format.
|
||||
other: Filformatet tillåts inte.
|
||||
site_info:
|
||||
config_not_found:
|
||||
other: Site config not found.
|
||||
other: Webbplats inställningarna hittar inte.
|
||||
badge:
|
||||
object_not_found:
|
||||
other: Badge object not found
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: tag wiki
|
||||
create_tag: Create Tag
|
||||
edit_tag: Edit Tag
|
||||
ask_a_question: Add Question
|
||||
ask_a_question: Create Question
|
||||
edit_question: Redigera fråga
|
||||
edit_answer: Redigera svar
|
||||
search: Sök
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: HTTP Error 500
|
||||
http_403: HTTP Error 403
|
||||
logout: Logga ut
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: Notifications
|
||||
inbox: Inkorg
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: dag
|
||||
hours: timmar
|
||||
days: dagar
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: heart
|
||||
smile: smile
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: More
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: Add Question
|
||||
title: Create Question
|
||||
edit_title: Edit Question
|
||||
default_reason: Edit question
|
||||
default_first_reason: Add question
|
||||
default_first_reason: Create question
|
||||
similar_questions: Similar questions
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: Revision
|
||||
title:
|
||||
label: Title
|
||||
placeholder: Be specific and imagine you're asking a question to another person
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: Title cannot be empty.
|
||||
range: Title up to 150 characters
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: Body
|
||||
msg:
|
||||
empty: Body cannot be empty.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Tags
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: Add tag
|
||||
create_btn: Create new tag
|
||||
search_tag: Search tag
|
||||
hint: "Describe what your question is about, at least one tag is required."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: No tags matched
|
||||
tag_required_text: Required tag (at least one)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: Sök
|
||||
footer:
|
||||
build_on: >-
|
||||
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Ändra
|
||||
loading: loading...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: E-postadress
|
||||
msg:
|
||||
@@ -1281,7 +1311,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profilbild
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: Your revision will show after review.
|
||||
sent_success: Sent successfully
|
||||
related_question:
|
||||
title: Related Questions
|
||||
title: Related
|
||||
answers: answers
|
||||
linked_question:
|
||||
title: Linked Questions
|
||||
description: Questions linked to
|
||||
no_linked_question: No questions linked from this question.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: People Asked
|
||||
desc: Bjud in personer som du tror kan svara.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
created: Created
|
||||
Asked: Asked
|
||||
asked: asked
|
||||
update: Modified
|
||||
Edited: Edited
|
||||
edit: edited
|
||||
commented: commented
|
||||
Views: Viewed
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: Follow
|
||||
following: Following
|
||||
counts: "{{count}} resultat"
|
||||
counts_loading: "... Results"
|
||||
more: More
|
||||
sort_btns:
|
||||
relevance: Relevance
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: All Questions
|
||||
x_questions: "{{ count }} frågor"
|
||||
x_answers: "{{ count }} svar"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Questions
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: Namn
|
||||
msg: Name cannot be empty.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: Lösenord
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: Branding
|
||||
legal: Legal
|
||||
write: Write
|
||||
terms: Terms
|
||||
tos: Användarvillkor
|
||||
privacy: Privacy
|
||||
seo: SEO
|
||||
customize: Anpassa
|
||||
themes: Teman
|
||||
css_html: CSS/HTML
|
||||
login: Logga in
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Välkommen till {{site_name}}
|
||||
user_center:
|
||||
login: Login
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: Namn
|
||||
email: Email
|
||||
reputation: Reputation
|
||||
created_at: Created Time
|
||||
delete_at: Deleted Time
|
||||
suspend_at: Suspended Time
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Suspend until
|
||||
status: Status
|
||||
role: Roll
|
||||
action: Action
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Suspend this user
|
||||
content: A suspended user can't log in.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: Questions
|
||||
unlisted: Unlisted
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: Tidszon
|
||||
msg: Timezone cannot be empty.
|
||||
text: Choose a city in the same timezone as you.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: Write
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Answer write
|
||||
label: Each user can only write one answer for each question
|
||||
text: "Turn off to allow users to write multiple answers to the same question, which may cause answers to be unfocused."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Recommend tags
|
||||
text: "Recommend tags will show in the dropdown list by default."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Färgschema
|
||||
navbar_style:
|
||||
label: Navbar style
|
||||
label: Navbar background style
|
||||
primary_color:
|
||||
label: Primary color
|
||||
text: Modify the colors used by your themes
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS och HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Visa loggar
|
||||
status: Status
|
||||
title: Badges
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: cannot be empty
|
||||
@@ -2307,6 +2437,7 @@ ui:
|
||||
user_normal: This user is already normal.
|
||||
user_suspended: This user has been suspended.
|
||||
user_deleted: This user has been deleted.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: This badge has been activated.
|
||||
badge_inactivated: This badge has been inactivated.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
+151
-20
@@ -234,6 +234,8 @@ backend:
|
||||
other: No permission to update.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: Reputation rank fail to meet the condition.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: You cannot delete a tag that is in use.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: You cannot set the synonym of the current tag as itself.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: The from name cannot be a email address.
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "Error {{.Field}} format near '{{.Content}}' at line {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "The number of users you add at once should be in the range of 1-{{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Read config failed
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: tag wiki
|
||||
create_tag: ట్యాగ్ని సృష్టించండి
|
||||
edit_tag: ట్యాగ్ని సవరించండి
|
||||
ask_a_question: Add Question
|
||||
ask_a_question: Create Question
|
||||
edit_question: ప్రశ్నను సవరించండి
|
||||
edit_answer: సమాధానాన్ని సవరించండి
|
||||
search: Search
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: HTTP Error 500
|
||||
http_403: HTTP Error 403
|
||||
logout: Log Out
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: నోటిఫికేషన్లు
|
||||
inbox: ఇన్బాక్స్
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: day
|
||||
hours: hours
|
||||
days: days
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: heart
|
||||
smile: smile
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: More
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: Add Question
|
||||
title: Create Question
|
||||
edit_title: Edit Question
|
||||
default_reason: Edit question
|
||||
default_first_reason: Add question
|
||||
default_first_reason: Create question
|
||||
similar_questions: Similar questions
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: Revision
|
||||
title:
|
||||
label: Title
|
||||
placeholder: Be specific and imagine you're asking a question to another person
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: Title cannot be empty.
|
||||
range: Title up to 150 characters
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: Body
|
||||
msg:
|
||||
empty: Body cannot be empty.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Tags
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: Add tag
|
||||
create_btn: Create new tag
|
||||
search_tag: Search tag
|
||||
hint: "Describe what your question is about, at least one tag is required."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: No tags matched
|
||||
tag_required_text: Required tag (at least one)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: Search
|
||||
footer:
|
||||
build_on: >-
|
||||
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Change
|
||||
loading: loading...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -1281,7 +1311,7 @@ ui:
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile image
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: Your revision will show after review.
|
||||
sent_success: Sent successfully
|
||||
related_question:
|
||||
title: Related Questions
|
||||
title: Related
|
||||
answers: answers
|
||||
linked_question:
|
||||
title: Linked Questions
|
||||
description: Questions linked to
|
||||
no_linked_question: No questions linked from this question.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: People Asked
|
||||
desc: Select people who you think might know the answer.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
created: Created
|
||||
Asked: Asked
|
||||
asked: asked
|
||||
update: Modified
|
||||
Edited: Edited
|
||||
edit: edited
|
||||
commented: commented
|
||||
Views: Viewed
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: Follow
|
||||
following: Following
|
||||
counts: "{{count}} Results"
|
||||
counts_loading: "... Results"
|
||||
more: More
|
||||
sort_btns:
|
||||
relevance: Relevance
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: All Questions
|
||||
x_questions: "{{ count }} Questions"
|
||||
x_answers: "{{ count }} answers"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Questions
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: Name
|
||||
msg: Name cannot be empty.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: Password
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: Branding
|
||||
legal: Legal
|
||||
write: Write
|
||||
terms: Terms
|
||||
tos: Terms of Service
|
||||
privacy: Privacy
|
||||
seo: SEO
|
||||
customize: Customize
|
||||
themes: Themes
|
||||
css_html: CSS/HTML
|
||||
login: Login
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
user_center:
|
||||
login: Login
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: Name
|
||||
email: Email
|
||||
reputation: Reputation
|
||||
created_at: Created Time
|
||||
delete_at: Deleted Time
|
||||
suspend_at: Suspended Time
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Suspend until
|
||||
status: Status
|
||||
role: Role
|
||||
action: Action
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Suspend this user
|
||||
content: A suspended user can't log in.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: Questions
|
||||
unlisted: Unlisted
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: Timezone
|
||||
msg: Timezone cannot be empty.
|
||||
text: Choose a city in the same timezone as you.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: Write
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Answer write
|
||||
label: Each user can only write one answer for each question
|
||||
text: "Turn off to allow users to write multiple answers to the same question, which may cause answers to be unfocused."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Recommend tags
|
||||
text: "Recommend tags will show in the dropdown list by default."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Color scheme
|
||||
navbar_style:
|
||||
label: Navbar style
|
||||
label: Navbar background style
|
||||
primary_color:
|
||||
label: Primary color
|
||||
text: Modify the colors used by your themes
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS and HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Show logs
|
||||
status: Status
|
||||
title: Badges
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: cannot be empty
|
||||
@@ -2307,6 +2437,7 @@ ui:
|
||||
user_normal: This user is already normal.
|
||||
user_suspended: This user has been suspended.
|
||||
user_deleted: This user has been deleted.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: This badge has been activated.
|
||||
badge_inactivated: This badge has been inactivated.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
+1574
-1443
File diff suppressed because it is too large
Load Diff
+155
-24
@@ -234,6 +234,8 @@ backend:
|
||||
other: Немає дозволу на оновлення.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: Ранг репутації не відповідає умові.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: Ви не можете видалити теґ, який використовується.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: Ви не можете встановити синонім поточного тегу як сам тег.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: Ім’я відправника не може бути електронною адресою.
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "Помилка формату {{.Field}} біля '{{.Content}}' у рядку {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "Кількість користувачів, яких ви додаєте одночасно, має бути в діапазоні 1-{{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Не вдалося прочитати конфігурацію
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: тег вікі
|
||||
create_tag: Створити теґ
|
||||
edit_tag: Редагувати теґ
|
||||
ask_a_question: Додати запитання
|
||||
ask_a_question: Create Question
|
||||
edit_question: Редагувати запитання
|
||||
edit_answer: Редагувати відповідь
|
||||
search: Пошук
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: Помилка HTTP 500
|
||||
http_403: Помилка HTTP 403
|
||||
logout: Вийти
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: Сповіщення
|
||||
inbox: Вхідні
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: день
|
||||
hours: годин
|
||||
days: дні
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: серце
|
||||
smile: посмішка
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: Більше
|
||||
wiki: Вікі
|
||||
ask:
|
||||
title: Додати питання
|
||||
title: Create Question
|
||||
edit_title: Редагувати питання
|
||||
default_reason: Редагувати питання
|
||||
default_first_reason: Додати питання
|
||||
default_first_reason: Create question
|
||||
similar_questions: Подібні питання
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: Редакція
|
||||
title:
|
||||
label: Назва
|
||||
placeholder: Будьте конкретними та уявіть, що ви ставите запитання іншій людині
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: Назва не може бути порожньою.
|
||||
range: Назва до 150 символів
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: Тіло
|
||||
msg:
|
||||
empty: Тіло не може бути порожнім.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Теґи
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: Додати теґ
|
||||
create_btn: Створити новий теґ
|
||||
search_tag: Шукати теґ
|
||||
hint: "Опишіть, про що ваше запитання, принаймні один тег є обов'язковим."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: Не знайдено тегів
|
||||
tag_required_text: Обов'язковий тег (принаймні один)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: Пошук
|
||||
footer:
|
||||
build_on: >-
|
||||
Працює на основі <1> Apache Answer </1> - програмного забезпечення з відкритим вихідним кодом, яке забезпечує роботу спільнот запитань та відповідей.<br />Зроблено з любов'ю © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Змінити
|
||||
loading: завантаження...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: Ім'я не може бути порожнім.
|
||||
range: Ім'я повинно мати довжину від 2 до 30 символів.
|
||||
character: 'Необхідно використовувати набір символів "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Електронна пошта
|
||||
msg:
|
||||
@@ -1275,13 +1305,13 @@ ui:
|
||||
display_name:
|
||||
label: Ім'я для відображення
|
||||
msg: Ім'я для відображення не може бути порожнім.
|
||||
msg_range: Ім'я для відображення до 30 символів.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Ім'я користувача
|
||||
caption: Користувачі можуть згадувати вас як "@username".
|
||||
msg: Ім’я користувача не може бути порожнім.
|
||||
msg_range: Ім'я користувача до 30 символів.
|
||||
character: 'Необхідно використовувати набір символів "a-z", "0-9", "-. _"'
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Зображення профілю
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: Ваша версія з'явиться після перевірки.
|
||||
sent_success: Успішно відправлено
|
||||
related_question:
|
||||
title: Пов'язані запитання
|
||||
title: Related
|
||||
answers: відповіді
|
||||
linked_question:
|
||||
title: Пов'язані питання
|
||||
description: Питання, пов'язані з
|
||||
no_linked_question: Немає питань, пов'язаних з цього питання.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: Люди запитували
|
||||
desc: Виберіть людей, які, на вашу думку, можуть знати відповідь.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Шукати людей
|
||||
question_detail:
|
||||
action: Дія
|
||||
created: Created
|
||||
Asked: Запитали
|
||||
asked: запитали
|
||||
update: Змінено
|
||||
Edited: Edited
|
||||
edit: відредаговано
|
||||
commented: прокоментовано
|
||||
Views: Переглянуто
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: Підписатися
|
||||
following: Підписані
|
||||
counts: "{{count}} Результатів"
|
||||
counts_loading: "... Results"
|
||||
more: Більше
|
||||
sort_btns:
|
||||
relevance: Релевантність
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: Всі питання
|
||||
x_questions: "{{ count }} Питань"
|
||||
x_answers: "{{ count }} відповідей"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Запитання
|
||||
answers: Відповіді
|
||||
newest: Найновіші
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: Ім’я
|
||||
msg: Ім'я не може бути порожнім.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: Пароль
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: Брендинг
|
||||
legal: Правила та умови
|
||||
write: Написати
|
||||
terms: Terms
|
||||
tos: Умови використання
|
||||
privacy: Приватність
|
||||
seo: SEO
|
||||
customize: Персоналізувати
|
||||
themes: Теми
|
||||
css_html: CSS/HTML
|
||||
login: Вхід
|
||||
privileges: Привілеї
|
||||
plugins: Плагіни
|
||||
installed_plugins: Встановлені плагіни
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Ласкаво просимо до {{site_name}}
|
||||
user_center:
|
||||
login: Вхід
|
||||
@@ -1852,10 +1899,10 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Зображуване ім'я
|
||||
msg_range: Зображуване ім'я до 30 символів.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Ім'я користувача
|
||||
msg_range: Ім'я користувача до 30 символів.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
email:
|
||||
label: Електронна пошта
|
||||
msg_invalid: Невірна адреса електронної пошти.
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: Ім’я
|
||||
email: Електронна пошта
|
||||
reputation: Репутація
|
||||
created_at: Створений час
|
||||
delete_at: Видалений час
|
||||
suspend_at: Час призупинення
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Suspend until
|
||||
status: Статус
|
||||
role: Роль
|
||||
action: Дія
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Призупинити цього користувача
|
||||
content: Призупинений користувач не може увійти в систему.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: Запитання
|
||||
unlisted: Вилучене зі списку
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: Часовий пояс
|
||||
msg: Часовий пояс не може бути пустим.
|
||||
text: Виберіть місто в тому ж часовому поясі, що й ви.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: Написати
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Відповідь на запис
|
||||
label: Кожен користувач може написати лише одну відповідь на кожне запитання
|
||||
text: "Вимкнути, щоб дозволити користувачам писати кілька відповідей на одне і те ж питання, що може призвести до розфокусування відповідей."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Рекомендовані теги
|
||||
text: "За замовчуванням рекомендовані теги будуть показані у спадному списку."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Схема кольорів
|
||||
navbar_style:
|
||||
label: Стиль панелі навігації
|
||||
label: Navbar background style
|
||||
primary_color:
|
||||
label: Основний колір
|
||||
text: Змінюйте кольори, що використовуються у ваших темах
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS та HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Показати записи журналу
|
||||
status: Статус
|
||||
title: Значки
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (необов'язково)
|
||||
empty: не може бути порожнім
|
||||
@@ -2307,6 +2437,7 @@ ui:
|
||||
user_normal: Цей користувач вже нормальний.
|
||||
user_suspended: Цього користувача було відсторонено.
|
||||
user_deleted: Цього користувача було видалено.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: Цей бейдж було активовано.
|
||||
badge_inactivated: Цей бейдж було деактивовано.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
+155
-24
@@ -234,6 +234,8 @@ backend:
|
||||
other: Không có quyền cập nhật.
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: Xếp hạng danh tiếng không đạt được điều kiện.
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: Bạn không thể xóa thẻ đang được sử dụng.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: Bạn không thể đặt từ đồng nghĩa của thẻ hiện tại là chính nó.
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: Tên người gửi không thể là địa chỉ email.
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "Lỗi định dạng {{.Field}} gần '{{.Content}}' tại dòng {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "Số lượng người dùng bạn thêm cùng một lúc nên nằm trong khoảng từ 1-{{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Đọc cấu hình thất bại
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: wiki thẻ
|
||||
create_tag: Tạo thẻ
|
||||
edit_tag: Chỉnh sửa thẻ
|
||||
ask_a_question: Thêm câu hỏi
|
||||
ask_a_question: Create Question
|
||||
edit_question: Chỉnh sửa câu hỏi
|
||||
edit_answer: Chỉnh sửa câu
|
||||
search: Tìm kiếm
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: Lỗi HTTP 500
|
||||
http_403: Lỗi HTTP 403
|
||||
logout: Đăng xuất
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: Các thông báo
|
||||
inbox: Hộp thư đến
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: ngày
|
||||
hours: giờ
|
||||
days: ngày
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: trái tim
|
||||
smile: nụ cười
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: Thêm
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: Thêm Câu hỏi
|
||||
title: Create Question
|
||||
edit_title: Chỉnh sửa Câu hỏi
|
||||
default_reason: Chỉnh sửa câu hỏi
|
||||
default_first_reason: Thêm câu hỏi
|
||||
default_first_reason: Create question
|
||||
similar_questions: Câu hỏi tương tự
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: Sửa đổi
|
||||
title:
|
||||
label: Tiêu đề
|
||||
placeholder: Hãy cụ thể và tưởng tượng rằng bạn đang hỏi một người khác
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: Tiêu đề không thể trống.
|
||||
range: Tiêu đề tối đa 150 ký tự
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: Nội dung
|
||||
msg:
|
||||
empty: Nội dung không thể trống.
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: Thẻ
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: Thêm thẻ
|
||||
create_btn: Tạo thẻ mới
|
||||
search_tag: Tìm kiếm thẻ
|
||||
hint: "Mô tả câu hỏi của bạn, ít nhất một thẻ là bắt buộc."
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: Không có thẻ phù hợp
|
||||
tag_required_text: Thẻ bắt buộc (ít nhất một)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: Tìm kiếm
|
||||
footer:
|
||||
build_on: >-
|
||||
Được hỗ trợ bởi <1> Apache Answer </1>- phần mềm mã nguồn mở dành cho cộng đồng hỏi đáp.<br />Được tạo với tình yêu © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: Thay đổi
|
||||
loading: đang tải...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: Tên không thể trống.
|
||||
range: Tên phải có độ dài từ 2 đến 30 ký tự.
|
||||
character: 'Chỉ sử dụng bộ ký tự "a-z", "0-9", , "A-Z", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -1275,13 +1305,13 @@ ui:
|
||||
display_name:
|
||||
label: Tên hiển thị
|
||||
msg: Tên hiển thị không thể trống.
|
||||
msg_range: Tên hiển thị tối đa 30 ký tự.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Tên người dùng
|
||||
caption: Mọi người có thể nhắc đến bạn với "@username".
|
||||
msg: Tên người dùng không thể trống.
|
||||
msg_range: Tên người dùng tối đa 30 ký tự.
|
||||
character: 'Chỉ sử dụng bộ ký tự "a-z", "0-9", " - . _"'
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Hình ảnh hồ sơ
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: Sửa đổi của bạn sẽ được hiển thị sau khi được xem xét.
|
||||
sent_success: Đã gửi thành công
|
||||
related_question:
|
||||
title: Các câu hỏi liên quan
|
||||
title: Related
|
||||
answers: câu trả lời
|
||||
linked_question:
|
||||
title: Câu hỏi được liên kết
|
||||
description: Câu hỏi liên quan đến
|
||||
no_linked_question: Không có câu hỏi nào được liên kết từ câu hỏi này.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: Mời mọi người
|
||||
desc: Mời những người bạn nghĩ có thể trả lời.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Tìm kiếm người
|
||||
question_detail:
|
||||
action: Hành động
|
||||
created: Created
|
||||
Asked: Đã hỏi
|
||||
asked: đã hỏi
|
||||
update: Đã chỉnh sửa
|
||||
Edited: Edited
|
||||
edit: đã chỉnh sửa
|
||||
commented: đã bình luận
|
||||
Views: Lượt xem
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: Theo dõi
|
||||
following: Đang theo dõi
|
||||
counts: "{{count}} Kết quả"
|
||||
counts_loading: "... Results"
|
||||
more: Thêm
|
||||
sort_btns:
|
||||
relevance: Liên quan
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: Tất cả câu hỏi
|
||||
x_questions: "{{ count }} Câu hỏi"
|
||||
x_answers: "{{ count }} câu trả lời"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: Câu hỏi
|
||||
answers: Câu trả lời
|
||||
newest: Mới nhất
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: Tên
|
||||
msg: Tên không thể trống.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: Mật khẩu
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: Thương hiệu
|
||||
legal: Pháp lý
|
||||
write: Viết
|
||||
terms: Terms
|
||||
tos: Điều khoản dịch vụ
|
||||
privacy: Quyền riêng tư
|
||||
seo: SEO
|
||||
customize: Tùy chỉnh
|
||||
themes: Chủ đề
|
||||
css_html: CSS/HTML
|
||||
login: Đăng nhập
|
||||
privileges: Đặc quyền
|
||||
plugins: Plugins
|
||||
installed_plugins: Plugin đã cài đặt
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Chào mừng bạn đến với {{site_name}}
|
||||
user_center:
|
||||
login: Đăng nhập
|
||||
@@ -1852,10 +1899,10 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Tên hiển thị
|
||||
msg_range: Tên hiển thị tối đa 30 ký tự.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Tên người dùng
|
||||
msg_range: Tên người dùng tối đa 30 ký tự.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg_invalid: Địa chỉ email không hợp lệ.
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: Tên
|
||||
email: Email
|
||||
reputation: Danh tiếng
|
||||
created_at: Thời gian tạo
|
||||
delete_at: Thời gian xóa
|
||||
suspend_at: Thời gian đình chỉ
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Suspend until
|
||||
status: Trạng thái
|
||||
role: Vai trò
|
||||
action: Hành động
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Đình chỉ người dùng này
|
||||
content: Người dùng bị đình chỉ không thể đăng nhập.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: Câu hỏi
|
||||
unlisted: Không được liệt kê
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: Múi giờ
|
||||
msg: Múi giờ không thể trống.
|
||||
text: Chọn một thành phố cùng múi giờ với bạn.
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: Viết
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Câu trả lời chỉnh sửa
|
||||
label: Each user can only write one answer for each question
|
||||
text: "Tắt để cho phép người dùng viết nhiều câu trả lời cho cùng một câu hỏi, điều này có thể khiến các câu trả lời bị mất trọng tâm."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Thẻ được đề xuất
|
||||
text: "Các thẻ gợi ý sẽ hiển thị trong danh sách thả xuống theo mặc định."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Sơ đồ màu
|
||||
navbar_style:
|
||||
label: Kiểu thanh điều hướng
|
||||
label: Navbar background style
|
||||
primary_color:
|
||||
label: Màu chính
|
||||
text: Thay đổi các màu sắc được sử dụng bởi chủ đề của bạn
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS và HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Hiển thị nhật ký
|
||||
status: Trạng thái
|
||||
title: Danh hiệu
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (tùy chọn)
|
||||
empty: không thể trống
|
||||
@@ -2307,6 +2437,7 @@ ui:
|
||||
user_normal: Người dùng này đã bình thường.
|
||||
user_suspended: Người dùng này đã bị đình chỉ.
|
||||
user_deleted: Người dùng này đã bị xóa.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: Huy hiệu này đã được kích hoạt.
|
||||
badge_inactivated: Huy hiệu này đã bị vô hiệu hóa.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
+159
-25
@@ -234,6 +234,8 @@ backend:
|
||||
other: 没有更新权限。
|
||||
content_cannot_empty:
|
||||
other: 内容不能为空。
|
||||
content_less_than_minimum:
|
||||
other: 输入的内容不足。
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: 声望值未达到要求。
|
||||
@@ -263,6 +265,8 @@ backend:
|
||||
other: 你不能删除这个正在使用的标签。
|
||||
cannot_set_synonym_as_itself:
|
||||
other: 你不能将当前标签设为自己的同义词。
|
||||
minimum_count:
|
||||
other: 没有输入足够的标签。
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: 发件人名称不能是邮箱地址。
|
||||
@@ -306,6 +310,14 @@ backend:
|
||||
other: "发生错误,{{.Field}} 格式错误,在 '{{.Content}}' 行数 {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "一次性添加的用户数量应在 1-{{.MaxAmount}} 之间。"
|
||||
status_suspended_forever:
|
||||
other: "<strong>该用户已被永久封禁。</strong>该用户不符合社区准则。"
|
||||
status_suspended_until:
|
||||
other: "<strong>该用户已被封禁至 {{.SuspendedUntil}}。</strong>该用户不符合社区准则。"
|
||||
status_deleted:
|
||||
other: "该用户已被删除。"
|
||||
status_inactive:
|
||||
other: "该用户未激活。"
|
||||
config:
|
||||
read_config_failed:
|
||||
other: 读取配置失败
|
||||
@@ -809,7 +821,7 @@ ui:
|
||||
tag_wiki: 标签维基
|
||||
create_tag: 创建标签
|
||||
edit_tag: 编辑标签
|
||||
ask_a_question: 提问题
|
||||
ask_a_question: 创建问题
|
||||
edit_question: 编辑问题
|
||||
edit_answer: 编辑回答
|
||||
search: 搜索
|
||||
@@ -833,6 +845,17 @@ ui:
|
||||
http_50X: HTTP 错误 500
|
||||
http_403: HTTP 错误 403
|
||||
logout: 退出
|
||||
posts: 帖子
|
||||
ai_assistant: AI 助手
|
||||
ai_assistant:
|
||||
description: 有问题?问它并获得答案、观点和建议。
|
||||
recent_conversations: 新对话
|
||||
show_more: 显示更多
|
||||
new: 新聊天
|
||||
ai_generate: 来自帖子的 AI,可能不准确。
|
||||
copy: 复制
|
||||
ask_a_follow_up: 提出后续问题
|
||||
ask_placeholder: 提问
|
||||
notifications:
|
||||
title: 通知
|
||||
inbox: 收件箱
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: 天
|
||||
hours: 小时
|
||||
days: 日
|
||||
month: 月
|
||||
months: 月
|
||||
year: 年
|
||||
reaction:
|
||||
heart: 爱心
|
||||
smile: 微笑
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: 更多
|
||||
wiki: 维基
|
||||
ask:
|
||||
title: 新增问题
|
||||
title: 创建问题
|
||||
edit_title: 编辑问题
|
||||
default_reason: 编辑问题
|
||||
default_first_reason: 新增问题
|
||||
default_first_reason: 创建问题
|
||||
similar_questions: 相似问题
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: 修订版本
|
||||
title:
|
||||
label: 标题
|
||||
placeholder: 请详细描述你的问题,想象你在问一个人
|
||||
placeholder: 你的主题是什么?请具体说明。
|
||||
msg:
|
||||
empty: 标题不能为空。
|
||||
range: 标题最多 150 个字符
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: 内容
|
||||
msg:
|
||||
empty: 内容不能为空。
|
||||
hint:
|
||||
optional_body: 描述这个问题是什么。
|
||||
minimum_characters: "详细描述这个问题,至少需要 {{min_content_length}} 字符。"
|
||||
tags:
|
||||
label: 标签
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: 添加标签
|
||||
create_btn: 创建新标签
|
||||
search_tag: 搜索标签
|
||||
hint: "描述您的问题是关于什么,至少需要一个标签。"
|
||||
hint: 描述您的内容是关于什么,至少需要一个标签。
|
||||
hint_zero_tags: 描述您的内容与什么有关。
|
||||
hint_more_than_one_tag: "描述您的内容是关于什么,至少需要{{min_tags_number}}个标签。"
|
||||
no_result: 没有匹配的标签
|
||||
tag_required_text: 必选标签(至少一个)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: 搜索
|
||||
footer:
|
||||
build_on: >-
|
||||
由 <1>Apache Answer</1> 提供动力 - 驱动问答社区的开源软件。<br />用爱制造 © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: 更改
|
||||
loading: 加载中...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: 名字不能为空
|
||||
range: 名称长度必须在 2 至 30 个字符之间。
|
||||
character: '只能由 "a-z"、"A-Z"、"0-9"、" - . _" 组成'
|
||||
character: '只能由 "a-z", "0-9", " - . _" 组成'
|
||||
email:
|
||||
label: 邮箱
|
||||
msg:
|
||||
@@ -1275,13 +1305,13 @@ ui:
|
||||
display_name:
|
||||
label: 显示名称
|
||||
msg: 昵称不能为空。
|
||||
msg_range: 显示名称不能超过 30 个字符。
|
||||
msg_range: 显示名称长度必须为 2-30 个字符。
|
||||
username:
|
||||
label: 用户名
|
||||
caption: 用户可以通过 "@用户名" 来提及你。
|
||||
msg: 用户名不能为空
|
||||
msg_range: 用户名不能超过 30 个字符。
|
||||
character: '只能由 "a-z"、"A-Z"、"0-9"、" - . _" 组成'
|
||||
msg_range: 显示名称长度必须为 2-30 个字符。
|
||||
character: '只能由 "a-z", "0-9", " - . _" 组成'
|
||||
avatar:
|
||||
label: 头像
|
||||
gravatar: Gravatar
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: 您的修订将在审阅通过后显示。
|
||||
sent_success: 发送成功
|
||||
related_question:
|
||||
title: 相关问题
|
||||
title: 相似
|
||||
answers: 个回答
|
||||
linked_question:
|
||||
title: 关联的问题
|
||||
description: 问题关联到
|
||||
no_linked_question: 这个问题没有相关联的问题。
|
||||
title: 关联
|
||||
description: 帖子关联到
|
||||
no_linked_question: 没有与之关联的贴子。
|
||||
invite_to_answer:
|
||||
title: 受邀人
|
||||
desc: 邀请你认为可能知道答案的人。
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: 搜索人员
|
||||
question_detail:
|
||||
action: 操作
|
||||
created: 创建于
|
||||
Asked: 提问于
|
||||
asked: 提问于
|
||||
update: 修改于
|
||||
Edited: 编辑于
|
||||
edit: 编辑于
|
||||
commented: 评论
|
||||
Views: 阅读次数
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: 关注
|
||||
following: 已关注
|
||||
counts: "{{count}} 个结果"
|
||||
counts_loading: "... 个结果"
|
||||
more: 更多
|
||||
sort_btns:
|
||||
relevance: 相关性
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: 全部问题
|
||||
x_questions: "{{ count }} 个问题"
|
||||
x_answers: "{{ count }} 个回答"
|
||||
x_posts: "{{ count }} 个帖子"
|
||||
questions: 问题
|
||||
answers: 回答
|
||||
newest: 最新
|
||||
@@ -1636,9 +1670,9 @@ ui:
|
||||
ssl_enabled:
|
||||
label: 启用 SSL
|
||||
ssl_enabled_on:
|
||||
label: 开
|
||||
label: On
|
||||
ssl_enabled_off:
|
||||
label: 关
|
||||
label: Off
|
||||
ssl_mode:
|
||||
label: SSL 模式
|
||||
ssl_root_cert:
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: 名字
|
||||
msg: 名字不能为空。
|
||||
character: '只能由 "a-z"、"A-Z"、"0-9"、" - . _" 组成'
|
||||
character: '只能由 "a-z", "0-9", " - . _" 组成'
|
||||
msg_max_length: 名称长度必须在 2 至 30 个字符之间。
|
||||
admin_password:
|
||||
label: 密码
|
||||
@@ -1743,6 +1777,7 @@ ui:
|
||||
branding: 品牌
|
||||
legal: 法律条款
|
||||
write: 撰写
|
||||
terms: 服务条款
|
||||
tos: 服务条款
|
||||
privacy: 隐私政策
|
||||
seo: SEO
|
||||
@@ -1753,6 +1788,18 @@ ui:
|
||||
plugins: 插件
|
||||
installed_plugins: 已安装插件
|
||||
apperance: 外观
|
||||
community: 社区
|
||||
advanced: 高级选项
|
||||
tags: 标签
|
||||
rules: 规则
|
||||
policies: 政策
|
||||
security: 安全
|
||||
files: 文件
|
||||
apikeys: API 密钥
|
||||
intelligence: 智力
|
||||
ai_assistant: AI 助手
|
||||
ai_settings: AI 设置
|
||||
mcp: MCP
|
||||
website_welcome: 欢迎来到 {{site_name}}
|
||||
user_center:
|
||||
login: 登录
|
||||
@@ -1852,10 +1899,10 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: 显示名称
|
||||
msg_range: 显示名称不能超过 30 个字符。
|
||||
msg_range: 显示名称长度必须为 2-30 个字符。
|
||||
username:
|
||||
label: 用户名
|
||||
msg_range: 用户名不能超过 30 个字符。
|
||||
msg_range: 用户名长度必须为 2-30 个字符。
|
||||
email:
|
||||
label: 电子邮件地址
|
||||
msg_invalid: 无效的邮箱地址
|
||||
@@ -1890,6 +1937,7 @@ ui:
|
||||
created_at: 创建时间
|
||||
delete_at: 删除时间
|
||||
suspend_at: 封禁时间
|
||||
suspend_until: 封禁到期
|
||||
status: 状态
|
||||
role: 角色
|
||||
action: 操作
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: 挂起此用户
|
||||
content: 被封禁的用户将无法登录。
|
||||
label: 用户将被封禁多长时间?
|
||||
forever: 永久
|
||||
questions:
|
||||
page_title: 问题
|
||||
unlisted: 已隐藏
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: 时区
|
||||
msg: 时区不能为空。
|
||||
text: 选择一个与您相同时区的城市。
|
||||
avatar:
|
||||
label: 默认头像
|
||||
text: 没有自定义头像的用户。
|
||||
gravatar_base_url:
|
||||
label: Gravatar 根路径 URL
|
||||
text: Gravatar 提供商的 API 基础的 URL。当为空时忽略。
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: 总是显示外部内容
|
||||
ask_before_display: 在显示外部内容之前询问
|
||||
write:
|
||||
page_title: 编辑
|
||||
page_title: 文件
|
||||
min_content:
|
||||
label: 最小问题长度
|
||||
text: 最小允许的问题内容长度(字符)。
|
||||
restrict_answer:
|
||||
title: 回答编辑
|
||||
label: 每个用户对于每个问题只能有一个回答
|
||||
text: "用户可以使用编辑按钮优化已有的回答"
|
||||
min_tags:
|
||||
label: "问题的最少标签数"
|
||||
text: "一个问题所需标签的最小数量。"
|
||||
recommend_tags:
|
||||
label: 推荐标签
|
||||
text: "推荐标签将默认显示在下拉列表中。"
|
||||
@@ -2103,21 +2165,28 @@ ui:
|
||||
color_scheme:
|
||||
label: 配色方案
|
||||
navbar_style:
|
||||
label: 导航栏样式
|
||||
label: 导航栏背景样式
|
||||
primary_color:
|
||||
label: 主色调
|
||||
text: 修改您主题使用的颜色
|
||||
layout:
|
||||
label: 布局
|
||||
full_width: 全宽度
|
||||
fixed_width: 固定宽度
|
||||
css_and_html:
|
||||
page_title: CSS 与 HTML
|
||||
custom_css:
|
||||
label: 自定义 CSS
|
||||
text: 这将作为 <link> 标签插入
|
||||
text: >
|
||||
|
||||
head:
|
||||
label: 头部
|
||||
text: 这将在 </head> 前插入
|
||||
text: >
|
||||
|
||||
header:
|
||||
label: 页眉
|
||||
text: 这将在 <body> 后插入
|
||||
text: >
|
||||
|
||||
footer:
|
||||
label: 页脚
|
||||
text: 这将在 </body> 之前插入。
|
||||
@@ -2208,6 +2277,70 @@ ui:
|
||||
show_logs: 显示日志
|
||||
status: 状态
|
||||
title: 徽章
|
||||
apikeys:
|
||||
title: API 密钥
|
||||
add_api_key: 添加 API 密钥
|
||||
desc: 描述
|
||||
scope: 范围
|
||||
key: 密钥
|
||||
created: 创建于
|
||||
last_used: 最后使用
|
||||
add_or_edit_modal:
|
||||
add_title: 添加 API 密钥
|
||||
edit_title: 编辑 API 密钥
|
||||
description: 描述
|
||||
description_required: 请输入描述。
|
||||
scope: 范围
|
||||
global: 全局
|
||||
read-only: 只读
|
||||
created_modal:
|
||||
title: 已创建API密钥
|
||||
api_key: API 密钥
|
||||
description: 此密钥将不会再次显示。请确保您在继续之前拿到一份副本。
|
||||
delete_modal:
|
||||
title: 删除API密钥
|
||||
content: 任何使用此密钥的应用程序或脚本都将无法访问API。这是永久性的!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI 已启用
|
||||
check: 启用AI功能
|
||||
text: AI 模型必须正确配置才能使用。
|
||||
provider:
|
||||
label: 提供商
|
||||
api_host:
|
||||
label: API 主机
|
||||
msg: API 主机是必需的
|
||||
api_key:
|
||||
label: API 密钥
|
||||
check: 检查
|
||||
check_success: "连接成功。"
|
||||
msg: API 密钥是必填项
|
||||
model:
|
||||
label: 模型
|
||||
msg: 模型是必需的
|
||||
add_success: AI 设置更新成功。
|
||||
conversations:
|
||||
topic: 主题
|
||||
helpful: 有帮助
|
||||
unhelpful: 没有帮助
|
||||
created: 创建于
|
||||
action: 操作
|
||||
empty: 没有找到会话
|
||||
delete_modal:
|
||||
title: 删除对话
|
||||
content: 您确定要删除此对话吗?这是永久性的!
|
||||
delete_success: 对话删除成功。
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP服务器
|
||||
switch: 已启用
|
||||
type:
|
||||
label: 类型
|
||||
url:
|
||||
label: 链接
|
||||
http_header:
|
||||
label: HTTP Header
|
||||
text: 请将 {key} 替换为 API 密钥。
|
||||
form:
|
||||
optional: (选填)
|
||||
empty: 不能为空
|
||||
@@ -2304,6 +2437,7 @@ ui:
|
||||
user_normal: 此用户已经是正常的。
|
||||
user_suspended: 此用户已被封禁。
|
||||
user_deleted: 此用户已被删除
|
||||
user_added: 用户添加成功。
|
||||
badge_activated: 此徽章已被激活。
|
||||
badge_inactivated: 此徽章已被禁用。
|
||||
users_deleted: 这些用户已被删除。
|
||||
|
||||
+221
-90
@@ -23,18 +23,18 @@ backend:
|
||||
unknown:
|
||||
other: 未知的錯誤。
|
||||
request_format_error:
|
||||
other: 請求格式錯誤。
|
||||
other: 要求格式錯誤。
|
||||
unauthorized_error:
|
||||
other: 未授權。
|
||||
database_error:
|
||||
other: 資料庫錯誤。
|
||||
other: 資料伺服器錯誤。
|
||||
forbidden_error:
|
||||
other: 訪問被拒絕。
|
||||
other: 已拒絕存取。
|
||||
duplicate_request_error:
|
||||
other: 提交重複。
|
||||
other: 重複送出。
|
||||
action:
|
||||
report:
|
||||
other: 舉報
|
||||
other: 檢舉
|
||||
edit:
|
||||
other: 編輯
|
||||
delete:
|
||||
@@ -44,7 +44,7 @@ backend:
|
||||
reopen:
|
||||
other: 再次開啟。
|
||||
forbidden_error:
|
||||
other: 訪問被拒絕。
|
||||
other: 已拒絕存取。
|
||||
pin:
|
||||
other: 置頂
|
||||
hide:
|
||||
@@ -58,7 +58,7 @@ backend:
|
||||
undelete:
|
||||
other: 還原
|
||||
merge:
|
||||
other: Merge
|
||||
other: 合併
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
@@ -71,9 +71,9 @@ backend:
|
||||
user:
|
||||
other: 預設沒有特別閱讀權限。
|
||||
admin:
|
||||
other: 擁有訪問該網站的全部權限。
|
||||
other: 擁有存取此網站的全部權限。
|
||||
moderator:
|
||||
other: 可以訪問除了管理員設定以外的所有貼文。
|
||||
other: 可以存取除了管理員設定以外的所有貼文。
|
||||
privilege:
|
||||
level_1:
|
||||
description:
|
||||
@@ -92,7 +92,7 @@ backend:
|
||||
rank_answer_add_label:
|
||||
other: Write answer
|
||||
rank_comment_add_label:
|
||||
other: Write comment
|
||||
other: 寫留言
|
||||
rank_report_add_label:
|
||||
other: Flag
|
||||
rank_comment_vote_up_label:
|
||||
@@ -134,29 +134,29 @@ backend:
|
||||
email:
|
||||
other: 電子郵件
|
||||
e_mail:
|
||||
other: Email
|
||||
other: 電子郵件
|
||||
password:
|
||||
other: 密碼
|
||||
pass:
|
||||
other: Password
|
||||
other: 密碼
|
||||
old_pass:
|
||||
other: Current password
|
||||
other: 目前密碼
|
||||
original_text:
|
||||
other: This post
|
||||
other: 此貼文
|
||||
email_or_password_wrong_error:
|
||||
other: 電郵和密碼不匹配。
|
||||
error:
|
||||
common:
|
||||
invalid_url:
|
||||
other: Invalid URL.
|
||||
other: URL 無效。
|
||||
status_invalid:
|
||||
other: Invalid status.
|
||||
other: 無效狀態。
|
||||
password:
|
||||
space_invalid:
|
||||
other: Password cannot contain spaces.
|
||||
other: 密碼不能包含空白字元。
|
||||
admin:
|
||||
cannot_update_their_password:
|
||||
other: 您不能修改自己的密码。
|
||||
other: 你不能修改自己的密码。
|
||||
cannot_edit_their_profile:
|
||||
other: You cannot modify your profile.
|
||||
cannot_modify_self_status:
|
||||
@@ -176,25 +176,25 @@ backend:
|
||||
other: Answer content cannot be empty.
|
||||
comment:
|
||||
edit_without_permission:
|
||||
other: 不允許編輯評論。
|
||||
other: 不允許編輯留言。
|
||||
not_found:
|
||||
other: 未發現評論。
|
||||
other: 未發現留言。
|
||||
cannot_edit_after_deadline:
|
||||
other: 該則評論時間過久,無法修改。
|
||||
other: 這則留言時間過久,無法修改。
|
||||
content_cannot_empty:
|
||||
other: Comment content cannot be empty.
|
||||
email:
|
||||
duplicate:
|
||||
other: 該電子郵件已被使用。
|
||||
other: 這個電子郵件地址已被使用。
|
||||
need_to_be_verified:
|
||||
other: 需驗證電子郵件
|
||||
other: 需驗證電子郵件地址。
|
||||
verify_url_expired:
|
||||
other: 電子郵件驗證網址已過期,請重發電子郵件。
|
||||
other: 電子郵件地址驗證網址已過期,請重寄電子郵件。
|
||||
illegal_email_domain_error:
|
||||
other: Email is not allowed from that email domain. Please use another one.
|
||||
lang:
|
||||
not_found:
|
||||
other: 未找到语言文件。
|
||||
other: 未找到語言檔。
|
||||
object:
|
||||
captcha_verification_failed:
|
||||
other: 驗證碼錯誤。
|
||||
@@ -209,13 +209,13 @@ backend:
|
||||
verification_failed:
|
||||
other: 驗證失敗。
|
||||
email_or_password_incorrect:
|
||||
other: 電郵和密碼不匹配。
|
||||
other: 電子郵件地址和密碼不匹配。
|
||||
old_password_verification_failed:
|
||||
other: 舊密碼驗證失敗
|
||||
new_password_same_as_previous_setting:
|
||||
other: 新密碼與先前的一樣。
|
||||
already_deleted:
|
||||
other: This post has been deleted.
|
||||
other: 這則貼文已被刪除。
|
||||
meta:
|
||||
object_not_found:
|
||||
other: Meta object not found
|
||||
@@ -234,6 +234,8 @@ backend:
|
||||
other: 無更新權限。
|
||||
content_cannot_empty:
|
||||
other: Content cannot be empty.
|
||||
content_less_than_minimum:
|
||||
other: Not enough content entered.
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: Reputation rank fail to meet the condition.
|
||||
@@ -262,7 +264,9 @@ backend:
|
||||
is_used_cannot_delete:
|
||||
other: You cannot delete a tag that is in use.
|
||||
cannot_set_synonym_as_itself:
|
||||
other: 你不能將當前標籤的同義詞設置為本身。
|
||||
other: 你不能將目前標籤的同義詞設定為本身。
|
||||
minimum_count:
|
||||
other: Not enough tags were entered.
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: The from name cannot be a email address.
|
||||
@@ -289,9 +293,9 @@ backend:
|
||||
username_invalid:
|
||||
other: 使用者名稱無效。
|
||||
username_duplicate:
|
||||
other: 用戶名已被使用
|
||||
other: 使用者名稱已被使用。
|
||||
set_avatar:
|
||||
other: 頭像設置錯誤。
|
||||
other: 大頭照設定錯誤。
|
||||
cannot_update_your_role:
|
||||
other: 您不能修改自己的角色。
|
||||
not_allowed_registration:
|
||||
@@ -306,12 +310,20 @@ backend:
|
||||
other: "Error {{.Field}} format near '{{.Content}}' at line {{.Line}}. {{.ExtraMessage}}"
|
||||
add_bulk_users_amount_error:
|
||||
other: "The number of users you add at once should be in the range of 1-{{.MaxAmount}}."
|
||||
status_suspended_forever:
|
||||
other: "<strong>This user was suspended forever.</strong> This user doesn't meet a community guideline."
|
||||
status_suspended_until:
|
||||
other: "<strong>This user was suspended until {{.SuspendedUntil}}.</strong> This user doesn't meet a community guideline."
|
||||
status_deleted:
|
||||
other: "This user was deleted."
|
||||
status_inactive:
|
||||
other: "This user is inactive."
|
||||
config:
|
||||
read_config_failed:
|
||||
other: 讀取配置失敗
|
||||
other: 讀取組態失敗
|
||||
database:
|
||||
connection_failed:
|
||||
other: 資料庫連接失敗
|
||||
other: 資料庫連線失敗
|
||||
create_table_failed:
|
||||
other: 表建立失敗
|
||||
install:
|
||||
@@ -329,7 +341,7 @@ backend:
|
||||
reason:
|
||||
spam:
|
||||
name:
|
||||
other: spam
|
||||
other: 垃圾訊息
|
||||
desc:
|
||||
other: This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.
|
||||
rude_or_abusive:
|
||||
@@ -383,7 +395,7 @@ backend:
|
||||
other: Improve and correct problems with this post yourself.
|
||||
needs_close:
|
||||
name:
|
||||
other: needs close
|
||||
other: 需關閉
|
||||
desc:
|
||||
other: A closed question can't answer, but still can edit, vote and comment.
|
||||
needs_delete:
|
||||
@@ -395,7 +407,7 @@ backend:
|
||||
close:
|
||||
duplicate:
|
||||
name:
|
||||
other: 垃圾信息
|
||||
other: 垃圾訊息
|
||||
desc:
|
||||
other: 此問題以前就有人問過,而且已經有了答案。
|
||||
guideline:
|
||||
@@ -440,9 +452,9 @@ backend:
|
||||
accept_answer:
|
||||
other: 已接受的回答
|
||||
comment_question:
|
||||
other: 評論了問題
|
||||
other: 留言了問題
|
||||
comment_answer:
|
||||
other: 評論了答案
|
||||
other: 留言了答案
|
||||
reply_to_you:
|
||||
other: 回覆了你
|
||||
mention_you:
|
||||
@@ -454,7 +466,7 @@ backend:
|
||||
your_answer_was_deleted:
|
||||
other: 你的答案已被刪除
|
||||
your_comment_was_deleted:
|
||||
other: 你的評論已被刪除
|
||||
other: 你的留言已被刪除
|
||||
up_voted_question:
|
||||
other: upvoted question
|
||||
down_voted_question:
|
||||
@@ -520,11 +532,11 @@ backend:
|
||||
downvoted:
|
||||
other: downvoted
|
||||
accept:
|
||||
other: accept
|
||||
other: 採納
|
||||
accepted:
|
||||
other: accepted
|
||||
other: 已採納
|
||||
edit:
|
||||
other: edit
|
||||
other: 編輯
|
||||
review:
|
||||
queued_post:
|
||||
other: Queued post
|
||||
@@ -549,7 +561,7 @@ backend:
|
||||
other: Completed our new user tutorial.
|
||||
editor:
|
||||
name:
|
||||
other: Editor
|
||||
other: 編輯者
|
||||
desc:
|
||||
other: First post edit.
|
||||
first_flag:
|
||||
@@ -564,7 +576,7 @@ backend:
|
||||
other: First up voted a post.
|
||||
first_link:
|
||||
name:
|
||||
other: First Link
|
||||
other: 首個連結
|
||||
desc:
|
||||
other: First added a link to another post.
|
||||
first_reaction:
|
||||
@@ -599,12 +611,12 @@ backend:
|
||||
other: Read the [community guidelines].
|
||||
reader:
|
||||
name:
|
||||
other: Reader
|
||||
other: 閱讀者
|
||||
desc:
|
||||
other: Read every answers in a topic with more than 10 answers.
|
||||
welcome:
|
||||
name:
|
||||
other: Welcome
|
||||
other: 歡迎
|
||||
desc:
|
||||
other: Received a up vote.
|
||||
nice_share:
|
||||
@@ -654,7 +666,7 @@ backend:
|
||||
other: Invited 5 members.
|
||||
thank_you:
|
||||
name:
|
||||
other: Thank You
|
||||
other: 感謝
|
||||
desc:
|
||||
other: Has 20 up voted posts and gave 10 up votes.
|
||||
gives_back:
|
||||
@@ -795,7 +807,7 @@ backend:
|
||||
# The following fields are used for interface presentation(Front-end)
|
||||
ui:
|
||||
how_to_format:
|
||||
title: 如何設定文本格式
|
||||
title: 如何設定文字格式
|
||||
desc: >-
|
||||
<ul class="mb-0"><li><p class="mb-2">mention a post: <code>#post_id</code></p></li> <li><p class="mb-2">to make links</p><pre class="mb-2"><code><https://url.com><br/><br/>[Title](https://url.com)</code></pre></li><li><p class="mb-2">put returns between paragraphs</p></li><li><p class="mb-2"><em>_italic_</em> or **<strong>bold</strong>**</p></li><li><p class="mb-2">indent code by 4 spaces</p></li><li><p class="mb-2">quote by placing <code>></code> at start of line</p></li><li><p class="mb-2">backtick escapes <code>`like _this_`</code></p></li><li><p class="mb-2">create code fences with backticks <code>`</code></p><pre class="mb-0"><code>```<br/>code here<br/>```</code></pre></li></ul>
|
||||
pagination:
|
||||
@@ -809,11 +821,11 @@ ui:
|
||||
tag_wiki: 標籤 wiki
|
||||
create_tag: Create Tag
|
||||
edit_tag: 編輯標籤
|
||||
ask_a_question: 提問題
|
||||
ask_a_question: Create Question
|
||||
edit_question: 編輯問題
|
||||
edit_answer: 編輯回答
|
||||
search: 搜尋
|
||||
posts_containing: 包含的帖子
|
||||
posts_containing: 包含的貼文
|
||||
settings: 設定
|
||||
notifications: 通知
|
||||
login: 登入
|
||||
@@ -821,18 +833,29 @@ ui:
|
||||
account_recovery: 帳號恢復
|
||||
account_activation: 帳號啟用
|
||||
confirm_email: 確認電子郵件
|
||||
account_suspended: 帳號已封禁
|
||||
account_suspended: 帳號已被停權
|
||||
admin: 後台管理
|
||||
change_email: 修改電子郵件
|
||||
install: Answer 安裝
|
||||
upgrade: Answer 升級
|
||||
maintenance: 網站維護
|
||||
users: 用戶
|
||||
users: 使用者
|
||||
oauth_callback: Processing
|
||||
http_404: HTTP 錯誤 404
|
||||
http_50X: HTTP 錯誤 500
|
||||
http_403: HTTP 錯誤 403
|
||||
logout: Log Out
|
||||
logout: 登出
|
||||
posts: Posts
|
||||
ai_assistant: AI Assistant
|
||||
ai_assistant:
|
||||
description: Got a question? Ask it and get answers, perspectives, and recommendations.
|
||||
recent_conversations: Recent Conversations
|
||||
show_more: Show more
|
||||
new: New chat
|
||||
ai_generate: AI-generated from posts and may not be accurate.
|
||||
copy: Copy
|
||||
ask_a_follow_up: Ask a follow-up
|
||||
ask_placeholder: Ask a question
|
||||
notifications:
|
||||
title: 通知
|
||||
inbox: 收件夾
|
||||
@@ -842,7 +865,7 @@ ui:
|
||||
show_more: 顯示更多
|
||||
someone: Someone
|
||||
inbox_type:
|
||||
all: All
|
||||
all: 所有
|
||||
posts: Posts
|
||||
invites: Invites
|
||||
votes: Votes
|
||||
@@ -909,7 +932,7 @@ ui:
|
||||
form_image:
|
||||
fields:
|
||||
file:
|
||||
label: Image file
|
||||
label: 圖檔
|
||||
btn: 選擇圖片
|
||||
msg:
|
||||
empty: 文件不能為空。
|
||||
@@ -1036,8 +1059,8 @@ ui:
|
||||
target_tag_title: Target tag
|
||||
target_tag_description: A synonym between these two tags will be created after merging.
|
||||
no_results: No tags matched
|
||||
btn_submit: Submit
|
||||
btn_close: Close
|
||||
btn_submit: 送出
|
||||
btn_close: 關閉
|
||||
edit_tag:
|
||||
title: 編輯標籤
|
||||
default_reason: 編輯標籤
|
||||
@@ -1056,6 +1079,9 @@ ui:
|
||||
day: 天
|
||||
hours: hours
|
||||
days: days
|
||||
month: month
|
||||
months: months
|
||||
year: year
|
||||
reaction:
|
||||
heart: heart
|
||||
smile: smile
|
||||
@@ -1111,10 +1137,10 @@ ui:
|
||||
more: 更多
|
||||
wiki: Wiki
|
||||
ask:
|
||||
title: 發問
|
||||
title: Create Question
|
||||
edit_title: 編輯問題
|
||||
default_reason: 編輯問題
|
||||
default_first_reason: Add question
|
||||
default_first_reason: Create question
|
||||
similar_questions: 相似的問題
|
||||
form:
|
||||
fields:
|
||||
@@ -1122,7 +1148,7 @@ ui:
|
||||
label: 編輯歷史
|
||||
title:
|
||||
label: 標題
|
||||
placeholder: 具體一點,想像你是在向另一個人提出問題
|
||||
placeholder: What's your topic? Be specific.
|
||||
msg:
|
||||
empty: 標題不能為空
|
||||
range: 標題最多 150 個字元
|
||||
@@ -1130,6 +1156,9 @@ ui:
|
||||
label: 正文
|
||||
msg:
|
||||
empty: 正文不能爲空。
|
||||
hint:
|
||||
optional_body: Describe what the question is about.
|
||||
minimum_characters: "Describe what the question is about, at least {{min_content_length}} characters are required."
|
||||
tags:
|
||||
label: 標籤
|
||||
msg:
|
||||
@@ -1150,7 +1179,9 @@ ui:
|
||||
add_btn: 建立標籤
|
||||
create_btn: 建立新標籤
|
||||
search_tag: 搜尋標籤
|
||||
hint: "请描述您的問題,至少需要一個標籤。"
|
||||
hint: Describe what your content is about, at least one tag is required.
|
||||
hint_zero_tags: Describe what your content is about.
|
||||
hint_more_than_one_tag: "Describe what your content is about, at least {{min_tags_number}} tags are required."
|
||||
no_result: 沒有匹配的標籤
|
||||
tag_required_text: 必填標籤 (至少一個)
|
||||
header:
|
||||
@@ -1169,8 +1200,7 @@ ui:
|
||||
search:
|
||||
placeholder: 搜尋
|
||||
footer:
|
||||
build_on: >-
|
||||
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
|
||||
build_on: Powered by <1> Apache Answer </1>
|
||||
upload_img:
|
||||
name: 更改
|
||||
loading: 讀取中...
|
||||
@@ -1203,7 +1233,7 @@ ui:
|
||||
msg:
|
||||
empty: 名稱不能為空
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: 郵箱
|
||||
msg:
|
||||
@@ -1275,13 +1305,13 @@ ui:
|
||||
display_name:
|
||||
label: Display name
|
||||
msg: 顯示名稱不能為空。
|
||||
msg_range: 顯示名稱最長 30 個字元。
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: 用戶名
|
||||
caption: 用戶之間可以通過 "@用戶名" 進行交互。
|
||||
msg: 用戶名不能為空
|
||||
msg_range: 使用者名稱最長 30 個字元。
|
||||
character: '必須由 "a-z", "0-9", " - . _" 組成'
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", "- . _"'
|
||||
avatar:
|
||||
label: Profile image
|
||||
gravatar: 頭像
|
||||
@@ -1318,12 +1348,12 @@ ui:
|
||||
change_email_info: >-
|
||||
我們已經寄出一封郵件至此電子郵件地址,請遵照說明進行確認。
|
||||
email:
|
||||
label: Email
|
||||
label: 電子郵件地址
|
||||
new_email:
|
||||
label: New email
|
||||
msg: New email cannot be empty.
|
||||
label: 新電子郵件地址
|
||||
msg: 新電子郵件地址不能為空白。
|
||||
pass:
|
||||
label: Current password
|
||||
label: 目前密碼
|
||||
msg: Password cannot be empty.
|
||||
password_title: 密碼
|
||||
current_pass:
|
||||
@@ -1335,16 +1365,16 @@ ui:
|
||||
new_pass:
|
||||
label: New password
|
||||
pass_confirm:
|
||||
label: Confirm new password
|
||||
label: 確認新密碼
|
||||
interface:
|
||||
heading: 介面
|
||||
lang:
|
||||
label: Interface language
|
||||
label: 介面語言
|
||||
text: 設定使用者介面語言,在重新整裡頁面後生效。
|
||||
my_logins:
|
||||
title: My logins
|
||||
label: Log in or sign up on this site using these accounts.
|
||||
modal_title: Remove login
|
||||
title: 我的登入
|
||||
label: 使用這些帳號登入或註冊此網站。
|
||||
modal_title: 移除登入
|
||||
modal_content: Are you sure you want to remove this login from your account?
|
||||
modal_confirm_btn: Remove
|
||||
remove_success: Removed successfully
|
||||
@@ -1356,12 +1386,12 @@ ui:
|
||||
review: 您的修訂將在審核通過後顯示。
|
||||
sent_success: Sent successfully
|
||||
related_question:
|
||||
title: 相關問題
|
||||
title: Related
|
||||
answers: 個回答
|
||||
linked_question:
|
||||
title: Linked Questions
|
||||
description: Questions linked to
|
||||
no_linked_question: No questions linked from this question.
|
||||
title: Linked
|
||||
description: Posts linked to
|
||||
no_linked_question: No contents linked from this content.
|
||||
invite_to_answer:
|
||||
title: People Asked
|
||||
desc: Invite people who you think might know the answer.
|
||||
@@ -1370,9 +1400,11 @@ ui:
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
created: Created
|
||||
Asked: 提問於
|
||||
asked: 提問於
|
||||
update: 修改於
|
||||
Edited: Edited
|
||||
edit: 最後編輯於
|
||||
commented: commented
|
||||
Views: 閱讀次數
|
||||
@@ -1441,18 +1473,18 @@ ui:
|
||||
btns:
|
||||
confirm: 確認
|
||||
cancel: 取消
|
||||
edit: Edit
|
||||
edit: 編輯
|
||||
save: 儲存
|
||||
delete: 刪除
|
||||
undelete: Undelete
|
||||
list: List
|
||||
undelete: 還原
|
||||
list: 清單
|
||||
unlist: Unlist
|
||||
unlisted: Unlisted
|
||||
login: 登入
|
||||
signup: 註冊
|
||||
logout: 登出
|
||||
verify: 驗證
|
||||
create: Create
|
||||
create: 建立
|
||||
approve: 核准
|
||||
reject: 拒絕
|
||||
skip: 略過
|
||||
@@ -1501,6 +1533,7 @@ ui:
|
||||
follow: 追蹤
|
||||
following: 已關注
|
||||
counts: "{{count}} 個結果"
|
||||
counts_loading: "... Results"
|
||||
more: 更多
|
||||
sort_btns:
|
||||
relevance: 相關性
|
||||
@@ -1552,6 +1585,7 @@ ui:
|
||||
all_questions: 全部問題
|
||||
x_questions: "{{ count }} 個問題"
|
||||
x_answers: "{{ count }} 個回答"
|
||||
x_posts: "{{ count }} Posts"
|
||||
questions: 個問題
|
||||
answers: 回答
|
||||
newest: 最新的
|
||||
@@ -1682,7 +1716,7 @@ ui:
|
||||
admin_name:
|
||||
label: 暱稱
|
||||
msg: 暱稱不能為空。
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
msg_max_length: Name must be between 2 to 30 characters in length.
|
||||
admin_password:
|
||||
label: 密碼
|
||||
@@ -1743,16 +1777,29 @@ ui:
|
||||
branding: 品牌
|
||||
legal: 法律條款
|
||||
write: 撰寫
|
||||
terms: Terms
|
||||
tos: 服務條款
|
||||
privacy: 隱私政策
|
||||
seo: SEO
|
||||
customize: 自定義
|
||||
themes: 主題
|
||||
css_html: CSS/HTML
|
||||
login: 登入
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
apperance: Appearance
|
||||
community: Community
|
||||
advanced: Advanced
|
||||
tags: Tags
|
||||
rules: Rules
|
||||
policies: Policies
|
||||
security: Security
|
||||
files: Files
|
||||
apikeys: API Keys
|
||||
intelligence: Intelligence
|
||||
ai_assistant: AI Assistant
|
||||
ai_settings: AI Settings
|
||||
mcp: MCP
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
user_center:
|
||||
login: Login
|
||||
@@ -1887,9 +1934,10 @@ ui:
|
||||
name: 名稱
|
||||
email: 郵箱
|
||||
reputation: 聲望
|
||||
created_at: 創建時間
|
||||
delete_at: 刪除時間
|
||||
suspend_at: 停權時間
|
||||
created_at: Created time
|
||||
delete_at: Deleted time
|
||||
suspend_at: Suspended time
|
||||
suspend_until: Suspend until
|
||||
status: 狀態
|
||||
role: 角色
|
||||
action: 操作
|
||||
@@ -1924,6 +1972,8 @@ ui:
|
||||
suspend_user:
|
||||
title: Suspend this user
|
||||
content: A suspended user can't log in.
|
||||
label: How long will the user be suspended for?
|
||||
forever: Forever
|
||||
questions:
|
||||
page_title: 問題
|
||||
unlisted: Unlisted
|
||||
@@ -1984,6 +2034,12 @@ ui:
|
||||
label: 時區
|
||||
msg: 時區不能為空。
|
||||
text: 選擇一個與您相同時區的城市。
|
||||
avatar:
|
||||
label: Default avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar base URL
|
||||
text: URL of the Gravatar provider's API base. Ignored when empty.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
@@ -2055,11 +2111,17 @@ ui:
|
||||
always_display: Always display external content
|
||||
ask_before_display: Ask before displaying external content
|
||||
write:
|
||||
page_title: 編輯
|
||||
page_title: Files
|
||||
min_content:
|
||||
label: Minimum question body length
|
||||
text: Minimum allowed question body length in characters.
|
||||
restrict_answer:
|
||||
title: Answer write
|
||||
label: Each user can only write one answer for each question
|
||||
text: "Turn off to allow users to write multiple answers to the same question, which may cause answers to be unfocused."
|
||||
min_tags:
|
||||
label: "Minimum tags per question"
|
||||
text: "Minimum number of tags required in a question."
|
||||
recommend_tags:
|
||||
label: Recommend tags
|
||||
text: "Recommend tags will show in the dropdown list by default."
|
||||
@@ -2103,10 +2165,14 @@ ui:
|
||||
color_scheme:
|
||||
label: Color scheme
|
||||
navbar_style:
|
||||
label: 導航欄樣式
|
||||
label: Navbar background style
|
||||
primary_color:
|
||||
label: 主色調
|
||||
text: 修改您主題使用的顏色
|
||||
layout:
|
||||
label: Layout
|
||||
full_width: Full-width
|
||||
fixed_width: Fixed-width
|
||||
css_and_html:
|
||||
page_title: CSS 與 HTML
|
||||
custom_css:
|
||||
@@ -2211,6 +2277,70 @@ ui:
|
||||
show_logs: Show logs
|
||||
status: Status
|
||||
title: Badges
|
||||
apikeys:
|
||||
title: API Keys
|
||||
add_api_key: Add API Key
|
||||
desc: Description
|
||||
scope: Scope
|
||||
key: Key
|
||||
created: Created
|
||||
last_used: Last used
|
||||
add_or_edit_modal:
|
||||
add_title: Add API Key
|
||||
edit_title: Edit API Key
|
||||
description: Description
|
||||
description_required: Description is required.
|
||||
scope: Scope
|
||||
global: Global
|
||||
read-only: Read-only
|
||||
created_modal:
|
||||
title: API key created
|
||||
api_key: API key
|
||||
description: This key will not be displayed again. Make sure you take a copy before continuing.
|
||||
delete_modal:
|
||||
title: Delete API Key
|
||||
content: Any applications or scripts using this key will no longer be able to access the API. This is permanent!
|
||||
ai_settings:
|
||||
enabled:
|
||||
label: AI enabled
|
||||
check: Enable AI features
|
||||
text: The AI model must be configured correctly before it can be used.
|
||||
provider:
|
||||
label: Provider
|
||||
api_host:
|
||||
label: API host
|
||||
msg: API host is required
|
||||
api_key:
|
||||
label: API key
|
||||
check: Check
|
||||
check_success: "Connection successful."
|
||||
msg: API key is required
|
||||
model:
|
||||
label: Model
|
||||
msg: Model is required
|
||||
add_success: AI settings updated successfully.
|
||||
conversations:
|
||||
topic: Topic
|
||||
helpful: Helpful
|
||||
unhelpful: Unhelpful
|
||||
created: Created
|
||||
action: Action
|
||||
empty: No conversations found.
|
||||
delete_modal:
|
||||
title: Delete conversation
|
||||
content: Are you sure you want to delete this conversation? This is permanent!
|
||||
delete_success: Conversation deleted successfully.
|
||||
mcp:
|
||||
mcp_server:
|
||||
label: MCP server
|
||||
switch: Enabled
|
||||
type:
|
||||
label: Type
|
||||
url:
|
||||
label: URL
|
||||
http_header:
|
||||
label: HTTP header
|
||||
text: Please replace {key} with the API Key.
|
||||
form:
|
||||
optional: (選填)
|
||||
empty: 不能為空
|
||||
@@ -2307,6 +2437,7 @@ ui:
|
||||
user_normal: This user is already normal.
|
||||
user_suspended: This user has been suspended.
|
||||
user_deleted: This user has been deleted.
|
||||
user_added: User has been added successfully.
|
||||
badge_activated: This badge has been activated.
|
||||
badge_inactivated: This badge has been inactivated.
|
||||
users_deleted: These users have been deleted.
|
||||
|
||||
@@ -25,9 +25,9 @@ import (
|
||||
"path/filepath"
|
||||
|
||||
"github.com/apache/answer/internal/base/data"
|
||||
"github.com/apache/answer/internal/base/path"
|
||||
"github.com/apache/answer/internal/base/server"
|
||||
"github.com/apache/answer/internal/base/translator"
|
||||
"github.com/apache/answer/internal/cli"
|
||||
"github.com/apache/answer/internal/router"
|
||||
"github.com/apache/answer/internal/service/service_config"
|
||||
"github.com/apache/answer/pkg/writer"
|
||||
@@ -98,7 +98,7 @@ func (c *AllConfig) SetEnvironmentOverrides() {
|
||||
// ReadConfig read config
|
||||
func ReadConfig(configFilePath string) (c *AllConfig, err error) {
|
||||
if len(configFilePath) == 0 {
|
||||
configFilePath = filepath.Join(cli.ConfigFileDir, cli.DefaultConfigFileName)
|
||||
configFilePath = filepath.Join(path.ConfigFileDir, path.DefaultConfigFileName)
|
||||
}
|
||||
c = &AllConfig{}
|
||||
config, err := viper.NewWithPath(configFilePath)
|
||||
@@ -117,7 +117,9 @@ func ReadConfig(configFilePath string) (c *AllConfig, err error) {
|
||||
func RewriteConfig(configFilePath string, allConfig *AllConfig) error {
|
||||
buf := bytes.Buffer{}
|
||||
enc := yaml.NewEncoder(&buf)
|
||||
defer enc.Close()
|
||||
defer func() {
|
||||
_ = enc.Close()
|
||||
}()
|
||||
enc.SetIndent(2)
|
||||
if err := enc.Encode(allConfig); err != nil {
|
||||
return err
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package constant
|
||||
|
||||
const (
|
||||
AIConfigProvider = "ai_config.provider"
|
||||
)
|
||||
|
||||
const (
|
||||
DefaultAIPromptConfigZhCN = `你是一个智能助手,可以帮助用户查询系统中的信息。用户问题:%s
|
||||
|
||||
你可以使用以下工具来查询系统信息:
|
||||
- get_questions: 搜索系统中已存在的问题,使用这个工具可以获取问题列表后注意需要使用 get_answers_by_question_id 获取问题的答案
|
||||
- get_answers_by_question_id: 根据问题ID获取该问题的所有答案
|
||||
- get_comments: 搜索评论信息
|
||||
- get_tags: 搜索标签信息
|
||||
- get_tag_detail: 获取特定标签的详细信息
|
||||
- get_user: 搜索用户信息
|
||||
- semantic_search: 通过语义相似度搜索问题和答案。当用户的问题与现有内容概念相关但可能不匹配确切关键词时使用此工具。当 get_questions 关键词搜索返回较差结果时,请使用 semantic_search。
|
||||
|
||||
请根据用户的问题智能地使用这些工具来提供准确的答案。如果需要查询系统信息,请先使用相应的工具获取数据。`
|
||||
DefaultAIPromptConfigEnUS = `You are an intelligent assistant that can help users query information in the system. User question: %s
|
||||
|
||||
You can use the following tools to query system information:
|
||||
- get_questions: Search for existing questions in the system. After using this tool to get the question list, you need to use get_answers_by_question_id to get the answers to the questions
|
||||
- get_answers_by_question_id: Get all answers for a question based on question ID
|
||||
- get_comments: Search for comment information
|
||||
- get_tags: Search for tag information
|
||||
- get_tag_detail: Get detailed information about a specific tag
|
||||
- get_user: Search for user information
|
||||
- semantic_search: Search questions and answers by semantic meaning. Use this when the user's question relates conceptually to existing content but may not match exact keywords. When get_questions keyword search returns poor results, use semantic_search instead.
|
||||
|
||||
Please intelligently use these tools based on the user's question to provide accurate answers. If you need to query system information, please use the appropriate tools to get the data first.`
|
||||
)
|
||||
@@ -23,3 +23,10 @@ const (
|
||||
AcceptLanguageFlag = "Accept-Language"
|
||||
ShortIDFlag = "Short-ID-Enabled"
|
||||
)
|
||||
|
||||
type ContextKey string
|
||||
|
||||
const (
|
||||
AcceptLanguageContextKey ContextKey = ContextKey(AcceptLanguageFlag)
|
||||
ShortIDContextKey ContextKey = ContextKey(ShortIDFlag)
|
||||
)
|
||||
|
||||
@@ -43,6 +43,9 @@ const (
|
||||
ColorSchemeLight = "light"
|
||||
ColorSchemeDark = "dark"
|
||||
ColorSchemeSystem = "system"
|
||||
|
||||
ThemeLayoutFullWidth = "Full-width"
|
||||
ThemeLayoutFixedWidth = "Fixed-width"
|
||||
)
|
||||
|
||||
const (
|
||||
|
||||
@@ -20,15 +20,30 @@
|
||||
package constant
|
||||
|
||||
const (
|
||||
// SiteTypeLegal\SiteTypeLegal\SiteTypeWrite The following items will no longer be used.
|
||||
SiteTypeLegal = "legal"
|
||||
SiteTypeInterface = "interface"
|
||||
SiteTypeWrite = "write"
|
||||
|
||||
SiteTypeGeneral = "general"
|
||||
SiteTypeInterface = "interface"
|
||||
SiteTypeBranding = "branding"
|
||||
SiteTypeWrite = "write"
|
||||
SiteTypeLegal = "legal"
|
||||
SiteTypeSeo = "seo"
|
||||
SiteTypeLogin = "login"
|
||||
SiteTypeCustomCssHTML = "css-html"
|
||||
SiteTypeTheme = "theme"
|
||||
SiteTypePrivileges = "privileges"
|
||||
SiteTypeUsers = "users"
|
||||
|
||||
SiteTypeAdvanced = "advanced"
|
||||
SiteTypeQuestions = "questions"
|
||||
SiteTypeTags = "tags"
|
||||
|
||||
SiteTypeUsersSettings = "users_settings"
|
||||
SiteTypeInterfaceSettings = "interface_settings"
|
||||
|
||||
SiteTypePolicies = "policies"
|
||||
SiteTypeSecurity = "security"
|
||||
SiteTypeAI = "ai"
|
||||
SiteTypeFeatureToggle = "feature-toggle"
|
||||
SiteTypeMCP = "mcp"
|
||||
)
|
||||
|
||||
@@ -27,6 +27,7 @@ import (
|
||||
"github.com/apache/answer/internal/service/file_record"
|
||||
"github.com/apache/answer/internal/service/service_config"
|
||||
"github.com/apache/answer/internal/service/siteinfo_common"
|
||||
"github.com/apache/answer/internal/service/user_admin"
|
||||
"github.com/robfig/cron/v3"
|
||||
"github.com/segmentfault/pacman/log"
|
||||
)
|
||||
@@ -36,6 +37,7 @@ type ScheduledTaskManager struct {
|
||||
siteInfoService siteinfo_common.SiteInfoCommonService
|
||||
questionService *content.QuestionService
|
||||
fileRecordService *file_record.FileRecordService
|
||||
userAdminService *user_admin.UserAdminService
|
||||
serviceConfig *service_config.ServiceConfig
|
||||
}
|
||||
|
||||
@@ -44,12 +46,14 @@ func NewScheduledTaskManager(
|
||||
siteInfoService siteinfo_common.SiteInfoCommonService,
|
||||
questionService *content.QuestionService,
|
||||
fileRecordService *file_record.FileRecordService,
|
||||
userAdminService *user_admin.UserAdminService,
|
||||
serviceConfig *service_config.ServiceConfig,
|
||||
) *ScheduledTaskManager {
|
||||
manager := &ScheduledTaskManager{
|
||||
siteInfoService: siteInfoService,
|
||||
questionService: questionService,
|
||||
fileRecordService: fileRecordService,
|
||||
userAdminService: userAdminService,
|
||||
serviceConfig: serviceConfig,
|
||||
}
|
||||
return manager
|
||||
@@ -78,6 +82,19 @@ func (s *ScheduledTaskManager) Run() {
|
||||
log.Error(err)
|
||||
}
|
||||
|
||||
// Check for expired user suspensions every 10 minutes
|
||||
_, err = c.AddFunc("*/10 * * * *", func() {
|
||||
ctx := context.Background()
|
||||
log.Infof("checking expired user suspensions")
|
||||
err := s.userAdminService.CheckAndUnsuspendExpiredUsers(ctx)
|
||||
if err != nil {
|
||||
log.Errorf("failed to check expired user suspensions: %v", err)
|
||||
}
|
||||
})
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
}
|
||||
|
||||
if s.serviceConfig.CleanUpUploads {
|
||||
log.Infof("clean up uploads cron enabled")
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ type Data struct {
|
||||
func NewData(db *xorm.Engine, cache cache.Cache) (*Data, func(), error) {
|
||||
cleanup := func() {
|
||||
log.Info("closing the data resources")
|
||||
db.Close()
|
||||
_ = db.Close()
|
||||
}
|
||||
return &Data{DB: db, Cache: cache}, cleanup, nil
|
||||
}
|
||||
|
||||
@@ -21,18 +21,18 @@ package handler
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/apache/answer/internal/base/constant"
|
||||
"net/http"
|
||||
|
||||
"github.com/apache/answer/internal/base/reason"
|
||||
"github.com/apache/answer/internal/base/validator"
|
||||
"github.com/gin-gonic/gin"
|
||||
myErrors "github.com/segmentfault/pacman/errors"
|
||||
"github.com/segmentfault/pacman/log"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// HandleResponse Handle response body
|
||||
func HandleResponse(ctx *gin.Context, err error, data interface{}) {
|
||||
lang := GetLang(ctx)
|
||||
func HandleResponse(ctx *gin.Context, err error, data any) {
|
||||
lang := GetLangByCtx(ctx)
|
||||
// no error
|
||||
if err == nil {
|
||||
ctx.JSON(http.StatusOK, NewRespBodyData(http.StatusOK, reason.Success, data).TrMsg(lang))
|
||||
@@ -61,9 +61,8 @@ func HandleResponse(ctx *gin.Context, err error, data interface{}) {
|
||||
}
|
||||
|
||||
// BindAndCheck bind request and check
|
||||
func BindAndCheck(ctx *gin.Context, data interface{}) bool {
|
||||
lang := GetLang(ctx)
|
||||
ctx.Set(constant.AcceptLanguageFlag, lang)
|
||||
func BindAndCheck(ctx *gin.Context, data any) bool {
|
||||
lang := GetLangByCtx(ctx)
|
||||
if err := ctx.ShouldBind(data); err != nil {
|
||||
log.Errorf("http_handle BindAndCheck fail, %s", err.Error())
|
||||
HandleResponse(ctx, myErrors.New(http.StatusBadRequest, reason.RequestFormatError), nil)
|
||||
@@ -79,8 +78,8 @@ func BindAndCheck(ctx *gin.Context, data interface{}) bool {
|
||||
}
|
||||
|
||||
// BindAndCheckReturnErr bind request and check
|
||||
func BindAndCheckReturnErr(ctx *gin.Context, data interface{}) (errFields []*validator.FormErrorField) {
|
||||
lang := GetLang(ctx)
|
||||
func BindAndCheckReturnErr(ctx *gin.Context, data any) (errFields []*validator.FormErrorField) {
|
||||
lang := GetLangByCtx(ctx)
|
||||
if err := ctx.ShouldBind(data); err != nil {
|
||||
log.Errorf("http_handle BindAndCheck fail, %s", err.Error())
|
||||
HandleResponse(ctx, myErrors.New(http.StatusBadRequest, reason.RequestFormatError), nil)
|
||||
|
||||
@@ -27,18 +27,19 @@ import (
|
||||
"github.com/segmentfault/pacman/i18n"
|
||||
)
|
||||
|
||||
// GetLang get language from header
|
||||
func GetLang(ctx *gin.Context) i18n.Language {
|
||||
acceptLanguage := ctx.GetHeader(constant.AcceptLanguageFlag)
|
||||
if len(acceptLanguage) == 0 {
|
||||
return i18n.DefaultLanguage
|
||||
}
|
||||
return i18n.Language(acceptLanguage)
|
||||
}
|
||||
|
||||
// GetLangByCtx get language from header
|
||||
func GetLangByCtx(ctx context.Context) i18n.Language {
|
||||
acceptLanguage, ok := ctx.Value(constant.AcceptLanguageFlag).(i18n.Language)
|
||||
if ginCtx, ok := ctx.(*gin.Context); ok {
|
||||
acceptLanguage, ok := ginCtx.Get(constant.AcceptLanguageFlag)
|
||||
if ok {
|
||||
if acceptLanguage, ok := acceptLanguage.(i18n.Language); ok {
|
||||
return acceptLanguage
|
||||
}
|
||||
return i18n.DefaultLanguage
|
||||
}
|
||||
}
|
||||
|
||||
acceptLanguage, ok := ctx.Value(constant.AcceptLanguageContextKey).(i18n.Language)
|
||||
if ok {
|
||||
return acceptLanguage
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ type RespBody struct {
|
||||
// response message
|
||||
Message string `json:"msg"`
|
||||
// response data
|
||||
Data interface{} `json:"data"`
|
||||
Data any `json:"data"`
|
||||
}
|
||||
|
||||
// TrMsg translate the reason cause as a message
|
||||
@@ -63,7 +63,7 @@ func NewRespBodyFromError(e *errors.Error) *RespBody {
|
||||
}
|
||||
|
||||
// NewRespBodyData new response body with data
|
||||
func NewRespBodyData(code int, reason string, data interface{}) *RespBody {
|
||||
func NewRespBodyData(code int, reason string, data any) *RespBody {
|
||||
return &RespBody{
|
||||
Code: code,
|
||||
Reason: reason,
|
||||
|
||||
@@ -23,11 +23,23 @@ import (
|
||||
"context"
|
||||
|
||||
"github.com/apache/answer/internal/base/constant"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// GetEnableShortID get language from header
|
||||
// GetEnableShortID get short id flag from context
|
||||
func GetEnableShortID(ctx context.Context) bool {
|
||||
flag, ok := ctx.Value(constant.ShortIDFlag).(bool)
|
||||
// Check gin context first (set by ShortIDMiddleware via ctx.Set)
|
||||
if ginCtx, ok := ctx.(*gin.Context); ok {
|
||||
flag, ok := ginCtx.Get(constant.ShortIDFlag)
|
||||
if ok {
|
||||
if flag, ok := flag.(bool); ok {
|
||||
return flag
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
// Fallback for non-gin contexts (e.g., SitemapCron uses context.WithValue)
|
||||
flag, ok := ctx.Value(constant.ShortIDContextKey).(bool)
|
||||
if ok {
|
||||
return flag
|
||||
}
|
||||
|
||||
@@ -20,20 +20,20 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/apache/answer/internal/base/constant"
|
||||
"github.com/apache/answer/internal/base/handler"
|
||||
"github.com/apache/answer/internal/base/translator"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/segmentfault/pacman/i18n"
|
||||
"golang.org/x/text/language"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// ExtractAndSetAcceptLanguage extract accept language from header and set to context
|
||||
func ExtractAndSetAcceptLanguage(ctx *gin.Context) {
|
||||
// The language of our front-end configuration, like en_US
|
||||
lang := handler.GetLang(ctx)
|
||||
tag, _, err := language.ParseAcceptLanguage(string(lang))
|
||||
acceptLanguage := ctx.GetHeader(constant.AcceptLanguageFlag)
|
||||
tag, _, err := language.ParseAcceptLanguage(acceptLanguage)
|
||||
if err != nil || len(tag) == 0 {
|
||||
ctx.Set(constant.AcceptLanguageFlag, i18n.LanguageEnglish)
|
||||
return
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"github.com/apache/answer/internal/base/handler"
|
||||
"github.com/apache/answer/internal/base/reason"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/segmentfault/pacman/errors"
|
||||
)
|
||||
|
||||
// AuthAPIKey middleware to authenticate API key
|
||||
func (am *AuthUserMiddleware) AuthAPIKey() gin.HandlerFunc {
|
||||
return func(ctx *gin.Context) {
|
||||
token := ExtractToken(ctx)
|
||||
if len(token) == 0 {
|
||||
handler.HandleResponse(ctx, errors.Unauthorized(reason.UnauthorizedError), nil)
|
||||
ctx.Abort()
|
||||
return
|
||||
}
|
||||
pass, err := am.authService.AuthAPIKey(ctx, ctx.Request.Method == "GET", token)
|
||||
if err != nil {
|
||||
handler.HandleResponse(ctx, errors.Unauthorized(reason.UnauthorizedError), nil)
|
||||
ctx.Abort()
|
||||
return
|
||||
}
|
||||
if !pass {
|
||||
handler.HandleResponse(ctx, errors.Unauthorized(reason.UnauthorizedError), nil)
|
||||
ctx.Abort()
|
||||
return
|
||||
}
|
||||
ctx.Next()
|
||||
}
|
||||
}
|
||||
@@ -80,7 +80,7 @@ func (am *AuthUserMiddleware) Auth() gin.HandlerFunc {
|
||||
func (am *AuthUserMiddleware) EjectUserBySiteInfo() gin.HandlerFunc {
|
||||
return func(ctx *gin.Context) {
|
||||
mustLogin := false
|
||||
siteInfo, _ := am.siteInfoCommonService.GetSiteLogin(ctx)
|
||||
siteInfo, _ := am.siteInfoCommonService.GetSiteSecurity(ctx)
|
||||
if siteInfo != nil {
|
||||
mustLogin = siteInfo.LoginRequired
|
||||
}
|
||||
@@ -116,6 +116,10 @@ func (am *AuthUserMiddleware) MustAuthWithoutAccountAvailable() gin.HandlerFunc
|
||||
ctx.Abort()
|
||||
return
|
||||
}
|
||||
// Check API key scope
|
||||
if am.AuthAPIKeyScope(ctx, token) {
|
||||
return
|
||||
}
|
||||
userInfo, err := am.authService.GetUserCacheInfo(ctx, token)
|
||||
if err != nil || userInfo == nil {
|
||||
handler.HandleResponse(ctx, errors.Unauthorized(reason.UnauthorizedError), nil)
|
||||
@@ -141,6 +145,10 @@ func (am *AuthUserMiddleware) MustAuthAndAccountAvailable() gin.HandlerFunc {
|
||||
ctx.Abort()
|
||||
return
|
||||
}
|
||||
// Check API key scope
|
||||
if am.AuthAPIKeyScope(ctx, token) {
|
||||
return
|
||||
}
|
||||
userInfo, err := am.authService.GetUserCacheInfo(ctx, token)
|
||||
if err != nil || userInfo == nil {
|
||||
handler.HandleResponse(ctx, errors.Unauthorized(reason.UnauthorizedError), nil)
|
||||
@@ -184,7 +192,22 @@ func (am *AuthUserMiddleware) AdminAuth() gin.HandlerFunc {
|
||||
return
|
||||
}
|
||||
if userInfo != nil {
|
||||
if userInfo.EmailStatus == entity.EmailStatusToBeVerified {
|
||||
_ = am.authService.RemoveAdminUserCacheInfo(ctx, token)
|
||||
handler.HandleResponse(ctx, errors.Forbidden(reason.EmailNeedToBeVerified),
|
||||
&schema.ForbiddenResp{Type: schema.ForbiddenReasonTypeInactive})
|
||||
ctx.Abort()
|
||||
return
|
||||
}
|
||||
if userInfo.UserStatus == entity.UserStatusSuspended {
|
||||
_ = am.authService.RemoveAdminUserCacheInfo(ctx, token)
|
||||
handler.HandleResponse(ctx, errors.Forbidden(reason.UserSuspended),
|
||||
&schema.ForbiddenResp{Type: schema.ForbiddenReasonTypeUserSuspended})
|
||||
ctx.Abort()
|
||||
return
|
||||
}
|
||||
if userInfo.UserStatus == entity.UserStatusDeleted {
|
||||
_ = am.authService.RemoveAdminUserCacheInfo(ctx, token)
|
||||
handler.HandleResponse(ctx, errors.Unauthorized(reason.UnauthorizedError), nil)
|
||||
ctx.Abort()
|
||||
return
|
||||
@@ -197,7 +220,7 @@ func (am *AuthUserMiddleware) AdminAuth() gin.HandlerFunc {
|
||||
|
||||
func (am *AuthUserMiddleware) CheckPrivateMode() gin.HandlerFunc {
|
||||
return func(ctx *gin.Context) {
|
||||
resp, err := am.siteInfoCommonService.GetSiteLogin(ctx)
|
||||
resp, err := am.siteInfoCommonService.GetSiteSecurity(ctx)
|
||||
if err != nil {
|
||||
ShowIndexPage(ctx)
|
||||
ctx.Abort()
|
||||
@@ -211,6 +234,26 @@ func (am *AuthUserMiddleware) CheckPrivateMode() gin.HandlerFunc {
|
||||
ctx.Next()
|
||||
}
|
||||
}
|
||||
|
||||
func (am *AuthUserMiddleware) AuthAPIKeyScope(ctx *gin.Context, accessToken string) (apiHaveNoScope bool) {
|
||||
if !strings.HasPrefix(accessToken, "sk_") {
|
||||
return false
|
||||
}
|
||||
var err error
|
||||
pass, err := am.authService.AuthAPIKey(ctx, ctx.Request.Method == "GET", accessToken)
|
||||
if err != nil {
|
||||
handler.HandleResponse(ctx, errors.Forbidden(reason.ForbiddenError), nil)
|
||||
ctx.Abort()
|
||||
return true
|
||||
}
|
||||
if !pass {
|
||||
handler.HandleResponse(ctx, errors.Forbidden(reason.ForbiddenError), nil)
|
||||
ctx.Abort()
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func ShowIndexPage(ctx *gin.Context) {
|
||||
ctx.Header("content-type", "text/html;charset=utf-8")
|
||||
ctx.Header("X-Frame-Options", "DENY")
|
||||
|
||||
@@ -80,7 +80,6 @@ func (am *AvatarMiddleware) AvatarThumb() gin.HandlerFunc {
|
||||
}
|
||||
ctx.Abort()
|
||||
return
|
||||
|
||||
} else {
|
||||
urlInfo, err := url.Parse(uri)
|
||||
if err != nil {
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"github.com/apache/answer/internal/base/handler"
|
||||
"github.com/apache/answer/internal/base/reason"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/segmentfault/pacman/errors"
|
||||
"github.com/segmentfault/pacman/log"
|
||||
)
|
||||
|
||||
// AuthMcpEnable check mcp is enabled
|
||||
func (am *AuthUserMiddleware) AuthMcpEnable() gin.HandlerFunc {
|
||||
return func(ctx *gin.Context) {
|
||||
mcpConfig, err := am.siteInfoCommonService.GetSiteMCP(ctx)
|
||||
if err != nil {
|
||||
handler.HandleResponse(ctx, errors.InternalServer(reason.UnknownError), nil)
|
||||
ctx.Abort()
|
||||
return
|
||||
}
|
||||
if mcpConfig != nil && mcpConfig.Enabled {
|
||||
ctx.Next()
|
||||
return
|
||||
}
|
||||
handler.HandleResponse(ctx, errors.Forbidden(reason.ForbiddenError), nil)
|
||||
ctx.Abort()
|
||||
log.Error("abort mcp auth middleware, get mcp config error: ", err)
|
||||
}
|
||||
}
|
||||
@@ -22,6 +22,7 @@ package middleware
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"github.com/apache/answer/internal/base/handler"
|
||||
"github.com/apache/answer/internal/base/reason"
|
||||
"github.com/apache/answer/internal/repo/limit"
|
||||
|
||||
@@ -41,11 +41,11 @@ func (am *AuthUserMiddleware) VisitAuth() gin.HandlerFunc {
|
||||
return
|
||||
}
|
||||
|
||||
siteLogin, err := am.siteInfoCommonService.GetSiteLogin(ctx)
|
||||
siteSecurity, err := am.siteInfoCommonService.GetSiteSecurity(ctx)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if !siteLogin.LoginRequired {
|
||||
if !siteSecurity.LoginRequired {
|
||||
ctx.Next()
|
||||
return
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ import (
|
||||
)
|
||||
|
||||
// Help xorm page helper
|
||||
func Help(page, pageSize int, rowsSlicePtr interface{}, rowElement interface{}, session *xorm.Session) (total int64, err error) {
|
||||
func Help(page, pageSize int, rowsSlicePtr any, rowElement any, session *xorm.Session) (total int64, err error) {
|
||||
page, pageSize = ValPageAndPageSize(page, pageSize)
|
||||
|
||||
sliceValue := reflect.Indirect(reflect.ValueOf(rowsSlicePtr))
|
||||
|
||||
@@ -25,8 +25,8 @@ import (
|
||||
|
||||
// PageModel page model
|
||||
type PageModel struct {
|
||||
Count int64 `json:"count"`
|
||||
List interface{} `json:"list"`
|
||||
Count int64 `json:"count"`
|
||||
List any `json:"list"`
|
||||
}
|
||||
|
||||
// PageCond page condition
|
||||
@@ -36,7 +36,7 @@ type PageCond struct {
|
||||
}
|
||||
|
||||
// NewPageModel new page model
|
||||
func NewPageModel(totalRecords int64, records interface{}) *PageModel {
|
||||
func NewPageModel(totalRecords int64, records any) *PageModel {
|
||||
sliceValue := reflect.Indirect(reflect.ValueOf(records))
|
||||
if sliceValue.Kind() != reflect.Slice {
|
||||
panic("not a slice")
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package path
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"sync"
|
||||
)
|
||||
|
||||
const (
|
||||
DefaultConfigFileName = "config.yaml"
|
||||
DefaultCacheFileName = "cache.db"
|
||||
DefaultReservedUsernamesConfigFileName = "reserved-usernames.json"
|
||||
)
|
||||
|
||||
var (
|
||||
ConfigFileDir = "/conf/"
|
||||
UploadFilePath = "/uploads/"
|
||||
I18nPath = "/i18n/"
|
||||
CacheDir = "/cache/"
|
||||
formatAllPathOnce sync.Once
|
||||
)
|
||||
|
||||
func FormatAllPath(dataDirPath string) {
|
||||
formatAllPathOnce.Do(func() {
|
||||
ConfigFileDir = filepath.Join(dataDirPath, ConfigFileDir)
|
||||
UploadFilePath = filepath.Join(dataDirPath, UploadFilePath)
|
||||
I18nPath = filepath.Join(dataDirPath, I18nPath)
|
||||
CacheDir = filepath.Join(dataDirPath, CacheDir)
|
||||
})
|
||||
}
|
||||
|
||||
// GetConfigFilePath get config file path
|
||||
func GetConfigFilePath() string {
|
||||
return filepath.Join(ConfigFileDir, DefaultConfigFileName)
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package queue
|
||||
|
||||
import (
|
||||
"context"
|
||||
"sync"
|
||||
|
||||
"github.com/segmentfault/pacman/log"
|
||||
)
|
||||
|
||||
type Service[T any] interface {
|
||||
// Send enqueues a message to be processed asynchronously.
|
||||
Send(ctx context.Context, msg T)
|
||||
|
||||
// RegisterHandler sets the handler function for processing messages.
|
||||
RegisterHandler(handler func(ctx context.Context, msg T) error)
|
||||
|
||||
// Close gracefully shuts down the queue, waiting for pending messages to be processed.
|
||||
Close()
|
||||
}
|
||||
|
||||
// Queue is a generic message queue service that processes messages asynchronously.
|
||||
// It is thread-safe and supports graceful shutdown.
|
||||
type Queue[T any] struct {
|
||||
name string
|
||||
queue chan T
|
||||
handler func(ctx context.Context, msg T) error
|
||||
mu sync.RWMutex
|
||||
closed bool
|
||||
wg sync.WaitGroup
|
||||
}
|
||||
|
||||
// New creates a new queue with the given name and buffer size.
|
||||
func New[T any](name string, bufferSize int) *Queue[T] {
|
||||
q := &Queue[T]{
|
||||
name: name,
|
||||
queue: make(chan T, bufferSize),
|
||||
}
|
||||
q.startWorker()
|
||||
return q
|
||||
}
|
||||
|
||||
// Send enqueues a message to be processed asynchronously.
|
||||
// It will block if the queue is full.
|
||||
func (q *Queue[T]) Send(ctx context.Context, msg T) {
|
||||
q.mu.RLock()
|
||||
defer q.mu.RUnlock()
|
||||
|
||||
if q.closed {
|
||||
log.Warnf("[%s] queue is closed, dropping message", q.name)
|
||||
return
|
||||
}
|
||||
|
||||
select {
|
||||
case q.queue <- msg:
|
||||
log.Debugf("[%s] enqueued message: %+v", q.name, msg)
|
||||
case <-ctx.Done():
|
||||
log.Warnf("[%s] context cancelled while sending message", q.name)
|
||||
}
|
||||
}
|
||||
|
||||
// RegisterHandler sets the handler function for processing messages.
|
||||
// This is thread-safe and can be called at any time.
|
||||
func (q *Queue[T]) RegisterHandler(handler func(ctx context.Context, msg T) error) {
|
||||
q.mu.Lock()
|
||||
defer q.mu.Unlock()
|
||||
q.handler = handler
|
||||
}
|
||||
|
||||
// Close gracefully shuts down the queue, waiting for pending messages to be processed.
|
||||
func (q *Queue[T]) Close() {
|
||||
q.mu.Lock()
|
||||
if q.closed {
|
||||
q.mu.Unlock()
|
||||
return
|
||||
}
|
||||
q.closed = true
|
||||
q.mu.Unlock()
|
||||
|
||||
close(q.queue)
|
||||
q.wg.Wait()
|
||||
log.Infof("[%s] queue closed", q.name)
|
||||
}
|
||||
|
||||
// startWorker starts the background goroutine that processes messages.
|
||||
func (q *Queue[T]) startWorker() {
|
||||
q.wg.Add(1)
|
||||
go func() {
|
||||
defer q.wg.Done()
|
||||
for msg := range q.queue {
|
||||
q.processMessage(msg)
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
// processMessage handles a single message with proper synchronization.
|
||||
func (q *Queue[T]) processMessage(msg T) {
|
||||
q.mu.RLock()
|
||||
handler := q.handler
|
||||
q.mu.RUnlock()
|
||||
|
||||
if handler == nil {
|
||||
log.Warnf("[%s] no handler registered, dropping message: %+v", q.name, msg)
|
||||
return
|
||||
}
|
||||
|
||||
// Use background context for async processing
|
||||
// TODO: Consider adding timeout or using a derived context
|
||||
if err := handler(context.TODO(), msg); err != nil {
|
||||
log.Errorf("[%s] handler error: %v", q.name, err)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,253 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package queue
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
type testMessage struct {
|
||||
ID int
|
||||
Data string
|
||||
}
|
||||
|
||||
func TestQueue_SendAndReceive(t *testing.T) {
|
||||
q := New[*testMessage]("test", 10)
|
||||
defer q.Close()
|
||||
|
||||
received := make(chan *testMessage, 1)
|
||||
q.RegisterHandler(func(ctx context.Context, msg *testMessage) error {
|
||||
received <- msg
|
||||
return nil
|
||||
})
|
||||
|
||||
msg := &testMessage{ID: 1, Data: "hello"}
|
||||
q.Send(context.Background(), msg)
|
||||
|
||||
select {
|
||||
case r := <-received:
|
||||
if r.ID != msg.ID || r.Data != msg.Data {
|
||||
t.Errorf("received message mismatch: got %+v, want %+v", r, msg)
|
||||
}
|
||||
case <-time.After(time.Second):
|
||||
t.Fatal("timeout waiting for message")
|
||||
}
|
||||
}
|
||||
|
||||
func TestQueue_MultipleMessages(t *testing.T) {
|
||||
q := New[*testMessage]("test", 10)
|
||||
defer q.Close()
|
||||
|
||||
var count atomic.Int32
|
||||
var wg sync.WaitGroup
|
||||
numMessages := 100
|
||||
wg.Add(numMessages)
|
||||
|
||||
q.RegisterHandler(func(ctx context.Context, msg *testMessage) error {
|
||||
count.Add(1)
|
||||
wg.Done()
|
||||
return nil
|
||||
})
|
||||
|
||||
for i := range numMessages {
|
||||
q.Send(context.Background(), &testMessage{ID: i})
|
||||
}
|
||||
|
||||
done := make(chan struct{})
|
||||
go func() {
|
||||
wg.Wait()
|
||||
close(done)
|
||||
}()
|
||||
|
||||
select {
|
||||
case <-done:
|
||||
if int(count.Load()) != numMessages {
|
||||
t.Errorf("expected %d messages, got %d", numMessages, count.Load())
|
||||
}
|
||||
case <-time.After(5 * time.Second):
|
||||
t.Fatalf("timeout: only received %d of %d messages", count.Load(), numMessages)
|
||||
}
|
||||
}
|
||||
|
||||
func TestQueue_NoHandlerDropsMessage(t *testing.T) {
|
||||
q := New[*testMessage]("test", 10)
|
||||
defer q.Close()
|
||||
|
||||
// Send without handler - should not panic
|
||||
q.Send(context.Background(), &testMessage{ID: 1})
|
||||
|
||||
// Give time for the message to be processed (dropped)
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
}
|
||||
|
||||
func TestQueue_RegisterHandlerAfterSend(t *testing.T) {
|
||||
q := New[*testMessage]("test", 10)
|
||||
defer q.Close()
|
||||
|
||||
received := make(chan *testMessage, 1)
|
||||
|
||||
// Send first
|
||||
q.Send(context.Background(), &testMessage{ID: 1})
|
||||
|
||||
// Small delay then register handler
|
||||
time.Sleep(50 * time.Millisecond)
|
||||
q.RegisterHandler(func(ctx context.Context, msg *testMessage) error {
|
||||
received <- msg
|
||||
return nil
|
||||
})
|
||||
|
||||
// Send another message that should be received
|
||||
q.Send(context.Background(), &testMessage{ID: 2})
|
||||
|
||||
select {
|
||||
case r := <-received:
|
||||
if r.ID != 2 {
|
||||
// First message was dropped (no handler), second should be received
|
||||
t.Logf("received message ID: %d", r.ID)
|
||||
}
|
||||
case <-time.After(time.Second):
|
||||
t.Fatal("timeout waiting for message")
|
||||
}
|
||||
}
|
||||
|
||||
func TestQueue_Close(t *testing.T) {
|
||||
q := New[*testMessage]("test", 10)
|
||||
|
||||
var count atomic.Int32
|
||||
q.RegisterHandler(func(ctx context.Context, msg *testMessage) error {
|
||||
count.Add(1)
|
||||
return nil
|
||||
})
|
||||
|
||||
// Send some messages
|
||||
for i := range 5 {
|
||||
q.Send(context.Background(), &testMessage{ID: i})
|
||||
}
|
||||
|
||||
// Close and wait
|
||||
q.Close()
|
||||
|
||||
// All messages should have been processed
|
||||
if count.Load() != 5 {
|
||||
t.Errorf("expected 5 messages processed, got %d", count.Load())
|
||||
}
|
||||
|
||||
// Sending after close should not panic
|
||||
q.Send(context.Background(), &testMessage{ID: 99})
|
||||
}
|
||||
|
||||
func TestQueue_ConcurrentSend(t *testing.T) {
|
||||
q := New[*testMessage]("test", 100)
|
||||
defer q.Close()
|
||||
|
||||
var count atomic.Int32
|
||||
q.RegisterHandler(func(ctx context.Context, msg *testMessage) error {
|
||||
count.Add(1)
|
||||
return nil
|
||||
})
|
||||
|
||||
var wg sync.WaitGroup
|
||||
numGoroutines := 10
|
||||
messagesPerGoroutine := 100
|
||||
|
||||
for i := range numGoroutines {
|
||||
wg.Add(1)
|
||||
go func(id int) {
|
||||
defer wg.Done()
|
||||
for j := range messagesPerGoroutine {
|
||||
q.Send(context.Background(), &testMessage{ID: id*1000 + j})
|
||||
}
|
||||
}(i)
|
||||
}
|
||||
|
||||
wg.Wait()
|
||||
|
||||
// Wait for processing
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
|
||||
expected := int32(numGoroutines * messagesPerGoroutine)
|
||||
if count.Load() != expected {
|
||||
t.Errorf("expected %d messages, got %d", expected, count.Load())
|
||||
}
|
||||
}
|
||||
|
||||
func TestQueue_ConcurrentRegisterHandler(t *testing.T) {
|
||||
q := New[*testMessage]("test", 10)
|
||||
defer q.Close()
|
||||
|
||||
// Concurrently register handlers - should not race
|
||||
var wg sync.WaitGroup
|
||||
for range 10 {
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
q.RegisterHandler(func(ctx context.Context, msg *testMessage) error {
|
||||
return nil
|
||||
})
|
||||
}()
|
||||
}
|
||||
wg.Wait()
|
||||
}
|
||||
|
||||
// TestQueue_SendCloseRace is a regression test for the race condition between
|
||||
// Send and Close. Without proper synchronization, concurrent Send and Close
|
||||
// calls could cause a "send on closed channel" panic.
|
||||
// Run with: go test -race -run TestQueue_SendCloseRace
|
||||
func TestQueue_SendCloseRace(t *testing.T) {
|
||||
for i := range 100 {
|
||||
t.Run(fmt.Sprintf("iteration_%d", i), func(t *testing.T) {
|
||||
// Use large buffer to avoid blocking on channel send while holding RLock
|
||||
q := New[*testMessage]("test-race", 1000)
|
||||
q.RegisterHandler(func(ctx context.Context, msg *testMessage) error {
|
||||
return nil
|
||||
})
|
||||
|
||||
var wg sync.WaitGroup
|
||||
|
||||
// Use cancellable context so senders can exit when Close is called
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
|
||||
// Start multiple senders
|
||||
for j := range 10 {
|
||||
wg.Add(1)
|
||||
go func(id int) {
|
||||
defer wg.Done()
|
||||
for k := range 100 {
|
||||
q.Send(ctx, &testMessage{ID: id*1000 + k})
|
||||
}
|
||||
}(j)
|
||||
}
|
||||
|
||||
// Close while senders are still running
|
||||
go func() {
|
||||
time.Sleep(time.Microsecond * 10)
|
||||
cancel() // Cancel context to unblock any waiting senders
|
||||
q.Close()
|
||||
}()
|
||||
|
||||
wg.Wait()
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -47,6 +47,7 @@ const (
|
||||
QuestionAlreadyDeleted = "error.question.already_deleted"
|
||||
QuestionUnderReview = "error.question.under_review"
|
||||
QuestionContentCannotEmpty = "error.question.content_cannot_empty"
|
||||
QuestionContentLessThanMinimum = "error.question.content_less_than_minimum"
|
||||
AnswerNotFound = "error.answer.not_found"
|
||||
AnswerCannotDeleted = "error.answer.cannot_deleted"
|
||||
AnswerCannotUpdate = "error.answer.cannot_update"
|
||||
@@ -77,6 +78,7 @@ const (
|
||||
TagCannotUpdate = "error.tag.cannot_update"
|
||||
TagIsUsedCannotDelete = "error.tag.is_used_cannot_delete"
|
||||
TagAlreadyExist = "error.tag.already_exist"
|
||||
TagMinCount = "error.tag.minimum_count"
|
||||
RankFailToMeetTheCondition = "error.rank.fail_to_meet_the_condition"
|
||||
VoteRankFailToMeetTheCondition = "error.rank.vote_fail_to_meet_the_condition"
|
||||
NoEnoughRankToOperate = "error.rank.no_enough_rank_to_operate"
|
||||
@@ -111,6 +113,11 @@ const (
|
||||
MetaObjectNotFound = "error.meta.object_not_found"
|
||||
BadgeObjectNotFound = "error.badge.object_not_found"
|
||||
StatusInvalid = "error.common.status_invalid"
|
||||
UserStatusInactive = "error.user.status_inactive"
|
||||
UserStatusSuspendedForever = "error.user.status_suspended_forever"
|
||||
UserStatusSuspendedUntil = "error.user.status_suspended_until"
|
||||
UserStatusDeleted = "error.user.status_deleted"
|
||||
ErrFeatureDisabled = "error.feature.disabled"
|
||||
)
|
||||
|
||||
// user external login reasons
|
||||
|
||||
@@ -22,6 +22,8 @@ package server
|
||||
import (
|
||||
"html/template"
|
||||
"io/fs"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
brotli "github.com/anargu/gin-brotli"
|
||||
"github.com/apache/answer/internal/base/middleware"
|
||||
@@ -44,19 +46,28 @@ func NewHTTPServer(debug bool,
|
||||
pluginAPIRouter *router.PluginAPIRouter,
|
||||
uiConf *UI,
|
||||
) *gin.Engine {
|
||||
|
||||
if debug {
|
||||
gin.SetMode(gin.DebugMode)
|
||||
} else {
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
}
|
||||
r := gin.New()
|
||||
r.Use(brotli.Brotli(brotli.DefaultCompression), middleware.ExtractAndSetAcceptLanguage, shortIDMiddleware.SetShortIDFlag())
|
||||
r.Use(func(ctx *gin.Context) {
|
||||
if strings.Contains(ctx.Request.URL.Path, "/chat/completions") {
|
||||
return
|
||||
}
|
||||
brotli.Brotli(brotli.DefaultCompression)(ctx)
|
||||
}, middleware.ExtractAndSetAcceptLanguage, shortIDMiddleware.SetShortIDFlag())
|
||||
r.GET("/healthz", func(ctx *gin.Context) { ctx.String(200, "OK") })
|
||||
|
||||
html, _ := fs.Sub(ui.Template, "template")
|
||||
htmlTemplate := template.Must(template.New("").Funcs(funcMap).ParseFS(html, "*"))
|
||||
r.SetHTMLTemplate(htmlTemplate)
|
||||
templatePath := os.Getenv("ANSWER_TEMPLATE_PATH")
|
||||
if templatePath != "" {
|
||||
r.LoadHTMLGlob(templatePath)
|
||||
} else {
|
||||
html, _ := fs.Sub(ui.Template, "template")
|
||||
htmlTemplate := template.Must(template.New("").Funcs(funcMap).ParseFS(html, "*"))
|
||||
r.SetHTMLTemplate(htmlTemplate)
|
||||
}
|
||||
r.Use(middleware.HeadersByRequestURI())
|
||||
viewRouter.Register(r, uiConf.BaseURL)
|
||||
|
||||
@@ -102,5 +113,10 @@ func NewHTTPServer(debug bool,
|
||||
agent.RegisterAuthAdminRouter(adminauthV1)
|
||||
return nil
|
||||
})
|
||||
|
||||
// mcp
|
||||
mcpAPIGroup := r.Group(uiConf.APIBaseURL + "/answer/api/v1")
|
||||
mcpAPIGroup.Use(authUserMiddleware.AuthMcpEnable(), authUserMiddleware.AuthAPIKey())
|
||||
answerRouter.RegisterMCPRouter(mcpAPIGroup)
|
||||
return r
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@ package server
|
||||
|
||||
import (
|
||||
"html/template"
|
||||
"math"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
@@ -64,7 +63,7 @@ var funcMap = template.FuncMap{
|
||||
"formatLinkNofollow": func(data string) template.HTML {
|
||||
return template.HTML(FormatLinkNofollow(data))
|
||||
},
|
||||
"translator": func(la i18n.Language, data string, params ...interface{}) string {
|
||||
"translator": func(la i18n.Language, data string, params ...any) string {
|
||||
trans := translator.GlobalTrans.Tr(la, data)
|
||||
|
||||
if len(params) > 0 && len(params)%2 == 0 {
|
||||
@@ -107,15 +106,15 @@ var funcMap = template.FuncMap{
|
||||
}
|
||||
|
||||
if between >= 60 && between < 3600 {
|
||||
min := math.Floor(float64(between / 60))
|
||||
min := between / 60
|
||||
trans = translator.GlobalTrans.Tr(la, "ui.dates.x_minutes_ago")
|
||||
return strings.ReplaceAll(trans, "{{count}}", strconv.FormatFloat(min, 'f', 0, 64))
|
||||
return strings.ReplaceAll(trans, "{{count}}", strconv.FormatInt(min, 10))
|
||||
}
|
||||
|
||||
if between >= 3600 && between < 3600*24 {
|
||||
h := math.Floor(float64(between / 3600))
|
||||
h := between / 3600
|
||||
trans = translator.GlobalTrans.Tr(la, "ui.dates.x_hours_ago")
|
||||
return strings.ReplaceAll(trans, "{{count}}", strconv.FormatFloat(h, 'f', 0, 64))
|
||||
return strings.ReplaceAll(trans, "{{count}}", strconv.FormatInt(h, 10))
|
||||
}
|
||||
|
||||
if between >= 3600*24 &&
|
||||
@@ -128,16 +127,14 @@ var funcMap = template.FuncMap{
|
||||
trans = translator.GlobalTrans.Tr(la, "ui.dates.long_date_with_year")
|
||||
return day.Format(timestamp, trans, tz)
|
||||
},
|
||||
"wrapComments": func(comments []*schema.GetCommentResp, la i18n.Language, tz string) map[string]interface{} {
|
||||
return map[string]interface{}{
|
||||
"wrapComments": func(comments []*schema.GetCommentResp, la i18n.Language, tz string) map[string]any {
|
||||
return map[string]any{
|
||||
"comments": comments,
|
||||
"language": la,
|
||||
"timezone": tz,
|
||||
}
|
||||
},
|
||||
"urlTitle": func(title string) string {
|
||||
return htmltext.UrlTitle(title)
|
||||
},
|
||||
"urlTitle": htmltext.UrlTitle,
|
||||
}
|
||||
|
||||
func FormatLinkNofollow(html string) string {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user