Compare commits

...

45 Commits

Author SHA1 Message Date
LinkinStars 9ebf95cace New translations (#880)
Build Binary For Release / build-goreleaser (push) Has been cancelled
Build Docker Image For Release / build (push) Has been cancelled
Co-authored-by: Fen <f3nb0x@gmail.com>
2024-03-25 10:03:05 +08:00
LinkinStars e53c7b3c8a docs(asf): add ASF header 2024-03-22 17:30:48 +08:00
LinkinStars abe0680641 Release/1.3.0 (#876)
Co-authored-by: shuai <lishuailing@sifou.com>
Co-authored-by: Han Gao <dhangao@hotmail.com>
Co-authored-by: wzy <770954908@qq.com>
Co-authored-by: zahash <zahash.z@gmail.com>
Co-authored-by: Hosein Beigi <hbsciw@gmail.com>
Co-authored-by: kumfo <kumfo@sifou.com>
Co-authored-by: sy-records <52o@qq52o.cn>
Co-authored-by: 而立 <cuihengqing@cai-inc.com>
Co-authored-by: foxzero-007 <chq2549603631@gmail.com>
Co-authored-by: easy <58644520+foxzero-007@users.noreply.github.com>
Co-authored-by: robin <robin@rnode.me>
Co-authored-by: Akhil <surapuramakhil@gmail.com>
Co-authored-by: Shaobiao Lin <whalevocal@gmail.com>
2024-03-22 17:25:46 +08:00
LinkinStars 5132cb3912 ci(goreleaser): add wrap in directory
Build Binary For Release / build-goreleaser (push) Has been cancelled
Build Docker Image For Release / build (push) Has been cancelled
2024-01-30 16:36:39 +08:00
LinkinStars 0849e8f540 refactor(file): refactor file format check function 2024-01-30 16:36:39 +08:00
LinkinStars 968f23db7f Release/1.2.5 (#761)
Build Binary For Release / build-goreleaser (push) Has been cancelled
Build Docker Image For Release / build (push) Has been cancelled
Signed-off-by: Adam Vollrath <adam.d.vollrath@gmail.com>
Co-authored-by: shuai <lishuailing@sifou.com>
Co-authored-by: kelvinkuo <kelvinkuo224@gmail.com>
Co-authored-by: hgaol <dhangao@hotmail.com>
Co-authored-by: sy-records <52o@qq52o.cn>
Co-authored-by: Adam Vollrath <adam.d.vollrath@gmail.com>
Co-authored-by: kumfo <kumfo@sifou.com>
Co-authored-by: Yang Wong <yang wang>
Co-authored-by: hbsciw <hbsciw@gmail.com>
2024-01-29 19:14:13 +08:00
Fen abecc1c9b6 New Crowdin updates (#19) (#760)
* New translations en_us.yaml (Chinese Simplified)

* New translations en_us.yaml (Russian)

* New translations en_us.yaml (German)

* New translations en_us.yaml (Chinese Simplified)

* New translations en_us.yaml (Russian)

* New translations en_us.yaml (German)

* New translations en_us.yaml (French)

* New translations en_us.yaml (Spanish)

* New translations en_us.yaml (Czech)

* New translations en_us.yaml (Danish)

* New translations en_us.yaml (Italian)

* New translations en_us.yaml (Japanese)

* New translations en_us.yaml (Korean)

* New translations en_us.yaml (Polish)

* New translations en_us.yaml (Portuguese)

* New translations en_us.yaml (Slovak)

* New translations en_us.yaml (Turkish)

* New translations en_us.yaml (Ukrainian)

* New translations en_us.yaml (Chinese Traditional)

* New translations en_us.yaml (Vietnamese)

* New translations en_us.yaml (Indonesian)

* New translations en_us.yaml (Persian)

* New translations en_us.yaml (Welsh)

* New translations en_us.yaml (Chinese Simplified)

* New translations en_us.yaml (Russian)

* New translations en_us.yaml (German)

* New translations en_us.yaml (French)

* New translations en_us.yaml (Spanish)

* New translations en_us.yaml (Czech)

* New translations en_us.yaml (Danish)

* New translations en_us.yaml (Italian)

* New translations en_us.yaml (Japanese)

* New translations en_us.yaml (Korean)

* New translations en_us.yaml (Polish)

* New translations en_us.yaml (Portuguese)

* New translations en_us.yaml (Slovak)

* New translations en_us.yaml (Turkish)

* New translations en_us.yaml (Ukrainian)

* New translations en_us.yaml (Chinese Traditional)

* New translations en_us.yaml (Vietnamese)

* New translations en_us.yaml (Indonesian)

* New translations en_us.yaml (Persian)

* New translations en_us.yaml (Welsh)

* New translations en_us.yaml (Chinese Simplified)

* New translations en_us.yaml (Chinese Simplified)

* New translations en_us.yaml (Russian)

* New translations en_us.yaml (Swedish)

* New translations en_us.yaml (Swedish)

* New translations en_us.yaml (French)

* New translations en_us.yaml (French)

* New translations en_us.yaml (Romanian)

* New translations en_us.yaml (Chinese Simplified)

* New translations en_us.yaml (Swedish)

* New translations en_us.yaml (Romanian)

* New translations en_us.yaml (Spanish)

* New translations en_us.yaml (Chinese Simplified)

* New translations en_us.yaml (Spanish)

* New translations en_us.yaml (Swedish)

* New translations en_us.yaml (Japanese)

* New translations en_us.yaml (Polish)

* New translations en_us.yaml (Russian)

* New translations en_us.yaml (Swedish)

* New translations en_us.yaml (Romanian)

* New translations en_us.yaml (French)

* New translations en_us.yaml (Spanish)

* New translations en_us.yaml (Czech)

* New translations en_us.yaml (Danish)

* New translations en_us.yaml (German)

* New translations en_us.yaml (Italian)

* New translations en_us.yaml (Japanese)

* New translations en_us.yaml (Korean)

* New translations en_us.yaml (Polish)

* New translations en_us.yaml (Portuguese)

* New translations en_us.yaml (Russian)

* New translations en_us.yaml (Slovak)

* New translations en_us.yaml (Swedish)

* New translations en_us.yaml (Turkish)

* New translations en_us.yaml (Ukrainian)

* New translations en_us.yaml (Chinese Simplified)

* New translations en_us.yaml (Chinese Traditional)

* New translations en_us.yaml (Vietnamese)

* New translations en_us.yaml (Indonesian)

* New translations en_us.yaml (Persian)

* New translations en_us.yaml (Welsh)
2024-01-29 17:53:07 +08:00
LinkinStars 937de43978 Release/1.2.5 (#759)
Signed-off-by: Adam Vollrath <adam.d.vollrath@gmail.com>
Co-authored-by: shuai <lishuailing@sifou.com>
Co-authored-by: kelvinkuo <kelvinkuo224@gmail.com>
Co-authored-by: hgaol <dhangao@hotmail.com>
Co-authored-by: sy-records <52o@qq52o.cn>
Co-authored-by: Adam Vollrath <adam.d.vollrath@gmail.com>
Co-authored-by: kumfo <kumfo@sifou.com>
Co-authored-by: Yang Wong <yang wang>
Co-authored-by: hbsciw <hbsciw@gmail.com>
2024-01-29 17:19:41 +08:00
Akhil 52e0a4c59b removed unused config 2024-01-26 11:37:46 +08:00
Haoran Yu 720936b74a Update NOTICE 2024-01-23 12:34:05 +08:00
zhoushilin 261b143679 fix: cache reload once 2024-01-19 14:25:00 +08:00
zhoushilin 6d93b7d2f3 fix: plugin cache reload 2024-01-19 14:25:00 +08:00
Fen d8c55779f8 update: github issue template (#714)
* update: github issue template
2024-01-09 13:51:25 +08:00
LinkinStars bdc498ce39 fix(dashboard): set default smtp status 2024-01-08 16:21:25 +08:00
tison 1c5297abf1 Update Makefile 2024-01-03 17:17:42 +08:00
tison c8c3d7c1a2 build: tolerate build without git repo
Signed-off-by: tison <wander4096@gmail.com>
2024-01-03 17:17:42 +08:00
Fen da490d4006 fix: unit typo 2023-12-28 12:38:05 +08:00
LinkinStars 615e439fd3 ci(goreleaser): rename release src package name 2023-12-27 23:40:22 +08:00
Lu Fei 41a73cf9df fix: i18n text (#693)
close #692 

There are several languages that require specialized translators. 😅
2023-12-25 10:10:04 +08:00
Adam Vollrath 3b00da932b Sanitize input from contributor fork workflows.
Signed-off-by: Adam Vollrath <adam.d.vollrath@gmail.com>
2023-12-21 17:29:05 +08:00
sy-records 152934c740 ci: build image only if repository_owner is apache 2023-12-18 11:00:59 +08:00
YL1028K 68f5af01d9 fix: log prints incorrect method(#684) 2023-12-15 17:07:35 +08:00
Fen 2df8d5657e New Crowdin updates (#14)
* New translations en_us.yaml (German)

* New translations en_us.yaml (French)

* New translations en_us.yaml (Spanish)

* New translations en_us.yaml (Czech)

* New translations en_us.yaml (Danish)

* New translations en_us.yaml (Italian)

* New translations en_us.yaml (Japanese)

* New translations en_us.yaml (Korean)

* New translations en_us.yaml (Polish)

* New translations en_us.yaml (Portuguese)

* New translations en_us.yaml (Russian)

* New translations en_us.yaml (Slovak)

* New translations en_us.yaml (Turkish)

* New translations en_us.yaml (Ukrainian)

* New translations en_us.yaml (Chinese Simplified)

* New translations en_us.yaml (Chinese Traditional)

* New translations en_us.yaml (Vietnamese)

* New translations en_us.yaml (Indonesian)

* New translations en_us.yaml (Persian)

* New translations en_us.yaml (Welsh)
2023-12-14 18:13:33 +08:00
Fen 7e4fe9a0f8 New Crowdin updates (#3)
* New translations en_us.yaml (French)

* New translations en_us.yaml (Spanish)

* New translations en_us.yaml (Czech)

* New translations en_us.yaml (Danish)

* New translations en_us.yaml (German)

* New translations en_us.yaml (Italian)

* New translations en_us.yaml (Japanese)

* New translations en_us.yaml (Korean)

* New translations en_us.yaml (Polish)

* New translations en_us.yaml (Portuguese)

* New translations en_us.yaml (Russian)

* New translations en_us.yaml (Slovak)

* New translations en_us.yaml (Turkish)

* New translations en_us.yaml (Ukrainian)

* New translations en_us.yaml (Chinese Simplified)

* New translations en_us.yaml (Chinese Traditional)

* New translations en_us.yaml (Vietnamese)

* New translations en_us.yaml (Indonesian)

* New translations en_us.yaml (Persian)

* New translations en_us.yaml (Welsh)

* New translations en_us.yaml (French)

* New translations en_us.yaml (Spanish)

* New translations en_us.yaml (Czech)

* New translations en_us.yaml (Danish)

* New translations en_us.yaml (German)

* New translations en_us.yaml (Italian)

* New translations en_us.yaml (Japanese)

* New translations en_us.yaml (Korean)

* New translations en_us.yaml (Polish)

* New translations en_us.yaml (Portuguese)

* New translations en_us.yaml (Russian)

* New translations en_us.yaml (Slovak)

* New translations en_us.yaml (Turkish)

* New translations en_us.yaml (Ukrainian)

* New translations en_us.yaml (Chinese Simplified)

* New translations en_us.yaml (Chinese Traditional)

* New translations en_us.yaml (Vietnamese)

* New translations en_us.yaml (Indonesian)

* New translations en_us.yaml (Persian)

* New translations en_us.yaml (Welsh)

* New translations en_us.yaml (French)

* New translations en_us.yaml (Spanish)

* New translations en_us.yaml (Czech)

* New translations en_us.yaml (Danish)

* New translations en_us.yaml (German)

* New translations en_us.yaml (Italian)

* New translations en_us.yaml (Japanese)

* New translations en_us.yaml (Korean)

* New translations en_us.yaml (Polish)

* New translations en_us.yaml (Portuguese)

* New translations en_us.yaml (Russian)

* New translations en_us.yaml (Slovak)

* New translations en_us.yaml (Turkish)

* New translations en_us.yaml (Ukrainian)

* New translations en_us.yaml (Chinese Simplified)

* New translations en_us.yaml (Chinese Traditional)

* New translations en_us.yaml (Vietnamese)

* New translations en_us.yaml (Indonesian)

* New translations en_us.yaml (Persian)

* New translations en_us.yaml (Welsh)

* New translations en_us.yaml (German)

* New translations en_us.yaml (French)

* New translations en_us.yaml (Spanish)

* New translations en_us.yaml (Czech)

* New translations en_us.yaml (Danish)

* New translations en_us.yaml (German)

* New translations en_us.yaml (Italian)

* New translations en_us.yaml (Japanese)

* New translations en_us.yaml (Korean)

* New translations en_us.yaml (Polish)

* New translations en_us.yaml (Portuguese)

* New translations en_us.yaml (Russian)

* New translations en_us.yaml (Slovak)

* New translations en_us.yaml (Turkish)

* New translations en_us.yaml (Ukrainian)

* New translations en_us.yaml (Chinese Simplified)

* New translations en_us.yaml (Chinese Traditional)

* New translations en_us.yaml (Vietnamese)

* New translations en_us.yaml (Indonesian)

* New translations en_us.yaml (Persian)

* New translations en_us.yaml (Welsh)

* New translations en_us.yaml (French)

* New translations en_us.yaml (Spanish)

* New translations en_us.yaml (Czech)

* New translations en_us.yaml (Danish)

* New translations en_us.yaml (German)

* New translations en_us.yaml (Italian)

* New translations en_us.yaml (Japanese)

* New translations en_us.yaml (Korean)

* New translations en_us.yaml (Polish)

* New translations en_us.yaml (Portuguese)

* New translations en_us.yaml (Russian)

* New translations en_us.yaml (Slovak)

* New translations en_us.yaml (Turkish)

* New translations en_us.yaml (Ukrainian)

* New translations en_us.yaml (Chinese Simplified)

* New translations en_us.yaml (Chinese Traditional)

* New translations en_us.yaml (Vietnamese)

* New translations en_us.yaml (Indonesian)

* New translations en_us.yaml (Persian)

* New translations en_us.yaml (Welsh)

* New translations en_us.yaml (French)

* New translations en_us.yaml (Spanish)

* New translations en_us.yaml (Czech)

* New translations en_us.yaml (Danish)

* New translations en_us.yaml (German)

* New translations en_us.yaml (Italian)

* New translations en_us.yaml (Japanese)

* New translations en_us.yaml (Korean)

* New translations en_us.yaml (Polish)

* New translations en_us.yaml (Portuguese)

* New translations en_us.yaml (Russian)

* New translations en_us.yaml (Slovak)

* New translations en_us.yaml (Turkish)

* New translations en_us.yaml (Ukrainian)

* New translations en_us.yaml (Chinese Simplified)

* New translations en_us.yaml (Chinese Traditional)

* New translations en_us.yaml (Vietnamese)

* New translations en_us.yaml (Indonesian)

* New translations en_us.yaml (Persian)

* New translations en_us.yaml (Welsh)

* New translations en_us.yaml (German)

* New translations en_us.yaml (German)

* New translations en_us.yaml (French)

* New translations en_us.yaml (Spanish)

* New translations en_us.yaml (Czech)

* New translations en_us.yaml (Danish)

* New translations en_us.yaml (Italian)

* New translations en_us.yaml (Japanese)

* New translations en_us.yaml (Korean)

* New translations en_us.yaml (Polish)

* New translations en_us.yaml (Portuguese)

* New translations en_us.yaml (Russian)

* New translations en_us.yaml (Slovak)

* New translations en_us.yaml (Turkish)

* New translations en_us.yaml (Ukrainian)

* New translations en_us.yaml (Chinese Simplified)

* New translations en_us.yaml (Chinese Traditional)

* New translations en_us.yaml (Vietnamese)

* New translations en_us.yaml (Indonesian)

* New translations en_us.yaml (Persian)

* New translations en_us.yaml (Welsh)
2023-12-14 17:43:36 +08:00
LinkinStars 3f696b63d6 docs(README): upgrade 1.2.1 2023-12-14 15:10:19 +08:00
LinkinStars 82fdfc7763 Release/1.2.1 (#678)
Build Binary For Release / build-goreleaser (push) Has been cancelled
Build Docker Image For Release / build (push) Has been cancelled
Co-authored-by: shuai <lishuailing@sifou.com>
Co-authored-by: kelvinkuo <kelvinkuo224@gmail.com>
Co-authored-by: hgaol <dhangao@hotmail.com>
Co-authored-by: sy-records <52o@qq52o.cn>
2023-12-14 15:07:58 +08:00
Han Gao a00f660411 fix: can't show tag description in tag edit page (#664)
fix #637 .
2023-11-30 14:42:09 +08:00
LinkinStars 03b5950d71 docs(image): rename all docker image name to apache/answer 2023-11-29 17:21:19 +08:00
lufei 7aa16f245b optimize code 2023-11-29 16:44:08 +08:00
sy-records 9dc0d566cc fix by code review 2023-11-29 16:44:08 +08:00
sy-records 3e76a0368f fix: permalink error on some pages 2023-11-29 16:44:08 +08:00
LinkinStars 1a76d0aa67 ci(github): add docker image github action 2023-11-29 15:14:18 +08:00
Fen b01717c49e docs: update link 2023-11-28 15:42:04 +08:00
shuai 3eeb289aa0 fix: google snapshots error #649 2023-11-27 15:24:05 +08:00
sy-records 0267f4bd69 fix: canonical link error 2023-11-22 16:26:44 +08:00
Lu Fei 2cf77adbb5 fix: license header breaks helm chart (#591)
This fixes #590.
2023-11-22 15:44:23 +08:00
Lu Fei 13b6fa2157 fix(sitemap): move asf header after xmlheader (#633)
This fixes #631.
2023-11-22 15:14:20 +08:00
LinkinStars c1cd2bbadd ci(github): remove GOPROXY for github action 2023-11-17 20:02:11 +08:00
LinkinStars e11aa93c14 ci(github): rename the secret name 2023-11-17 18:53:55 +08:00
LinkinStars 58dadefc99 ci(github): update docker login action version and config username 2023-11-17 16:42:59 +08:00
LinkinStars 84ef7d0e55 ci(asf): change the check-asf-header script to docker command via hawkeye-native 2023-11-17 15:54:27 +08:00
LinkinStars 274eaf29cf ci(github): update docker user and token secrets 2023-11-17 15:54:27 +08:00
LinkinStars fd6808b7ea ci(lic): add excludes for some files 2023-11-17 15:54:27 +08:00
LinkinStars 47b1366b13 docs(README): add build from source description 2023-11-17 10:58:44 +08:00
LinkinStars ff82298416 docs(README): update the call of this project Apache Answer instead of Answer #630 2023-11-17 10:58:44 +08:00
370 changed files with 26781 additions and 10291 deletions
+1 -1
View File
@@ -17,7 +17,7 @@
# NOTE: All configurations could be found here: https://cwiki.apache.org/confluence/display/INFRA/Git+-+.asf.yaml+features
github:
description: "A Q&A platform software for teams at any scales. Whether it's a community forum, help center, or knowledge management platform, you can always count on Answer."
description: "A Q&A platform software for teams at any scales. Whether it's a community forum, help center, or knowledge management platform, you can always count on Apache Answer."
homepage: https://answer.apache.org
labels:
- react
+17 -11
View File
@@ -1,30 +1,36 @@
---
name: Bug report
about: Create a report to help us improve
about: Report an issue to help the project improve.
title: ''
labels: bug
assignees: ''
---
**Describe the bug**
## Describe the bug
A clear and concise description of what the bug is.
**To Reproduce**
### To Reproduce
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
### Expected behavior
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
### Screenshots
**Platform (please complete the following information):**
- Device: [e.g. Desktop, Mobile]
- OS: [e.g. macOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
If applicable, add screenshots or video to help explain your problem.
### Platform
- Device: [e.g. Desktop, Mobile]
- OS: [e.g. macOS]
- Browser and version: [e.g. Chrome, Safari]
- Version: [e.g. v1.2.0]
+22
View File
@@ -0,0 +1,22 @@
# 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.
blank_issues_enabled: true
contact_links:
- name: Support
url: https://answer.apache.org/community
about: Contact us if you have any questions while using.
@@ -0,0 +1,20 @@
---
name: Enhancement request
about: Suggest an enhancement for this project. Improve an existing feature.
title: ''
labels: enhancement
assignees: ''
---
## Is your enhancement request related to a problem? Please describe
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
## Describe the solution you'd like
A clear and concise description of what you want to happen.
## Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
+8 -5
View File
@@ -1,17 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
about: Suggest an idea or possible new feature for this project.
title: ''
labels: enhancement
labels: feature
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
## Is your feature request related to a problem? Please describe
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
## Describe the solution you'd like
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
## Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
@@ -26,6 +26,7 @@ permissions:
jobs:
build-goreleaser:
if: ${{ github.repository_owner == 'apache' }}
runs-on: ubuntu-latest
steps:
@@ -0,0 +1,65 @@
# 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: Manual Build Docker Image For Release
on:
workflow_dispatch:
inputs:
tag_name:
type: string
required: true
description: 'DockerHub img tag name'
jobs:
build:
if: ${{ github.repository_owner == 'apache' }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: apache/answer
tags: |
type=ref,enable=true,priority=600,prefix=,suffix=,event=branch
type=semver,pattern={{version}}
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
file: ./Dockerfile
tags: apache/answer:${{ inputs.tag_name }}
labels: ${{ steps.meta.outputs.labels }}
@@ -29,6 +29,7 @@ on:
jobs:
build:
if: ${{ github.repository_owner == 'apache' }}
runs-on: ubuntu-latest
steps:
- name: Checkout
@@ -51,10 +52,10 @@ jobs:
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
+4 -3
View File
@@ -23,6 +23,7 @@ on:
jobs:
build:
if: ${{ github.repository_owner == 'apache' }}
name: Build and Push
runs-on: ubuntu-latest
steps:
@@ -44,10 +45,10 @@ jobs:
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
-115
View File
@@ -1,115 +0,0 @@
# 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: Build PR Image
on:
pull_request:
types: [opened, synchronize, reopened, closed]
jobs:
build-answer:
name: Build and push `Answer`
runs-on: ubuntu-latest
outputs:
tags: ${{ steps.meta.outputs.tags }}
if: ${{ github.event.action != 'closed' }}
steps:
- name: Checkout git repo
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate UUID image name
id: uuid
run: echo "UUID_WORKER=$(uuidgen)" >> $GITHUB_ENV
- name: Docker metadata
id: meta
uses: docker/metadata-action@v4
with:
images: registry.uffizzi.com/${{ env.UUID_WORKER }}
tags: |
type=raw,value=60d
- name: Build and Push Image to registry.uffizzi.com - Uffizzi's ephemeral Registry
uses: docker/build-push-action@v3
with:
context: .
file: ./Dockerfile
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
push: true
cache-from: type=gha
cache-to: type=gha, mode=max
render-compose-file:
name: Render Docker Compose File
# Pass output of this workflow to another triggered by `workflow_run` event.
runs-on: ubuntu-latest
needs:
- build-answer
outputs:
compose-file-cache-key: ${{ steps.hash.outputs.hash }}
steps:
- name: Checkout git repo
uses: actions/checkout@v4
- name: Render Compose File
run: |
ANSWER_IMAGE=${{ needs.build-answer.outputs.tags }}
export ANSWER_IMAGE
export UFFIZZI_URL=\$UFFIZZI_URL
# Render simple template from environment variables.
envsubst < docker-compose.uffizzi.yml > docker-compose.rendered.yml
cat docker-compose.rendered.yml
- name: Upload Rendered Compose File as Artifact
uses: actions/upload-artifact@v3
with:
name: preview-spec
path: docker-compose.rendered.yml
retention-days: 2
- name: Serialize PR Event to File
run: |
cat << EOF > event.json
${{ toJSON(github.event) }}
EOF
- name: Upload PR Event as Artifact
uses: actions/upload-artifact@v3
with:
name: preview-spec
path: event.json
retention-days: 2
delete-preview:
name: Call for Preview Deletion
runs-on: ubuntu-latest
if: ${{ github.event.action == 'closed' }}
steps:
# If this PR is closing, we will not render a compose file nor pass it to the next workflow.
- name: Serialize PR Event to File
run: |
cat << EOF > event.json
${{ toJSON(github.event) }}
EOF
- name: Upload PR Event as Artifact
uses: actions/upload-artifact@v3
with:
name: preview-spec
path: event.json
retention-days: 2
-105
View File
@@ -1,105 +0,0 @@
# 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: Deploy Uffizzi Preview
on:
workflow_run:
workflows:
- "Build PR Image"
types:
- completed
jobs:
cache-compose-file:
name: Cache Compose File
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
outputs:
compose-file-cache-key: ${{ env.HASH }}
pr-number: ${{ env.PR_NUMBER }}
steps:
- name: 'Download artifacts'
# Fetch output (zip archive) from the workflow run that triggered this workflow.
uses: actions/github-script@v6
with:
script: |
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.payload.workflow_run.id,
});
let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
return artifact.name == "preview-spec"
})[0];
let download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
let fs = require('fs');
fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/preview-spec.zip`, Buffer.from(download.data));
- name: 'Unzip artifact'
run: unzip preview-spec.zip
- name: Read Event into ENV
run: |
echo 'EVENT_JSON<<EOF' >> $GITHUB_ENV
cat event.json >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
- name: Hash Rendered Compose File
id: hash
# If the previous workflow was triggered by a PR close event, we will not have a compose file artifact.
if: ${{ fromJSON(env.EVENT_JSON).action != 'closed' }}
run: echo "HASH=$(md5sum docker-compose.rendered.yml | awk '{ print $1 }')" >> $GITHUB_ENV
- name: Cache Rendered Compose File
if: ${{ fromJSON(env.EVENT_JSON).action != 'closed' }}
uses: actions/cache@v3
with:
path: docker-compose.rendered.yml
key: ${{ env.HASH }}
- name: Read PR Number From Event Object
id: pr
run: echo "PR_NUMBER=${{ fromJSON(env.EVENT_JSON).number }}" >> $GITHUB_ENV
- name: DEBUG - Print Job Outputs
if: ${{ runner.debug }}
run: |
echo "PR number: ${{ env.PR_NUMBER }}"
echo "Compose file hash: ${{ env.HASH }}"
cat event.json
deploy-uffizzi-preview:
name: Use Remote Workflow to Preview on Uffizzi
needs:
- cache-compose-file
if: ${{ github.event.workflow_run.conclusion == 'success' }}
uses: UffizziCloud/preview-action/.github/workflows/reusable.yaml@v2
with:
# If this workflow was triggered by a PR close event, cache-key will be an empty string
# and this reusable workflow will delete the preview deployment.
compose-file-cache-key: ${{ needs.cache-compose-file.outputs.compose-file-cache-key }}
compose-file-cache-path: docker-compose.rendered.yml
server: https://app.uffizzi.com
pr-number: ${{ needs.cache-compose-file.outputs.pr-number }}
permissions:
contents: read
pull-requests: write
id-token: write
+10 -4
View File
@@ -32,7 +32,7 @@ builds:
- id: build
main: ./cmd/answer/.
binary: answer
ldflags: -s -w -X github.com/apache/incubator-answer/cmd.Version={{.Version}} -X github.com/apache/incubator-answer/cmd.Revision={{.ShortCommit}} -X github.com/apache/incubator-answer/cmd.Time={{.Date}} -X github.com/apache/incubator-answer/cmd.BuildUser=goreleaser
ldflags: -s -w -X github.com/apache/incubator-answer/cmd.Version={{.RawVersion}} -X github.com/apache/incubator-answer/cmd.Revision={{.ShortCommit}} -X github.com/apache/incubator-answer/cmd.Time={{.Date}} -X github.com/apache/incubator-answer/cmd.BuildUser=goreleaser
flags: -v
goos:
- linux
@@ -43,7 +43,7 @@ builds:
- id: build-windows
main: ./cmd/answer/.
binary: answer
ldflags: -s -w -X github.com/apache/incubator-answer/cmd.Version={{.Version}} -X github.com/apache/incubator-answer/cmd.Revision={{.ShortCommit}} -X github.com/apache/incubator-answer/cmd.Time={{.Date}} -X github.com/apache/incubator-answer/cmd.BuildUser=goreleaser
ldflags: -s -w -X github.com/apache/incubator-answer/cmd.Version={{.RawVersion}} -X github.com/apache/incubator-answer/cmd.Revision={{.ShortCommit}} -X github.com/apache/incubator-answer/cmd.Time={{.Date}} -X github.com/apache/incubator-answer/cmd.BuildUser=goreleaser
flags: -v
goos:
- windows
@@ -55,7 +55,7 @@ builds:
archives:
- name_template: >-
apache-answer-{{ .Version }}-incubating-{{ .Os }}-{{ .Arch }}
apache-answer-{{ .RawVersion }}-incubating-bin-{{ .Os }}-{{ .Arch }}
files:
- src: "docs/release/LICENSE"
dst: LICENSE
@@ -65,6 +65,7 @@ archives:
dst: licenses/
- src: "DISCLAIMER"
dst: DISCLAIMER
wrap_in_directory: true
checksum:
name_template: 'checksums.txt'
snapshot:
@@ -76,5 +77,10 @@ changelog:
- '^docs:'
- '^test:'
# goreleaser release --snapshot --rm-dist
source:
enabled: true
name_template: apache-answer-{{ .RawVersion }}-incubating-src
prefix_template: "apache-answer-{{ .RawVersion }}-incubating-src/"
# goreleaser release --skip-validate --skip-publish --clean
+7 -3
View File
@@ -20,7 +20,7 @@ LABEL maintainer="aichy@sf.com"
ARG GOPROXY
# ENV GOPROXY ${GOPROXY:-direct}
ENV GOPROXY=https://proxy.golang.com.cn,direct
# ENV GOPROXY=https://proxy.golang.com.cn,direct
ENV GOPATH /go
ENV GOROOT /usr/local/go
@@ -47,7 +47,9 @@ RUN mkdir -p /data/uploads && chmod 777 /data/uploads \
FROM alpine
LABEL maintainer="linkinstar@apache.org"
ENV TZ "Asia/Shanghai"
ARG TIMEZONE
ENV TIMEZONE=${TIMEZONE:-"Asia/Shanghai"}
RUN apk update \
&& apk --no-cache add \
bash \
@@ -58,7 +60,9 @@ RUN apk update \
openssh \
sqlite \
gnupg \
&& echo "Asia/Shanghai" > /etc/timezone
tzdata \
&& ln -sf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \
&& echo "${TIMEZONE}" > /etc/timezone
COPY --from=golang-builder /usr/bin/answer /usr/bin/answer
COPY --from=golang-builder /data /data
+6 -2
View File
@@ -1,12 +1,12 @@
.PHONY: build clean ui
VERSION=1.2.0
VERSION=1.3.0
BIN=answer
DIR_SRC=./cmd/answer
DOCKER_CMD=docker
GO_ENV=CGO_ENABLED=0 GO111MODULE=on
Revision=$(shell git rev-parse --short HEAD)
Revision=$(shell git rev-parse --short HEAD 2>/dev/null || echo "")
GO_FLAGS=-ldflags="-X github.com/apache/incubator-answer/cmd.Version=$(VERSION) -X 'github.com/apache/incubator-answer/cmd.Revision=$(Revision)' -X 'github.com/apache/incubator-answer/cmd.Time=`date +%s`' -extldflags -static"
GO=$(GO_ENV) $(shell which go)
@@ -43,4 +43,8 @@ install-ui-packages:
ui:
@cd ui && pnpm pre-install && pnpm build && cd -
lint: generate
@bash ./script/check-asf-header.sh
@gofmt -w -l .
all: clean build
+1 -1
View File
@@ -1,5 +1,5 @@
Apache Answer (incubating)
Copyright 2023 The Apache Software Foundation
Copyright 2023-2024 The Apache Software Foundation
This product includes software developed at
The Apache Software Foundation (https://www.apache.org/).
+27 -6
View File
@@ -2,7 +2,7 @@
<img alt="logo" src="docs/img/logo.svg" height="99px">
</a>
# Answer - Build Q&A platform
# Apache Answer - Build Q&A platform
A Q&A platform software for teams at any scales. Whether its a community forum, help center, or knowledge management platform, you can always count on Answer.
@@ -23,24 +23,45 @@ 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 answerdev/answer:latest
docker run -d -p 9080:80 -v answer-data:/data --name answer apache/answer:1.3.0
```
For more information, see [Installation](https://answer.apache.org/docs/installation)
For more information, see [Installation](https://answer.apache.org/docs/installation).
### Plugins
Answer provides a plugin system for developers to create custom plugins and expand Answers features. You can find the [plugin documentation here](https://answer.apache.org/docs/development/extending/).
Answer provides a plugin system for developers to create custom plugins and expand Answers features. You can find the [plugin documentation here](https://answer.apache.org/community/plugins).
We value your feedback and suggestions to improve our documentation. If you have any comments or questions, please feel free to contact us. Were excited to see what you can create using our plugin system!
You can also check out the [plugins here](https://github.com/apache/incubator-answer-plugins).
You can also check out the [plugins here](https://answer.apache.org/plugins).
## Building from Source
### Prerequisites
- Golang >= 1.18
- Node.js >= 16.17
- pnpm >= 8
- mockgen >= 1.6.0
- wire >= 0.5.0
### Build
```bash
# install wire and mockgen for building
$ make generate
# install frontend dependencies and build
$ make ui
# install backend dependencies and build
$ make build
```
## Contributing
Contributions are always welcome!
See [CONTRIBUTING](https://answer.apache.org/docs/development/contributing/) for ways to get started.
See [CONTRIBUTING](https://answer.apache.org/community/contributing) for ways to get started.
## License
-39
View File
@@ -1,39 +0,0 @@
<a href="https://answer.apache.org">
<img alt="logo" src="docs/img/logo.svg" height="99px">
</a>
# Answer - 构建问答社区
一款问答形式的知识社区开源软件,你可以使用它快速建立你的问答社区,用于产品技术支持、客户支持、用户交流等。
了解更多关于该项目的内容,请访问 [answer.apache.org](https://answer.apache.org).
[![LICENSE](https://img.shields.io/github/license/apache/incubator-answer)](https://github.com/apache/incubator-answer/blob/main/LICENSE)
[![Language](https://img.shields.io/badge/language-go-blue.svg)](https://golang.org/)
[![Language](https://img.shields.io/badge/language-react-blue.svg)](https://reactjs.org/)
[![Go Report Card](https://goreportcard.com/badge/github.com/apache/incubator-answer)](https://goreportcard.com/report/github.com/apache/incubator-answer)
[![Discord](https://img.shields.io/badge/discord-chat-5865f2?logo=discord&logoColor=f5f5f5)](https://discord.gg/Jm7Y4cbUej)
## 截图
![screenshot](docs/img/screenshot.png)
## 快速开始
### 使用 docker 快速搭建
```bash
docker run -d -p 9080:80 -v answer-data:/data --name answer answerdev/answer:latest
```
其他安装配置细节请参考 [Installation](https://answer.apache.org/docs/installation)
## 贡献
我们随时欢迎你的贡献!
参考 [CONTRIBUTING](https://answer.apache.org/docs/development/contributing/) 开始贡献。
## License
[Apache License 2.0](https://github.com/apache/incubator-answer/blob/main/LICENSE)
+3 -3
View File
@@ -11,7 +11,7 @@ The following table lists the configurable parameters of the answer chart and th
| Parameter | Description | Default |
| --------- | ----------- | ------- |
| `replicaCount` | Number of answer replicas | `1` |
| `image.repository` | Image repository | `answerdev/answer` |
| `image.repository` | Image repository | `apache/answer` |
| `image.pullPolicy` | Image pull policy | `Always` |
| `image.tag` | Image tag | `latest` |
| `env` | Optional environment variables for answer | `LOG_LEVEL: INFO` |
@@ -69,7 +69,7 @@ Publish the chart to Artifacthub and add proper installation instructions. E.G.
> **NOTE**: This is not currently a valid installation option.
```console
$ helm repo add answerdev https://charts.answer.apache.org/
$ helm repo add apache https://charts.answer.apache.org/
$ helm repo update
$ helm install answerdev/answer -n mynamespace
$ helm install apache/answer -n mynamespace
```
+1 -1
View File
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
{{- if .Values.autoscaling.enabled }}
{{ if .Values.autoscaling.enabled -}}
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
+1 -1
View File
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
{{- if .Values.ingress.enabled -}}
{{ if .Values.ingress.enabled -}}
{{- $fullName := include "answer.fullname" . -}}
{{- $svcPort := .Values.service.port -}}
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
+1 -1
View File
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
{{- if .Values.persistence.enabled }}
{{ if .Values.persistence.enabled -}}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
+1 -1
View File
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
{{- if .Values.serviceAccount.create -}}
{{ if .Values.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
+1 -1
View File
@@ -22,7 +22,7 @@
replicaCount: 1
image:
repository: answerdev/answer
repository: apache/answer
pullPolicy: Always
# Overrides the image tag whose default is the chart appVersion.
tag: "latest"
+37 -1
View File
@@ -45,6 +45,8 @@ var (
// This config is used to upgrade the database from a specific version manually.
// If you want to upgrade the database to version 1.1.0, you can use `answer upgrade -f v1.1.0`.
upgradeVersion string
// The fields that need to be set to the default value
configFields []string
)
func init() {
@@ -60,7 +62,9 @@ func init() {
upgradeCmd.Flags().StringVarP(&upgradeVersion, "from", "f", "", "upgrade from specific version, eg: -f v1.1.0")
for _, cmd := range []*cobra.Command{initCmd, checkCmd, runCmd, dumpCmd, upgradeCmd, buildCmd, pluginCmd} {
configCmd.Flags().StringSliceVarP(&configFields, "with", "w", []string{}, "the fields that need to be set to the default value, eg: -w allow_password_login")
for _, cmd := range []*cobra.Command{initCmd, checkCmd, runCmd, dumpCmd, upgradeCmd, buildCmd, pluginCmd, configCmd} {
rootCmd.AddCommand(cmd)
}
}
@@ -231,6 +235,38 @@ To run answer, use:
})
},
}
// configCmd set some config to default value
configCmd = &cobra.Command{
Use: "config",
Short: "set some config to default value",
Long: `set some config to default value`,
Run: func(_ *cobra.Command, _ []string) {
cli.FormatAllPath(dataDirPath)
c, err := conf.ReadConfig(cli.GetConfigFilePath())
if err != nil {
fmt.Println("read config failed: ", err.Error())
return
}
field := &cli.ConfigField{}
for _, f := range configFields {
switch f {
case "allow_password_login":
field.AllowPasswordLogin = true
default:
fmt.Printf("field %s not support\n", f)
}
}
err = cli.SetDefaultConfig(c.Data.Database, c.Data.Cache, field)
if err != nil {
fmt.Println("set default config failed: ", err.Error())
} else {
fmt.Println("set default config successfully")
}
},
}
)
// Execute adds all child commands to the root command and sets flags appropriately.
+6 -2
View File
@@ -44,9 +44,12 @@ var (
// Version is the version of the project
Version = "0.0.0"
// Revision is the git short commit revision number
Revision = "-"
// If built without a Git repository, this field will be empty.
Revision = ""
// Time is the build time of the project
Time = "-"
Time = ""
// GoVersion is the go version of the project
GoVersion = "1.19"
// log level
logLevel = os.Getenv("LOG_LEVEL")
// log path
@@ -75,6 +78,7 @@ func runApp() {
}
constant.Version = Version
constant.Revision = Revision
constant.GoVersion = GoVersion
schema.AppStartTime = time.Now()
fmt.Println("answer Version:", constant.Version, " Revision:", constant.Revision)
+46 -40
View File
@@ -53,6 +53,7 @@ import (
"github.com/apache/incubator-answer/internal/repo/rank"
"github.com/apache/incubator-answer/internal/repo/reason"
"github.com/apache/incubator-answer/internal/repo/report"
"github.com/apache/incubator-answer/internal/repo/review"
"github.com/apache/incubator-answer/internal/repo/revision"
"github.com/apache/incubator-answer/internal/repo/role"
"github.com/apache/incubator-answer/internal/repo/search_common"
@@ -64,17 +65,18 @@ import (
"github.com/apache/incubator-answer/internal/repo/user_external_login"
"github.com/apache/incubator-answer/internal/repo/user_notification_config"
"github.com/apache/incubator-answer/internal/router"
"github.com/apache/incubator-answer/internal/service"
"github.com/apache/incubator-answer/internal/service/action"
activity2 "github.com/apache/incubator-answer/internal/service/activity"
activity_common2 "github.com/apache/incubator-answer/internal/service/activity_common"
"github.com/apache/incubator-answer/internal/service/activity_queue"
"github.com/apache/incubator-answer/internal/service/answer_common"
auth2 "github.com/apache/incubator-answer/internal/service/auth"
collection2 "github.com/apache/incubator-answer/internal/service/collection"
"github.com/apache/incubator-answer/internal/service/collection_common"
comment2 "github.com/apache/incubator-answer/internal/service/comment"
"github.com/apache/incubator-answer/internal/service/comment_common"
config2 "github.com/apache/incubator-answer/internal/service/config"
"github.com/apache/incubator-answer/internal/service/content"
"github.com/apache/incubator-answer/internal/service/dashboard"
export2 "github.com/apache/incubator-answer/internal/service/export"
"github.com/apache/incubator-answer/internal/service/follow"
@@ -88,8 +90,8 @@ import (
rank2 "github.com/apache/incubator-answer/internal/service/rank"
reason2 "github.com/apache/incubator-answer/internal/service/reason"
report2 "github.com/apache/incubator-answer/internal/service/report"
"github.com/apache/incubator-answer/internal/service/report_admin"
"github.com/apache/incubator-answer/internal/service/report_handle_admin"
"github.com/apache/incubator-answer/internal/service/report_handle"
review2 "github.com/apache/incubator-answer/internal/service/review"
"github.com/apache/incubator-answer/internal/service/revision_common"
role2 "github.com/apache/incubator-answer/internal/service/role"
"github.com/apache/incubator-answer/internal/service/search_parser"
@@ -149,17 +151,13 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
userRoleRelService := role2.NewUserRoleRelService(userRoleRelRepo, roleService)
userCommon := usercommon.NewUserCommon(userRepo, userRoleRelService, authService, siteInfoCommonService)
userExternalLoginRepo := user_external_login.NewUserExternalLoginRepo(dataData)
userExternalLoginService := user_external_login2.NewUserExternalLoginService(userRepo, userCommon, userExternalLoginRepo, emailService, siteInfoCommonService, userActiveActivityRepo)
userNotificationConfigRepo := user_notification_config.NewUserNotificationConfigRepo(dataData)
userNotificationConfigService := user_notification_config2.NewUserNotificationConfigService(userRepo, userNotificationConfigRepo)
userService := service.NewUserService(userRepo, userActiveActivityRepo, activityRepo, emailService, authService, siteInfoCommonService, userRoleRelService, userCommon, userExternalLoginService, userNotificationConfigRepo, userNotificationConfigService)
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)
answerRepo := answer.NewAnswerRepo(dataData, uniqueIDRepo, userRankRepo, activityRepo)
userExternalLoginService := user_external_login2.NewUserExternalLoginService(userRepo, userCommon, userExternalLoginRepo, emailService, siteInfoCommonService, userActiveActivityRepo, userNotificationConfigService)
questionRepo := question.NewQuestionRepo(dataData, uniqueIDRepo)
answerRepo := answer.NewAnswerRepo(dataData, uniqueIDRepo, userRankRepo, activityRepo)
voteRepo := activity_common.NewVoteRepo(dataData, activityRepo)
followRepo := activity_common.NewFollowRepo(dataData, uniqueIDRepo, activityRepo)
tagCommonRepo := tag_common.NewTagCommonRepo(dataData, uniqueIDRepo)
tagRelRepo := tag.NewTagRelRepo(dataData, uniqueIDRepo)
tagRepo := tag.NewTagRepo(dataData, uniqueIDRepo)
@@ -167,8 +165,19 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
revisionService := revision_common.NewRevisionService(revisionRepo, userRepo)
activityQueueService := activity_queue.NewActivityQueueService()
tagCommonService := tag_common2.NewTagCommonService(tagCommonRepo, tagRelRepo, tagRepo, revisionService, siteInfoCommonService, activityQueueService)
collectionRepo := collection.NewCollectionRepo(dataData, uniqueIDRepo)
collectionCommon := collectioncommon.NewCollectionCommon(collectionRepo)
answerCommon := answercommon.NewAnswerCommon(answerRepo)
metaRepo := meta.NewMetaRepo(dataData)
metaService := meta2.NewMetaService(metaRepo)
questionCommon := questioncommon.NewQuestionCommon(questionRepo, answerRepo, voteRepo, followRepo, tagCommonService, userCommon, collectionCommon, answerCommon, metaService, configService, activityQueueService, revisionRepo, dataData)
userService := content.NewUserService(userRepo, userActiveActivityRepo, activityRepo, emailService, authService, siteInfoCommonService, userRoleRelService, userCommon, userExternalLoginService, userNotificationConfigRepo, userNotificationConfigService, questionCommon)
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)
voteRepo := activity_common.NewVoteRepo(dataData, activityRepo)
notificationQueueService := notice_queue.NewNotificationQueueService()
externalNotificationQueueService := notice_queue.NewNewQuestionNotificationQueueService()
commentService := comment2.NewCommentService(commentRepo, commentCommonRepo, userCommon, objService, voteRepo, emailService, userRepo, notificationQueueService, externalNotificationQueueService, activityQueueService)
@@ -179,43 +188,37 @@ 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)
reportService := report2.NewReportService(reportRepo, objService)
answerActivityRepo := activity.NewAnswerActivityRepo(dataData, activityRepo, userRankRepo, notificationQueueService)
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, notificationQueueService, siteInfoCommonService)
questionService := content.NewQuestionService(questionRepo, tagCommonService, questionCommon, userCommon, userRepo, userRoleRelService, revisionService, metaService, collectionCommon, answerActivityService, emailService, notificationQueueService, externalNotificationQueueService, activityQueueService, siteInfoCommonService, externalNotificationService, reviewService, configService)
answerService := content.NewAnswerService(answerRepo, questionRepo, questionCommon, userCommon, collectionCommon, userRepo, revisionService, answerActivityService, answerCommon, voteRepo, emailService, userRoleRelService, notificationQueueService, externalNotificationQueueService, activityQueueService, reviewService)
reportHandle := report_handle.NewReportHandle(questionService, answerService, commentService)
reportService := report2.NewReportService(reportRepo, objService, userCommon, answerRepo, questionRepo, commentCommonRepo, reportHandle, configService)
reportController := controller.NewReportController(reportService, rankService, captchaService)
serviceVoteRepo := activity.NewVoteRepo(dataData, activityRepo, userRankRepo, notificationQueueService)
voteService := service.NewVoteService(serviceVoteRepo, configService, questionRepo, answerRepo, commentCommonRepo, objService)
contentVoteRepo := activity.NewVoteRepo(dataData, activityRepo, userRankRepo, notificationQueueService)
voteService := content.NewVoteService(contentVoteRepo, configService, questionRepo, answerRepo, commentCommonRepo, objService)
voteController := controller.NewVoteController(voteService, rankService, captchaService)
followRepo := activity_common.NewFollowRepo(dataData, uniqueIDRepo, activityRepo)
tagService := tag2.NewTagService(tagRepo, tagCommonService, revisionService, followRepo, siteInfoCommonService, activityQueueService)
tagController := controller.NewTagController(tagService, tagCommonService, rankService)
followFollowRepo := activity.NewFollowRepo(dataData, uniqueIDRepo, activityRepo)
followService := follow.NewFollowService(followFollowRepo, followRepo, tagCommonRepo)
followController := controller.NewFollowController(followService)
collectionRepo := collection.NewCollectionRepo(dataData, uniqueIDRepo)
collectionGroupRepo := collection.NewCollectionGroupRepo(dataData)
collectionCommon := collectioncommon.NewCollectionCommon(collectionRepo)
answerCommon := answercommon.NewAnswerCommon(answerRepo)
metaRepo := meta.NewMetaRepo(dataData)
metaService := meta2.NewMetaService(metaRepo)
questionCommon := questioncommon.NewQuestionCommon(questionRepo, answerRepo, voteRepo, followRepo, tagCommonService, userCommon, collectionCommon, answerCommon, metaService, configService, activityQueueService, dataData)
collectionService := service.NewCollectionService(collectionRepo, collectionGroupRepo, questionCommon)
collectionService := collection2.NewCollectionService(collectionRepo, collectionGroupRepo, questionCommon)
collectionController := controller.NewCollectionController(collectionService)
answerActivityRepo := activity.NewAnswerActivityRepo(dataData, activityRepo, userRankRepo, notificationQueueService)
answerActivityService := activity2.NewAnswerActivityService(answerActivityRepo, configService)
externalNotificationService := notification.NewExternalNotificationService(dataData, userNotificationConfigRepo, followRepo, emailService, userRepo, externalNotificationQueueService)
questionService := service.NewQuestionService(questionRepo, tagCommonService, questionCommon, userCommon, userRepo, revisionService, metaService, collectionCommon, answerActivityService, emailService, notificationQueueService, externalNotificationQueueService, activityQueueService, siteInfoCommonService, externalNotificationService)
answerService := service.NewAnswerService(answerRepo, questionRepo, questionCommon, userCommon, collectionCommon, userRepo, revisionService, answerActivityService, answerCommon, voteRepo, emailService, userRoleRelService, notificationQueueService, externalNotificationQueueService, activityQueueService)
questionController := controller.NewQuestionController(questionService, answerService, rankService, siteInfoCommonService, captchaService, rateLimitMiddleware)
answerController := controller.NewAnswerController(answerService, rankService, captchaService, rateLimitMiddleware)
answerController := controller.NewAnswerController(answerService, rankService, captchaService, siteInfoCommonService, rateLimitMiddleware)
searchParser := search_parser.NewSearchParser(tagCommonService, userCommon)
searchRepo := search_common.NewSearchRepo(dataData, uniqueIDRepo, userCommon, tagCommonService)
searchService := service.NewSearchService(searchParser, searchRepo)
searchService := content.NewSearchService(searchParser, searchRepo)
searchController := controller.NewSearchController(searchService, captchaService)
serviceRevisionService := service.NewRevisionService(revisionRepo, userCommon, questionCommon, answerService, objService, questionRepo, answerRepo, tagRepo, tagCommonService, notificationQueueService, activityQueueService)
revisionController := controller.NewRevisionController(serviceRevisionService, rankService)
reviewActivityRepo := activity.NewReviewActivityRepo(dataData, activityRepo, userRankRepo, configService)
contentRevisionService := content.NewRevisionService(revisionRepo, userCommon, questionCommon, answerService, objService, questionRepo, answerRepo, tagRepo, tagCommonService, notificationQueueService, activityQueueService, reportRepo, reviewService, reviewActivityRepo)
revisionController := controller.NewRevisionController(contentRevisionService, rankService)
rankController := controller.NewRankController(rankService)
reportHandle := report_handle_admin.NewReportHandle(questionCommon, commentRepo, configService, notificationQueueService)
reportAdminService := report_admin.NewReportAdminService(reportRepo, userCommon, answerRepo, questionRepo, commentCommonRepo, reportHandle, configService, objService)
controller_adminReportController := controller_admin.NewReportController(reportAdminService)
userAdminRepo := user.NewUserAdminRepo(dataData, authRepo)
userAdminService := user_admin.NewUserAdminService(userAdminRepo, userRoleRelService, authService, userCommon, userActiveActivityRepo, siteInfoCommonService, emailService, questionRepo, answerRepo, commentCommonRepo)
userAdminController := controller_admin.NewUserAdminController(userAdminService)
@@ -227,10 +230,10 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
siteInfoController := controller_admin.NewSiteInfoController(siteInfoService)
controllerSiteInfoController := controller.NewSiteInfoController(siteInfoCommonService)
notificationRepo := notification2.NewNotificationRepo(dataData)
notificationCommon := notificationcommon.NewNotificationCommon(dataData, notificationRepo, userCommon, activityRepo, followRepo, objService, notificationQueueService)
notificationService := notification.NewNotificationService(dataData, notificationRepo, notificationCommon, revisionService, userRepo)
notificationCommon := notificationcommon.NewNotificationCommon(dataData, notificationRepo, userCommon, activityRepo, followRepo, objService, notificationQueueService, userExternalLoginRepo, siteInfoCommonService)
notificationService := notification.NewNotificationService(dataData, notificationRepo, notificationCommon, revisionService, userRepo, reportRepo, reviewService)
notificationController := controller.NewNotificationController(notificationService, rankService)
dashboardService := dashboard.NewDashboardService(questionRepo, answerRepo, commentCommonRepo, voteRepo, userRepo, reportRepo, configService, siteInfoCommonService, serviceConf, dataData)
dashboardService := dashboard.NewDashboardService(questionRepo, answerRepo, commentCommonRepo, voteRepo, userRepo, reportRepo, configService, siteInfoCommonService, serviceConf, reviewService, revisionRepo, dataData)
dashboardController := controller.NewDashboardController(dashboardService)
uploaderService := uploader.NewUploaderService(serviceConf, siteInfoCommonService)
uploadController := controller.NewUploadController(uploaderService)
@@ -241,10 +244,13 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
activityController := controller.NewActivityController(activityService)
roleController := controller_admin.NewRoleController(roleService)
pluginConfigRepo := plugin_config.NewPluginConfigRepo(dataData)
pluginCommonService := plugin_common.NewPluginCommonService(pluginConfigRepo, configService, dataData)
pluginUserConfigRepo := plugin_config.NewPluginUserConfigRepo(dataData)
pluginCommonService := plugin_common.NewPluginCommonService(pluginConfigRepo, pluginUserConfigRepo, configService, dataData)
pluginController := controller_admin.NewPluginController(pluginCommonService)
permissionController := controller.NewPermissionController(rankService)
answerAPIRouter := router.NewAnswerAPIRouter(langController, userController, commentController, reportController, voteController, tagController, followController, collectionController, questionController, answerController, searchController, revisionController, rankController, controller_adminReportController, userAdminController, reasonController, themeController, siteInfoController, controllerSiteInfoController, notificationController, dashboardController, uploadController, activityController, roleController, pluginController, permissionController)
userPluginController := controller.NewUserPluginController(pluginCommonService)
reviewController := controller.NewReviewController(reviewService, rankService, captchaService)
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)
swaggerRouter := router.NewSwaggerRouter(swaggerConf)
uiRouter := router.NewUIRouter(controllerSiteInfoController, siteInfoCommonService)
authUserMiddleware := middleware.NewAuthUserMiddleware(authService, siteInfoCommonService)
-2
View File
@@ -32,6 +32,4 @@ swaggerui:
host: 127.0.0.1
address: ':80'
service_config:
secret_key: "answer"
web_host: "http://127.0.0.1:9080"
upload_path: "/data/uploads"
-77
View File
@@ -1,77 +0,0 @@
# 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: "3.9"
# uffizzi integration
x-uffizzi:
ingress:
service: answer
port: 80
services:
answer:
image: "${ANSWER_IMAGE}"
environment:
- AUTO_INSTALL=true
- DB_TYPE=mysql
- DB_USERNAME=root
- DB_PASSWORD=password
- DB_HOST=127.0.0.1:3306
- DB_NAME=answer
- LANGUAGE=en_US
- SITE_NAME=answer-test
- SITE_URL=http://localhost
- CONTACT_EMAIL=test@answer.com
- ADMIN_NAME=admin123
- ADMIN_PASSWORD=admin123
- ADMIN_EMAIL=admin123@admin.com
volumes:
- answer-data:/data
depends_on:
mysql:
condition: service_healthy
links:
- db
deploy:
resources:
limits:
memory: 4000M
mysql:
image: mysql:latest
environment:
- MYSQL_DATABASE=answer
- MYSQL_ROOT_PASSWORD=password
- MYSQL_USER=mysql
- MYSQL_PASSWORD=mysql
healthcheck:
test: [ "CMD", "mysqladmin" ,"ping", "-uroot", "-ppassword" ]
timeout: 20s
retries: 10
command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--skip-character-set-client-handshake']
volumes:
- sql_data:/var/lib/mysql
deploy:
resources:
limits:
memory: 500M
volumes:
answer-data:
sql_data:
+1 -1
View File
@@ -18,7 +18,7 @@
version: "3"
services:
answer:
image: answerdev/answer
image: apache/answer
ports:
- '9080:80'
restart: on-failure
+813 -179
View File
File diff suppressed because it is too large Load Diff
+18
View File
@@ -1,3 +1,21 @@
<!--
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.
-->
<svg width="126" height="44" viewBox="0 0 126 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="125.49" height="44" rx="6" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 14.4C8 12.1598 8 11.0397 8.43597 10.184C8.81947 9.43139 9.43139 8.81947 10.184 8.43597C11.0397 8 12.1598 8 14.4 8H29.6C31.8402 8 32.9603 8 33.816 8.43597C34.5686 8.81947 35.1805 9.43139 35.564 10.184C36 11.0397 36 12.1598 36 14.4V24.0892C36 26.9608 36 28.3967 35.5628 29.6643C35.1761 30.7853 34.5451 31.8063 33.7153 32.6535C32.7771 33.6115 31.4928 34.2536 28.9244 35.5378L28 36V32H14.4C12.1598 32 11.0397 32 10.184 31.564C9.43139 31.1805 8.81947 30.5686 8.43597 29.816C8 28.9603 8 27.8402 8 25.6V14.4ZM28 20C28 23.3137 25.3137 26 22 26C18.6954 26 16.0148 23.3285 16.0001 20.0274V20H28Z" fill="#0033FF"/>

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

+813 -179
View File
File diff suppressed because it is too large Load Diff
+509 -124
View File
@@ -29,6 +29,7 @@ definitions:
label:
type: string
value:
minimum: 1
type: integer
type: object
handler.RespBody:
@@ -357,11 +358,11 @@ definitions:
type: object
schema.CollectionSwitchReq:
properties:
bookmark:
type: boolean
group_id:
description: user collection group TagID
type: string
object_id:
description: object TagID
type: string
required:
- group_id
@@ -370,11 +371,7 @@ definitions:
schema.CollectionSwitchResp:
properties:
object_collection_count:
type: string
object_id:
type: string
switch:
type: boolean
type: integer
type: object
schema.ConfigField:
properties:
@@ -407,6 +404,10 @@ definitions:
properties:
action:
$ref: '#/definitions/schema.UIOptionAction'
class_name:
type: string
field_class_name:
type: string
input_type:
type: string
label:
@@ -607,6 +608,9 @@ definitions:
bio_html:
description: bio html
type: string
color_scheme:
description: Color scheme
type: string
created_at:
description: create time
type: integer
@@ -658,6 +662,9 @@ definitions:
username:
description: username
type: string
visit_token:
description: visit token
type: string
website:
description: website
type: string
@@ -829,28 +836,84 @@ definitions:
description: url title
type: string
type: object
schema.GetReportListPageResp:
properties:
answer_accepted:
type: boolean
answer_count:
type: integer
answer_id:
type: string
author_user_info:
$ref: '#/definitions/schema.UserBasicInfo'
comment_id:
type: string
created_at:
type: integer
flag_id:
type: string
object_id:
type: string
object_show_status:
type: integer
object_status:
type: integer
object_type:
enum:
- question
- answer
- comment
type: string
original_text:
type: string
parsed_text:
type: string
question_id:
type: string
reason:
$ref: '#/definitions/schema.ReasonItem'
reason_content:
type: string
submit_at:
type: integer
submitter_user:
$ref: '#/definitions/schema.UserBasicInfo'
tags:
items:
$ref: '#/definitions/schema.TagResp'
type: array
title:
type: string
url_title:
type: string
type: object
schema.GetReviewingTypeResp:
properties:
label:
type: string
name:
type: string
todo_amount:
type: integer
type: object
schema.GetRevisionResp:
properties:
content:
description: content parsed
content: {}
create_at:
type: integer
id:
description: id
type: string
object_id:
description: object id
type: string
reason:
type: string
status:
description: 'revision status(normal: 1; delete 2)'
type: integer
title:
description: title
type: string
url_title:
type: string
use_id:
description: user id
type: string
user_info:
$ref: '#/definitions/schema.UserBasicInfo'
@@ -941,53 +1004,42 @@ definitions:
schema.GetTagResp:
properties:
created_at:
description: created time
type: integer
description:
description: description text
type: string
display_name:
description: display name
type: string
excerpt:
description: excerpt
type: string
follow_count:
description: follower amount
type: integer
is_follower:
description: is follower
type: boolean
main_tag_slug_name:
description: if main tag slug name is not empty, this tag is synonymous with
the main tag
type: string
member_actions:
description: MemberActions
items:
$ref: '#/definitions/schema.PermissionMemberAction'
type: array
original_text:
description: original text
type: string
parsed_text:
description: parsed text
type: string
question_count:
description: question amount
type: integer
recommend:
type: boolean
reserved:
type: boolean
slug_name:
description: slug name
type: string
status:
type: string
tag_id:
description: tag id
type: string
updated_at:
description: updated time
type: integer
type: object
schema.GetTagSynonymsResp:
@@ -1003,6 +1055,51 @@ definitions:
$ref: '#/definitions/schema.TagSynonym'
type: array
type: object
schema.GetUnreviewedPostPageResp:
properties:
answer_id:
type: string
author_user_info:
$ref: '#/definitions/schema.UserBasicInfo'
comment_id:
type: string
created_at:
type: integer
object_id:
type: string
object_show_status:
type: integer
object_status:
type: integer
object_type:
enum:
- question
- answer
- comment
type: string
original_text:
type: string
parsed_text:
type: string
question_id:
type: string
reason:
type: string
review_id:
type: integer
submit_at:
type: integer
submitter_display_name:
type: string
tags:
items:
$ref: '#/definitions/schema.TagResp'
type: array
title:
type: string
url_title:
type: string
type: object
schema.GetUnreviewedRevisionResp:
properties:
info:
@@ -1020,17 +1117,11 @@ definitions:
schema.GetUserNotificationConfigResp:
properties:
all_new_question:
items:
$ref: '#/definitions/schema.NotificationChannelConfig'
type: array
$ref: '#/definitions/schema.NotificationChannelConfig'
all_new_question_for_following_tags:
items:
$ref: '#/definitions/schema.NotificationChannelConfig'
type: array
$ref: '#/definitions/schema.NotificationChannelConfig'
inbox:
items:
$ref: '#/definitions/schema.NotificationChannelConfig'
type: array
$ref: '#/definitions/schema.NotificationChannelConfig'
type: object
schema.GetUserPageResp:
properties:
@@ -1071,6 +1162,13 @@ definitions:
description: username
type: string
type: object
schema.GetUserPluginListResp:
properties:
name:
type: string
slug_name:
type: string
type: object
schema.GetVoteWithPageResp:
properties:
answer_id:
@@ -1167,11 +1265,13 @@ definitions:
- 1
- 2
- 3
- 99
type: integer
x-enum-varnames:
- PrivilegeLevel1
- PrivilegeLevel2
- PrivilegeLevel3
- PrivilegeLevelCustom
schema.PrivilegeOption:
properties:
level:
@@ -1396,6 +1496,21 @@ definitions:
required:
- id
type: object
schema.ReasonItem:
properties:
content_type:
type: string
description:
type: string
name:
type: string
placeholder:
type: string
reason_key:
type: string
reason_type:
type: integer
type: object
schema.RecoverAnswerReq:
properties:
answer_id:
@@ -1460,17 +1575,37 @@ definitions:
question_id:
type: string
type: object
schema.ReportHandleReq:
schema.ReviewReportReq:
properties:
flagged_content:
close_msg:
type: string
flagged_type:
close_type:
type: integer
id:
content:
maxLength: 65535
minLength: 6
type: string
flag_id:
type: string
operation_type:
enum:
- edit_post
- close_post
- delete_post
- unlist_post
- ignore_report
type: string
tags:
items:
$ref: '#/definitions/schema.TagItem'
type: array
title:
maxLength: 150
minLength: 6
type: string
required:
- flagged_type
- id
- flag_id
- operation_type
type: object
schema.RevisionAuditReq:
properties:
@@ -1508,6 +1643,8 @@ definitions:
type: array
title:
type: string
url_title:
type: string
user_info:
allOf:
- $ref: '#/definitions/schema.SearchObjectUser'
@@ -1623,6 +1760,8 @@ definitions:
type: object
schema.SiteGeneralReq:
properties:
check_update:
type: boolean
contact_email:
maxLength: 512
type: string
@@ -1645,6 +1784,8 @@ definitions:
type: object
schema.SiteGeneralResp:
properties:
check_update:
type: boolean
contact_email:
maxLength: 512
type: string
@@ -1683,6 +1824,8 @@ definitions:
$ref: '#/definitions/schema.SiteSeoResp'
site_users:
$ref: '#/definitions/schema.SiteUsersResp'
site_write:
$ref: '#/definitions/schema.SiteWriteResp'
theme:
$ref: '#/definitions/schema.SiteThemeResp'
version:
@@ -1744,6 +1887,8 @@ definitions:
type: boolean
allow_new_registrations:
type: boolean
allow_password_login:
type: boolean
login_required:
type: boolean
type: object
@@ -1757,6 +1902,8 @@ definitions:
type: boolean
allow_new_registrations:
type: boolean
allow_password_login:
type: boolean
login_required:
type: boolean
type: object
@@ -1786,6 +1933,9 @@ definitions:
type: object
schema.SiteThemeReq:
properties:
color_scheme:
maxLength: 100
type: string
theme:
maxLength: 255
type: string
@@ -1797,6 +1947,8 @@ definitions:
type: object
schema.SiteThemeResp:
properties:
color_scheme:
type: string
theme:
type: string
theme_config:
@@ -1867,6 +2019,8 @@ definitions:
items:
type: string
type: array
restrict_answer:
type: boolean
type: object
schema.SiteWriteResp:
properties:
@@ -1880,6 +2034,8 @@ definitions:
items:
type: string
type: array
restrict_answer:
type: boolean
type: object
schema.TagItem:
properties:
@@ -1946,18 +2102,40 @@ definitions:
type: object
schema.UnreviewedRevisionInfoInfo:
properties:
answer_accepted:
type: boolean
answer_count:
type: integer
answer_id:
type: string
comment_id:
type: string
content:
type: string
created_at:
type: integer
html:
type: string
object_creator_user_id:
type: string
object_id:
type: string
object_type:
type: string
question_id:
type: string
show_status:
type: integer
status:
type: integer
tags:
items:
$ref: '#/definitions/schema.TagResp'
type: array
title:
type: string
url_title:
type: string
type: object
schema.UpdateCommentReq:
properties:
@@ -2029,14 +2207,30 @@ definitions:
type: object
schema.UpdatePrivilegesConfigReq:
properties:
custom_privileges:
items:
$ref: '#/definitions/constant.Privilege'
type: array
level:
allOf:
- $ref: '#/definitions/schema.PrivilegeLevel'
maximum: 3
minimum: 1
required:
- level
type: object
schema.UpdateReviewReq:
properties:
review_id:
type: integer
status:
enum:
- approve
- reject
type: string
required:
- review_id
- status
type: object
schema.UpdateSMTPConfigReq:
properties:
encryption:
@@ -2106,27 +2300,26 @@ definitions:
type: object
schema.UpdateUserInterfaceRequest:
properties:
color_scheme:
description: Color scheme
maxLength: 100
type: string
language:
description: language
maxLength: 100
type: string
required:
- color_scheme
- language
type: object
schema.UpdateUserNotificationConfigReq:
properties:
all_new_question:
items:
$ref: '#/definitions/schema.NotificationChannelConfig'
type: array
$ref: '#/definitions/schema.NotificationChannelConfig'
all_new_question_for_following_tags:
items:
$ref: '#/definitions/schema.NotificationChannelConfig'
type: array
$ref: '#/definitions/schema.NotificationChannelConfig'
inbox:
items:
$ref: '#/definitions/schema.NotificationChannelConfig'
type: array
$ref: '#/definitions/schema.NotificationChannelConfig'
type: object
schema.UpdateUserPasswordReq:
properties:
@@ -2140,6 +2333,17 @@ definitions:
- password
- user_id
type: object
schema.UpdateUserPluginConfigReq:
properties:
config_fields:
additionalProperties: {}
type: object
plugin_slug_name:
maxLength: 100
type: string
required:
- plugin_slug_name
type: object
schema.UpdateUserRoleReq:
properties:
role_id:
@@ -2177,6 +2381,8 @@ definitions:
type: string
id:
type: string
language:
type: string
location:
type: string
rank:
@@ -2251,6 +2457,9 @@ definitions:
bio_html:
description: bio html
type: string
color_scheme:
description: Color scheme
type: string
created_at:
description: create time
type: integer
@@ -2302,6 +2511,9 @@ definitions:
username:
description: username
type: string
visit_token:
description: visit token
type: string
website:
description: website
type: string
@@ -2466,7 +2678,7 @@ paths:
get:
consumes:
- application/json
description: Status:[available,deleted]
description: Status:[available,deleted,pending]
parameters:
- description: page size
in: query
@@ -2480,6 +2692,7 @@ paths:
enum:
- available
- deleted
- pending
in: query
name: status
type: string
@@ -2667,7 +2880,7 @@ paths:
get:
consumes:
- application/json
description: Status:[available,closed,deleted]
description: Status:[available,closed,deleted,pending]
parameters:
- description: page size
in: query
@@ -2682,6 +2895,7 @@ paths:
- available
- closed
- deleted
- pending
in: query
name: status
type: string
@@ -2763,76 +2977,6 @@ paths:
summary: get reasons by object type and action
tags:
- reason
/answer/admin/api/report/:
put:
consumes:
- application/json
description: handle flag
parameters:
- description: flag
in: body
name: data
required: true
schema:
$ref: '#/definitions/schema.ReportHandleReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/handler.RespBody'
security:
- ApiKeyAuth: []
- ApiKeyAuth: []
summary: handle flag
tags:
- admin
/answer/admin/api/reports/page:
get:
consumes:
- application/json
description: list report records
parameters:
- description: status
enum:
- pending
- completed
in: query
name: status
required: true
type: string
- description: object_type
enum:
- all
- question
- answer
- comment
in: query
name: object_type
required: true
type: string
- description: page size
in: query
name: page
type: integer
- description: page size
in: query
name: page_size
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/handler.RespBody'
security:
- ApiKeyAuth: []
- ApiKeyAuth: []
summary: list report page
tags:
- admin
/answer/admin/api/roles:
get:
description: get role list
@@ -4659,6 +4803,30 @@ paths:
summary: get user personal votes
tags:
- Activity
/answer/api/v1/plugin/status:
get:
consumes:
- application/json
description: get all plugins status
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/handler.RespBody'
- properties:
data:
items:
$ref: '#/definitions/schema.GetPluginListResp'
type: array
type: object
security:
- ApiKeyAuth: []
summary: get all plugins status
tags:
- Plugin
/answer/api/v1/post/render:
post:
consumes:
@@ -5114,6 +5282,150 @@ paths:
summary: add report
tags:
- Report
/answer/api/v1/report/review:
put:
consumes:
- application/json
description: review report
parameters:
- description: flag
in: body
name: data
required: true
schema:
$ref: '#/definitions/schema.ReviewReportReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/handler.RespBody'
security:
- ApiKeyAuth: []
- ApiKeyAuth: []
summary: review report
tags:
- Report
/answer/api/v1/report/unreviewed/post:
get:
consumes:
- application/json
description: get unreviewed report post page
parameters:
- description: page
in: query
name: page
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/handler.RespBody'
- properties:
data:
allOf:
- $ref: '#/definitions/pager.PageModel'
- properties:
list:
items:
$ref: '#/definitions/schema.GetReportListPageResp'
type: array
type: object
type: object
security:
- ApiKeyAuth: []
summary: get unreviewed report post page
tags:
- Report
/answer/api/v1/review/pending/post:
put:
consumes:
- application/json
description: update review
parameters:
- description: review
in: body
name: data
required: true
schema:
$ref: '#/definitions/schema.UpdateReviewReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/handler.RespBody'
security:
- ApiKeyAuth: []
- ApiKeyAuth: []
summary: update review
tags:
- Review
/answer/api/v1/review/pending/post/page:
get:
consumes:
- application/json
description: get unreviewed post page
parameters:
- description: page
in: query
name: page
type: integer
- description: object_id
in: query
name: object_id
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/handler.RespBody'
- properties:
data:
allOf:
- $ref: '#/definitions/pager.PageModel'
- properties:
list:
items:
$ref: '#/definitions/schema.GetUnreviewedPostPageResp'
type: array
type: object
type: object
security:
- ApiKeyAuth: []
summary: get unreviewed post page
tags:
- Review
/answer/api/v1/reviewing/type:
get:
description: get reviewing type
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/handler.RespBody'
- properties:
data:
items:
$ref: '#/definitions/schema.GetReviewingTypeResp'
type: array
type: object
security:
- ApiKeyAuth: []
summary: get reviewing type
tags:
- Revision
/answer/api/v1/revisions:
get:
description: get revision list
@@ -5983,6 +6295,79 @@ paths:
summary: RetrievePassWord
tags:
- User
/answer/api/v1/user/plugin/config:
get:
description: get user plugin config
parameters:
- description: plugin_slug_name
in: query
name: plugin_slug_name
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/handler.RespBody'
- properties:
data:
$ref: '#/definitions/schema.GetPluginConfigResp'
type: object
security:
- ApiKeyAuth: []
summary: get user plugin config
tags:
- UserPlugin
put:
consumes:
- application/json
description: update user plugin config
parameters:
- description: UpdatePluginConfigReq
in: body
name: data
required: true
schema:
$ref: '#/definitions/schema.UpdateUserPluginConfigReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/handler.RespBody'
security:
- ApiKeyAuth: []
summary: update user plugin config
tags:
- UserPlugin
/answer/api/v1/user/plugin/configs:
get:
consumes:
- application/json
description: get plugin list that used for user.
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/handler.RespBody'
- properties:
data:
items:
$ref: '#/definitions/schema.GetUserPluginListResp'
type: array
type: object
security:
- ApiKeyAuth: []
summary: get plugin list that used for user.
tags:
- UserPlugin
/answer/api/v1/user/ranking:
get:
consumes:
+23 -7
View File
@@ -1,3 +1,20 @@
// 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.
module github.com/apache/incubator-answer
go 1.18
@@ -24,7 +41,7 @@ require (
github.com/jinzhu/now v1.1.5
github.com/lib/pq v1.10.7
github.com/microcosm-cc/bluemonday v1.0.21
github.com/mojocn/base64Captcha v1.3.5
github.com/mojocn/base64Captcha v1.3.6
github.com/ory/dockertest/v3 v3.10.0
github.com/robfig/cron/v3 v3.0.1
github.com/scottleedavis/go-exif-remove v0.0.0-20230314195146-7e059d593405
@@ -41,9 +58,9 @@ require (
github.com/swaggo/swag v1.16.1
github.com/tidwall/gjson v1.14.4
github.com/yuin/goldmark v1.4.13
golang.org/x/crypto v0.13.0
golang.org/x/image v0.1.0
golang.org/x/net v0.15.0
golang.org/x/crypto v0.21.0
golang.org/x/image v0.13.0
golang.org/x/net v0.21.0
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
gopkg.in/yaml.v3 v3.0.1
modernc.org/sqlite v1.24.0
@@ -86,7 +103,6 @@ require (
github.com/golang/geo v0.0.0-20190812012225-f41920e961ce // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
github.com/google/subcommands v1.0.1 // indirect
github.com/gorilla/css v1.0.0 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/imdario/mergo v0.3.16 // indirect
@@ -134,8 +150,8 @@ require (
go.uber.org/zap v1.23.0 // indirect
golang.org/x/arch v0.3.0 // indirect
golang.org/x/mod v0.12.0 // indirect
golang.org/x/sys v0.12.0 // indirect
golang.org/x/text v0.13.0 // indirect
golang.org/x/sys v0.18.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/tools v0.13.0 // indirect
google.golang.org/protobuf v1.30.0 // indirect
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
+16 -13
View File
@@ -316,7 +316,6 @@ github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbu
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
github.com/google/subcommands v1.0.1 h1:/eqq+otEXm5vhfBrbREPCSVQbvofip6kIz+mX5TUH7k=
github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -525,8 +524,8 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/mojocn/base64Captcha v1.3.5 h1:Qeilr7Ta6eDtG4S+tQuZ5+hO+QHbiGAJdi4PfoagaA0=
github.com/mojocn/base64Captcha v1.3.5/go.mod h1:/tTTXn4WTpX9CfrmipqRytCpJ27Uw3G6I7NcP2WwcmY=
github.com/mojocn/base64Captcha v1.3.6 h1:gZEKu1nsKpttuIAQgWHO+4Mhhls8cAKyiV2Ew03H+Tw=
github.com/mojocn/base64Captcha v1.3.6/go.mod h1:i5CtHvm+oMbj1UzEPXaA8IH/xHFZ3DGY3Wh3dBpZ28E=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg=
github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU=
@@ -789,8 +788,8 @@ golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5y
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/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.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck=
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -802,11 +801,10 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190501045829-6d32002ffd75/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.1.0 h1:r8Oj8ZA2Xy12/b5KZYj3tuv7NG/fBz3TwQVvpJ9l8Rk=
golang.org/x/image v0.1.0/go.mod h1:iyPr49SD/G/TBxYVB/9RRtGUT5eNbo2u4NamWeQcD5c=
golang.org/x/image v0.13.0 h1:3cge/F/QTkNLauhf2QoE9zp+7sr+ZcL4HnoZmdwg9sg=
golang.org/x/image v0.13.0/go.mod h1:6mmbMOeV28HuMTgA6OSRkdXKYw/t5W9Uwn2Yv1r3Yxk=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@@ -830,6 +828,7 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/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.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -877,9 +876,10 @@ golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qx
golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8=
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
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/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -901,6 +901,7 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
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=
@@ -971,8 +972,8 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.2.0/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.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
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=
@@ -988,8 +989,9 @@ 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.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -1056,6 +1058,7 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ=
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+3 -3
View File
@@ -360,7 +360,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description (optional)
tab_url: Image URL
@@ -433,7 +433,7 @@ ui:
range: Display name up to 35 characters.
slug_name:
label: URL Slug
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc: URL slug up to 35 characters.
msg:
empty: URL slug cannot be empty.
range: URL slug up to 35 characters.
@@ -471,7 +471,7 @@ ui:
label: Display Name
slug_name:
label: URL Slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
info: URL slug up to 35 characters.
desc:
label: Description
edit_summary:
+3 -3
View File
@@ -360,7 +360,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description (optional)
tab_url: Image URL
@@ -433,7 +433,7 @@ ui:
range: Display name up to 35 characters.
slug_name:
label: URL Slug
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc: URL slug up to 35 characters.
msg:
empty: URL slug cannot be empty.
range: URL slug up to 35 characters.
@@ -471,7 +471,7 @@ ui:
label: Display Name
slug_name:
label: URL Slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
info: URL slug up to 35 characters.
desc:
label: Description
edit_summary:
+3 -3
View File
@@ -355,7 +355,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description (optional)
tab_url: Image URL
@@ -428,7 +428,7 @@ ui:
range: Display name up to 35 characters.
slug_name:
label: URL Slug
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc: URL slug up to 35 characters.
msg:
empty: URL slug cannot be empty.
range: URL slug up to 35 characters.
@@ -466,7 +466,7 @@ ui:
label: Display Name
slug_name:
label: URL Slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
info: URL slug up to 35 characters.
desc:
label: Description
edit_summary:
+3 -3
View File
@@ -355,7 +355,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description (optional)
tab_url: Image URL
@@ -428,7 +428,7 @@ ui:
range: Display name up to 35 characters.
slug_name:
label: URL Slug
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc: URL slug up to 35 characters.
msg:
empty: URL slug cannot be empty.
range: URL slug up to 35 characters.
@@ -466,7 +466,7 @@ ui:
label: Display Name
slug_name:
label: URL Slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
info: URL slug up to 35 characters.
desc:
label: Description
edit_summary:
+3 -3
View File
@@ -355,7 +355,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description (optional)
tab_url: Image URL
@@ -428,7 +428,7 @@ ui:
range: Display name up to 35 characters.
slug_name:
label: URL Slug
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc: URL slug up to 35 characters.
msg:
empty: URL slug cannot be empty.
range: URL slug up to 35 characters.
@@ -466,7 +466,7 @@ ui:
label: Display Name
slug_name:
label: URL Slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
info: URL slug up to 35 characters.
desc:
label: Description
edit_summary:
+3 -3
View File
@@ -355,7 +355,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description (optional)
tab_url: Image URL
@@ -428,7 +428,7 @@ ui:
range: Display name up to 35 characters.
slug_name:
label: URL Slug
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc: URL slug up to 35 characters.
msg:
empty: URL slug cannot be empty.
range: URL slug up to 35 characters.
@@ -466,7 +466,7 @@ ui:
label: Display Name
slug_name:
label: URL Slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
info: URL slug up to 35 characters.
desc:
label: Description
edit_summary:
+3 -3
View File
@@ -355,7 +355,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description (optional)
tab_url: Image URL
@@ -428,7 +428,7 @@ ui:
range: Display name up to 35 characters.
slug_name:
label: URL Slug
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc: URL slug up to 35 characters.
msg:
empty: URL slug cannot be empty.
range: URL slug up to 35 characters.
@@ -466,7 +466,7 @@ ui:
label: Display Name
slug_name:
label: URL Slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
info: URL slug up to 35 characters.
desc:
label: Description
edit_summary:
+3 -3
View File
@@ -360,7 +360,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description (optional)
tab_url: Image URL
@@ -433,7 +433,7 @@ ui:
range: Display name up to 35 characters.
slug_name:
label: URL Slug
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc: URL slug up to 35 characters.
msg:
empty: URL slug cannot be empty.
range: URL slug up to 35 characters.
@@ -471,7 +471,7 @@ ui:
label: Display Name
slug_name:
label: URL Slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
info: URL slug up to 35 characters.
desc:
label: Description
edit_summary:
+126 -38
View File
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
#The following fields are used for back-end
# The following fields are used for back-end
backend:
base:
success:
@@ -82,6 +82,9 @@ backend:
level_3:
description:
other: Level 3 (high reputation required for mature community)
level_custom:
description:
other: Custom Level
rank_question_add_label:
other: Ask question
rank_answer_add_label:
@@ -137,6 +140,9 @@ backend:
email_or_password_wrong_error:
other: Email and password do not match.
error:
common:
invalid_url:
other: Invalid URL.
password:
space_invalid:
other: Heslo nesmí obsahovat mezery.
@@ -197,6 +203,8 @@ backend:
question:
already_deleted:
other: This post has been deleted.
under_review:
other: Your post is awaiting review. It will be visible after it has been approved.
not_found:
other: Question not found.
cannot_deleted:
@@ -267,6 +275,8 @@ backend:
other: You cannot modify your role.
not_allowed_registration:
other: Currently the site is not open for registration.
not_allowed_login_via_password:
other: Currently the site is not allowed to login via password.
access_denied:
other: Access denied
page_access_denied:
@@ -480,7 +490,16 @@ backend:
other: accept
accepted:
other: accepted
#The following fields are used for interface presentation(Front-end)
edit:
other: edit
review:
queued_post:
other: Queued post
flagged_post:
other: Flagged post
suggested_post_edit:
other: Suggested edits
# The following fields are used for interface presentation(Front-end)
ui:
how_to_format:
title: How to Format
@@ -520,6 +539,7 @@ ui:
http_404: HTTP Error 404
http_50X: HTTP Error 500
http_403: HTTP Error 403
logout: Log Out
notifications:
title: Notifications
inbox: Inbox
@@ -598,7 +618,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description
tab_url: Image URL
@@ -660,6 +680,8 @@ ui:
empty: Cannot be empty.
msg:
empty: Please select a reason.
not_a_url: URL format is incorrect.
url_not_match: URL origin does not match the current website.
tag_modal:
title: Create new tag
form:
@@ -678,6 +700,12 @@ ui:
character: URL slug contains unallowed character set.
desc:
label: Description
revision:
label: Revision
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
btn_cancel: Cancel
btn_submit: Submit
btn_post: Post new tag
@@ -704,21 +732,7 @@ ui:
edit_tag:
title: Edit Tag
default_reason: Edit tag
form:
fields:
revision:
label: Revision
display_name:
label: Display name
slug_name:
label: URL slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc:
label: Description
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
default_first_reason: Add tag
btn_save_edits: Save edits
btn_cancel: Cancel
dates:
@@ -731,6 +745,8 @@ ui:
x_hours_ago: "{{count}}h ago"
hour: hour
day: day
hours: hours
days: days
comment:
btn_add_comment: Add comment
reply_to: Reply to
@@ -740,7 +756,7 @@ ui:
btn_flag: Flag
btn_save_edits: Save edits
btn_cancel: Cancel
show_more: Show more comments
show_more: "{{count}} more comments"
tip_question: >-
Use comments to ask for more information or suggest improvements. Avoid answering questions in comments.
tip_answer: >-
@@ -749,6 +765,7 @@ ui:
edit_answer:
title: Edit Answer
default_reason: Edit answer
default_first_reason: Add answer
form:
fields:
revision:
@@ -779,6 +796,7 @@ ui:
title: Add Question
edit_title: Edit Question
default_reason: Edit question
default_first_reason: Add question
similar_questions: Similar questions
form:
fields:
@@ -833,7 +851,7 @@ ui:
placeholder: Search
footer:
build_on: >-
Built on <1> Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
upload_img:
name: Change
loading: loading...
@@ -963,10 +981,10 @@ ui:
label: Location
placeholder: "City, Country"
notification:
heading: Notifications
email: Email
heading: Email Notifications
turn_on: Turn on
inbox:
label: Email notifications
label: Inbox notifications
description: Answers to your questions, comments, invites, and more.
all_new_question:
label: All new questions
@@ -1021,7 +1039,7 @@ ui:
answers: answers
invite_to_answer:
title: People Asked
desc: Invite people who you think might know the answer.
desc: Select people who you think might know the answer.
invite: Invite to answer
add: Add people
search: Search people
@@ -1031,6 +1049,7 @@ ui:
asked: asked
update: Modified
edit: edited
commented: commented
Views: Viewed
Follow: Follow
Following: Following
@@ -1048,10 +1067,12 @@ ui:
title: Answers
score: Score
newest: Newest
oldest: Oldest
btn_accept: Accept
btn_accepted: Accepted
write_answer:
title: Your Answer
edit_answer: Edit my existing answer
btn_name: Post your answer
add_another_answer: Add another answer
confirm_title: Continue to answer
@@ -1070,6 +1091,14 @@ ui:
confirm_btn: Reopen
title: Reopen this post
content: Are you sure you want to reopen?
list:
confirm_btn: List
title: List this post
content: Are you sure you want to list?
unlist:
confirm_btn: Unlist
title: Unlist this post
content: Are you sure you want to unlist?
pin:
title: Pin this post
content: Are you sure you wish to pinned globally? This post will appear at the top of all post lists.
@@ -1091,6 +1120,9 @@ ui:
save: Save
delete: Delete
undelete: Undelete
list: List
unlist: Unlist
unlisted: Unlisted
login: Log in
signup: Sign up
logout: Log out
@@ -1114,6 +1146,20 @@ ui:
close: Close
reopen: Reopen
ok: OK
light: Light
dark: Dark
system_setting: System setting
default: Default
reset: Reset
tag: Tag
post_lowercase: post
filter: Filter
ignore: Ignore
submit: Submit
normal: Normal
closed: Closed
deleted: Deleted
pending: Pending
search:
title: Search Results
keywords: Keywords
@@ -1353,23 +1399,35 @@ ui:
dashboard:
title: Dashboard
welcome: Welcome to Answer Admin!
site_statistics: Site Statistics
site_statistics: Site statistics
questions: "Questions:"
answers: "Answers:"
comments: "Comments:"
votes: "Votes:"
active_users: "Active users:"
users: "Users:"
flags: "Flags:"
site_health_status: Site Health Status
reviews: "Reviews:"
site_health: Site health
version: "Version:"
https: "HTTPS:"
uploading_files: "Uploading files:"
upload_folder: "Upload folder:"
run_mode: "Running mode:"
private: Private
public: Public
smtp: "SMTP:"
timezone: "Timezone:"
system_info: System Info
system_info: System info
go_version: "Go version:"
database: "Database:"
database_size: "Database size:"
storage_used: "Storage used:"
uptime: "Uptime:"
answer_links: Answer Links
links: Links
plugins: Plugins
github: GitHub
blog: Blog
contact: Contact
forum: Forum
documents: Documents
feedback: Feedback
support: Support
@@ -1384,6 +1442,8 @@ ui:
allowed: Allowed
enabled: Enabled
disabled: Disabled
writable: Writable
not_writable: Not writable
flags:
title: Flags
pending: Pending
@@ -1470,9 +1530,7 @@ ui:
content: A suspended user can't log in.
questions:
page_title: Questions
normal: Normal
closed: Closed
deleted: Deleted
unlisted: Unlisted
post: Post
votes: Votes
answers: Answers
@@ -1480,12 +1538,11 @@ ui:
status: Status
action: Action
change: Change
pending: Pending
filter:
placeholder: "Filter by title, question:id"
answers:
page_title: Answers
normal: Normal
deleted: Deleted
post: Post
votes: Votes
created: Created
@@ -1518,6 +1575,9 @@ ui:
msg: Contact email cannot be empty.
validate: Contact email is not valid.
text: Email address of key contact responsible for this site.
check_update:
label: Software updates
text: Automatically check for updates
interface:
page_title: Interface
language:
@@ -1594,6 +1654,10 @@ ui:
text: "You can add privacy policy content here. If you already have a document hosted elsewhere, provide the full URL here."
write:
page_title: Write
restrict_answer:
title: Restrict answer
label: Each user can only write one answer for each question
text: "They can use the edit link to refine and improve their existing answer, instead."
recommend_tags:
label: Recommend tags
text: "Please input tag slug above, one tag per line."
@@ -1617,11 +1681,12 @@ ui:
themes:
label: Themes
text: Select an existing theme.
color_scheme:
label: Color scheme
navbar_style:
label: Navbar Style
text: Select an existing theme.
label: Navbar style
primary_color:
label: Primary Color
label: Primary color
text: Modify the colors used by your themes
css_and_html:
page_title: CSS and HTML
@@ -1660,6 +1725,10 @@ ui:
title: Private
label: Login required
text: Only logged in users can access this community.
password_login:
title: Password login
label: Allow email and password login
text: "WARNING: If turn off, you may be unable to log in if you have not previously configured other login method."
installed_plugins:
title: Installed Plugins
plugin_link: Plugins extend and expand the functionality of Answer. You may find plugins in the <1>Answer Plugin Repository</1>.
@@ -1723,6 +1792,22 @@ ui:
edit_answer: Edit answer
edit_tag: Edit tag
empty: No review tasks left.
approve_revision_tip: Do you approve this revision?
approve_flag_tip: Do you approve this flag?
approve_post_tip: Do you approve this post?
approve_user_tip: Do you approve this user?
suggest_edits: Suggested edits
flag_post: Flag post
flag_user: Flag user
queued_post: Queued post
queued_user: Queued user
filter_label: Type
reputation: reputation
flag_post_type: Flagged this post as {{ type }}.
flag_user_type: Flagged this user as {{ type }}.
edit_post: Edit post
list_post: List post
unlist_post: Unlist post
timeline:
undeleted: undeleted
deleted: deleted
@@ -1773,3 +1858,6 @@ ui:
post_hide_list: This post has been hidden from list.
post_show_list: This post has been shown to list.
post_reopen: This post has been reopened.
post_list: This post has been listed.
post_unlist: This post has been unlisted.
post_pending: Your post is awaiting review. This is a preview, it will be visible after it has been approved.
+126 -38
View File
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
#The following fields are used for back-end
# The following fields are used for back-end
backend:
base:
success:
@@ -82,6 +82,9 @@ backend:
level_3:
description:
other: Level 3 (high reputation required for mature community)
level_custom:
description:
other: Custom Level
rank_question_add_label:
other: Ask question
rank_answer_add_label:
@@ -137,6 +140,9 @@ backend:
email_or_password_wrong_error:
other: Nid yw e-bost a chyfrinair yn cyfateb.
error:
common:
invalid_url:
other: Invalid URL.
password:
space_invalid:
other: Password cannot contain spaces.
@@ -197,6 +203,8 @@ backend:
question:
already_deleted:
other: Mae'r postiad hwn wedi'i ddileu.
under_review:
other: Your post is awaiting review. It will be visible after it has been approved.
not_found:
other: Cwestiwn heb ei ganfod.
cannot_deleted:
@@ -267,6 +275,8 @@ backend:
other: Ni allwch addasu eich rôl.
not_allowed_registration:
other: Currently the site is not open for registration.
not_allowed_login_via_password:
other: Currently the site is not allowed to login via password.
access_denied:
other: Access denied
page_access_denied:
@@ -480,7 +490,16 @@ backend:
other: accept
accepted:
other: accepted
#The following fields are used for interface presentation(Front-end)
edit:
other: edit
review:
queued_post:
other: Queued post
flagged_post:
other: Flagged post
suggested_post_edit:
other: Suggested edits
# The following fields are used for interface presentation(Front-end)
ui:
how_to_format:
title: Sut i Fformatio
@@ -520,6 +539,7 @@ ui:
http_404: Gwall HTTP 404
http_50X: Gwall HTTP 500
http_403: Gwall HTTP 403
logout: Log Out
notifications:
title: Hysbysiadau
inbox: Mewnflwch
@@ -598,7 +618,7 @@ ui:
msg:
empty: Ni all ffeil fod yn wag.
only_image: Dim ond ffeiliau delwedd a ganiateir.
max_size: Ni all maint y ffeil fod yn fwy na 4MB.
max_size: Ni all maint y ffeil fod yn fwy na 4 MB.
desc:
label: Disgrifiad
tab_url: URL delwedd
@@ -660,6 +680,8 @@ ui:
empty: Ni all fod yn wag.
msg:
empty: Dewis rheswm.
not_a_url: URL format is incorrect.
url_not_match: URL origin does not match the current website.
tag_modal:
title: Creu tag newydd
form:
@@ -678,6 +700,12 @@ ui:
character: Mae slug URL yn cynnwys set nodau na caniateir.
desc:
label: Disgrifiad
revision:
label: Revision
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
btn_cancel: Canslo
btn_submit: Cyflwyno
btn_post: Post tag newydd
@@ -704,21 +732,7 @@ ui:
edit_tag:
title: Edit Tag
default_reason: Edit tag
form:
fields:
revision:
label: Revision
display_name:
label: Display name
slug_name:
label: URL slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc:
label: Description
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
default_first_reason: Add tag
btn_save_edits: Save edits
btn_cancel: Cancel
dates:
@@ -731,6 +745,8 @@ ui:
x_hours_ago: "{{count}}h ago"
hour: hour
day: day
hours: hours
days: days
comment:
btn_add_comment: Add comment
reply_to: Reply to
@@ -740,7 +756,7 @@ ui:
btn_flag: Flag
btn_save_edits: Save edits
btn_cancel: Cancel
show_more: Show more comments
show_more: "{{count}} more comments"
tip_question: >-
Use comments to ask for more information or suggest improvements. Avoid answering questions in comments.
tip_answer: >-
@@ -749,6 +765,7 @@ ui:
edit_answer:
title: Edit Answer
default_reason: Edit answer
default_first_reason: Add answer
form:
fields:
revision:
@@ -779,6 +796,7 @@ ui:
title: Ychwanegu Cwestiwn
edit_title: Golygu Cwestiwn
default_reason: Golygu Cwestiwn
default_first_reason: Add question
similar_questions: Cwestiynau tebyg
form:
fields:
@@ -833,7 +851,7 @@ ui:
placeholder: Search
footer:
build_on: >-
Built on <1> Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
upload_img:
name: Change
loading: loading...
@@ -963,10 +981,10 @@ ui:
label: Location
placeholder: "City, Country"
notification:
heading: Notifications
email: Email
heading: Email Notifications
turn_on: Turn on
inbox:
label: Email notifications
label: Inbox notifications
description: Answers to your questions, comments, invites, and more.
all_new_question:
label: All new questions
@@ -1021,7 +1039,7 @@ ui:
answers: answers
invite_to_answer:
title: People Asked
desc: Invite people who you think might know the answer.
desc: Select people who you think might know the answer.
invite: Invite to answer
add: Add people
search: Search people
@@ -1031,6 +1049,7 @@ ui:
asked: asked
update: Modified
edit: edited
commented: commented
Views: Viewed
Follow: Follow
Following: Following
@@ -1048,10 +1067,12 @@ ui:
title: Answers
score: Score
newest: Newest
oldest: Oldest
btn_accept: Accept
btn_accepted: Accepted
write_answer:
title: Your Answer
edit_answer: Edit my existing answer
btn_name: Post your answer
add_another_answer: Add another answer
confirm_title: Continue to answer
@@ -1070,6 +1091,14 @@ ui:
confirm_btn: Reopen
title: Reopen this post
content: Are you sure you want to reopen?
list:
confirm_btn: List
title: List this post
content: Are you sure you want to list?
unlist:
confirm_btn: Unlist
title: Unlist this post
content: Are you sure you want to unlist?
pin:
title: Pin this post
content: Are you sure you wish to pinned globally? This post will appear at the top of all post lists.
@@ -1091,6 +1120,9 @@ ui:
save: Save
delete: Delete
undelete: Undelete
list: List
unlist: Unlist
unlisted: Unlisted
login: Log in
signup: Sign up
logout: Log out
@@ -1114,6 +1146,20 @@ ui:
close: Close
reopen: Reopen
ok: OK
light: Light
dark: Dark
system_setting: System setting
default: Default
reset: Reset
tag: Tag
post_lowercase: post
filter: Filter
ignore: Ignore
submit: Submit
normal: Normal
closed: Closed
deleted: Deleted
pending: Pending
search:
title: Search Results
keywords: Keywords
@@ -1353,23 +1399,35 @@ ui:
dashboard:
title: Dashboard
welcome: Welcome to Answer Admin!
site_statistics: Site Statistics
site_statistics: Site statistics
questions: "Questions:"
answers: "Answers:"
comments: "Comments:"
votes: "Votes:"
active_users: "Active users:"
users: "Users:"
flags: "Flags:"
site_health_status: Site Health Status
reviews: "Reviews:"
site_health: Site health
version: "Version:"
https: "HTTPS:"
uploading_files: "Uploading files:"
upload_folder: "Upload folder:"
run_mode: "Running mode:"
private: Private
public: Public
smtp: "SMTP:"
timezone: "Timezone:"
system_info: System Info
system_info: System info
go_version: "Go version:"
database: "Database:"
database_size: "Database size:"
storage_used: "Storage used:"
uptime: "Uptime:"
answer_links: Answer Links
links: Links
plugins: Plugins
github: GitHub
blog: Blog
contact: Contact
forum: Forum
documents: Documents
feedback: Feedback
support: Support
@@ -1384,6 +1442,8 @@ ui:
allowed: Allowed
enabled: Enabled
disabled: Disabled
writable: Writable
not_writable: Not writable
flags:
title: Flags
pending: Pending
@@ -1470,9 +1530,7 @@ ui:
content: A suspended user can't log in.
questions:
page_title: Questions
normal: Normal
closed: Closed
deleted: Deleted
unlisted: Unlisted
post: Post
votes: Votes
answers: Answers
@@ -1480,12 +1538,11 @@ ui:
status: Status
action: Action
change: Change
pending: Pending
filter:
placeholder: "Filter by title, question:id"
answers:
page_title: Answers
normal: Normal
deleted: Deleted
post: Post
votes: Votes
created: Created
@@ -1518,6 +1575,9 @@ ui:
msg: Contact email cannot be empty.
validate: Contact email is not valid.
text: Email address of key contact responsible for this site.
check_update:
label: Software updates
text: Automatically check for updates
interface:
page_title: Interface
language:
@@ -1594,6 +1654,10 @@ ui:
text: "You can add privacy policy content here. If you already have a document hosted elsewhere, provide the full URL here."
write:
page_title: Write
restrict_answer:
title: Restrict answer
label: Each user can only write one answer for each question
text: "They can use the edit link to refine and improve their existing answer, instead."
recommend_tags:
label: Recommend tags
text: "Please input tag slug above, one tag per line."
@@ -1617,11 +1681,12 @@ ui:
themes:
label: Themes
text: Select an existing theme.
color_scheme:
label: Color scheme
navbar_style:
label: Navbar Style
text: Select an existing theme.
label: Navbar style
primary_color:
label: Primary Color
label: Primary color
text: Modify the colors used by your themes
css_and_html:
page_title: CSS and HTML
@@ -1660,6 +1725,10 @@ ui:
title: Private
label: Login required
text: Only logged in users can access this community.
password_login:
title: Password login
label: Allow email and password login
text: "WARNING: If turn off, you may be unable to log in if you have not previously configured other login method."
installed_plugins:
title: Installed Plugins
plugin_link: Plugins extend and expand the functionality of Answer. You may find plugins in the <1>Answer Plugin Repository</1>.
@@ -1723,6 +1792,22 @@ ui:
edit_answer: Edit answer
edit_tag: Edit tag
empty: No review tasks left.
approve_revision_tip: Do you approve this revision?
approve_flag_tip: Do you approve this flag?
approve_post_tip: Do you approve this post?
approve_user_tip: Do you approve this user?
suggest_edits: Suggested edits
flag_post: Flag post
flag_user: Flag user
queued_post: Queued post
queued_user: Queued user
filter_label: Type
reputation: reputation
flag_post_type: Flagged this post as {{ type }}.
flag_user_type: Flagged this user as {{ type }}.
edit_post: Edit post
list_post: List post
unlist_post: Unlist post
timeline:
undeleted: undeleted
deleted: deleted
@@ -1773,3 +1858,6 @@ ui:
post_hide_list: This post has been hidden from list.
post_show_list: This post has been shown to list.
post_reopen: This post has been reopened.
post_list: This post has been listed.
post_unlist: This post has been unlisted.
post_pending: Your post is awaiting review. This is a preview, it will be visible after it has been approved.
+126 -38
View File
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
#The following fields are used for back-end
# The following fields are used for back-end
backend:
base:
success:
@@ -82,6 +82,9 @@ backend:
level_3:
description:
other: Level 3 (high reputation required for mature community)
level_custom:
description:
other: Custom Level
rank_question_add_label:
other: Ask question
rank_answer_add_label:
@@ -137,6 +140,9 @@ backend:
email_or_password_wrong_error:
other: Email and password do not match.
error:
common:
invalid_url:
other: Invalid URL.
password:
space_invalid:
other: Password cannot contain spaces.
@@ -197,6 +203,8 @@ backend:
question:
already_deleted:
other: This post has been deleted.
under_review:
other: Your post is awaiting review. It will be visible after it has been approved.
not_found:
other: Question not found.
cannot_deleted:
@@ -267,6 +275,8 @@ backend:
other: You cannot modify your role.
not_allowed_registration:
other: Currently the site is not open for registration.
not_allowed_login_via_password:
other: Currently the site is not allowed to login via password.
access_denied:
other: Access denied
page_access_denied:
@@ -480,7 +490,16 @@ backend:
other: accept
accepted:
other: accepted
#The following fields are used for interface presentation(Front-end)
edit:
other: edit
review:
queued_post:
other: Queued post
flagged_post:
other: Flagged post
suggested_post_edit:
other: Suggested edits
# The following fields are used for interface presentation(Front-end)
ui:
how_to_format:
title: How to Format
@@ -520,6 +539,7 @@ ui:
http_404: HTTP Error 404
http_50X: HTTP Error 500
http_403: HTTP Error 403
logout: Log Out
notifications:
title: Notifications
inbox: Inbox
@@ -598,7 +618,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description
tab_url: Image URL
@@ -660,6 +680,8 @@ ui:
empty: Cannot be empty.
msg:
empty: Please select a reason.
not_a_url: URL format is incorrect.
url_not_match: URL origin does not match the current website.
tag_modal:
title: Create new tag
form:
@@ -678,6 +700,12 @@ ui:
character: URL slug contains unallowed character set.
desc:
label: Description
revision:
label: Revision
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
btn_cancel: Cancel
btn_submit: Submit
btn_post: Post new tag
@@ -704,21 +732,7 @@ ui:
edit_tag:
title: Edit Tag
default_reason: Edit tag
form:
fields:
revision:
label: Revision
display_name:
label: Display name
slug_name:
label: URL slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc:
label: Description
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
default_first_reason: Add tag
btn_save_edits: Save edits
btn_cancel: Cancel
dates:
@@ -731,6 +745,8 @@ ui:
x_hours_ago: "{{count}}h ago"
hour: hour
day: day
hours: hours
days: days
comment:
btn_add_comment: Add comment
reply_to: Reply to
@@ -740,7 +756,7 @@ ui:
btn_flag: Flag
btn_save_edits: Save edits
btn_cancel: Cancel
show_more: Show more comments
show_more: "{{count}} more comments"
tip_question: >-
Use comments to ask for more information or suggest improvements. Avoid answering questions in comments.
tip_answer: >-
@@ -749,6 +765,7 @@ ui:
edit_answer:
title: Edit Answer
default_reason: Edit answer
default_first_reason: Add answer
form:
fields:
revision:
@@ -779,6 +796,7 @@ ui:
title: Add Question
edit_title: Edit Question
default_reason: Edit question
default_first_reason: Add question
similar_questions: Similar questions
form:
fields:
@@ -833,7 +851,7 @@ ui:
placeholder: Search
footer:
build_on: >-
Built on <1> Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
upload_img:
name: Change
loading: loading...
@@ -963,10 +981,10 @@ ui:
label: Location
placeholder: "City, Country"
notification:
heading: Notifications
email: Email
heading: Email Notifications
turn_on: Turn on
inbox:
label: Email notifications
label: Inbox notifications
description: Answers to your questions, comments, invites, and more.
all_new_question:
label: All new questions
@@ -1021,7 +1039,7 @@ ui:
answers: answers
invite_to_answer:
title: People Asked
desc: Invite people who you think might know the answer.
desc: Select people who you think might know the answer.
invite: Invite to answer
add: Add people
search: Search people
@@ -1031,6 +1049,7 @@ ui:
asked: asked
update: Modified
edit: edited
commented: commented
Views: Viewed
Follow: Follow
Following: Following
@@ -1048,10 +1067,12 @@ ui:
title: Answers
score: Score
newest: Newest
oldest: Oldest
btn_accept: Accept
btn_accepted: Accepted
write_answer:
title: Your Answer
edit_answer: Edit my existing answer
btn_name: Post your answer
add_another_answer: Add another answer
confirm_title: Continue to answer
@@ -1070,6 +1091,14 @@ ui:
confirm_btn: Reopen
title: Reopen this post
content: Are you sure you want to reopen?
list:
confirm_btn: List
title: List this post
content: Are you sure you want to list?
unlist:
confirm_btn: Unlist
title: Unlist this post
content: Are you sure you want to unlist?
pin:
title: Pin this post
content: Are you sure you wish to pinned globally? This post will appear at the top of all post lists.
@@ -1091,6 +1120,9 @@ ui:
save: Save
delete: Delete
undelete: Undelete
list: List
unlist: Unlist
unlisted: Unlisted
login: Log in
signup: Sign up
logout: Log out
@@ -1114,6 +1146,20 @@ ui:
close: Close
reopen: Reopen
ok: OK
light: Light
dark: Dark
system_setting: System setting
default: Default
reset: Reset
tag: Tag
post_lowercase: post
filter: Filter
ignore: Ignore
submit: Submit
normal: Normal
closed: Closed
deleted: Deleted
pending: Pending
search:
title: Search Results
keywords: Keywords
@@ -1353,23 +1399,35 @@ ui:
dashboard:
title: Dashboard
welcome: Welcome to Answer Admin!
site_statistics: Site Statistics
site_statistics: Site statistics
questions: "Questions:"
answers: "Answers:"
comments: "Comments:"
votes: "Votes:"
active_users: "Active users:"
users: "Users:"
flags: "Flags:"
site_health_status: Site Health Status
reviews: "Reviews:"
site_health: Site health
version: "Version:"
https: "HTTPS:"
uploading_files: "Uploading files:"
upload_folder: "Upload folder:"
run_mode: "Running mode:"
private: Private
public: Public
smtp: "SMTP:"
timezone: "Timezone:"
system_info: System Info
system_info: System info
go_version: "Go version:"
database: "Database:"
database_size: "Database size:"
storage_used: "Storage used:"
uptime: "Uptime:"
answer_links: Answer Links
links: Links
plugins: Plugins
github: GitHub
blog: Blog
contact: Contact
forum: Forum
documents: Documents
feedback: Feedback
support: Support
@@ -1384,6 +1442,8 @@ ui:
allowed: Allowed
enabled: Enabled
disabled: Disabled
writable: Writable
not_writable: Not writable
flags:
title: Flags
pending: Pending
@@ -1470,9 +1530,7 @@ ui:
content: A suspended user can't log in.
questions:
page_title: Questions
normal: Normal
closed: Closed
deleted: Deleted
unlisted: Unlisted
post: Post
votes: Votes
answers: Answers
@@ -1480,12 +1538,11 @@ ui:
status: Status
action: Action
change: Change
pending: Pending
filter:
placeholder: "Filter by title, question:id"
answers:
page_title: Answers
normal: Normal
deleted: Deleted
post: Post
votes: Votes
created: Created
@@ -1518,6 +1575,9 @@ ui:
msg: Contact email cannot be empty.
validate: Contact email is not valid.
text: Email address of key contact responsible for this site.
check_update:
label: Software updates
text: Automatically check for updates
interface:
page_title: Interface
language:
@@ -1594,6 +1654,10 @@ ui:
text: "You can add privacy policy content here. If you already have a document hosted elsewhere, provide the full URL here."
write:
page_title: Write
restrict_answer:
title: Restrict answer
label: Each user can only write one answer for each question
text: "They can use the edit link to refine and improve their existing answer, instead."
recommend_tags:
label: Recommend tags
text: "Please input tag slug above, one tag per line."
@@ -1617,11 +1681,12 @@ ui:
themes:
label: Themes
text: Select an existing theme.
color_scheme:
label: Color scheme
navbar_style:
label: Navbar Style
text: Select an existing theme.
label: Navbar style
primary_color:
label: Primary Color
label: Primary color
text: Modify the colors used by your themes
css_and_html:
page_title: CSS and HTML
@@ -1660,6 +1725,10 @@ ui:
title: Private
label: Login required
text: Only logged in users can access this community.
password_login:
title: Password login
label: Allow email and password login
text: "WARNING: If turn off, you may be unable to log in if you have not previously configured other login method."
installed_plugins:
title: Installed Plugins
plugin_link: Plugins extend and expand the functionality of Answer. You may find plugins in the <1>Answer Plugin Repository</1>.
@@ -1723,6 +1792,22 @@ ui:
edit_answer: Edit answer
edit_tag: Edit tag
empty: No review tasks left.
approve_revision_tip: Do you approve this revision?
approve_flag_tip: Do you approve this flag?
approve_post_tip: Do you approve this post?
approve_user_tip: Do you approve this user?
suggest_edits: Suggested edits
flag_post: Flag post
flag_user: Flag user
queued_post: Queued post
queued_user: Queued user
filter_label: Type
reputation: reputation
flag_post_type: Flagged this post as {{ type }}.
flag_user_type: Flagged this user as {{ type }}.
edit_post: Edit post
list_post: List post
unlist_post: Unlist post
timeline:
undeleted: undeleted
deleted: deleted
@@ -1773,3 +1858,6 @@ ui:
post_hide_list: This post has been hidden from list.
post_show_list: This post has been shown to list.
post_reopen: This post has been reopened.
post_list: This post has been listed.
post_unlist: This post has been unlisted.
post_pending: Your post is awaiting review. This is a preview, it will be visible after it has been approved.
+265 -177
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -360,7 +360,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description (optional)
tab_url: Image URL
@@ -433,7 +433,7 @@ ui:
range: Display name up to 35 characters.
slug_name:
label: URL Slug
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc: URL slug up to 35 characters.
msg:
empty: URL slug cannot be empty.
range: URL slug up to 35 characters.
@@ -471,7 +471,7 @@ ui:
label: Display Name
slug_name:
label: URL Slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
info: URL slug up to 35 characters.
desc:
label: Description
edit_summary:
+124 -38
View File
@@ -18,6 +18,7 @@
# The following fields are used for back-end
backend:
base:
success:
other: Success.
@@ -83,6 +84,9 @@ backend:
level_3:
description:
other: Level 3 (high reputation required for mature community)
level_custom:
description:
other: Custom Level
rank_question_add_label:
other: Ask question
rank_answer_add_label:
@@ -138,6 +142,9 @@ backend:
email_or_password_wrong_error:
other: Email and password do not match.
error:
common:
invalid_url:
other: Invalid URL.
password:
space_invalid:
other: Password cannot contain spaces.
@@ -198,6 +205,8 @@ backend:
question:
already_deleted:
other: This post has been deleted.
under_review:
other: Your post is awaiting review. It will be visible after it has been approved.
not_found:
other: Question not found.
cannot_deleted:
@@ -268,6 +277,8 @@ backend:
other: You cannot modify your role.
not_allowed_registration:
other: Currently the site is not open for registration.
not_allowed_login_via_password:
other: Currently the site is not allowed to login via password.
access_denied:
other: Access denied
page_access_denied:
@@ -485,6 +496,15 @@ backend:
other: accept
accepted:
other: accepted
edit:
other: edit
review:
queued_post:
other: Queued post
flagged_post:
other: Flagged post
suggested_post_edit:
other: Suggested edits
# The following fields are used for interface presentation(Front-end)
ui:
@@ -534,6 +554,7 @@ ui:
http_404: HTTP Error 404
http_50X: HTTP Error 500
http_403: HTTP Error 403
logout: Log Out
notifications:
title: Notifications
inbox: Inbox
@@ -612,7 +633,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description
tab_url: Image URL
@@ -674,6 +695,8 @@ ui:
empty: Cannot be empty.
msg:
empty: Please select a reason.
not_a_url: URL format is incorrect.
url_not_match: URL origin does not match the current website.
tag_modal:
title: Create new tag
form:
@@ -692,6 +715,13 @@ ui:
character: URL slug contains unallowed character set.
desc:
label: Description
revision:
label: Revision
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar,
improved formatting)
btn_cancel: Cancel
btn_submit: Submit
btn_post: Post new tag
@@ -721,22 +751,6 @@ ui:
title: Edit Tag
default_reason: Edit tag
default_first_reason: Add tag
form:
fields:
revision:
label: Revision
display_name:
label: Display name
slug_name:
label: URL slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc:
label: Description
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar,
improved formatting)
btn_save_edits: Save edits
btn_cancel: Cancel
dates:
@@ -749,6 +763,8 @@ ui:
x_hours_ago: "{{count}}h ago"
hour: hour
day: day
hours: hours
days: days
comment:
btn_add_comment: Add comment
reply_to: Reply to
@@ -758,7 +774,7 @@ ui:
btn_flag: Flag
btn_save_edits: Save edits
btn_cancel: Cancel
show_more: Show more comments
show_more: "{{count}} more comments"
tip_question: >-
Use comments to ask for more information or suggest improvements. Avoid
answering questions in comments.
@@ -857,7 +873,7 @@ ui:
placeholder: Search
footer:
build_on: >-
Built on <1> Answer </1>- the open-source software that powers Q&A
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A
communities.<br />Made with love © {{cc}}.
upload_img:
name: Change
@@ -994,10 +1010,10 @@ ui:
label: Location
placeholder: "City, Country"
notification:
heading: Notifications
email: Email
heading: Email Notifications
turn_on: Turn on
inbox:
label: Email notifications
label: Inbox notifications
description: Answers to your questions, comments, invites, and more.
all_new_question:
label: All new questions
@@ -1052,8 +1068,8 @@ ui:
title: Related Questions
answers: answers
invite_to_answer:
title: People Asked
desc: Invite people who you think might know the answer.
title: Invite People
desc: Invite people you think can answer.
invite: Invite to answer
add: Add people
search: Search people
@@ -1063,6 +1079,7 @@ ui:
asked: asked
update: Modified
edit: edited
commented: commented
Views: Viewed
Follow: Follow
Following: Following
@@ -1080,10 +1097,12 @@ ui:
title: Answers
score: Score
newest: Newest
oldest: Oldest
btn_accept: Accept
btn_accepted: Accepted
write_answer:
title: Your Answer
edit_answer: Edit my existing answer
btn_name: Post your answer
add_another_answer: Add another answer
confirm_title: Continue to answer
@@ -1103,6 +1122,14 @@ ui:
confirm_btn: Reopen
title: Reopen this post
content: Are you sure you want to reopen?
list:
confirm_btn: List
title: List this post
content: Are you sure you want to list?
unlist:
confirm_btn: Unlist
title: Unlist this post
content: Are you sure you want to unlist?
pin:
title: Pin this post
content: Are you sure you wish to pinned globally? This post will appear at the top of all post lists.
@@ -1130,6 +1157,9 @@ ui:
save: Save
delete: Delete
undelete: Undelete
list: List
unlist: Unlist
unlisted: Unlisted
login: Log in
signup: Sign up
logout: Log out
@@ -1153,6 +1183,20 @@ ui:
close: Close
reopen: Reopen
ok: OK
light: Light
dark: Dark
system_setting: System setting
default: Default
reset: Reset
tag: Tag
post_lowercase: post
filter: Filter
ignore: Ignore
submit: Submit
normal: Normal
closed: Closed
deleted: Deleted
pending: Pending
search:
title: Search Results
keywords: Keywords
@@ -1401,23 +1445,35 @@ ui:
dashboard:
title: Dashboard
welcome: Welcome to Answer Admin!
site_statistics: Site Statistics
site_statistics: Site statistics
questions: "Questions:"
answers: "Answers:"
comments: "Comments:"
votes: "Votes:"
active_users: "Active users:"
users: "Users:"
flags: "Flags:"
site_health_status: Site Health Status
reviews: "Reviews:"
site_health: Site health
version: "Version:"
https: "HTTPS:"
uploading_files: "Uploading files:"
upload_folder: "Upload folder:"
run_mode: "Running mode:"
private: Private
public: Public
smtp: "SMTP:"
timezone: "Timezone:"
system_info: System Info
system_info: System info
go_version: "Go version:"
database: "Database:"
database_size: "Database size:"
storage_used: "Storage used:"
uptime: "Uptime:"
answer_links: Answer Links
links: Links
plugins: Plugins
github: GitHub
blog: Blog
contact: Contact
forum: Forum
documents: Documents
feedback: Feedback
support: Support
@@ -1432,6 +1488,8 @@ ui:
allowed: Allowed
enabled: Enabled
disabled: Disabled
writable: Writable
not_writable: Not writable
flags:
title: Flags
pending: Pending
@@ -1518,9 +1576,7 @@ ui:
content: A suspended user can't log in.
questions:
page_title: Questions
normal: Normal
closed: Closed
deleted: Deleted
unlisted: Unlisted
post: Post
votes: Votes
answers: Answers
@@ -1528,12 +1584,11 @@ ui:
status: Status
action: Action
change: Change
pending: Pending
filter:
placeholder: "Filter by title, question:id"
answers:
page_title: Answers
normal: Normal
deleted: Deleted
post: Post
votes: Votes
created: Created
@@ -1566,6 +1621,9 @@ ui:
msg: Contact email cannot be empty.
validate: Contact email is not valid.
text: Email address of key contact responsible for this site.
check_update:
label: Software updates
text: Automatically check for updates
interface:
page_title: Interface
language:
@@ -1642,6 +1700,10 @@ ui:
text: "You can add privacy policy content here. If you already have a document hosted elsewhere, provide the full URL here."
write:
page_title: Write
restrict_answer:
title: Restrict answer
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."
recommend_tags:
label: Recommend tags
text: "Please input tag slug above, one tag per line."
@@ -1665,11 +1727,12 @@ ui:
themes:
label: Themes
text: Select an existing theme.
color_scheme:
label: Color scheme
navbar_style:
label: Navbar Style
text: Select an existing theme.
label: Navbar style
primary_color:
label: Primary Color
label: Primary color
text: Modify the colors used by your themes
css_and_html:
page_title: CSS and HTML
@@ -1705,6 +1768,10 @@ ui:
title: Private
label: Login required
text: Only logged in users can access this community.
password_login:
title: Password login
label: Allow email and password login
text: "WARNING: If turn off, you may be unable to log in if you have not previously configured other login method."
installed_plugins:
title: Installed Plugins
plugin_link: Plugins extend and expand the functionality of Answer. You may find plugins in the <1>Answer Plugin Repository</1>.
@@ -1770,6 +1837,22 @@ ui:
edit_answer: Edit answer
edit_tag: Edit tag
empty: No review tasks left.
approve_revision_tip: Do you approve this revision?
approve_flag_tip: Do you approve this flag?
approve_post_tip: Do you approve this post?
approve_user_tip: Do you approve this user?
suggest_edits: Suggested edits
flag_post: Flag post
flag_user: Flag user
queued_post: Queued post
queued_user: Queued user
filter_label: Type
reputation: reputation
flag_post_type: Flagged this post as {{ type }}.
flag_user_type: Flagged this user as {{ type }}.
edit_post: Edit post
list_post: List post
unlist_post: Unlist post
timeline:
undeleted: undeleted
deleted: deleted
@@ -1820,3 +1903,6 @@ ui:
post_hide_list: This post has been hidden from list.
post_show_list: This post has been shown to list.
post_reopen: This post has been reopened.
post_list: This post has been listed.
post_unlist: This post has been unlisted.
post_pending: Your post is awaiting review. This is a preview, it will be visible after it has been approved.
+488 -425
View File
File diff suppressed because it is too large Load Diff
+200 -112
View File
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
#The following fields are used for back-end
# The following fields are used for back-end
backend:
base:
success:
@@ -31,7 +31,7 @@ backend:
forbidden_error:
other: عدم اجازه دسترسی.
duplicate_request_error:
other: Duplicate submission.
other: ارسال تکراری.
action:
report:
other: نشان
@@ -56,7 +56,7 @@ backend:
invite_someone_to_answer:
other: ویرایش
undelete:
other: Undelete
other: بازگردانی حذف
role:
name:
user:
@@ -82,6 +82,9 @@ backend:
level_3:
description:
other: سطح ۳ (شهرت بالایی برای نیاز هست برای انجمن های تکمیل)
level_custom:
description:
other: سطح دلخواه
rank_question_add_label:
other: سوال بپرس
rank_answer_add_label:
@@ -137,6 +140,9 @@ backend:
email_or_password_wrong_error:
other: ایمیل و رمز وارد شده صحیح نیست.
error:
common:
invalid_url:
other: Invalid URL.
password:
space_invalid:
other: رمز عبور نمی تواند شامل فضای خالی باشد.
@@ -197,6 +203,8 @@ backend:
question:
already_deleted:
other: این پست حذف شده است.
under_review:
other: Your post is awaiting review. It will be visible after it has been approved.
not_found:
other: سوال پیدا نشد.
cannot_deleted:
@@ -267,6 +275,8 @@ backend:
other: شما نمی توانید وظیفه خود را تغییر دهید.
not_allowed_registration:
other: درحال حاضر سایت برای ثبت نام باز نیست.
not_allowed_login_via_password:
other: در حال حاضر سایت اجازه ورود از طریق رمز عبور ندارد.
access_denied:
other: دسترسی مجاز نیست
page_access_denied:
@@ -431,40 +441,40 @@ backend:
title:
other: "آدرس ایمیل جدید خود را تایید کنید{{.SiteName}}"
body:
other: "Confirm your new email address for {{.SiteName}} by clicking on the following link:<br>\n<a href='{{.ChangeEmailUrl}}' target='_blank'>{{.ChangeEmailUrl}}</a><br><br>\n\nIf you did not request this change, please ignore this email.\n"
other: "آدرس ایمیل جدید خود را برای {{.SiteName}} با کلیک بر روی پیوند زیر تأیید کنید:\n<br>\n<a href='{{.ChangeEmailUrl}}' target='_blank'>{{.ChangeEmailUrl}}</a><br><br>\n\nاگر این تغییر را درخواست نکرده‌اید، لطفاً این ایمیل را نادیده بگیرید.\n"
new_answer:
title:
other: "[{{.SiteName}}] {{.DisplayName}} answered your question"
other: "[{{.SiteName}}] {{.DisplayName}} به سؤال شما پاسخ داد"
body:
other: "<a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a><br><br>\n\n{{.DisplayName}}:<br>\n<blockquote>{{.AnswerSummary}}</blockquote><br>\n<a href='{{.AnswerUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n--<br>\n<small><a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
other: "<a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a><br><br>\n\n{{.DisplayName}}:<br>\n<blockquote>{{.AnswerSummary}}</blockquote><br>\n<a href='{{.AnswerUrl}}'>مشاهده آن در {{.SiteName}}</a><br><br>\n\n--<br>\n<small><a href='{{.UnsubscribeUrl}}'>لغو اشتراک</a></small>"
invited_you_to_answer:
title:
other: "[{{.SiteName}}] {{.DisplayName}} invited you to answer"
other: "[{{.SiteName}}] {{.DisplayName}} شما را به پاسخ دعوت کرد"
body:
other: "<a href='{{.InviteUrl}}'>{{.QuestionTitle}}</a><br><br>\n\n{{.DisplayName}}:<br>\n<blockquote>I think you may know the answer.</blockquote><br>\n<a href='{{.InviteUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n--<br>\n<small><a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
other: "<a href='{{.InviteUrl}}'>{{.QuestionTitle}}</a><br><br>\n\n{{.DisplayName}}:<br>\n<blockquote>من فکر می کنم شما ممکن است پاسخ را بدانید.</blockquote><br>\n<a href='{{.InviteUrl}}'>مشاهده آن در {{.SiteName}}</a><br><br>\n\n--<br>\n<small><a href='{{.UnsubscribeUrl}}'>لغو اشتراک</a></small>"
new_comment:
title:
other: "[{{.SiteName}}] {{.DisplayName}} commented on your post"
other: "[{{.SiteName}}] {{.DisplayName}} روی پست شما نظر داد"
body:
other: "<a href='{{.CommentUrl}}'>{{.QuestionTitle}}</a><br><br>\n\n{{.DisplayName}}:<br>\n<blockquote>{{.CommentSummary}}</blockquote><br>\n<a href='{{.CommentUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n--<br>\n<small><a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
other: "<a href='{{.CommentUrl}}'>{{.QuestionTitle}}</a><br><br>\n\n{{.DisplayName}}:<br>\n<blockquote>{{.CommentSummary}}</blockquote><br>\n<a href='{{.CommentUrl}}'>مشاهده آن در {{.SiteName}}</a><br><br>\n\n--<br>\n<small><a href='{{.UnsubscribeUrl}}'>لغو اشتراک</a></small>"
new_question:
title:
other: "[{{.SiteName}}] New question: {{.QuestionTitle}}"
other: "[{{.SiteName}}] سؤال جدید: {{.QuestionTitle}}"
body:
other: "<a href='{{.QuestionUrl}}'>{{.QuestionTitle}}</a><br>\n<small>{{.Tags}}</small><br><br>\n\n--<br>\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<small><a href='{{.UnsubscribeUrl}}'>لغو اشتراک</a></small>"
pass_reset:
title:
other: "[{{.SiteName }}] Password reset"
other: "[{{.SiteName }}] گذرواژه بازنشانی شد"
body:
other: "Somebody asked to reset your password on {{.SiteName}}.<br><br>\n\nIf it was not you, you can safely ignore this email.<br><br>\n\nClick the following link to choose a new password:<br>\n<a href='{{.PassResetUrl}}' target='_blank'>{{.PassResetUrl}}</a>\n"
other: "شخصی بازنشانی رمز عبور شما در {{.SiteName}} می‌باشد.<br><br>\n\nاگر این شخص شما نبوده اید، می‌توانید با خیال راحت این ایمیل را نادیده بگیرید.<br><br>\n\nبرای انتخاب رمز عبور جدید روی پیوند زیر کلیک کنید:<br>\n<a href='{{.PassResetUrl}}' target='_blank'>{{.PassResetUrl}}</a>\n"
register:
title:
other: "[{{.SiteName}}] Confirm your new account"
other: "[{{.SiteName}}] حساب کاربری جدید خود را تأیید کنید"
body:
other: "Welcome to {{.SiteName}}!<br><br>\n\nClick the following link to confirm and activate your new account:<br>\n<a href='{{.RegisterUrl}}' target='_blank'>{{.RegisterUrl}}</a><br><br>\n\nIf the above link is not clickable, try copying and pasting it into the address bar of your web browser.\n"
other: "به {{.SiteName}} خوش آمدید!<br><br>\n\nبرای تأیید و فعال سازی حساب کاربری جدید خود روی پیوند زیر کلیک کنید:<br>\n<a href='{{.RegisterUrl}}' target='_blank'>{{.RegisterUrl}}</a><br><br>\n\nاگر پیوند بالا قابل بازشدن نیست، آن را کپی کرده و در نوار آدرس مرورگر وب خود قرار دهید.\n"
test:
title:
other: "[{{.SiteName}}] Test Email"
other: "[{{.SiteName}}] ایمیل آزمایشی"
body:
other: "این یک ایمیل تست است."
action_activity_type:
@@ -480,12 +490,21 @@ backend:
other: پذیرفتن
accepted:
other: پذیرفته شده
#The following fields are used for interface presentation(Front-end)
edit:
other: edit
review:
queued_post:
other: Queued post
flagged_post:
other: Flagged post
suggested_post_edit:
other: Suggested edits
# The following fields are used for interface presentation(Front-end)
ui:
how_to_format:
title: نحوه فرمت کردن
desc: >-
<ul class="mb-0"><li><p class="mb-2">to make links</p><pre class="mb-2"><code>&lt;https://url.com&gt;<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>&gt;</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>
<ul class="mb-0"><li><p class="mb-2">برای ایجاد پیوند</p><pre class="mb-2"><code>&lt;https://url.com&gt;<br/><br/>[Title](https://url.com)</code></pre></li><li><p class="mb-2">بین پاراگراف ها اینتر قرار بدهید</p></li><li><p class="mb-2"><em>_italic_</em> یا **<strong>پررنگ</strong>**</p></ li><li><p class="mb-2">کد تورفتگی با 4 فاصله</p></li><li><p class="mb-2">نقل قول با قرار دادن <code>&gt;< /code> در ابتدای خط</p></li><li><p class="mb-2">بکتیک فرار می کند <code>`مانند _this_`</code></p></li>< li><p class="mb-2">حصارهای کد با بکتیک ایجاد کنید <code>`</code></p><pre class="mb-0"><code>```<br/>کد اینجا<br/>```</code></pre></li></ul>
pagination:
prev: قبلی
next: بعدی
@@ -520,6 +539,7 @@ ui:
http_404: خطای 404 HTTP
http_50X: خطای 500 HTTP
http_403: خطای 403 HTTP
logout: خروج
notifications:
title: اعلانات
inbox: پیغام‌های دریافتی
@@ -598,7 +618,7 @@ ui:
msg:
empty: فایل نمی تواند خالی باشد.
only_image: فقط فایل های تصویری مجاز هستند.
max_size: حجم فایل نمی تواند بیشتر از ۴ مگابایت باشد.
max_size: حجم فایل نباید بیشتر از 4 مگابایت باشد.
desc:
label: توضیحات
tab_url: لینک عکس
@@ -660,6 +680,8 @@ ui:
empty: نمی‌تواند خالی باشد.
msg:
empty: لطفا یک دلیل را انتخاب کنید.
not_a_url: URL format is incorrect.
url_not_match: URL origin does not match the current website.
tag_modal:
title: ساخت تگ جدید
form:
@@ -678,6 +700,12 @@ ui:
character: نامک آدرس شامل کلمات غیر مجاز می باشد.
desc:
label: توضیحات
revision:
label: تجدید نظر
edit_summary:
label: ویرایش خلاصه
placeholder: >-
تغییرات خود را به طور خلاصه توضیح دهید (املا صحیح، دستور زبان مناسب، قالب بندی بهبود یافته)
btn_cancel: لغو
btn_submit: ثبت
btn_post: پست کردن تگ جدید
@@ -696,41 +724,29 @@ ui:
delete:
title: این برچسب حذف شود
tip_with_posts: >-
<p>We do not allowed <strong>deleting tag with posts</strong>.</p> <p>Please remove this tag from the posts first.</p>
<p>ما به <strong>حذف برچسب دارای پست‌ها</strong> اجازه حذف نمی‌دهیم.</p> <p>لطفاً ابتدا این برچسب را از پست‌ها حذف کنید.</p>
tip_with_synonyms: >-
<p>We do not allowed <strong>deleting tag with synonyms</strong>.</p> <p>Please remove the synonyms from this tag first.</p>
<p>ما اجازه <strong>حذف برچسب دارای مترادف</strong> را نمی‌دهیم.</p> <p>لطفاً ابتدا مترادف ها را از این برچسب حذف کنید.</p>
tip: مطمئنید که میخواهید حذف شود?
close: بستن
edit_tag:
title: ویرایش تگ‌
default_reason: ویرایش تگ‌
form:
fields:
revision:
label: بازنگری
display_name:
label: نام
slug_name:
label: نامک نشانی اینترنتی
info: 'باید از حروف "a-z", "0-9", "+ # -" استفاده شود'
desc:
label: توضیحات
edit_summary:
label: ویرایش خلاصه
placeholder: >-
بطور خلاصه تغییرات را توضیح دهید (اصلاح املایی، اصلاح دستورزبان،‌ بهبود فرمت دهی)
default_first_reason: برچسب اضافه کنید
btn_save_edits: ذخیره ویرایشها
btn_cancel: لغو
dates:
long_date: MMM D
long_date_with_year: "MMM D, YYYY"
long_date_with_time: "MMM D, YYYY [at] HH:mm"
long_date: ماه ماه ماه روز
long_date_with_year: "ماه روز، سال"
long_date_with_time: "ماه روز، سال در ساعت:دقیقه"
now: حالا
x_seconds_ago: "{{count}} ثانیه پیش"
x_minutes_ago: "{{count}} دقیقه پیش"
x_hours_ago: "{{count}}ساعت پیش"
hour: ساعت
day: روز
hours: ساعات
days: روزها
comment:
btn_add_comment: افزودن نظر
reply_to: پاسخ به
@@ -740,7 +756,7 @@ ui:
btn_flag: نشان
btn_save_edits: ذخیره ویرایشها
btn_cancel: لغو
show_more: نمایش نظرات بیشتر
show_more: "{{count}} نظر بیشتر"
tip_question: >-
از نظرات برای درخواست اطلاعات بیشتر یا پیشنهاد بهبود استفاده کنید. از پاسخ دادن به سوالات در نظرات خودداری کنید.
tip_answer: >-
@@ -749,6 +765,7 @@ ui:
edit_answer:
title: ویرایش جواب
default_reason: ویرایش جواب
default_first_reason: پاسخ را اضافه کنید
form:
fields:
revision:
@@ -779,6 +796,7 @@ ui:
title: سوالی اضافه کنید
edit_title: سوال را ویرایش کنید
default_reason: سوال را ویرایش کنید
default_first_reason: سوال اضافه کنید
similar_questions: سؤال های مشابه
form:
fields:
@@ -833,7 +851,7 @@ ui:
placeholder: جستجو
footer:
build_on: >-
Built on <1> Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
پشتیبانی شده توسط <1> Apache Answer </1> - نرم‌افزار منبع باز که باهمستان های پرسش و پاسخ را تقویت می کند.<br />ساخته شده با عشق © {{cc}}.
upload_img:
name: تغییر
loading: درحال بارگذاری...
@@ -844,22 +862,22 @@ ui:
empty: کپچا نمی تواند خالی باشد.
inactive:
first: >-
You're almost done! We sent an activation mail to <bold>{{mail}}</bold>. Please follow the instructions in the mail to activate your account.
شما تقریباً آماده شده اید! ما یک ایمیل فعال سازی به <bold>{{mail}}</bold> ارسال کردیم. لطفا دستورالعمل های ایمیل را برای فعال کردن حساب خود دنبال کنید.
info: "اگر ایمیل ارسالی را دریافت نکردید، قسمت spam خود را چک کنید."
another: >-
We sent another activation email to you at <bold>{{mail}}</bold>. It might take a few minutes for it to arrive; be sure to check your spam folder.
ایمیل فعال‌سازی دیگری را به آدرس <bold>{{mail}}</bold> برای شما ارسال کردیم. ممکن است چند دقیقه طول بکشد تا دستتان برسد. پوشه هرزنامه خود را حتما چک کنید.
btn_name: ارسال مجدد کد فعالسازی
change_btn_name: تغییر ایمیل
msg:
empty: نمی‌تواند خالی باشد.
resend_email:
url_label: Are you sure you want to resend the activation email?
url_text: You can also give the activation link above to the user.
url_label: آیا مطمئن هستید که می خواهید ایمیل فعال سازی را دوباره ارسال کنید؟
url_text: همچنین می توانید لینک فعال سازی بالا را در اختیار کاربر قرار دهید.
login:
login_to_continue: برای ادامه وارد حساب کاربری شوید
info_sign: حساب کاربری ندارید؟ </1>ثبت نام<1>
info_login: Already have an account? <1>Log in</1>
agreements: By registering, you agree to the <1>privacy policy</1> and <3>terms of service</3>.
info_login: از قبل حساب کاربری دارید؟ <1>وارد شوید</1>
agreements: با ثبت نام، با <1>خط مشی رازداری</1> و <3>شرایط خدمات</3> موافقت می کنید.
forgot_pass: رمزعبور را فراموش کردید?
name:
label: نام
@@ -875,12 +893,12 @@ ui:
label: رمز عبور
msg:
empty: رمز عبور نمی تواند خالی باشد.
different: The passwords entered on both sides are inconsistent
different: پسوردهای وارد شده در هر دو طرف متناقض هستند
account_forgot:
page_title: رمزعبور را فراموش کردید
btn_name: ارسال ایمیل بازیابی
send_success: >-
If an account matches <strong>{{mail}}</strong>, you should receive an email with instructions on how to reset your password shortly.
اگر یک حساب با <strong>{{mail}}</strong> مطابقت داشته باشد، باید به زودی ایمیلی حاوی دستورالعمل‌هایی درباره نحوه بازنشانی رمز عبور خود دریافت کنید.
email:
label: ایمیل
msg:
@@ -889,14 +907,14 @@ ui:
btn_cancel: لغو
btn_update: نشانی ایمیل را به روز کنید
send_success: >-
If an account matches <strong>{{mail}}</strong>, you should receive an email with instructions on how to reset your password shortly.
اگر یک حساب با <strong>{{mail}}</strong> مطابقت داشته باشد، باید به زودی ایمیلی حاوی دستورالعمل‌هایی درباره نحوه بازنشانی رمز عبور خود دریافت کنید.
email:
label: ایمیل جدید
msg:
empty: Email cannot be empty.
empty: ایمیل نمی تواند خالی باشد.
oauth:
connect: Connect with {{ auth_name }}
remove: Remove {{ auth_name }}
connect: ارتباط با {{ auth_name }}
remove: حذف {{ auth_name }}
oauth_bind_email:
subtitle: یک ایمیل بازیابی به حساب خود اضافه کنید.
btn_update: نشانی ایمیل را به روز کنید
@@ -963,8 +981,8 @@ ui:
label: موقعیت
placeholder: "شهر، کشور"
notification:
heading: اعلانات
email: ایمیل
heading: اعلان های ایمیلی
turn_on: روشن کردن
inbox:
label: اعلانات ایمیل
description: پاسخ به سوالات خود،‌ نظرات،‌ دعوت ها،‌و بیشتر.
@@ -1031,6 +1049,7 @@ ui:
asked: پرسیده شده
update: تغییر یافته
edit: ویرایش شده
commented: commented
Views: مشاهده شده
Follow: دنبال کردن
Following: دنبال می کنید
@@ -1048,10 +1067,12 @@ ui:
title: پاسخ ها
score: امتیاز
newest: جدیدترین
oldest: Oldest
btn_accept: پذیرفتن
btn_accepted: پذیرفته شده
write_answer:
title: پاسخ شما
edit_answer: پاسخ فعلی من را ویرایش کنید
btn_name: پاسخ خود را ارسال کنید
add_another_answer: پاسخ دیگری اضافه کنید
confirm_title: به پاسخ دادن ادامه دهید
@@ -1070,6 +1091,14 @@ ui:
confirm_btn: بازگشایی مجدد
title: بازگشایی مجدد این پست
content: آیا مطمئن هستید که می‌خواهید بازگشایی مجدد انجام دهید?
list:
confirm_btn: List
title: List this post
content: Are you sure you want to list?
unlist:
confirm_btn: Unlist
title: Unlist this post
content: Are you sure you want to unlist?
pin:
title: پست را پین کن
content: آیا مطمئن هستید میخواهید پست بصورت عمومی پین شود؟ پست در بالای تمامی پست ها نشان داده خواهد شد.
@@ -1082,15 +1111,18 @@ ui:
ما <strong>حذف جواب تایید شده</strong> را پیشنهاد نمی کنیم، زیرا انجام این کار خوانندگان آینده را از این دانش محروم می کند.</p><p> حذف مکرر سؤالات پاسخ داده شده می تواند منجر به مسدود شدن حساب شما از سؤال شود. آیا مطمئن هستید که می خواهید حذف کنید?
other: مطمئنید که میخواهید حذف شود?
tip_answer_deleted: جواب شما حذف شده است
undelete_title: Undelete this post
undelete_desc: Are you sure you wish to undelete?
undelete_title: حذف این پست
undelete_desc: آیا مطمئن به بازگردانی هستید؟
btns:
confirm: تایید
cancel: لغو
edit: ویرایش
save: ذخیره
delete: حذف
undelete: Undelete
undelete: بازگردانی
list: List
unlist: Unlist
unlisted: Unlisted
login: ورود
signup: عضويت
logout: خروج
@@ -1107,13 +1139,27 @@ ui:
comment: نظر
refresh: بارگذاری مجدد
resend: ارسال مجدد
deactivate: Deactivate
active: Active
suspend: Suspend
unsuspend: Unsuspend
close: Close
reopen: Reopen
ok: OK
deactivate: غیرفعال کردن
active: فعال
suspend: تعلیق
unsuspend: لغو تعلیق
close: بستن
reopen: بازگشایی
ok: تأیید
light: روشن
dark: تیره
system_setting: تنظیمات سامانه
default: Default
reset: Reset
tag: Tag
post_lowercase: post
filter: Filter
ignore: Ignore
submit: Submit
normal: Normal
closed: Closed
deleted: Deleted
pending: Pending
search:
title: نتایج جستجو
keywords: کلیدواژه ها
@@ -1353,23 +1399,35 @@ ui:
dashboard:
title: داشبرد
welcome: به پاسخ مدیر خوش آمدید!
site_statistics: آمار سایت
site_statistics: Site statistics
questions: "سوالات:"
answers: "جواب ها:"
comments: "نظرات:"
votes: "آرا:"
active_users: "کاربران فعال:"
users: "Users:"
flags: "علامت‌ها:"
site_health_status: وضعیت سلامت سایت
reviews: "Reviews:"
site_health: Site health
version: "نسخه:"
https: "HTTPS:"
uploading_files: "فایل های در حال آپلود:"
upload_folder: "Upload folder:"
run_mode: "Running mode:"
private: Private
public: در دسترس عموم
smtp: "SMTP:"
timezone: "منطقه زمانی:"
system_info: اطلاعات سیستم
system_info: اطلاعات سامانه
go_version: "نسخه Go:"
database: "پایگاه داده:"
database_size: "اندازه پایگاه داده :"
storage_used: "فضای استفاده شده:"
uptime: "پایداری:"
answer_links: لینک های Answer
links: Links
plugins: افزونه‌ها
github: GitHub
blog: بلاگ
contact: تماس
forum: Forum
documents: اسناد
feedback: ﺑﺎﺯﺧﻮﺭﺩ
support: پشتیبانی
@@ -1384,6 +1442,8 @@ ui:
allowed: مجاز
enabled: فعال
disabled: غیرفعال
writable: قابل نوشتن
not_writable: غیرقابل کُپی
flags:
title: علامت‌ها
pending: در حالت انتظار
@@ -1412,9 +1472,9 @@ ui:
form:
fields:
users:
label: Bulk add user
label: اضافه کردن انبوه کاربر
placeholder: "John Smith, john@example.com, BUSYopr2\nAlice, alice@example.com, fpDntV8q"
text: Separate “name, email, password” with commas. One user per line.
text: '"نام، ایمیل، رمز عبور" را با کاما جدا کنید. یک کاربر در هر خط.'
msg: "لطفا ایمیل کاربر را در هر خط یکی وارد کنید."
display_name:
label: نمایش نام
@@ -1433,7 +1493,7 @@ ui:
email: ایمیل
reputation: محبوبیت
created_at: زمان ایجاد
delete_at: Deleted Time
delete_at: زمان حذف
suspend_at: زمان معلق
status: وضعیت
role: نقش
@@ -1457,22 +1517,20 @@ ui:
show_logs: نمایش ورود ها
add_user: افزودن کاربر
deactivate_user:
title: Deactivate user
content: An inactive user must re-validate their email.
title: غیر فعال کردن کاربر
content: یک کاربر غیرفعال باید ایمیل خود را دوباره تایید کند.
delete_user:
title: Delete this user
content: Are you sure you want to delete this user? This is permanent!
remove: Remove their content
label: Remove all questions, answers, comments, etc.
text: Dont check this if you wish to only delete the users account.
title: این کاربر حذف شود
content: آیا مطمئن هستید که میخواهید این کابر را حذف نمایید؟ این اقدام دائمی است!
remove: محتوای آنها را حذف کنید
label: تمام سوالات، پاسخ ها، نظرات و غیره را حذف کن.
text: اگر می‌خواهید فقط حساب کاربر را حذف کنید، این را بررسی نکنید.
suspend_user:
title: Suspend this user
content: A suspended user can't log in.
title: تعلیق این کاربر
content: کاربر تعلیق شده نمی‌تواند وارد شود.
questions:
page_title: سوالات
normal: عادی
closed: بسته
deleted: حذف شده
unlisted: Unlisted
post: پست
votes: آراء
answers: پاسخ ها
@@ -1480,12 +1538,11 @@ ui:
status: وضعیت
action: عمل
change: تغییر
pending: Pending
filter:
placeholder: "فیلتر براساس، user:id"
answers:
page_title: پاسخ ها
normal: عادی
deleted: حذف شده
post: پست
votes: آراء
created: ایجاد شده
@@ -1517,7 +1574,10 @@ ui:
label: ایمیل ارتباطی
msg: ایمیل مخاطب نمی تواند خالی باشد.
validate: ایمیل تماس معتبر نیست.
text: Email address of key contact responsible for this site.
text: آدرس ایمیل مخاطب کلیدی مسئول این سایت.
check_update:
label: Software updates
text: Automatically check for updates
interface:
page_title: رابط کاربری
language:
@@ -1573,27 +1633,31 @@ ui:
logo:
label: لوگو
msg: کد نمی تواند خالی باشد.
text: The logo image at the top left of your 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: تصویر لوگو در سمت چپ بالای سایت شما. از یک تصویر مستطیلی عریض با ارتفاع 56 و نسبت تصویر بیشتر از 3:1 استفاده کنید. اگر خالی بماند، متن عنوان سایت نشان داده می شود.
mobile_logo:
label: Mobile logo
text: The logo used on mobile version of your site. Use a wide rectangular image with a height of 56. If left blank, the image from the "logo" setting will be used.
label: لوگوی موبایل
text: لوگوی مورد استفاده در نسخه موبایلی سایت شما. از یک تصویر مستطیلی عریض با ارتفاع 56 استفاده کنید. اگر خالی بماند، تصویر از تنظیمات "لوگو" استفاده خواهد شد.
square_icon:
label: Square icon
msg: Square icon cannot be empty.
text: Image used as the base for metadata icons. Should ideally be larger than 512x512.
label: نماد مربعی
msg: نماد مربعی نمی تواند خالی باشد.
text: تصویر به عنوان پایه نمادهای متادیتا استفاده می شود. در حالت ایده آل باید بزرگتر از 512x512 باشد.
favicon:
label: Favicon
text: A favicon for your 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.
label: نمادک
text: فاویکون برای سایت شما. برای اینکه روی CDN به درستی کار کند باید یک png باشد. به 32x32 تغییر اندازه خواهد شد. اگر خالی بماند، از "نماد مربع" استفاده می شود.
legal:
page_title: قانونی
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: شرایط خدمات
text: "می توانید محتوای شرایط خدمات را در اینجا اضافه کنید. اگر قبلاً سندی دارید که در جای دیگری میزبانی شده است، URL کامل را در اینجا ارائه دهید."
privacy_policy:
label: Privacy policy
label: حریم خصوصی
text: "You can add privacy policy content here. If you already have a document hosted elsewhere, provide the full URL here."
write:
page_title: نوشتن
restrict_answer:
title: Restrict answer
label: Each user can only write one answer for each question
text: "They can use the edit link to refine and improve their existing answer, instead."
recommend_tags:
label: Recommend tags
text: "Please input tag slug above, one tag per line."
@@ -1605,9 +1669,9 @@ ui:
label: Reserved tags
text: "Reserved tags can only be added to a post by moderator."
seo:
page_title: SEO
page_title: بهینه‌سازی عملیات موتورهای جستجو
permalink:
label: Permalink
label: پیوند ثابت
text: Custom URL structures can improve the usability, and forward-compatibility of your links.
robots:
label: robots.txt
@@ -1617,11 +1681,12 @@ ui:
themes:
label: Themes
text: Select an existing theme.
color_scheme:
label: Color scheme
navbar_style:
label: Navbar Style
text: Select an existing theme.
label: Navbar style
primary_color:
label: Primary Color
label: Primary color
text: Modify the colors used by your themes
css_and_html:
page_title: CSS and HTML
@@ -1660,6 +1725,10 @@ ui:
title: Private
label: Login required
text: Only logged in users can access this community.
password_login:
title: Password login
label: Allow email and password login
text: "WARNING: If turn off, you may be unable to log in if you have not previously configured other login method."
installed_plugins:
title: Installed Plugins
plugin_link: Plugins extend and expand the functionality of Answer. You may find plugins in the <1>Answer Plugin Repository</1>.
@@ -1673,15 +1742,15 @@ ui:
text: Select an existing plugin.
name: Name
version: Version
status: Status
action: Action
status: وضعیت
action: اقدام
deactivate: Deactivate
activate: Activate
settings: Settings
activate: فعال سازی
settings: تنظیمات
settings_users:
title: Users
title: کاربران
avatar:
label: Default avatar
label: آواتار پیش فرض
text: For users without a custom avatar of their own.
gravatar_base_url:
label: Gravatar Base URL
@@ -1723,6 +1792,22 @@ ui:
edit_answer: Edit answer
edit_tag: Edit tag
empty: No review tasks left.
approve_revision_tip: Do you approve this revision?
approve_flag_tip: Do you approve this flag?
approve_post_tip: Do you approve this post?
approve_user_tip: Do you approve this user?
suggest_edits: Suggested edits
flag_post: Flag post
flag_user: Flag user
queued_post: Queued post
queued_user: Queued user
filter_label: Type
reputation: reputation
flag_post_type: Flagged this post as {{ type }}.
flag_user_type: Flagged this user as {{ type }}.
edit_post: Edit post
list_post: List post
unlist_post: Unlist post
timeline:
undeleted: undeleted
deleted: deleted
@@ -1773,3 +1858,6 @@ ui:
post_hide_list: This post has been hidden from list.
post_show_list: This post has been shown to list.
post_reopen: This post has been reopened.
post_list: This post has been listed.
post_unlist: This post has been unlisted.
post_pending: Your post is awaiting review. This is a preview, it will be visible after it has been approved.
+3 -3
View File
@@ -360,7 +360,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description (optional)
tab_url: Image URL
@@ -433,7 +433,7 @@ ui:
range: Display name up to 35 characters.
slug_name:
label: URL Slug
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc: URL slug up to 35 characters.
msg:
empty: URL slug cannot be empty.
range: URL slug up to 35 characters.
@@ -471,7 +471,7 @@ ui:
label: Display Name
slug_name:
label: URL Slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
info: URL slug up to 35 characters.
desc:
label: Description
edit_summary:
+382 -294
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -360,7 +360,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description (optional)
tab_url: Image URL
@@ -433,7 +433,7 @@ ui:
range: Display name up to 35 characters.
slug_name:
label: URL Slug
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc: URL slug up to 35 characters.
msg:
empty: URL slug cannot be empty.
range: URL slug up to 35 characters.
@@ -471,7 +471,7 @@ ui:
label: Display Name
slug_name:
label: URL Slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
info: URL slug up to 35 characters.
desc:
label: Description
edit_summary:
+1863
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -360,7 +360,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description (optional)
tab_url: Image URL
@@ -433,7 +433,7 @@ ui:
range: Display name up to 35 characters.
slug_name:
label: URL Slug
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc: URL slug up to 35 characters.
msg:
empty: URL slug cannot be empty.
range: URL slug up to 35 characters.
@@ -471,7 +471,7 @@ ui:
label: Display Name
slug_name:
label: URL Slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
info: URL slug up to 35 characters.
desc:
label: Description
edit_summary:
+3 -3
View File
@@ -355,7 +355,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description (optional)
tab_url: Image URL
@@ -428,7 +428,7 @@ ui:
range: Display name up to 35 characters.
slug_name:
label: URL Slug
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc: URL slug up to 35 characters.
msg:
empty: URL slug cannot be empty.
range: URL slug up to 35 characters.
@@ -466,7 +466,7 @@ ui:
label: Display Name
slug_name:
label: URL Slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
info: URL slug up to 35 characters.
desc:
label: Description
edit_summary:
+3
View File
@@ -59,3 +59,6 @@ language_options:
- label: "Slovak"
value: "sk_SK"
progress: 62
- label: "فارسی"
value: "fa_IR"
progress: 85
+126 -38
View File
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
#The following fields are used for back-end
# The following fields are used for back-end
backend:
base:
success:
@@ -82,6 +82,9 @@ backend:
level_3:
description:
other: Level 3 (high reputation required for mature community)
level_custom:
description:
other: Custom Level
rank_question_add_label:
other: Ask question
rank_answer_add_label:
@@ -137,6 +140,9 @@ backend:
email_or_password_wrong_error:
other: Email dan kata sandi tidak cocok.
error:
common:
invalid_url:
other: Invalid URL.
password:
space_invalid:
other: Password cannot contain spaces.
@@ -197,6 +203,8 @@ backend:
question:
already_deleted:
other: This post has been deleted.
under_review:
other: Your post is awaiting review. It will be visible after it has been approved.
not_found:
other: Pertanyaan tidak ditemukan.
cannot_deleted:
@@ -267,6 +275,8 @@ backend:
other: Anda tidak dapat memodifikasi role anda sendiri.
not_allowed_registration:
other: Currently the site is not open for registration.
not_allowed_login_via_password:
other: Currently the site is not allowed to login via password.
access_denied:
other: Access denied
page_access_denied:
@@ -480,7 +490,16 @@ backend:
other: accept
accepted:
other: accepted
#The following fields are used for interface presentation(Front-end)
edit:
other: edit
review:
queued_post:
other: Queued post
flagged_post:
other: Flagged post
suggested_post_edit:
other: Suggested edits
# The following fields are used for interface presentation(Front-end)
ui:
how_to_format:
title: Cara memformat
@@ -520,6 +539,7 @@ ui:
http_404: HTTP Error 404
http_50X: HTTP Error 500
http_403: HTTP Error 403
logout: Log Out
notifications:
title: Pemberitahuan
inbox: Kotak Masuk
@@ -598,7 +618,7 @@ ui:
msg:
empty: File tidak boleh kosong.
only_image: Hanya file Gambar yang diperbolehkan.
max_size: Ukuran file tidak boleh melebihi 4MB.
max_size: Ukuran file tidak boleh melebihi 4 MB.
desc:
label: Description
tab_url: URL gambar
@@ -660,6 +680,8 @@ ui:
empty: Cannot be empty.
msg:
empty: Please select a reason.
not_a_url: URL format is incorrect.
url_not_match: URL origin does not match the current website.
tag_modal:
title: Create new tag
form:
@@ -678,6 +700,12 @@ ui:
character: URL slug contains unallowed character set.
desc:
label: Description
revision:
label: Revision
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
btn_cancel: Cancel
btn_submit: Submit
btn_post: Post new tag
@@ -704,21 +732,7 @@ ui:
edit_tag:
title: Ubah Tag
default_reason: Sunting tag
form:
fields:
revision:
label: Revisi
display_name:
label: Display name
slug_name:
label: URL slug
info: 'Harus menggunakan set karakter "a-z", "0-9", "+ # - ."'
desc:
label: Deskripsi
edit_summary:
label: Edit summary
placeholder: >-
Jelaskan secara singkat perubahan yang Anda lakukan (ejaan yang diperbaiki, tata bahasa yang diperbaiki, pemformatan yang ditingkatkan)
default_first_reason: Add tag
btn_save_edits: Simpan suntingan
btn_cancel: Batal
dates:
@@ -731,6 +745,8 @@ ui:
x_hours_ago: "{{count}}h ago"
hour: jam
day: hari
hours: hours
days: days
comment:
btn_add_comment: Tambahkan Komentar
reply_to: Balas ke
@@ -740,7 +756,7 @@ ui:
btn_flag: Flag
btn_save_edits: Simpan suntingan
btn_cancel: Batal
show_more: Show more comments
show_more: "{{count}} more comments"
tip_question: >-
Gunakan komentar untuk meminta informasi lebih lanjut atau menyarankan perbaikan. Hindari menjawab pertanyaan di komentar.
tip_answer: >-
@@ -749,6 +765,7 @@ ui:
edit_answer:
title: Sunting jawaban
default_reason: Edit jawaban
default_first_reason: Add answer
form:
fields:
revision:
@@ -779,6 +796,7 @@ ui:
title: Add Question
edit_title: Edit Question
default_reason: Edit question
default_first_reason: Add question
similar_questions: Similar questions
form:
fields:
@@ -833,7 +851,7 @@ ui:
placeholder: Cari
footer:
build_on: >-
Built on <1> Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
upload_img:
name: Ubah
loading: sedang memuat...
@@ -963,10 +981,10 @@ ui:
label: Location
placeholder: "City, Country"
notification:
heading: Notifications
email: Email
heading: Email Notifications
turn_on: Turn on
inbox:
label: Email notifications
label: Inbox notifications
description: Answers to your questions, comments, invites, and more.
all_new_question:
label: All new questions
@@ -1021,7 +1039,7 @@ ui:
answers: jawaban
invite_to_answer:
title: People Asked
desc: Invite people who you think might know the answer.
desc: Select people who you think might know the answer.
invite: Invite to answer
add: Add people
search: Search people
@@ -1031,6 +1049,7 @@ ui:
asked: ditanyakan
update: Diubah
edit: disunting
commented: commented
Views: Dilihat
Follow: Ikuti
Following: Mengikuti
@@ -1048,10 +1067,12 @@ ui:
title: Jawaban
score: Nilai
newest: Terbaru
oldest: Oldest
btn_accept: Terima
btn_accepted: Diterima
write_answer:
title: Jawaban Anda
edit_answer: Edit my existing answer
btn_name: Kirimkan jawaban Anda
add_another_answer: Tambahkan jawaban lain
confirm_title: Lanjutkan menjawab
@@ -1070,6 +1091,14 @@ ui:
confirm_btn: Reopen
title: Buka kembali postingan ini
content: Kamu yakin ingin membuka kembali?
list:
confirm_btn: List
title: List this post
content: Are you sure you want to list?
unlist:
confirm_btn: Unlist
title: Unlist this post
content: Are you sure you want to unlist?
pin:
title: Pin this post
content: Are you sure you wish to pinned globally? This post will appear at the top of all post lists.
@@ -1091,6 +1120,9 @@ ui:
save: Simpan
delete: Hapus
undelete: Undelete
list: List
unlist: Unlist
unlisted: Unlisted
login: Masuk
signup: Daftar
logout: Keluar
@@ -1114,6 +1146,20 @@ ui:
close: Close
reopen: Reopen
ok: OK
light: Light
dark: Dark
system_setting: System setting
default: Default
reset: Reset
tag: Tag
post_lowercase: post
filter: Filter
ignore: Ignore
submit: Submit
normal: Normal
closed: Closed
deleted: Deleted
pending: Pending
search:
title: Search Results
keywords: Keywords
@@ -1353,23 +1399,35 @@ ui:
dashboard:
title: Dasbor
welcome: Selamat datang di Answer Admin!
site_statistics: Site Statistics
site_statistics: Site statistics
questions: "Pertanyaan:"
answers: "Jawaban:"
comments: "Komentar:"
votes: "Vote:"
active_users: "Pengguna aktif:"
users: "Users:"
flags: "Flags:"
site_health_status: Site Health Status
reviews: "Reviews:"
site_health: Site health
version: "Versi:"
https: "HTTPS:"
uploading_files: "Mengunggah berkas:"
upload_folder: "Upload folder:"
run_mode: "Running mode:"
private: Private
public: Public
smtp: "SMTP:"
timezone: "Zona Waktu:"
system_info: Informasi Sistem
system_info: System info
go_version: "Go version:"
database: "Database:"
database_size: "Database size:"
storage_used: "Penyimpanan yang terpakai:"
uptime: "Uptime:"
answer_links: Tautan Answer
links: Links
plugins: Plugins
github: GitHub
blog: Blog
contact: Contact
forum: Forum
documents: Dokumen
feedback: Masukan
support: Dukungan
@@ -1384,6 +1442,8 @@ ui:
allowed: Allowed
enabled: Enabled
disabled: Disabled
writable: Writable
not_writable: Not writable
flags:
title: Flags
pending: Pending
@@ -1470,9 +1530,7 @@ ui:
content: A suspended user can't log in.
questions:
page_title: Pertanyaan
normal: Normal
closed: Ditutup
deleted: Dihapus
unlisted: Unlisted
post: Post
votes: Vote
answers: Jawaban
@@ -1480,12 +1538,11 @@ ui:
status: Status
action: Action
change: Ubah
pending: Pending
filter:
placeholder: "Filter berdasarkan judul, question:id"
answers:
page_title: Jawaban
normal: Normal
deleted: Deleted
post: Post
votes: Votes
created: Created
@@ -1518,6 +1575,9 @@ ui:
msg: Contact email cannot be empty.
validate: Contact email is not valid.
text: Email address of key contact responsible for this site.
check_update:
label: Software updates
text: Automatically check for updates
interface:
page_title: Interface
language:
@@ -1594,6 +1654,10 @@ ui:
text: "You can add privacy policy content here. If you already have a document hosted elsewhere, provide the full URL here."
write:
page_title: Write
restrict_answer:
title: Restrict answer
label: Each user can only write one answer for each question
text: "They can use the edit link to refine and improve their existing answer, instead."
recommend_tags:
label: Recommend tags
text: "Please input tag slug above, one tag per line."
@@ -1617,11 +1681,12 @@ ui:
themes:
label: Themes
text: Select an existing theme.
color_scheme:
label: Color scheme
navbar_style:
label: Navbar Style
text: Select an existing theme.
label: Navbar style
primary_color:
label: Primary Color
label: Primary color
text: Modify the colors used by your themes
css_and_html:
page_title: CSS and HTML
@@ -1660,6 +1725,10 @@ ui:
title: Private
label: Login required
text: Only logged in users can access this community.
password_login:
title: Password login
label: Allow email and password login
text: "WARNING: If turn off, you may be unable to log in if you have not previously configured other login method."
installed_plugins:
title: Installed Plugins
plugin_link: Plugins extend and expand the functionality of Answer. You may find plugins in the <1>Answer Plugin Repository</1>.
@@ -1723,6 +1792,22 @@ ui:
edit_answer: Edit answer
edit_tag: Edit tag
empty: No review tasks left.
approve_revision_tip: Do you approve this revision?
approve_flag_tip: Do you approve this flag?
approve_post_tip: Do you approve this post?
approve_user_tip: Do you approve this user?
suggest_edits: Suggested edits
flag_post: Flag post
flag_user: Flag user
queued_post: Queued post
queued_user: Queued user
filter_label: Type
reputation: reputation
flag_post_type: Flagged this post as {{ type }}.
flag_user_type: Flagged this user as {{ type }}.
edit_post: Edit post
list_post: List post
unlist_post: Unlist post
timeline:
undeleted: undeleted
deleted: deleted
@@ -1773,3 +1858,6 @@ ui:
post_hide_list: This post has been hidden from list.
post_show_list: This post has been shown to list.
post_reopen: This post has been reopened.
post_list: This post has been listed.
post_unlist: This post has been unlisted.
post_pending: Your post is awaiting review. This is a preview, it will be visible after it has been approved.
+1148 -1060
View File
File diff suppressed because it is too large Load Diff
+178 -90
View File
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
#The following fields are used for back-end
# The following fields are used for back-end
backend:
base:
success:
@@ -52,9 +52,9 @@ backend:
unpin:
other: Unpin
show:
other: List
other: リスト
invite_someone_to_answer:
other: Edit
other: 編集
undelete:
other: Undelete
role:
@@ -82,14 +82,17 @@ backend:
level_3:
description:
other: Level 3 (high reputation required for mature community)
level_custom:
description:
other: Custom Level
rank_question_add_label:
other: Ask question
other: 質問する
rank_answer_add_label:
other: Write answer
other: 回答を書く
rank_comment_add_label:
other: Write comment
other: コメントを書く
rank_report_add_label:
other: Flag
other: フラグ
rank_comment_vote_up_label:
other: Upvote comment
rank_link_url_limit_label:
@@ -105,7 +108,7 @@ backend:
rank_invite_someone_to_answer_label:
other: Invite someone to answer
rank_tag_add_label:
other: Create new tag
other: 新しいタグを作成
rank_tag_edit_label:
other: Edit tag description (need to review)
rank_question_edit_label:
@@ -133,10 +136,13 @@ backend:
password:
other: パスワード
pass:
other: Password
other: パスワード
email_or_password_wrong_error:
other: メールアドレスとパスワードが一致しません。
error:
common:
invalid_url:
other: Invalid URL.
password:
space_invalid:
other: Password cannot contain spaces.
@@ -197,6 +203,8 @@ backend:
question:
already_deleted:
other: この投稿は削除されました。
under_review:
other: Your post is awaiting review. It will be visible after it has been approved.
not_found:
other: 質問が見つかりません。
cannot_deleted:
@@ -267,8 +275,10 @@ backend:
other: You cannot modify your role.
not_allowed_registration:
other: Currently the site is not open for registration.
not_allowed_login_via_password:
other: Currently the site is not allowed to login via password.
access_denied:
other: Access denied
other: アクセスが拒否されました
page_access_denied:
other: You do not have access to this page.
add_bulk_users_format_error:
@@ -480,7 +490,16 @@ backend:
other: accept
accepted:
other: accepted
#The following fields are used for interface presentation(Front-end)
edit:
other: edit
review:
queued_post:
other: Queued post
flagged_post:
other: Flagged post
suggested_post_edit:
other: Suggested edits
# The following fields are used for interface presentation(Front-end)
ui:
how_to_format:
title: How to Format
@@ -520,6 +539,7 @@ ui:
http_404: HTTP エラー 404
http_50X: HTTP エラー 500
http_403: HTTP エラー 403
logout: Log Out
notifications:
title: 通知
inbox: 受信トレイ
@@ -529,16 +549,16 @@ ui:
show_more: もっと見る
someone: Someone
inbox_type:
all: All
posts: Posts
invites: Invites
votes: Votes
all: すべて
posts: 投稿
invites: 招待
votes: 投票
suspended:
title: あなたのアカウントは停止されています。
until_time: "あなたのアカウントは {{ time }} まで停止されました。"
forever: このユーザーは永久に停止されました。
end: You don't meet a community guideline.
contact_us: Contact us
contact_us: お問い合わせ
editor:
blockquote:
text: 引用
@@ -598,7 +618,7 @@ ui:
msg:
empty: ファイルは空にできません。
only_image: 画像ファイルのみが許可されています。
max_size: ファイルサイズは4MBを超えることはできません。
max_size: File size cannot exceed 4 MB.
desc:
label: 説明
tab_url: 画像URL
@@ -660,6 +680,8 @@ ui:
empty: 入力してください。
msg:
empty: 理由を選んでください。
not_a_url: URL format is incorrect.
url_not_match: URL origin does not match the current website.
tag_modal:
title: 新しいタグを作成
form:
@@ -670,7 +692,7 @@ ui:
empty: 表示名を入力してください。
range: 表示名は最大 35 文字までです。
slug_name:
label: URL slug
label: URLスラッグ
desc: '文字セット「a-z」、「0-9」、「+ # -」を使用する必要があります。'
msg:
empty: URL スラッグを空にすることはできません。
@@ -678,6 +700,12 @@ ui:
character: URL slug contains unallowed character set.
desc:
label: 説明
revision:
label: Revision
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
btn_cancel: キャンセル
btn_submit: 送信
btn_post: 新しいタグを投稿
@@ -704,23 +732,9 @@ ui:
edit_tag:
title: タグを編集
default_reason: タグを編集
form:
fields:
revision:
label: Revision
display_name:
label: Display name
slug_name:
label: URL slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc:
label: Description
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
default_first_reason: Add tag
btn_save_edits: Save edits
btn_cancel: Cancel
btn_cancel: キャンセル
dates:
long_date: MMM D
long_date_with_year: "MMM D, YYYY"
@@ -729,26 +743,29 @@ ui:
x_seconds_ago: "{{count}}s ago"
x_minutes_ago: "{{count}}m ago"
x_hours_ago: "{{count}}h ago"
hour: hour
day: day
hour:
day:
hours:
days:
comment:
btn_add_comment: Add comment
btn_add_comment: コメントを追加
reply_to: Reply to
btn_reply: Reply
btn_edit: Edit
btn_delete: Delete
btn_flag: Flag
btn_save_edits: Save edits
btn_cancel: Cancel
show_more: Show more comments
btn_reply: 返信
btn_edit: 編集
btn_delete: 削除
btn_flag: フラグ
btn_save_edits: 編集内容を保存
btn_cancel: キャンセル
show_more: "{{count}} more comments"
tip_question: >-
Use comments to ask for more information or suggest improvements. Avoid answering questions in comments.
tip_answer: >-
Use comments to reply to other users or notify them of changes. If you are adding new information, edit your post instead of commenting.
tip_vote: It adds something useful to the post
edit_answer:
title: Edit Answer
default_reason: Edit answer
title: 回答を編集 
default_reason: 回答を編集 
default_first_reason: 回答を追加
form:
fields:
revision:
@@ -762,24 +779,25 @@ ui:
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
btn_save_edits: Save edits
btn_cancel: Cancel
btn_cancel: キャンセル
tags:
title: Tags
title: タグ
sort_buttons:
popular: Popular
name: Name
newest: Newest
button_follow: Follow
button_following: Following
tag_label: questions
search_placeholder: Filter by tag name
popular: 人気
name: 名前
newest: 最新
button_follow: フォロー
button_following: フォロー中
tag_label: 質問
search_placeholder: タグ名でフィルタ
no_desc: The tag has no description.
more: More
ask:
title: Add Question
edit_title: Edit Question
default_reason: Edit question
similar_questions: Similar questions
title: 質問を追加
edit_title: 質問を編集
default_reason: 質問を編集
default_first_reason: 質問を追加
similar_questions: 類似の質問
form:
fields:
revision:
@@ -825,18 +843,18 @@ ui:
profile: Profile
setting: Settings
logout: Log out
admin: Admin
review: Review
bookmark: Bookmarks
admin: 管理者
review: レビュー
bookmark: ブックマーク
moderation: Moderation
search:
placeholder: Search
placeholder: 検索
footer:
build_on: >-
Built on <1> Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
upload_img:
name: Change
loading: loading...
name: 変更
loading: 読み込み中…
pic_auth_code:
title: Captcha
placeholder: Type the text above
@@ -925,7 +943,7 @@ ui:
password_confirm:
label: Confirm new password
settings:
page_title: Settings
page_title: 設定
goto_modify: Go to modify
nav:
profile: Profile
@@ -940,18 +958,18 @@ ui:
msg: Display name cannot be empty.
msg_range: Display name up to 30 characters.
username:
label: Username
label: ユーザー名
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", " - . _"'
avatar:
label: Profile image
label: プロフィール画像
gravatar: Gravatar
gravatar_text: You can change image on
custom: Custom
custom_text: You can upload your image.
default: System
default: システム
msg: Please upload an avatar
bio:
label: About me
@@ -963,10 +981,10 @@ ui:
label: Location
placeholder: "City, Country"
notification:
heading: Notifications
email: Email
heading: Email Notifications
turn_on: Turn on
inbox:
label: Email notifications
label: Inbox notifications
description: Answers to your questions, comments, invites, and more.
all_new_question:
label: All new questions
@@ -1021,7 +1039,7 @@ ui:
answers: answers
invite_to_answer:
title: People Asked
desc: Invite people who you think might know the answer.
desc: Select people who you think might know the answer.
invite: Invite to answer
add: Add people
search: Search people
@@ -1031,6 +1049,7 @@ ui:
asked: asked
update: Modified
edit: edited
commented: commented
Views: Viewed
Follow: Follow
Following: Following
@@ -1048,10 +1067,12 @@ ui:
title: 回答
score: スコア
newest: 最新
oldest: Oldest
btn_accept: 承認
btn_accepted: Accepted
write_answer:
title: Your Answer
edit_answer: Edit my existing answer
btn_name: Post your answer
add_another_answer: Add another answer
confirm_title: Continue to answer
@@ -1070,6 +1091,14 @@ ui:
confirm_btn: Reopen
title: Reopen this post
content: Are you sure you want to reopen?
list:
confirm_btn: List
title: List this post
content: Are you sure you want to list?
unlist:
confirm_btn: Unlist
title: Unlist this post
content: Are you sure you want to unlist?
pin:
title: Pin this post
content: Are you sure you wish to pinned globally? This post will appear at the top of all post lists.
@@ -1091,6 +1120,9 @@ ui:
save: Save
delete: Delete
undelete: Undelete
list: List
unlist: Unlist
unlisted: Unlisted
login: Log in
signup: 新規登録
logout: Log out
@@ -1114,6 +1146,20 @@ ui:
close: Close
reopen: Reopen
ok: OK
light: Light
dark: Dark
system_setting: System setting
default: Default
reset: Reset
tag: Tag
post_lowercase: post
filter: Filter
ignore: Ignore
submit: Submit
normal: Normal
closed: Closed
deleted: Deleted
pending: Pending
search:
title: Search Results
keywords: Keywords
@@ -1353,23 +1399,35 @@ ui:
dashboard:
title: ダッシュボード
welcome: Welcome to Answer Admin!
site_statistics: サイト統計
site_statistics: Site statistics
questions: "質問:"
answers: "回答:"
comments: "評論:"
votes: "投票:"
active_users: "Active users:"
users: "Users:"
flags: "Flags:"
site_health_status: Site Health Status
reviews: "Reviews:"
site_health: Site health
version: "Version:"
https: "HTTPS:"
uploading_files: "Uploading files:"
upload_folder: "Upload folder:"
run_mode: "Running mode:"
private: Private
public: Public
smtp: "SMTP:"
timezone: "Timezone:"
system_info: System Info
system_info: System info
go_version: "Go version:"
database: "Database:"
database_size: "Database size:"
storage_used: "Storage used:"
uptime: "Uptime:"
answer_links: Answer Links
links: Links
plugins: Plugins
github: GitHub
blog: Blog
contact: Contact
forum: Forum
documents: Documents
feedback: フィードバック
support: サポート
@@ -1384,6 +1442,8 @@ ui:
allowed: Allowed
enabled: Enabled
disabled: Disabled
writable: Writable
not_writable: Not writable
flags:
title: Flags
pending: Pending
@@ -1470,9 +1530,7 @@ ui:
content: A suspended user can't log in.
questions:
page_title: 質問
normal: 正常
closed: 終了
deleted: 削除済み
unlisted: Unlisted
post: 投稿
votes: 投票
answers: 回答
@@ -1480,12 +1538,11 @@ ui:
status: ステータス
action: Action
change: Change
pending: Pending
filter:
placeholder: "Filter by title, question:id"
answers:
page_title: Answers
normal: Normal
deleted: Deleted
post: Post
votes: Votes
created: Created
@@ -1518,6 +1575,9 @@ ui:
msg: Contact email cannot be empty.
validate: Contact email is not valid.
text: Email address of key contact responsible for this site.
check_update:
label: Software updates
text: Automatically check for updates
interface:
page_title: Interface
language:
@@ -1594,6 +1654,10 @@ ui:
text: "You can add privacy policy content here. If you already have a document hosted elsewhere, provide the full URL here."
write:
page_title: Write
restrict_answer:
title: Restrict answer
label: Each user can only write one answer for each question
text: "They can use the edit link to refine and improve their existing answer, instead."
recommend_tags:
label: Recommend tags
text: "Please input tag slug above, one tag per line."
@@ -1617,11 +1681,12 @@ ui:
themes:
label: Themes
text: Select an existing theme.
color_scheme:
label: Color scheme
navbar_style:
label: Navbar Style
text: Select an existing theme.
label: Navbar style
primary_color:
label: Primary Color
label: Primary color
text: Modify the colors used by your themes
css_and_html:
page_title: CSS and HTML
@@ -1660,6 +1725,10 @@ ui:
title: Private
label: Login required
text: Only logged in users can access this community.
password_login:
title: Password login
label: Allow email and password login
text: "WARNING: If turn off, you may be unable to log in if you have not previously configured other login method."
installed_plugins:
title: Installed Plugins
plugin_link: Plugins extend and expand the functionality of Answer. You may find plugins in the <1>Answer Plugin Repository</1>.
@@ -1671,7 +1740,7 @@ ui:
plugins:
label: Plugins
text: Select an existing plugin.
name: Name
name: 名前
version: Version
status: Status
action: Action
@@ -1723,6 +1792,22 @@ ui:
edit_answer: Edit answer
edit_tag: Edit tag
empty: No review tasks left.
approve_revision_tip: Do you approve this revision?
approve_flag_tip: Do you approve this flag?
approve_post_tip: Do you approve this post?
approve_user_tip: Do you approve this user?
suggest_edits: Suggested edits
flag_post: Flag post
flag_user: Flag user
queued_post: Queued post
queued_user: Queued user
filter_label: Type
reputation: reputation
flag_post_type: Flagged this post as {{ type }}.
flag_user_type: Flagged this user as {{ type }}.
edit_post: Edit post
list_post: List post
unlist_post: Unlist post
timeline:
undeleted: undeleted
deleted: deleted
@@ -1755,7 +1840,7 @@ ui:
comment: Comment
no_data: "We couldn't find anything."
users:
title: Users
title: ユーザー
users_with_the_most_reputation: Users with the highest reputation scores this week
users_with_the_most_vote: Users who voted the most this week
staffs: Our community staff
@@ -1773,3 +1858,6 @@ ui:
post_hide_list: This post has been hidden from list.
post_show_list: This post has been shown to list.
post_reopen: This post has been reopened.
post_list: This post has been listed.
post_unlist: This post has been unlisted.
post_pending: Your post is awaiting review. This is a preview, it will be visible after it has been approved.
+126 -38
View File
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
#The following fields are used for back-end
# The following fields are used for back-end
backend:
base:
success:
@@ -82,6 +82,9 @@ backend:
level_3:
description:
other: Level 3 (high reputation required for mature community)
level_custom:
description:
other: Custom Level
rank_question_add_label:
other: Ask question
rank_answer_add_label:
@@ -137,6 +140,9 @@ backend:
email_or_password_wrong_error:
other: Email and password do not match.
error:
common:
invalid_url:
other: Invalid URL.
password:
space_invalid:
other: Password cannot contain spaces.
@@ -197,6 +203,8 @@ backend:
question:
already_deleted:
other: This post has been deleted.
under_review:
other: Your post is awaiting review. It will be visible after it has been approved.
not_found:
other: Question not found.
cannot_deleted:
@@ -267,6 +275,8 @@ backend:
other: You cannot modify your role.
not_allowed_registration:
other: Currently the site is not open for registration.
not_allowed_login_via_password:
other: Currently the site is not allowed to login via password.
access_denied:
other: Access denied
page_access_denied:
@@ -480,7 +490,16 @@ backend:
other: accept
accepted:
other: accepted
#The following fields are used for interface presentation(Front-end)
edit:
other: edit
review:
queued_post:
other: Queued post
flagged_post:
other: Flagged post
suggested_post_edit:
other: Suggested edits
# The following fields are used for interface presentation(Front-end)
ui:
how_to_format:
title: How to Format
@@ -520,6 +539,7 @@ ui:
http_404: HTTP Error 404
http_50X: HTTP Error 500
http_403: HTTP Error 403
logout: Log Out
notifications:
title: Notifications
inbox: Inbox
@@ -598,7 +618,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description
tab_url: Image URL
@@ -660,6 +680,8 @@ ui:
empty: Cannot be empty.
msg:
empty: Please select a reason.
not_a_url: URL format is incorrect.
url_not_match: URL origin does not match the current website.
tag_modal:
title: Create new tag
form:
@@ -678,6 +700,12 @@ ui:
character: URL slug contains unallowed character set.
desc:
label: Description
revision:
label: Revision
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
btn_cancel: Cancel
btn_submit: Submit
btn_post: Post new tag
@@ -704,21 +732,7 @@ ui:
edit_tag:
title: Edit Tag
default_reason: Edit tag
form:
fields:
revision:
label: Revision
display_name:
label: Display name
slug_name:
label: URL slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc:
label: Description
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
default_first_reason: Add tag
btn_save_edits: Save edits
btn_cancel: Cancel
dates:
@@ -731,6 +745,8 @@ ui:
x_hours_ago: "{{count}}h ago"
hour: hour
day: day
hours: hours
days: days
comment:
btn_add_comment: Add comment
reply_to: Reply to
@@ -740,7 +756,7 @@ ui:
btn_flag: Flag
btn_save_edits: Save edits
btn_cancel: Cancel
show_more: Show more comments
show_more: "{{count}} more comments"
tip_question: >-
Use comments to ask for more information or suggest improvements. Avoid answering questions in comments.
tip_answer: >-
@@ -749,6 +765,7 @@ ui:
edit_answer:
title: Edit Answer
default_reason: Edit answer
default_first_reason: Add answer
form:
fields:
revision:
@@ -779,6 +796,7 @@ ui:
title: Add Question
edit_title: Edit Question
default_reason: Edit question
default_first_reason: Add question
similar_questions: Similar questions
form:
fields:
@@ -833,7 +851,7 @@ ui:
placeholder: Search
footer:
build_on: >-
Built on <1> Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
upload_img:
name: Change
loading: loading...
@@ -963,10 +981,10 @@ ui:
label: Location
placeholder: "City, Country"
notification:
heading: Notifications
email: Email
heading: Email Notifications
turn_on: Turn on
inbox:
label: Email notifications
label: Inbox notifications
description: Answers to your questions, comments, invites, and more.
all_new_question:
label: All new questions
@@ -1021,7 +1039,7 @@ ui:
answers: answers
invite_to_answer:
title: People Asked
desc: Invite people who you think might know the answer.
desc: Select people who you think might know the answer.
invite: Invite to answer
add: Add people
search: Search people
@@ -1031,6 +1049,7 @@ ui:
asked: asked
update: Modified
edit: edited
commented: commented
Views: Viewed
Follow: Follow
Following: Following
@@ -1048,10 +1067,12 @@ ui:
title: Answers
score: Score
newest: Newest
oldest: Oldest
btn_accept: Accept
btn_accepted: Accepted
write_answer:
title: Your Answer
edit_answer: Edit my existing answer
btn_name: Post your answer
add_another_answer: Add another answer
confirm_title: Continue to answer
@@ -1070,6 +1091,14 @@ ui:
confirm_btn: Reopen
title: Reopen this post
content: Are you sure you want to reopen?
list:
confirm_btn: List
title: List this post
content: Are you sure you want to list?
unlist:
confirm_btn: Unlist
title: Unlist this post
content: Are you sure you want to unlist?
pin:
title: Pin this post
content: Are you sure you wish to pinned globally? This post will appear at the top of all post lists.
@@ -1091,6 +1120,9 @@ ui:
save: Save
delete: Delete
undelete: Undelete
list: List
unlist: Unlist
unlisted: Unlisted
login: Log in
signup: Sign up
logout: Log out
@@ -1114,6 +1146,20 @@ ui:
close: Close
reopen: Reopen
ok: OK
light: Light
dark: Dark
system_setting: System setting
default: Default
reset: Reset
tag: Tag
post_lowercase: post
filter: Filter
ignore: Ignore
submit: Submit
normal: Normal
closed: Closed
deleted: Deleted
pending: Pending
search:
title: Search Results
keywords: Keywords
@@ -1353,23 +1399,35 @@ ui:
dashboard:
title: Dashboard
welcome: Welcome to Answer Admin!
site_statistics: Site Statistics
site_statistics: Site statistics
questions: "Questions:"
answers: "Answers:"
comments: "Comments:"
votes: "Votes:"
active_users: "Active users:"
users: "Users:"
flags: "Flags:"
site_health_status: Site Health Status
reviews: "Reviews:"
site_health: Site health
version: "Version:"
https: "HTTPS:"
uploading_files: "Uploading files:"
upload_folder: "Upload folder:"
run_mode: "Running mode:"
private: Private
public: Public
smtp: "SMTP:"
timezone: "Timezone:"
system_info: System Info
system_info: System info
go_version: "Go version:"
database: "Database:"
database_size: "Database size:"
storage_used: "Storage used:"
uptime: "Uptime:"
answer_links: Answer Links
links: Links
plugins: Plugins
github: GitHub
blog: Blog
contact: Contact
forum: Forum
documents: Documents
feedback: Feedback
support: Support
@@ -1384,6 +1442,8 @@ ui:
allowed: Allowed
enabled: Enabled
disabled: Disabled
writable: Writable
not_writable: Not writable
flags:
title: Flags
pending: Pending
@@ -1470,9 +1530,7 @@ ui:
content: A suspended user can't log in.
questions:
page_title: Questions
normal: Normal
closed: Closed
deleted: Deleted
unlisted: Unlisted
post: Post
votes: Votes
answers: Answers
@@ -1480,12 +1538,11 @@ ui:
status: Status
action: Action
change: Change
pending: Pending
filter:
placeholder: "Filter by title, question:id"
answers:
page_title: Answers
normal: Normal
deleted: Deleted
post: Post
votes: Votes
created: Created
@@ -1518,6 +1575,9 @@ ui:
msg: Contact email cannot be empty.
validate: Contact email is not valid.
text: Email address of key contact responsible for this site.
check_update:
label: Software updates
text: Automatically check for updates
interface:
page_title: Interface
language:
@@ -1594,6 +1654,10 @@ ui:
text: "You can add privacy policy content here. If you already have a document hosted elsewhere, provide the full URL here."
write:
page_title: Write
restrict_answer:
title: Restrict answer
label: Each user can only write one answer for each question
text: "They can use the edit link to refine and improve their existing answer, instead."
recommend_tags:
label: Recommend tags
text: "Please input tag slug above, one tag per line."
@@ -1617,11 +1681,12 @@ ui:
themes:
label: Themes
text: Select an existing theme.
color_scheme:
label: Color scheme
navbar_style:
label: Navbar Style
text: Select an existing theme.
label: Navbar style
primary_color:
label: Primary Color
label: Primary color
text: Modify the colors used by your themes
css_and_html:
page_title: CSS and HTML
@@ -1660,6 +1725,10 @@ ui:
title: Private
label: Login required
text: Only logged in users can access this community.
password_login:
title: Password login
label: Allow email and password login
text: "WARNING: If turn off, you may be unable to log in if you have not previously configured other login method."
installed_plugins:
title: Installed Plugins
plugin_link: Plugins extend and expand the functionality of Answer. You may find plugins in the <1>Answer Plugin Repository</1>.
@@ -1723,6 +1792,22 @@ ui:
edit_answer: Edit answer
edit_tag: Edit tag
empty: No review tasks left.
approve_revision_tip: Do you approve this revision?
approve_flag_tip: Do you approve this flag?
approve_post_tip: Do you approve this post?
approve_user_tip: Do you approve this user?
suggest_edits: Suggested edits
flag_post: Flag post
flag_user: Flag user
queued_post: Queued post
queued_user: Queued user
filter_label: Type
reputation: reputation
flag_post_type: Flagged this post as {{ type }}.
flag_user_type: Flagged this user as {{ type }}.
edit_post: Edit post
list_post: List post
unlist_post: Unlist post
timeline:
undeleted: undeleted
deleted: deleted
@@ -1773,3 +1858,6 @@ ui:
post_hide_list: This post has been hidden from list.
post_show_list: This post has been shown to list.
post_reopen: This post has been reopened.
post_list: This post has been listed.
post_unlist: This post has been unlisted.
post_pending: Your post is awaiting review. This is a preview, it will be visible after it has been approved.
+3 -3
View File
@@ -360,7 +360,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description (optional)
tab_url: Image URL
@@ -433,7 +433,7 @@ ui:
range: Display name up to 35 characters.
slug_name:
label: URL Slug
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc: URL slug up to 35 characters.
msg:
empty: URL slug cannot be empty.
range: URL slug up to 35 characters.
@@ -471,7 +471,7 @@ ui:
label: Display Name
slug_name:
label: URL Slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
info: URL slug up to 35 characters.
desc:
label: Description
edit_summary:
+3 -3
View File
@@ -360,7 +360,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description (optional)
tab_url: Image URL
@@ -433,7 +433,7 @@ ui:
range: Display name up to 35 characters.
slug_name:
label: URL Slug
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc: URL slug up to 35 characters.
msg:
empty: URL slug cannot be empty.
range: URL slug up to 35 characters.
@@ -471,7 +471,7 @@ ui:
label: Display Name
slug_name:
label: URL Slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
info: URL slug up to 35 characters.
desc:
label: Description
edit_summary:
+313 -225
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -360,7 +360,7 @@ ui:
msg:
empty: Arquivo não pode ser vazio.
only_image: Somente um arquivo de imagem é permitido.
max_size: O tamanho do arquivo não pode exceder 4MB.
max_size: O tamanho do arquivo não pode exceder 4 MB.
desc:
label: Descrição (opcional)
tab_url: URL da imagem
+127 -39
View File
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
#The following fields are used for back-end
# The following fields are used for back-end
backend:
base:
success:
@@ -82,6 +82,9 @@ backend:
level_3:
description:
other: Nível 3 (Alta reputação necessária para a comunidade adulta)
level_custom:
description:
other: Custom Level
rank_question_add_label:
other: Perguntar
rank_answer_add_label:
@@ -137,6 +140,9 @@ backend:
email_or_password_wrong_error:
other: O e-mail e a palavra-passe não coincidem.
error:
common:
invalid_url:
other: Invalid URL.
password:
space_invalid:
other: A senha não pode conter espaços.
@@ -197,6 +203,8 @@ backend:
question:
already_deleted:
other: Essa publicação foi deletado.
under_review:
other: Your post is awaiting review. It will be visible after it has been approved.
not_found:
other: Pergunta não encontrada.
cannot_deleted:
@@ -267,6 +275,8 @@ backend:
other: Você não pode modificar a sua função.
not_allowed_registration:
other: Atualmente o site não está aberto para cadastro
not_allowed_login_via_password:
other: Currently the site is not allowed to login via password.
access_denied:
other: Acesso negado
page_access_denied:
@@ -480,7 +490,16 @@ backend:
other: aceito
accepted:
other: aceito
#The following fields are used for interface presentation(Front-end)
edit:
other: edit
review:
queued_post:
other: Queued post
flagged_post:
other: Flagged post
suggested_post_edit:
other: Suggested edits
# The following fields are used for interface presentation(Front-end)
ui:
how_to_format:
title: Como formatar
@@ -520,6 +539,7 @@ ui:
http_404: HTTP Erro 404
http_50X: HTTP Erro 500
http_403: HTTP Erro 403
logout: Log Out
notifications:
title: Notificações
inbox: Caixa de entrada
@@ -598,7 +618,7 @@ ui:
msg:
empty: Arquivo não pode ser vazio.
only_image: Somente um arquivo de imagem é permitido.
max_size: O tamanho do arquivo não pode exceder 4MB.
max_size: O tamanho do arquivo não pode exceder 4 MB.
desc:
label: Descrição (opcional)
tab_url: URL da imagem
@@ -660,6 +680,8 @@ ui:
empty: Não pode ser vazio.
msg:
empty: Por favor selecione um motivo.
not_a_url: URL format is incorrect.
url_not_match: URL origin does not match the current website.
tag_modal:
title: Criar novo marcador
form:
@@ -678,6 +700,12 @@ ui:
character: URL slug contém conjunto de caracteres não permitido.
desc:
label: Descrição (opcional)
revision:
label: Revision
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
btn_cancel: Cancelar
btn_submit: Enviar
btn_post: Postar novo marcador
@@ -704,25 +732,11 @@ ui:
edit_tag:
title: Editar marcador
default_reason: Editar marcador
form:
fields:
revision:
label: Revisão
display_name:
label: Nome de exibição
slug_name:
label: Slug de URL
info: 'Deve usar o conjunto de caracteres "a-z", "0-9", "+ # - ."'
desc:
label: Descrição
edit_summary:
label: Resumo da edição
placeholder: >-
Explique resumidamente suas alterações (ortografia corrigida, gramática corrigida, formatação aprimorada)
default_first_reason: Add tag
btn_save_edits: Salvar edições
btn_cancel: Cancelar
dates:
long_date: D MMM
long_date: D MMM
long_date_with_year: "D MMM, YYYY"
long_date_with_time: "D MMM, YYYY [at] HH:mm"
now: agora
@@ -731,6 +745,8 @@ ui:
x_hours_ago: "{{count}}h atrás"
hour: hora
day: dia
hours: hours
days: days
comment:
btn_add_comment: Adicionar comentário
reply_to: Responder a
@@ -740,7 +756,7 @@ ui:
btn_flag: Marcador
btn_save_edits: Salvar edições
btn_cancel: Cancelar
show_more: Mostrar mais comentários
show_more: "{{count}} more comments"
tip_question: >-
Use os comentários para pedir mais informações ou sugerir melhorias. Evite responder perguntas nos comentários.
tip_answer: >-
@@ -749,6 +765,7 @@ ui:
edit_answer:
title: Editar Resposta
default_reason: Editar Resposta
default_first_reason: Add answer
form:
fields:
revision:
@@ -779,6 +796,7 @@ ui:
title: Adicionar Pergunta
edit_title: Editar Pergunta
default_reason: Editar pergunta
default_first_reason: Add question
similar_questions: Similar perguntas
form:
fields:
@@ -833,7 +851,7 @@ ui:
placeholder: Procurar
footer:
build_on: >-
Construído com <1> Answer </1>- o software de código aberto que empodera comunidades de Q&A.<br />Feito com amor © {{cc}}.
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
upload_img:
name: Mudar
loading: carregando...
@@ -963,10 +981,10 @@ ui:
label: Localização (opcional)
placeholder: "Cidade, País"
notification:
heading: Notificações
email: E-mail
heading: Email Notifications
turn_on: Turn on
inbox:
label: Notificações de email
label: Inbox notifications
description: Responda suas próprias perguntas, comentários, convites e muito mais.
all_new_question:
label: Todas as perguntas novas
@@ -1021,7 +1039,7 @@ ui:
answers: respostas
invite_to_answer:
title: Pessoas Perguntaram
desc: Convidar pessoas que você acha que deve saber a resposta.
desc: Select people who you think might know the answer.
invite: Convidar para responder
add: Adicionar pessoas
search: Procurar pessoas
@@ -1031,6 +1049,7 @@ ui:
asked: perguntado
update: Modificado
edit: modificado
commented: commented
Views: Visualizado
Follow: Seguir
Following: Seguindo
@@ -1048,10 +1067,12 @@ ui:
title: Respostas
score: Pontuação
newest: Mais recente
oldest: Oldest
btn_accept: Aceito
btn_accepted: Aceito
write_answer:
title: A sua Resposta
edit_answer: Edit my existing answer
btn_name: Publicação a sua resposta
add_another_answer: Adicionar outra resposta
confirm_title: Continuar a responder
@@ -1070,6 +1091,14 @@ ui:
confirm_btn: Reabrir
title: Reabrir esta postagem
content: Você tem certeza que deseja reabrir?
list:
confirm_btn: List
title: List this post
content: Are you sure you want to list?
unlist:
confirm_btn: Unlist
title: Unlist this post
content: Are you sure you want to unlist?
pin:
title: Fixe esta postagem
content: Tem certeza de que deseja fixar globalmente? Esta postagem aparecerá no topo de todas as listas de postagens.
@@ -1091,6 +1120,9 @@ ui:
save: Salvar
delete: Excluir
undelete: Undelete
list: List
unlist: Unlist
unlisted: Unlisted
login: Entrar
signup: Cadastrar-se
logout: Sair
@@ -1114,6 +1146,20 @@ ui:
close: Close
reopen: Reopen
ok: OK
light: Light
dark: Dark
system_setting: System setting
default: Default
reset: Reset
tag: Tag
post_lowercase: post
filter: Filter
ignore: Ignore
submit: Submit
normal: Normal
closed: Closed
deleted: Deleted
pending: Pending
search:
title: Procurar Resultados
keywords: Palavras-chave
@@ -1353,23 +1399,35 @@ ui:
dashboard:
title: Painel
welcome: Bem vindo ao Answer Administrador!
site_statistics: Estatísticas do Site
site_statistics: Site statistics
questions: "Perguntas:"
answers: "Respostas:"
comments: "Comentários:"
votes: "Votos:"
active_users: "Usuários ativos:"
users: "Users:"
flags: "Marcadores:"
site_health_status: Estatísticas da saúde do site
reviews: "Reviews:"
site_health: Site health
version: "Versão:"
https: "HTTPS:"
uploading_files: "Enviando arquivos:"
upload_folder: "Upload folder:"
run_mode: "Running mode:"
private: Private
public: Public
smtp: "SMTP:"
timezone: "Fuso horário:"
system_info: Informações do Sistema
system_info: System info
go_version: "Go version:"
database: "Database:"
database_size: "Database size:"
storage_used: "Armazenamento usado:"
uptime: "Tempo de atividade:"
answer_links: Links das Respostas
links: Links
plugins: Plugins
github: GitHub
blog: Blog
contact: Contact
forum: Forum
documents: Documentos
feedback: Opinião
support: Supporte
@@ -1384,6 +1442,8 @@ ui:
allowed: Permitido
enabled: Ativo
disabled: Disponível
writable: Writable
not_writable: Not writable
flags:
title: Marcadores
pending: Pendente
@@ -1470,9 +1530,7 @@ ui:
content: A suspended user can't log in.
questions:
page_title: Perguntas
normal: Normal
closed: Fechado
deleted: Removido
unlisted: Unlisted
post: Publicação
votes: Votos
answers: Respostas
@@ -1480,12 +1538,11 @@ ui:
status: Estado
action: Ação
change: Mudar
pending: Pending
filter:
placeholder: "Filtrar por título, question:id"
answers:
page_title: Respostas
normal: Normal
deleted: Removido
post: Publicação
votes: Votos
created: Criado
@@ -1518,6 +1575,9 @@ ui:
msg: E-mail par contato não pode ser vazio.
validate: E-mail par contato não é válido.
text: Endereço de e-mail do principal contato responsável por este site.
check_update:
label: Software updates
text: Automatically check for updates
interface:
page_title: Interface
language:
@@ -1594,6 +1654,10 @@ ui:
text: "Você pode adicionar termos de conteúdo de serviço aqui. Se você já tem um documento hospedado em outro lugar, forneça a URL completa aqui."
write:
page_title: Escrever
restrict_answer:
title: Restrict answer
label: Each user can only write one answer for each question
text: "They can use the edit link to refine and improve their existing answer, instead."
recommend_tags:
label: Recommend Marcadores
text: "Por favor input tag slug above, one tag per line."
@@ -1617,11 +1681,12 @@ ui:
themes:
label: Temas
text: Selecionar um tema existente.
color_scheme:
label: Color scheme
navbar_style:
label: Estilo da barra de navegação
text: Selecionar um tema existente.
label: Navbar style
primary_color:
label: Cor Primária
label: Primary color
text: Modifica as cores usadas por seus temas
css_and_html:
page_title: CSS e HTML
@@ -1660,6 +1725,10 @@ ui:
title: Privado
label: Login requirido
text: Somente usuários conectados podem acessar esta comunidade.
password_login:
title: Password login
label: Allow email and password login
text: "WARNING: If turn off, you may be unable to log in if you have not previously configured other login method."
installed_plugins:
title: Extensões instaladas
plugin_link: Extensões estendem e expandem a funcionalidade da Resposta. Você pode encontrar extensões no <1>Repositório de extensões do Answer</1>.
@@ -1723,6 +1792,22 @@ ui:
edit_answer: Editar resposta
edit_tag: Editar marcador
empty: Nenhuma tarefa de revisão restante.
approve_revision_tip: Do you approve this revision?
approve_flag_tip: Do you approve this flag?
approve_post_tip: Do you approve this post?
approve_user_tip: Do you approve this user?
suggest_edits: Suggested edits
flag_post: Flag post
flag_user: Flag user
queued_post: Queued post
queued_user: Queued user
filter_label: Type
reputation: reputation
flag_post_type: Flagged this post as {{ type }}.
flag_user_type: Flagged this user as {{ type }}.
edit_post: Edit post
list_post: List post
unlist_post: Unlist post
timeline:
undeleted: não removido
deleted: removido
@@ -1773,3 +1858,6 @@ ui:
post_hide_list: Esta postagem foi ocultada da lista.
post_show_list: Esta postagem foi exibida à lista.
post_reopen: Esta publicação foi re-aberta.
post_list: This post has been listed.
post_unlist: This post has been unlisted.
post_pending: Your post is awaiting review. This is a preview, it will be visible after it has been approved.
+1432 -952
View File
File diff suppressed because it is too large Load Diff
+947 -859
View File
File diff suppressed because it is too large Load Diff
+126 -38
View File
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
#The following fields are used for back-end
# The following fields are used for back-end
backend:
base:
success:
@@ -82,6 +82,9 @@ backend:
level_3:
description:
other: Level 3 (high reputation required for mature community)
level_custom:
description:
other: Custom Level
rank_question_add_label:
other: Ask question
rank_answer_add_label:
@@ -137,6 +140,9 @@ backend:
email_or_password_wrong_error:
other: E-mail a heslo sa nezhodujú.
error:
common:
invalid_url:
other: Invalid URL.
password:
space_invalid:
other: Password cannot contain spaces.
@@ -197,6 +203,8 @@ backend:
question:
already_deleted:
other: Tento príspevok bol odstránený.
under_review:
other: Your post is awaiting review. It will be visible after it has been approved.
not_found:
other: Otázka sa nenašla.
cannot_deleted:
@@ -267,6 +275,8 @@ backend:
other: Svoju rolu nemôžete zmeniť.
not_allowed_registration:
other: Currently the site is not open for registration.
not_allowed_login_via_password:
other: Currently the site is not allowed to login via password.
access_denied:
other: Access denied
page_access_denied:
@@ -480,7 +490,16 @@ backend:
other: accept
accepted:
other: accepted
#The following fields are used for interface presentation(Front-end)
edit:
other: edit
review:
queued_post:
other: Queued post
flagged_post:
other: Flagged post
suggested_post_edit:
other: Suggested edits
# The following fields are used for interface presentation(Front-end)
ui:
how_to_format:
title: Ako formátovať
@@ -520,6 +539,7 @@ ui:
http_404: HTTP chyba 404
http_50X: HTTP chyba 403
http_403: HTTP Error 403
logout: Log Out
notifications:
title: Oznámenia
inbox: Doručená pošta
@@ -598,7 +618,7 @@ ui:
msg:
empty: Názov súboru nemôže byť prázdny.
only_image: Povolené sú iba obrázkové súbory.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Popis
tab_url: URL obrázka
@@ -660,6 +680,8 @@ ui:
empty: Nemôže byť prázdny.
msg:
empty: Vyberte dôvod.
not_a_url: URL format is incorrect.
url_not_match: URL origin does not match the current website.
tag_modal:
title: Vytvorte novú značku
form:
@@ -678,6 +700,12 @@ ui:
character: URL slug obsahuje nepovolenú znakovú sadu.
desc:
label: Opis
revision:
label: Revision
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
btn_cancel: Zrušiť
btn_submit: Potvrdiť
btn_post: Post new tag
@@ -704,21 +732,7 @@ ui:
edit_tag:
title: Upraviť značku
default_reason: Upraviť značku
form:
fields:
revision:
label: Revízia
display_name:
label: Display name
slug_name:
label: URL slug
info: 'Musíte použiť znakovú sadu "a-z", "0-9", "+ # - ."'
desc:
label: Opis
edit_summary:
label: Edit summary
placeholder: >-
Stručne vysvetlite svoje zmeny (opravený pravopis, opravená gramatika, vylepšené formátovanie)
default_first_reason: Add tag
btn_save_edits: Uložiť úpravy
btn_cancel: Zrušiť
dates:
@@ -731,6 +745,8 @@ ui:
x_hours_ago: "pred {{count}}h"
hour: hodina
day: deň
hours: hours
days: days
comment:
btn_add_comment: Pridať komentár
reply_to: Odpovedať
@@ -740,7 +756,7 @@ ui:
btn_flag: Vlajka
btn_save_edits: Uložiť zmeny
btn_cancel: Zrušiť
show_more: Zobraziť viac komentárov
show_more: "{{count}} more comments"
tip_question: >-
Use comments to ask for more information or suggest improvements. Avoid answering questions in comments.
tip_answer: >-
@@ -749,6 +765,7 @@ ui:
edit_answer:
title: Uprav odpoveď
default_reason: Uprav odpoveď
default_first_reason: Add answer
form:
fields:
revision:
@@ -779,6 +796,7 @@ ui:
title: Pridať otázku
edit_title: Upraviť otázku
default_reason: Upraviť otázku
default_first_reason: Add question
similar_questions: Podobné otázky
form:
fields:
@@ -833,7 +851,7 @@ ui:
placeholder: Vyhľadávanie
footer:
build_on: >-
Postavené na <1> Answer </1> softvéri s otvoreným zdrojom, ktorý poháňa komunity otázok a odpovedí.<br />Vyrobené s láskou © {{cc}}.
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
upload_img:
name: Zmena
loading: načítavanie...
@@ -963,10 +981,10 @@ ui:
label: Poloha
placeholder: "Mesto, Krajina"
notification:
heading: Oznámenia
email: Email
heading: Email Notifications
turn_on: Turn on
inbox:
label: Email notifications
label: Inbox notifications
description: Answers to your questions, comments, invites, and more.
all_new_question:
label: All new questions
@@ -1021,7 +1039,7 @@ ui:
answers: odpovede
invite_to_answer:
title: People Asked
desc: Invite people who you think might know the answer.
desc: Select people who you think might know the answer.
invite: Invite to answer
add: Add people
search: Search people
@@ -1031,6 +1049,7 @@ ui:
asked: opýtané
update: Aktualizované
edit: upravené
commented: commented
Views: Videné
Follow: Sledovať
Following: Sledované
@@ -1048,10 +1067,12 @@ ui:
title: Odpovede
score: Skóre
newest: Najnovšie
oldest: Oldest
btn_accept: Súhlasiť
btn_accepted: Prijaté
write_answer:
title: Vaša odpoveď
edit_answer: Edit my existing answer
btn_name: Pošlite svoju odpoveď
add_another_answer: Pridajte ďalšiu odpoveď
confirm_title: Pokračovať v odpovedi
@@ -1070,6 +1091,14 @@ ui:
confirm_btn: Reopen
title: Znovu otvoriť tento príspevok
content: Ste si istý, že ho chcete znovu otvoriť?
list:
confirm_btn: List
title: List this post
content: Are you sure you want to list?
unlist:
confirm_btn: Unlist
title: Unlist this post
content: Are you sure you want to unlist?
pin:
title: Pin this post
content: Are you sure you wish to pinned globally? This post will appear at the top of all post lists.
@@ -1091,6 +1120,9 @@ ui:
save: Uložiť
delete: Vymazať
undelete: Undelete
list: List
unlist: Unlist
unlisted: Unlisted
login: Prihlásiť sa
signup: Registrovať sa
logout: Odhlásiť sa
@@ -1114,6 +1146,20 @@ ui:
close: Close
reopen: Reopen
ok: OK
light: Light
dark: Dark
system_setting: System setting
default: Default
reset: Reset
tag: Tag
post_lowercase: post
filter: Filter
ignore: Ignore
submit: Submit
normal: Normal
closed: Closed
deleted: Deleted
pending: Pending
search:
title: Výsledky vyhľadávania
keywords: Kľúčové slová
@@ -1353,23 +1399,35 @@ ui:
dashboard:
title: Nástenka
welcome: Vitajte v Administrátorovi odpovedí!
site_statistics: Štatistiky stránky
site_statistics: Site statistics
questions: "Otázky:"
answers: "Odpovede:"
comments: "Komentáre:"
votes: "Hlasy:"
active_users: "Aktívni používatelia:"
users: "Users:"
flags: "Vlajky:"
site_health_status: Site Health Status
reviews: "Reviews:"
site_health: Site health
version: "Verzia:"
https: "HTTPS:"
uploading_files: "Nahrávanie súborov:"
upload_folder: "Upload folder:"
run_mode: "Running mode:"
private: Private
public: Public
smtp: "SMTP:"
timezone: "Časové pásmo:"
system_info: Systémové informácie
system_info: System info
go_version: "Go version:"
database: "Database:"
database_size: "Database size:"
storage_used: "Použité úložisko:"
uptime: "Doba prevádzky:"
answer_links: Odkazy na odpovede
links: Links
plugins: Plugins
github: GitHub
blog: Blog
contact: Contact
forum: Forum
documents: Dokumenty
feedback: Spätná väzba
support: Podpora
@@ -1384,6 +1442,8 @@ ui:
allowed: Povolené
enabled: Povolené
disabled: Zablokované
writable: Writable
not_writable: Not writable
flags:
title: Vlajky
pending: Prebiehajúce
@@ -1470,9 +1530,7 @@ ui:
content: A suspended user can't log in.
questions:
page_title: Otázky
normal: Normalne
closed: Uzatvorené
deleted: Vymazané
unlisted: Unlisted
post: poslané
votes: Hlasy
answers: Odpovede
@@ -1480,12 +1538,11 @@ ui:
status: Stav
action: Akcia
change: Zmena
pending: Pending
filter:
placeholder: "Filter podľa názvu, otázka:id"
answers:
page_title: Odpovede
normal: Normalne
deleted: Vymazané
post: Poslané
votes: Hlasy
created: Vytvorené
@@ -1518,6 +1575,9 @@ ui:
msg: Kontaktný e-mail nemôže byť prázdny.
validate: Kontaktný e-mail je neplatný.
text: E-mailová adresa kontaktu zodpovedného za túto stránku.
check_update:
label: Software updates
text: Automatically check for updates
interface:
page_title: Rozhranie
language:
@@ -1594,6 +1654,10 @@ ui:
text: "Tu môžete pridať obsah zásad ochrany osobných údajov. Ak už máte dokument umiestnený inde, uveďte tu celú URL adresu."
write:
page_title: Písať
restrict_answer:
title: Restrict answer
label: Each user can only write one answer for each question
text: "They can use the edit link to refine and improve their existing answer, instead."
recommend_tags:
label: Recommend tags
text: "Vyššie zadajte tag slug, jednu značku na riadok."
@@ -1617,11 +1681,12 @@ ui:
themes:
label: Témy
text: Vyberte existujúcu tému.
color_scheme:
label: Color scheme
navbar_style:
label: Štýl navigačnej lišty
text: Vyberte existujúcu tému.
label: Navbar style
primary_color:
label: Primárna farba
label: Primary color
text: Upraviť farby používané vašími motívmi
css_and_html:
page_title: CSS a HTML
@@ -1660,6 +1725,10 @@ ui:
title: Súkromné
label: Vyžaduje sa prihlásenie
text: Do tejto komunity majú prístup iba prihlásení používatelia
password_login:
title: Password login
label: Allow email and password login
text: "WARNING: If turn off, you may be unable to log in if you have not previously configured other login method."
installed_plugins:
title: Installed Plugins
plugin_link: Plugins extend and expand the functionality of Answer. You may find plugins in the <1>Answer Plugin Repository</1>.
@@ -1723,6 +1792,22 @@ ui:
edit_answer: Upraviť odpoveď
edit_tag: Upraviť značku
empty: Nezostali žiadne úlohy kontroly.
approve_revision_tip: Do you approve this revision?
approve_flag_tip: Do you approve this flag?
approve_post_tip: Do you approve this post?
approve_user_tip: Do you approve this user?
suggest_edits: Suggested edits
flag_post: Flag post
flag_user: Flag user
queued_post: Queued post
queued_user: Queued user
filter_label: Type
reputation: reputation
flag_post_type: Flagged this post as {{ type }}.
flag_user_type: Flagged this user as {{ type }}.
edit_post: Edit post
list_post: List post
unlist_post: Unlist post
timeline:
undeleted: zrušené zmazanie
deleted: vymazané
@@ -1773,3 +1858,6 @@ ui:
post_hide_list: This post has been hidden from list.
post_show_list: This post has been shown to list.
post_reopen: This post has been reopened.
post_list: This post has been listed.
post_unlist: This post has been unlisted.
post_pending: Your post is awaiting review. This is a preview, it will be visible after it has been approved.
+3 -3
View File
@@ -355,7 +355,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description (optional)
tab_url: Image URL
@@ -428,7 +428,7 @@ ui:
range: Display name up to 35 characters.
slug_name:
label: URL Slug
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc: URL slug up to 35 characters.
msg:
empty: URL slug cannot be empty.
range: URL slug up to 35 characters.
@@ -466,7 +466,7 @@ ui:
label: Display Name
slug_name:
label: URL Slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
info: URL slug up to 35 characters.
desc:
label: Description
edit_summary:
+3 -3
View File
@@ -360,7 +360,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description (optional)
tab_url: Image URL
@@ -433,7 +433,7 @@ ui:
range: Display name up to 35 characters.
slug_name:
label: URL Slug
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc: URL slug up to 35 characters.
msg:
empty: URL slug cannot be empty.
range: URL slug up to 35 characters.
@@ -471,7 +471,7 @@ ui:
label: Display Name
slug_name:
label: URL Slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
info: URL slug up to 35 characters.
desc:
label: Description
edit_summary:
+861 -381
View File
File diff suppressed because it is too large Load Diff
+1863
View File
File diff suppressed because it is too large Load Diff
+132 -44
View File
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
#The following fields are used for back-end
# The following fields are used for back-end
backend:
base:
success:
@@ -34,15 +34,15 @@ backend:
other: Duplicate submission.
action:
report:
other: Flag
other: Rapor Et
edit:
other: Edit
delete:
other: Delete
other: Sil
close:
other: Close
other: Kapat
reopen:
other: Reopen
other: Yeniden Aç
forbidden_error:
other: Forbidden.
pin:
@@ -52,7 +52,7 @@ backend:
unpin:
other: Unpin
show:
other: List
other: Listele
invite_someone_to_answer:
other: Edit
undelete:
@@ -82,10 +82,13 @@ backend:
level_3:
description:
other: Level 3 (high reputation required for mature community)
level_custom:
description:
other: Custom Level
rank_question_add_label:
other: Ask question
rank_answer_add_label:
other: Write answer
other: Cevapla
rank_comment_add_label:
other: Write comment
rank_report_add_label:
@@ -137,6 +140,9 @@ backend:
email_or_password_wrong_error:
other: E-Posta ve parola eşleşmiyor.
error:
common:
invalid_url:
other: Invalid URL.
password:
space_invalid:
other: Password cannot contain spaces.
@@ -197,6 +203,8 @@ backend:
question:
already_deleted:
other: This post has been deleted.
under_review:
other: Your post is awaiting review. It will be visible after it has been approved.
not_found:
other: Soru bulunamadı.
cannot_deleted:
@@ -267,6 +275,8 @@ backend:
other: Kendi rolünüzü değiştiremezsiniz.
not_allowed_registration:
other: Currently the site is not open for registration.
not_allowed_login_via_password:
other: Currently the site is not allowed to login via password.
access_denied:
other: Access denied
page_access_denied:
@@ -480,7 +490,16 @@ backend:
other: accept
accepted:
other: accepted
#The following fields are used for interface presentation(Front-end)
edit:
other: edit
review:
queued_post:
other: Queued post
flagged_post:
other: Flagged post
suggested_post_edit:
other: Suggested edits
# The following fields are used for interface presentation(Front-end)
ui:
how_to_format:
title: How to Format
@@ -520,6 +539,7 @@ ui:
http_404: HTTP Error 404
http_50X: HTTP Error 500
http_403: HTTP Error 403
logout: Log Out
notifications:
title: Bildirimler
inbox: Gelen Kutusu
@@ -598,7 +618,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description
tab_url: Image URL
@@ -660,6 +680,8 @@ ui:
empty: Boş olamaz.
msg:
empty: Lütfen bir sebep seçin.
not_a_url: URL format is incorrect.
url_not_match: URL origin does not match the current website.
tag_modal:
title: Yeni etiket oluştur
form:
@@ -678,6 +700,12 @@ ui:
character: URL slug contains unallowed character set.
desc:
label: Description
revision:
label: Revision
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
btn_cancel: İptal Et
btn_submit: Gönder
btn_post: Post new tag
@@ -704,21 +732,7 @@ ui:
edit_tag:
title: Etiketi Düzenle
default_reason: Etiketi düzenle
form:
fields:
revision:
label: Revizyon
display_name:
label: Display name
slug_name:
label: URL slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc:
label: Açıklama
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
default_first_reason: Add tag
btn_save_edits: Düzenlemeleri kaydet
btn_cancel: Cancel
dates:
@@ -731,6 +745,8 @@ ui:
x_hours_ago: "{{count}}h ago"
hour: hour
day: day
hours: hours
days: days
comment:
btn_add_comment: Add comment
reply_to: Reply to
@@ -740,7 +756,7 @@ ui:
btn_flag: Flag
btn_save_edits: Save edits
btn_cancel: Cancel
show_more: Show more comments
show_more: "{{count}} more comments"
tip_question: >-
Use comments to ask for more information or suggest improvements. Avoid answering questions in comments.
tip_answer: >-
@@ -749,6 +765,7 @@ ui:
edit_answer:
title: Edit Answer
default_reason: Edit answer
default_first_reason: Add answer
form:
fields:
revision:
@@ -779,6 +796,7 @@ ui:
title: Add Question
edit_title: Edit Question
default_reason: Edit question
default_first_reason: Add question
similar_questions: Similar questions
form:
fields:
@@ -833,7 +851,7 @@ ui:
placeholder: Search
footer:
build_on: >-
Built on <1> Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
upload_img:
name: Change
loading: loading...
@@ -963,10 +981,10 @@ ui:
label: Location
placeholder: "City, Country"
notification:
heading: Notifications
email: Email
heading: Email Notifications
turn_on: Turn on
inbox:
label: Email notifications
label: Inbox notifications
description: Answers to your questions, comments, invites, and more.
all_new_question:
label: All new questions
@@ -1021,7 +1039,7 @@ ui:
answers: answers
invite_to_answer:
title: People Asked
desc: Invite people who you think might know the answer.
desc: Select people who you think might know the answer.
invite: Invite to answer
add: Add people
search: Search people
@@ -1031,6 +1049,7 @@ ui:
asked: asked
update: Modified
edit: edited
commented: commented
Views: Viewed
Follow: Follow
Following: Following
@@ -1048,10 +1067,12 @@ ui:
title: Answers
score: Score
newest: Newest
oldest: Oldest
btn_accept: Accept
btn_accepted: Accepted
write_answer:
title: Your Answer
edit_answer: Edit my existing answer
btn_name: Post your answer
add_another_answer: Add another answer
confirm_title: Continue to answer
@@ -1070,6 +1091,14 @@ ui:
confirm_btn: Reopen
title: Reopen this post
content: Are you sure you want to reopen?
list:
confirm_btn: List
title: List this post
content: Are you sure you want to list?
unlist:
confirm_btn: Unlist
title: Unlist this post
content: Are you sure you want to unlist?
pin:
title: Pin this post
content: Are you sure you wish to pinned globally? This post will appear at the top of all post lists.
@@ -1091,6 +1120,9 @@ ui:
save: Save
delete: Delete
undelete: Undelete
list: List
unlist: Unlist
unlisted: Unlisted
login: Log in
signup: Sign up
logout: Log out
@@ -1114,6 +1146,20 @@ ui:
close: Close
reopen: Reopen
ok: OK
light: Light
dark: Dark
system_setting: System setting
default: Default
reset: Reset
tag: Tag
post_lowercase: post
filter: Filter
ignore: Ignore
submit: Submit
normal: Normal
closed: Closed
deleted: Deleted
pending: Pending
search:
title: Search Results
keywords: Keywords
@@ -1353,23 +1399,35 @@ ui:
dashboard:
title: Dashboard
welcome: Welcome to Answer Admin!
site_statistics: Site Statistics
site_statistics: Site statistics
questions: "Questions:"
answers: "Answers:"
comments: "Comments:"
votes: "Votes:"
active_users: "Active users:"
users: "Users:"
flags: "Flags:"
site_health_status: Site Health Status
reviews: "Reviews:"
site_health: Site health
version: "Version:"
https: "HTTPS:"
uploading_files: "Uploading files:"
upload_folder: "Upload folder:"
run_mode: "Running mode:"
private: Private
public: Public
smtp: "SMTP:"
timezone: "Timezone:"
system_info: System Info
system_info: System info
go_version: "Go version:"
database: "Database:"
database_size: "Database size:"
storage_used: "Storage used:"
uptime: "Uptime:"
answer_links: Answer Links
links: Links
plugins: Plugins
github: GitHub
blog: Blog
contact: Contact
forum: Forum
documents: Documents
feedback: Feedback
support: Support
@@ -1384,6 +1442,8 @@ ui:
allowed: Allowed
enabled: Enabled
disabled: Disabled
writable: Writable
not_writable: Not writable
flags:
title: Flags
pending: Pending
@@ -1470,9 +1530,7 @@ ui:
content: A suspended user can't log in.
questions:
page_title: Questions
normal: Normal
closed: Closed
deleted: Deleted
unlisted: Unlisted
post: Post
votes: Votes
answers: Answers
@@ -1480,12 +1538,11 @@ ui:
status: Status
action: Action
change: Change
pending: Pending
filter:
placeholder: "Filter by title, question:id"
answers:
page_title: Answers
normal: Normal
deleted: Deleted
post: Post
votes: Votes
created: Created
@@ -1518,6 +1575,9 @@ ui:
msg: Contact email cannot be empty.
validate: Contact email is not valid.
text: Email address of key contact responsible for this site.
check_update:
label: Software updates
text: Automatically check for updates
interface:
page_title: Interface
language:
@@ -1594,6 +1654,10 @@ ui:
text: "You can add privacy policy content here. If you already have a document hosted elsewhere, provide the full URL here."
write:
page_title: Write
restrict_answer:
title: Restrict answer
label: Each user can only write one answer for each question
text: "They can use the edit link to refine and improve their existing answer, instead."
recommend_tags:
label: Recommend tags
text: "Please input tag slug above, one tag per line."
@@ -1617,11 +1681,12 @@ ui:
themes:
label: Themes
text: Select an existing theme.
color_scheme:
label: Color scheme
navbar_style:
label: Navbar Style
text: Select an existing theme.
label: Navbar style
primary_color:
label: Primary Color
label: Primary color
text: Modify the colors used by your themes
css_and_html:
page_title: CSS and HTML
@@ -1660,6 +1725,10 @@ ui:
title: Private
label: Login required
text: Only logged in users can access this community.
password_login:
title: Password login
label: Allow email and password login
text: "WARNING: If turn off, you may be unable to log in if you have not previously configured other login method."
installed_plugins:
title: Installed Plugins
plugin_link: Plugins extend and expand the functionality of Answer. You may find plugins in the <1>Answer Plugin Repository</1>.
@@ -1723,6 +1792,22 @@ ui:
edit_answer: Edit answer
edit_tag: Edit tag
empty: No review tasks left.
approve_revision_tip: Do you approve this revision?
approve_flag_tip: Do you approve this flag?
approve_post_tip: Do you approve this post?
approve_user_tip: Do you approve this user?
suggest_edits: Suggested edits
flag_post: Flag post
flag_user: Flag user
queued_post: Queued post
queued_user: Queued user
filter_label: Type
reputation: reputation
flag_post_type: Flagged this post as {{ type }}.
flag_user_type: Flagged this user as {{ type }}.
edit_post: Edit post
list_post: List post
unlist_post: Unlist post
timeline:
undeleted: undeleted
deleted: deleted
@@ -1773,3 +1858,6 @@ ui:
post_hide_list: This post has been hidden from list.
post_show_list: This post has been shown to list.
post_reopen: This post has been reopened.
post_list: This post has been listed.
post_unlist: This post has been unlisted.
post_pending: Your post is awaiting review. This is a preview, it will be visible after it has been approved.
+729 -641
View File
File diff suppressed because it is too large Load Diff
+126 -38
View File
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
#The following fields are used for back-end
# The following fields are used for back-end
backend:
base:
success:
@@ -82,6 +82,9 @@ backend:
level_3:
description:
other: Level 3 (high reputation required for mature community)
level_custom:
description:
other: Custom Level
rank_question_add_label:
other: Đặt câu hỏi
rank_answer_add_label:
@@ -137,6 +140,9 @@ backend:
email_or_password_wrong_error:
other: Email and password do not match.
error:
common:
invalid_url:
other: Invalid URL.
password:
space_invalid:
other: Password cannot contain spaces.
@@ -197,6 +203,8 @@ backend:
question:
already_deleted:
other: This post has been deleted.
under_review:
other: Your post is awaiting review. It will be visible after it has been approved.
not_found:
other: Không tìm thấy câu hỏi.
cannot_deleted:
@@ -267,6 +275,8 @@ backend:
other: You cannot modify your role.
not_allowed_registration:
other: Currently the site is not open for registration.
not_allowed_login_via_password:
other: Currently the site is not allowed to login via password.
access_denied:
other: Truy cập bị từ chối
page_access_denied:
@@ -480,7 +490,16 @@ backend:
other: accept
accepted:
other: accepted
#The following fields are used for interface presentation(Front-end)
edit:
other: edit
review:
queued_post:
other: Queued post
flagged_post:
other: Flagged post
suggested_post_edit:
other: Suggested edits
# The following fields are used for interface presentation(Front-end)
ui:
how_to_format:
title: How to Format
@@ -520,6 +539,7 @@ ui:
http_404: HTTP Error 404
http_50X: HTTP Error 500
http_403: HTTP Error 403
logout: Log Out
notifications:
title: Notifications
inbox: Inbox
@@ -598,7 +618,7 @@ ui:
msg:
empty: File cannot be empty.
only_image: Only image files are allowed.
max_size: File size cannot exceed 4MB.
max_size: File size cannot exceed 4 MB.
desc:
label: Description
tab_url: Image URL
@@ -660,6 +680,8 @@ ui:
empty: Cannot be empty.
msg:
empty: Please select a reason.
not_a_url: URL format is incorrect.
url_not_match: URL origin does not match the current website.
tag_modal:
title: Create new tag
form:
@@ -678,6 +700,12 @@ ui:
character: URL slug contains unallowed character set.
desc:
label: Description
revision:
label: Revision
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
btn_cancel: Cancel
btn_submit: Submit
btn_post: Post new tag
@@ -704,21 +732,7 @@ ui:
edit_tag:
title: Edit Tag
default_reason: Edit tag
form:
fields:
revision:
label: Revision
display_name:
label: Display name
slug_name:
label: URL slug
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
desc:
label: Description
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
default_first_reason: Add tag
btn_save_edits: Save edits
btn_cancel: Cancel
dates:
@@ -731,6 +745,8 @@ ui:
x_hours_ago: "{{count}}h ago"
hour: hour
day: day
hours: hours
days: days
comment:
btn_add_comment: Add comment
reply_to: Reply to
@@ -740,7 +756,7 @@ ui:
btn_flag: Flag
btn_save_edits: Save edits
btn_cancel: Cancel
show_more: Show more comments
show_more: "{{count}} more comments"
tip_question: >-
Use comments to ask for more information or suggest improvements. Avoid answering questions in comments.
tip_answer: >-
@@ -749,6 +765,7 @@ ui:
edit_answer:
title: Edit Answer
default_reason: Edit answer
default_first_reason: Add answer
form:
fields:
revision:
@@ -779,6 +796,7 @@ ui:
title: Add Question
edit_title: Edit Question
default_reason: Edit question
default_first_reason: Add question
similar_questions: Similar questions
form:
fields:
@@ -833,7 +851,7 @@ ui:
placeholder: Search
footer:
build_on: >-
Built on <1> Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
upload_img:
name: Change
loading: loading...
@@ -963,10 +981,10 @@ ui:
label: Location
placeholder: "City, Country"
notification:
heading: Notifications
email: Email
heading: Email Notifications
turn_on: Turn on
inbox:
label: Email notifications
label: Inbox notifications
description: Answers to your questions, comments, invites, and more.
all_new_question:
label: All new questions
@@ -1021,7 +1039,7 @@ ui:
answers: answers
invite_to_answer:
title: People Asked
desc: Invite people who you think might know the answer.
desc: Select people who you think might know the answer.
invite: Invite to answer
add: Add people
search: Search people
@@ -1031,6 +1049,7 @@ ui:
asked: asked
update: Modified
edit: edited
commented: commented
Views: Viewed
Follow: Follow
Following: Following
@@ -1048,10 +1067,12 @@ ui:
title: Answers
score: Score
newest: Newest
oldest: Oldest
btn_accept: Accept
btn_accepted: Accepted
write_answer:
title: Your Answer
edit_answer: Edit my existing answer
btn_name: Post your answer
add_another_answer: Add another answer
confirm_title: Continue to answer
@@ -1070,6 +1091,14 @@ ui:
confirm_btn: Reopen
title: Reopen this post
content: Are you sure you want to reopen?
list:
confirm_btn: List
title: List this post
content: Are you sure you want to list?
unlist:
confirm_btn: Unlist
title: Unlist this post
content: Are you sure you want to unlist?
pin:
title: Pin this post
content: Are you sure you wish to pinned globally? This post will appear at the top of all post lists.
@@ -1091,6 +1120,9 @@ ui:
save: Save
delete: Delete
undelete: Undelete
list: List
unlist: Unlist
unlisted: Unlisted
login: Log in
signup: Sign up
logout: Log out
@@ -1114,6 +1146,20 @@ ui:
close: Close
reopen: Reopen
ok: OK
light: Light
dark: Dark
system_setting: System setting
default: Default
reset: Reset
tag: Tag
post_lowercase: post
filter: Filter
ignore: Ignore
submit: Submit
normal: Normal
closed: Closed
deleted: Deleted
pending: Pending
search:
title: Search Results
keywords: Keywords
@@ -1353,23 +1399,35 @@ ui:
dashboard:
title: Dashboard
welcome: Welcome to Answer Admin!
site_statistics: Site Statistics
site_statistics: Site statistics
questions: "Questions:"
answers: "Answers:"
comments: "Comments:"
votes: "Votes:"
active_users: "Active users:"
users: "Users:"
flags: "Flags:"
site_health_status: Site Health Status
reviews: "Reviews:"
site_health: Site health
version: "Version:"
https: "HTTPS:"
uploading_files: "Uploading files:"
upload_folder: "Upload folder:"
run_mode: "Running mode:"
private: Private
public: Public
smtp: "SMTP:"
timezone: "Timezone:"
system_info: System Info
system_info: System info
go_version: "Go version:"
database: "Database:"
database_size: "Database size:"
storage_used: "Storage used:"
uptime: "Uptime:"
answer_links: Answer Links
links: Links
plugins: Plugins
github: GitHub
blog: Blog
contact: Contact
forum: Forum
documents: Documents
feedback: Feedback
support: Support
@@ -1384,6 +1442,8 @@ ui:
allowed: Allowed
enabled: Enabled
disabled: Disabled
writable: Writable
not_writable: Not writable
flags:
title: Flags
pending: Pending
@@ -1470,9 +1530,7 @@ ui:
content: A suspended user can't log in.
questions:
page_title: Questions
normal: Normal
closed: Closed
deleted: Deleted
unlisted: Unlisted
post: Post
votes: Votes
answers: Answers
@@ -1480,12 +1538,11 @@ ui:
status: Status
action: Action
change: Change
pending: Pending
filter:
placeholder: "Filter by title, question:id"
answers:
page_title: Answers
normal: Normal
deleted: Deleted
post: Post
votes: Votes
created: Created
@@ -1518,6 +1575,9 @@ ui:
msg: Contact email cannot be empty.
validate: Contact email is not valid.
text: Email address of key contact responsible for this site.
check_update:
label: Software updates
text: Automatically check for updates
interface:
page_title: Interface
language:
@@ -1594,6 +1654,10 @@ ui:
text: "You can add privacy policy content here. If you already have a document hosted elsewhere, provide the full URL here."
write:
page_title: Write
restrict_answer:
title: Restrict answer
label: Each user can only write one answer for each question
text: "They can use the edit link to refine and improve their existing answer, instead."
recommend_tags:
label: Recommend tags
text: "Please input tag slug above, one tag per line."
@@ -1617,11 +1681,12 @@ ui:
themes:
label: Themes
text: Select an existing theme.
color_scheme:
label: Color scheme
navbar_style:
label: Navbar Style
text: Select an existing theme.
label: Navbar style
primary_color:
label: Primary Color
label: Primary color
text: Modify the colors used by your themes
css_and_html:
page_title: CSS and HTML
@@ -1660,6 +1725,10 @@ ui:
title: Private
label: Login required
text: Only logged in users can access this community.
password_login:
title: Password login
label: Allow email and password login
text: "WARNING: If turn off, you may be unable to log in if you have not previously configured other login method."
installed_plugins:
title: Installed Plugins
plugin_link: Plugins extend and expand the functionality of Answer. You may find plugins in the <1>Answer Plugin Repository</1>.
@@ -1723,6 +1792,22 @@ ui:
edit_answer: Edit answer
edit_tag: Edit tag
empty: No review tasks left.
approve_revision_tip: Do you approve this revision?
approve_flag_tip: Do you approve this flag?
approve_post_tip: Do you approve this post?
approve_user_tip: Do you approve this user?
suggest_edits: Suggested edits
flag_post: Flag post
flag_user: Flag user
queued_post: Queued post
queued_user: Queued user
filter_label: Type
reputation: reputation
flag_post_type: Flagged this post as {{ type }}.
flag_user_type: Flagged this user as {{ type }}.
edit_post: Edit post
list_post: List post
unlist_post: Unlist post
timeline:
undeleted: undeleted
deleted: deleted
@@ -1773,3 +1858,6 @@ ui:
post_hide_list: This post has been hidden from list.
post_show_list: This post has been shown to list.
post_reopen: This post has been reopened.
post_list: This post has been listed.
post_unlist: This post has been unlisted.
post_pending: Your post is awaiting review. This is a preview, it will be visible after it has been approved.
+281 -193
View File
File diff suppressed because it is too large Load Diff
+120 -32
View File
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
#The following fields are used for back-end
# The following fields are used for back-end
backend:
base:
success:
@@ -82,6 +82,9 @@ backend:
level_3:
description:
other: Level 3 (high reputation required for mature community)
level_custom:
description:
other: Custom Level
rank_question_add_label:
other: Ask question
rank_answer_add_label:
@@ -137,6 +140,9 @@ backend:
email_or_password_wrong_error:
other: 電郵和密碼不匹配。
error:
common:
invalid_url:
other: Invalid URL.
password:
space_invalid:
other: Password cannot contain spaces.
@@ -197,6 +203,8 @@ backend:
question:
already_deleted:
other: This post has been deleted.
under_review:
other: Your post is awaiting review. It will be visible after it has been approved.
not_found:
other: 找不到問題。
cannot_deleted:
@@ -267,6 +275,8 @@ backend:
other: 您不能修改自己的角色。
not_allowed_registration:
other: Currently the site is not open for registration.
not_allowed_login_via_password:
other: Currently the site is not allowed to login via password.
access_denied:
other: Access denied
page_access_denied:
@@ -480,7 +490,16 @@ backend:
other: accept
accepted:
other: accepted
#The following fields are used for interface presentation(Front-end)
edit:
other: edit
review:
queued_post:
other: Queued post
flagged_post:
other: Flagged post
suggested_post_edit:
other: Suggested edits
# The following fields are used for interface presentation(Front-end)
ui:
how_to_format:
title: 如何設定文本格式
@@ -520,6 +539,7 @@ ui:
http_404: HTTP 錯誤 404
http_50X: HTTP 錯誤 500
http_403: HTTP 錯誤 403
logout: Log Out
notifications:
title: 通知
inbox: 收件夾
@@ -660,6 +680,8 @@ ui:
empty: 不能為空
msg:
empty: 請選擇一個原因。
not_a_url: URL format is incorrect.
url_not_match: URL origin does not match the current website.
tag_modal:
title: 創建新標籤
form:
@@ -678,6 +700,12 @@ ui:
character: URL 固定連結包含非法字元。
desc:
label: 描述
revision:
label: Revision
edit_summary:
label: Edit summary
placeholder: >-
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
btn_cancel: 取消
btn_submit: 提交
btn_post: Post new tag
@@ -704,21 +732,7 @@ ui:
edit_tag:
title: 編輯標籤
default_reason: 編輯標籤
form:
fields:
revision:
label: 編輯歷史
display_name:
label: Display name
slug_name:
label: URL slug
info: '必須由 "a-z", "0-9", "+ # - ." 組成'
desc:
label: 描述
edit_summary:
label: Edit summary
placeholder: >-
簡單描述更改原因 (錯別字、文字表達、格式等等)
default_first_reason: Add tag
btn_save_edits: 儲存更改
btn_cancel: 取消
dates:
@@ -731,6 +745,8 @@ ui:
x_hours_ago: "{{count}} 小時前"
hour: 小時
day:
hours: hours
days: days
comment:
btn_add_comment: 添加評論
reply_to: 回復
@@ -740,7 +756,7 @@ ui:
btn_flag: 舉報
btn_save_edits: 保存
btn_cancel: 取消
show_more: 顯示更多評論
show_more: "{{count}}條剩餘評論"
tip_question: >-
通过評論询问更多问题或提出改進建議。避免在評論中回答問題。
tip_answer: >-
@@ -749,6 +765,7 @@ ui:
edit_answer:
title: 編輯回答
default_reason: 編輯回答
default_first_reason: Add answer
form:
fields:
revision:
@@ -779,6 +796,7 @@ ui:
title: 發問
edit_title: 編輯問題
default_reason: 編輯問題
default_first_reason: Add question
similar_questions: 相似的問題
form:
fields:
@@ -833,7 +851,7 @@ ui:
placeholder: 搜尋
footer:
build_on: >-
基於<1>Answer</1>--為問答社群提供動力的開源軟體。<br />Made with love © {{cc}}.
Powered by <1> Apache Answer </1>- the open-source software that powers Q&A communities.<br />Made with love © {{cc}}.
upload_img:
name: 更改
loading: 讀取中...
@@ -964,7 +982,7 @@ ui:
placeholder: "城市, 國家"
notification:
heading: 通知
email: Email
turn_on: Turn on
inbox:
label: Email notifications
description: Answers to your questions, comments, invites, and more.
@@ -1031,6 +1049,7 @@ ui:
asked: 提問於
update: 修改於
edit: 最後編輯於
commented: commented
Views: 閱讀次數
Follow: 關注
Following: 已關注
@@ -1048,10 +1067,12 @@ ui:
title: 個回答
score: 評分
newest: 最新
oldest: Oldest
btn_accept: 採納
btn_accepted: 已被採納
write_answer:
title: 你的回答
edit_answer: Edit my existing answer
btn_name: 提交你的回答
add_another_answer: 添加另一個答案
confirm_title: 繼續回答
@@ -1070,6 +1091,14 @@ ui:
confirm_btn: Reopen
title: 重新打開這個貼文
content: 確定要重新打開嗎?
list:
confirm_btn: List
title: List this post
content: Are you sure you want to list?
unlist:
confirm_btn: Unlist
title: Unlist this post
content: Are you sure you want to unlist?
pin:
title: Pin this post
content: Are you sure you wish to pinned globally? This post will appear at the top of all post lists.
@@ -1091,6 +1120,9 @@ ui:
save: 儲存
delete: 刪除
undelete: Undelete
list: List
unlist: Unlist
unlisted: Unlisted
login: 登入
signup: 註冊
logout: 登出
@@ -1114,6 +1146,20 @@ ui:
close: Close
reopen: Reopen
ok: OK
light: Light
dark: Dark
system_setting: System setting
default: Default
reset: Reset
tag: Tag
post_lowercase: post
filter: Filter
ignore: Ignore
submit: Submit
normal: Normal
closed: Closed
deleted: Deleted
pending: Pending
search:
title: 搜尋結果
keywords: 關鍵詞
@@ -1353,23 +1399,35 @@ ui:
dashboard:
title: 後台管理
welcome: 歡迎來到 Answer 後台管理!
site_statistics: 站點統計
site_statistics: Site statistics
questions: "問題:"
answers: "回答:"
comments: "評論:"
votes: "投票:"
active_users: "活躍用戶:"
users: "Users:"
flags: "檢舉:"
site_health_status: '健康狀態:'
reviews: "Reviews:"
site_health: Site health
version: "版本"
https: "HTTPS:"
uploading_files: "上傳文件:"
upload_folder: "Upload folder:"
run_mode: "Running mode:"
private: Private
public: Public
smtp: "SMTP:"
timezone: "時區:"
system_info: 系統資訊
system_info: System info
go_version: "Go version:"
database: "Database:"
database_size: "Database size:"
storage_used: "已用儲存空間:"
uptime: "運行時間:"
answer_links: 回答連結
links: Links
plugins: Plugins
github: GitHub
blog: Blog
contact: Contact
forum: Forum
documents: 文件
feedback: 用戶反饋
support: 支持
@@ -1384,6 +1442,8 @@ ui:
allowed: 允許
enabled: 已啟用
disabled: 停用
writable: Writable
not_writable: Not writable
flags:
title: 檢舉
pending: 等待處理
@@ -1470,9 +1530,7 @@ ui:
content: A suspended user can't log in.
questions:
page_title: 問題
normal: 正常
closed: 已關閉
deleted: 已刪除
unlisted: Unlisted
post: 標題
votes: 得票數
answers: 回答
@@ -1480,12 +1538,11 @@ ui:
status: 狀態
action: 操作
change: 更改
pending: Pending
filter:
placeholder: "按標題過濾,問題:id"
answers:
page_title: 回答
normal: 正常
deleted: 已刪除
post: 發布
votes: 得票數
created: 創建於
@@ -1518,6 +1575,9 @@ ui:
msg: 聯絡人信箱不能為空。
validate: 聯絡人信箱無效。
text: 負責本網站的主要聯絡人的電子郵件信箱。
check_update:
label: Software updates
text: Automatically check for updates
interface:
page_title: 介面
language:
@@ -1594,6 +1654,10 @@ ui:
text: "您可以在此加入隱私政策內容。如果您已經在別處托管了文檔,請在這裡提供完整的URL。"
write:
page_title: 編輯
restrict_answer:
title: Restrict answer
label: Each user can only write one answer for each question
text: "They can use the edit link to refine and improve their existing answer, instead."
recommend_tags:
label: Recommend tags
text: "請在上方輸入標籤固定連結,每行一個標籤。"
@@ -1617,9 +1681,10 @@ ui:
themes:
label: 主題
text: 選擇一個現有主題。
color_scheme:
label: Color scheme
navbar_style:
label: 導航欄樣式
text: 選擇一個現有主題。
primary_color:
label: 主色調
text: 修改您主題使用的顏色
@@ -1660,6 +1725,10 @@ ui:
title: 非公開的
label: 需要登入
text: 只有登入使用者才能訪問這個社群。
password_login:
title: Password login
label: Allow email and password login
text: "WARNING: If turn off, you may be unable to log in if you have not previously configured other login method."
installed_plugins:
title: Installed Plugins
plugin_link: Plugins extend and expand the functionality of Answer. You may find plugins in the <1>Answer Plugin Repository</1>.
@@ -1723,6 +1792,22 @@ ui:
edit_answer: 編輯回答
edit_tag: 編輯標籤
empty: 沒有剩餘的審核任務。
approve_revision_tip: Do you approve this revision?
approve_flag_tip: Do you approve this flag?
approve_post_tip: Do you approve this post?
approve_user_tip: Do you approve this user?
suggest_edits: Suggested edits
flag_post: Flag post
flag_user: Flag user
queued_post: Queued post
queued_user: Queued user
filter_label: Type
reputation: reputation
flag_post_type: Flagged this post as {{ type }}.
flag_user_type: Flagged this user as {{ type }}.
edit_post: Edit post
list_post: List post
unlist_post: Unlist post
timeline:
undeleted: 未刪除的
deleted: 刪除
@@ -1773,3 +1858,6 @@ ui:
post_hide_list: This post has been hidden from list.
post_show_list: This post has been shown to list.
post_reopen: This post has been reopened.
post_list: This post has been listed.
post_unlist: This post has been unlisted.
post_pending: Your post is awaiting review. This is a preview, it will be visible after it has been approved.
+3 -2
View File
@@ -25,6 +25,7 @@ const (
)
var (
Version string = ""
Revision string = ""
Version = ""
Revision = ""
GoVersion = ""
)
+1 -1
View File
@@ -24,7 +24,7 @@ import "github.com/apache/incubator-answer/internal/base/reason"
type Privilege struct {
Key string `json:"key"`
Label string `json:"label"`
Value int `json:"value"`
Value int `validate:"gte=1" json:"value"`
}
const (
+42
View File
@@ -0,0 +1,42 @@
/*
* 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 (
ReasonSpam = "reason.spam"
ReasonRudeOrAbusive = "reason.rude_or_abusive"
ReasonSomething = "reason.something"
ReasonADuplicate = "reason.a_duplicate"
ReasonNotAAnswer = "reason.not_a_answer"
ReasonNoLongerNeeded = "reason.no_longer_needed"
ReasonCommunitySpecific = "reason.community_specific"
ReasonNotClarity = "reason.not_clarity"
ReasonNormal = "reason.normal"
ReasonNormalUser = "reason.normal.user"
ReasonClosed = "reason.closed"
ReasonDeleted = "reason.deleted"
ReasonDeletedUser = "reason.deleted.user"
ReasonSuspended = "reason.suspended"
ReasonInactive = "reason.inactive"
ReasonLooksOk = "reason.looks_ok"
ReasonNeedsEdit = "reason.needs_edit"
ReasonNeedsClose = "reason.needs_close"
ReasonNeedsDelete = "reason.needs_delete"
)
+44
View File
@@ -0,0 +1,44 @@
/*
* 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
type ReviewingType string
const (
QueuedPost ReviewingType = "queued_post"
QueuedUser ReviewingType = "queued_user"
FlaggedPost ReviewingType = "flagged_post"
FlaggedUser ReviewingType = "flagged_user"
SuggestedPostEdit ReviewingType = "suggested_post_edit"
)
const (
ReportOperationEditPost = "edit_post"
ReportOperationClosePost = "close_post"
ReportOperationDeletePost = "delete_post"
ReportOperationUnlistPost = "unlist_post"
ReportOperationIgnoreReport = "ignore_report"
)
const (
ReviewQueuedPostLabel = "review.queued_post"
ReviewFlaggedPostLabel = "review.flagged_post"
ReviewSuggestedPostEditLabel = "review.suggested_post_edit"
)
+7
View File
@@ -37,3 +37,10 @@ const (
// PermalinkQuestionIDByShortID /questions/11
PermalinkQuestionIDByShortID
)
const (
ColorSchemeDefault = "default"
ColorSchemeLight = "light"
ColorSchemeDark = "dark"
ColorSchemeSystem = "system"
)
+3 -3
View File
@@ -23,7 +23,7 @@ import (
"context"
"fmt"
"github.com/apache/incubator-answer/internal/service"
"github.com/apache/incubator-answer/internal/service/content"
"github.com/apache/incubator-answer/internal/service/siteinfo_common"
"github.com/robfig/cron/v3"
"github.com/segmentfault/pacman/log"
@@ -32,13 +32,13 @@ import (
// ScheduledTaskManager scheduled task manager
type ScheduledTaskManager struct {
siteInfoService siteinfo_common.SiteInfoCommonService
questionService *service.QuestionService
questionService *content.QuestionService
}
// NewScheduledTaskManager new scheduled task manager
func NewScheduledTaskManager(
siteInfoService siteinfo_common.SiteInfoCommonService,
questionService *service.QuestionService,
questionService *content.QuestionService,
) *ScheduledTaskManager {
manager := &ScheduledTaskManager{
siteInfoService: siteInfoService,
+37 -4
View File
@@ -89,18 +89,51 @@ func (am *AuthUserMiddleware) EjectUserBySiteInfo() gin.HandlerFunc {
return
}
_, isLogin := ctx.Get(ctxUUIDKey)
if !isLogin {
// If site in private mode, user must login.
userInfo := GetUserInfoFromContext(ctx)
if userInfo == nil {
handler.HandleResponse(ctx, errors.Unauthorized(reason.UnauthorizedError), nil)
ctx.Abort()
return
}
// If user is not active, eject user.
if userInfo.EmailStatus != entity.EmailStatusAvailable {
handler.HandleResponse(ctx, errors.Forbidden(reason.EmailNeedToBeVerified),
&schema.ForbiddenResp{Type: schema.ForbiddenReasonTypeInactive})
ctx.Abort()
return
}
ctx.Next()
}
}
// MustAuth auth user info. If the user does not log in, an unauthenticated error is displayed
func (am *AuthUserMiddleware) MustAuth() gin.HandlerFunc {
// MustAuthWithoutAccountAvailable auth user info, any login user can access though user is not active.
func (am *AuthUserMiddleware) MustAuthWithoutAccountAvailable() 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
}
userInfo, err := am.authService.GetUserCacheInfo(ctx, token)
if err != nil || userInfo == nil {
handler.HandleResponse(ctx, errors.Unauthorized(reason.UnauthorizedError), nil)
ctx.Abort()
return
}
if userInfo.UserStatus == entity.UserStatusDeleted {
handler.HandleResponse(ctx, errors.Unauthorized(reason.UnauthorizedError), nil)
ctx.Abort()
return
}
ctx.Set(ctxUUIDKey, userInfo)
ctx.Next()
}
}
// MustAuthAndAccountAvailable auth user info and check user status, only allow active user access.
func (am *AuthUserMiddleware) MustAuthAndAccountAvailable() gin.HandlerFunc {
return func(ctx *gin.Context) {
token := ExtractToken(ctx)
if len(token) == 0 {
+4 -3
View File
@@ -20,9 +20,10 @@
package reason
const (
PrivilegeLevel1Desc = "privilege.level_1.description"
PrivilegeLevel2Desc = "privilege.level_2.description"
PrivilegeLevel3Desc = "privilege.level_3.description"
PrivilegeLevel1Desc = "privilege.level_1.description"
PrivilegeLevel2Desc = "privilege.level_2.description"
PrivilegeLevel3Desc = "privilege.level_3.description"
PrivilegeLevelCustomDesc = "privilege.level_custom.description"
RankQuestionAddLabel = "privilege.rank_question_add_label"
RankAnswerAddLabel = "privilege.rank_answer_add_label"
+6 -3
View File
@@ -45,10 +45,12 @@ const (
QuestionCannotClose = "error.question.cannot_close"
QuestionCannotUpdate = "error.question.cannot_update"
QuestionAlreadyDeleted = "error.question.already_deleted"
QuestionUnderReview = "error.question.under_review"
AnswerNotFound = "error.answer.not_found"
AnswerCannotDeleted = "error.answer.cannot_deleted"
AnswerCannotUpdate = "error.answer.cannot_update"
AnswerCannotAddByClosedQuestion = "error.answer.question_closed_cannot_add"
AnswerRestrictAnswer = "error.answer.restrict_answer"
CommentEditWithoutPermission = "error.comment.edit_without_permission"
DisallowVote = "error.object.disallow_vote"
DisallowFollow = "error.object.disallow_follow"
@@ -92,14 +94,15 @@ const (
UserCannotUpdateYourRole = "error.user.cannot_update_your_role"
TagCannotSetSynonymAsItself = "error.tag.cannot_set_synonym_as_itself"
NotAllowedRegistration = "error.user.not_allowed_registration"
NotAllowedLoginViaPassword = "error.user.not_allowed_login_via_password"
SMTPConfigFromNameCannotBeEmail = "error.smtp.config_from_name_cannot_be_email"
AdminCannotUpdateTheirPassword = "error.admin.cannot_update_their_password"
AdminCannotModifySelfStatus = "error.admin.cannot_modify_self_status"
UserAccessDenied = "error.user.access_denied"
UserPageAccessDenied = "error.user.page_access_denied"
AddBulkUsersFormatError = "error.user.add_bulk_users_format_error"
AddBulkUsersAmountError = "error.user.add_bulk_users_amount_error"
AddBulkUsersFormatError = "error.user.add_bulk_users_format_error"
AddBulkUsersAmountError = "error.user.add_bulk_users_amount_error"
InvalidURLError = "error.common.invalid_url"
)
// user external login reasons
+6 -1
View File
@@ -74,9 +74,14 @@ func NewHTTPServer(debug bool,
unAuthV1.Use(authUserMiddleware.Auth(), authUserMiddleware.EjectUserBySiteInfo())
answerRouter.RegisterUnAuthAnswerAPIRouter(unAuthV1)
// register api that must be authenticated but no need to check account status
authWithoutStatusV1 := r.Group("/answer/api/v1")
authWithoutStatusV1.Use(authUserMiddleware.MustAuthWithoutAccountAvailable())
answerRouter.RegisterAuthUserWithAnyStatusAnswerAPIRouter(authWithoutStatusV1)
// register api that must be authenticated
authV1 := r.Group("/answer/api/v1")
authV1.Use(authUserMiddleware.MustAuth())
authV1.Use(authUserMiddleware.MustAuthAndAccountAvailable())
answerRouter.RegisterAnswerAPIRouter(authV1)
adminauthV1 := r.Group("/answer/admin/api")
+84
View File
@@ -0,0 +1,84 @@
/*
* 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 cli
import (
"context"
"encoding/json"
"fmt"
"github.com/apache/incubator-answer/internal/base/constant"
"github.com/apache/incubator-answer/internal/base/data"
"github.com/apache/incubator-answer/internal/entity"
"xorm.io/xorm"
)
type ConfigField struct {
AllowPasswordLogin bool `json:"allow_password_login"`
}
// SetDefaultConfig set default config
func SetDefaultConfig(dbConf *data.Database, cacheConf *data.CacheConf, field *ConfigField) error {
db, err := data.NewDB(false, dbConf)
if err != nil {
return err
}
defer db.Close()
cache, cacheCleanup, err := data.NewCache(cacheConf)
if err != nil {
fmt.Println("new cache failed")
}
defer func() {
if cache != nil {
cache.Flush(context.Background())
cacheCleanup()
}
}()
if field.AllowPasswordLogin {
return defaultLoginConfig(db)
}
return nil
}
func defaultLoginConfig(x *xorm.Engine) (err error) {
fmt.Println("set default login config")
loginSiteInfo := &entity.SiteInfo{
Type: constant.SiteTypeLogin,
}
exist, err := x.Get(loginSiteInfo)
if err != nil {
return fmt.Errorf("get config failed: %w", err)
}
if exist {
var content map[string]any
_ = json.Unmarshal([]byte(loginSiteInfo.Content), &content)
content["allow_password_login"] = true
dataByte, _ := json.Marshal(content)
loginSiteInfo.Content = string(dataByte)
_, err = x.ID(loginSiteInfo.ID).Cols("content").Update(loginSiteInfo)
if err != nil {
return fmt.Errorf("update site info failed: %w", err)
}
}
return nil
}
+32 -10
View File
@@ -30,10 +30,11 @@ import (
"github.com/apache/incubator-answer/internal/base/validator"
"github.com/apache/incubator-answer/internal/entity"
"github.com/apache/incubator-answer/internal/schema"
"github.com/apache/incubator-answer/internal/service"
"github.com/apache/incubator-answer/internal/service/action"
"github.com/apache/incubator-answer/internal/service/content"
"github.com/apache/incubator-answer/internal/service/permission"
"github.com/apache/incubator-answer/internal/service/rank"
"github.com/apache/incubator-answer/internal/service/siteinfo_common"
"github.com/apache/incubator-answer/pkg/uid"
"github.com/gin-gonic/gin"
"github.com/segmentfault/pacman/errors"
@@ -41,24 +42,27 @@ import (
// AnswerController answer controller
type AnswerController struct {
answerService *service.AnswerService
rankService *rank.RankService
actionService *action.CaptchaService
rateLimitMiddleware *middleware.RateLimitMiddleware
answerService *content.AnswerService
rankService *rank.RankService
actionService *action.CaptchaService
siteInfoCommonService siteinfo_common.SiteInfoCommonService
rateLimitMiddleware *middleware.RateLimitMiddleware
}
// NewAnswerController new controller
func NewAnswerController(
answerService *service.AnswerService,
answerService *content.AnswerService,
rankService *rank.RankService,
actionService *action.CaptchaService,
siteInfoCommonService siteinfo_common.SiteInfoCommonService,
rateLimitMiddleware *middleware.RateLimitMiddleware,
) *AnswerController {
return &AnswerController{
answerService: answerService,
rankService: rankService,
actionService: actionService,
rateLimitMiddleware: rateLimitMiddleware,
answerService: answerService,
rankService: rankService,
actionService: actionService,
siteInfoCommonService: siteInfoCommonService,
rateLimitMiddleware: rateLimitMiddleware,
}
}
@@ -238,6 +242,24 @@ func (ac *AnswerController) Add(ctx *gin.Context) {
return
}
write, err := ac.siteInfoCommonService.GetSiteWrite(ctx)
if err != nil {
handler.HandleResponse(ctx, err, nil)
return
}
if write.RestrictAnswer {
// check if there's already an answer by this user
ids, err := ac.answerService.GetCountByUserIDQuestionID(ctx, req.UserID, req.QuestionID)
if err != nil {
handler.HandleResponse(ctx, err, nil)
return
}
if len(ids) >= 1 {
handler.HandleResponse(ctx, errors.Forbidden(reason.AnswerRestrictAnswer), nil)
return
}
}
answerID, err := ac.answerService.Insert(ctx, req)
if err != nil {
handler.HandleResponse(ctx, err, nil)
+6 -21
View File
@@ -22,23 +22,19 @@ package controller
import (
"github.com/apache/incubator-answer/internal/base/handler"
"github.com/apache/incubator-answer/internal/base/middleware"
"github.com/apache/incubator-answer/internal/base/reason"
"github.com/apache/incubator-answer/internal/schema"
"github.com/apache/incubator-answer/internal/service"
"github.com/apache/incubator-answer/pkg/converter"
"github.com/apache/incubator-answer/internal/service/collection"
"github.com/apache/incubator-answer/pkg/uid"
"github.com/gin-gonic/gin"
"github.com/jinzhu/copier"
"github.com/segmentfault/pacman/errors"
)
// CollectionController collection controller
type CollectionController struct {
collectionService *service.CollectionService
collectionService *collection.CollectionService
}
// NewCollectionController new controller
func NewCollectionController(collectionService *service.CollectionService) *CollectionController {
func NewCollectionController(collectionService *collection.CollectionService) *CollectionController {
return &CollectionController{collectionService: collectionService}
}
@@ -57,21 +53,10 @@ func (cc *CollectionController) CollectionSwitch(ctx *gin.Context) {
if handler.BindAndCheck(ctx, req) {
return
}
req.ObjectID = uid.DeShortID(req.ObjectID)
req.UserID = middleware.GetLoginUserIDFromContext(ctx)
dto := &schema.CollectionSwitchDTO{}
_ = copier.Copy(dto, req)
dto.UserID = middleware.GetLoginUserIDFromContext(ctx)
if converter.StringToInt64(req.ObjectID) < 1 {
return
}
if converter.StringToInt64(dto.UserID) < 1 {
handler.HandleResponse(ctx, errors.Unauthorized(reason.UnauthorizedError), nil)
return
}
resp, err := cc.collectionService.CollectionSwitch(ctx, dto)
resp, err := cc.collectionService.CollectionSwitch(ctx, req)
handler.HandleResponse(ctx, err, resp)
}
+2
View File
@@ -46,4 +46,6 @@ var ProviderSetController = wire.NewSet(
NewConnectorController,
NewUserCenterController,
NewPermissionController,
NewUserPluginController,
NewReviewController,
)
@@ -70,6 +70,7 @@ func (nc *NotificationController) GetRedDot(ctx *gin.Context) {
req.CanReviewQuestion = canList[0]
req.CanReviewAnswer = canList[1]
req.CanReviewTag = canList[2]
req.IsAdmin = middleware.GetUserIsAdminModerator(ctx)
resp, err := nc.notificationService.GetRedDot(ctx, req)
handler.HandleResponse(ctx, err, resp)
+20 -12
View File
@@ -20,6 +20,8 @@
package controller
import (
"net/http"
"github.com/apache/incubator-answer/internal/base/handler"
"github.com/apache/incubator-answer/internal/base/middleware"
"github.com/apache/incubator-answer/internal/base/pager"
@@ -28,8 +30,8 @@ import (
"github.com/apache/incubator-answer/internal/base/validator"
"github.com/apache/incubator-answer/internal/entity"
"github.com/apache/incubator-answer/internal/schema"
"github.com/apache/incubator-answer/internal/service"
"github.com/apache/incubator-answer/internal/service/action"
"github.com/apache/incubator-answer/internal/service/content"
"github.com/apache/incubator-answer/internal/service/permission"
"github.com/apache/incubator-answer/internal/service/rank"
"github.com/apache/incubator-answer/internal/service/siteinfo_common"
@@ -37,13 +39,12 @@ import (
"github.com/gin-gonic/gin"
"github.com/jinzhu/copier"
"github.com/segmentfault/pacman/errors"
"net/http"
)
// QuestionController question controller
type QuestionController struct {
questionService *service.QuestionService
answerService *service.AnswerService
questionService *content.QuestionService
answerService *content.AnswerService
rankService *rank.RankService
siteInfoService siteinfo_common.SiteInfoCommonService
actionService *action.CaptchaService
@@ -52,8 +53,8 @@ type QuestionController struct {
// NewQuestionController new controller
func NewQuestionController(
questionService *service.QuestionService,
answerService *service.AnswerService,
questionService *content.QuestionService,
answerService *content.AnswerService,
rankService *rank.RankService,
siteInfoService siteinfo_common.SiteInfoCommonService,
actionService *action.CaptchaService,
@@ -542,7 +543,7 @@ func (qc *QuestionController) AddQuestionByAnswer(ctx *gin.Context) {
return
}
//add the question id to the answer
questionInfo, ok := resp.(*schema.QuestionInfo)
questionInfo, ok := resp.(*schema.QuestionInfoResp)
if ok {
answerReq := &schema.AnswerAddReq{}
answerReq.QuestionID = uid.DeShortID(questionInfo.ID)
@@ -656,10 +657,15 @@ func (qc *QuestionController) UpdateQuestion(ctx *gin.Context) {
handler.HandleResponse(ctx, err, resp)
return
}
respInfo, ok := resp.(*schema.QuestionInfoResp)
if !ok {
handler.HandleResponse(ctx, err, resp)
return
}
if !isAdmin || !linkUrlLimitUser {
qc.actionService.ActionRecordAdd(ctx, entity.CaptchaActionEdit, req.UserID)
}
handler.HandleResponse(ctx, nil, &schema.UpdateQuestionResp{WaitForReview: !req.NoNeedReview})
handler.HandleResponse(ctx, nil, &schema.UpdateQuestionResp{UrlTitle: respInfo.UrlTitle, WaitForReview: !req.NoNeedReview})
}
// QuestionRecover recover deleted question
@@ -811,6 +817,7 @@ func (qc *QuestionController) PersonalQuestionPage(ctx *gin.Context) {
}
req.LoginUserID = middleware.GetLoginUserIDFromContext(ctx)
req.IsAdmin = middleware.GetUserIsAdminModerator(ctx)
resp, err := qc.questionService.PersonalQuestionPage(ctx, req)
handler.HandleResponse(ctx, err, resp)
}
@@ -835,6 +842,7 @@ func (qc *QuestionController) PersonalAnswerPage(ctx *gin.Context) {
}
req.LoginUserID = middleware.GetLoginUserIDFromContext(ctx)
req.IsAdmin = middleware.GetUserIsAdminModerator(ctx)
resp, err := qc.questionService.PersonalAnswerPage(ctx, req)
handler.HandleResponse(ctx, err, resp)
}
@@ -864,14 +872,14 @@ func (qc *QuestionController) PersonalCollectionPage(ctx *gin.Context) {
// AdminQuestionPage admin question page
// @Summary AdminQuestionPage admin question page
// @Description Status:[available,closed,deleted]
// @Description Status:[available,closed,deleted,pending]
// @Tags admin
// @Accept json
// @Produce json
// @Security ApiKeyAuth
// @Param page query int false "page size"
// @Param page_size query int false "page size"
// @Param status query string false "user status" Enums(available, closed, deleted)
// @Param status query string false "user status" Enums(available, closed, deleted, pending)
// @Param query query string false "question id or title"
// @Success 200 {object} handler.RespBody
// @Router /answer/admin/api/question/page [get]
@@ -888,14 +896,14 @@ func (qc *QuestionController) AdminQuestionPage(ctx *gin.Context) {
// AdminAnswerPage admin answer page
// @Summary AdminAnswerPage admin answer page
// @Description Status:[available,deleted]
// @Description Status:[available,deleted,pending]
// @Tags admin
// @Accept json
// @Produce json
// @Security ApiKeyAuth
// @Param page query int false "page size"
// @Param page_size query int false "page size"
// @Param status query string false "user status" Enums(available,deleted)
// @Param status query string false "user status" Enums(available,deleted,pending)
// @Param query query string false "answer id or question title"
// @Param question_id query string false "question id"
// @Success 200 {object} handler.RespBody
+51
View File
@@ -103,3 +103,54 @@ func (rc *ReportController) AddReport(ctx *gin.Context) {
}
handler.HandleResponse(ctx, err, nil)
}
// GetUnreviewedReportPostPage get unreviewed report post page
// @Summary get unreviewed report post page
// @Description get unreviewed report post page
// @Tags Report
// @Accept json
// @Produce json
// @Security ApiKeyAuth
// @Param page query int false "page"
// @Success 200 {object} handler.RespBody{data=pager.PageModel{list=[]schema.GetReportListPageResp}}
// @Router /answer/api/v1/report/unreviewed/post [get]
func (rc *ReportController) GetUnreviewedReportPostPage(ctx *gin.Context) {
req := &schema.GetUnreviewedReportPostPageReq{}
if handler.BindAndCheck(ctx, req) {
return
}
req.UserID = middleware.GetLoginUserIDFromContext(ctx)
req.IsAdmin = middleware.GetUserIsAdminModerator(ctx)
resp, err := rc.reportService.GetUnreviewedReportPostPage(ctx, req)
handler.HandleResponse(ctx, err, resp)
}
// ReviewReport review report
// @Summary review report
// @Description review report
// @Security ApiKeyAuth
// @Tags Report
// @Accept json
// @Produce json
// @Security ApiKeyAuth
// @Param data body schema.ReviewReportReq true "flag"
// @Success 200 {object} handler.RespBody
// @Router /answer/api/v1/report/review [put]
func (rc *ReportController) ReviewReport(ctx *gin.Context) {
req := &schema.ReviewReportReq{}
if handler.BindAndCheck(ctx, req) {
return
}
req.UserID = middleware.GetLoginUserIDFromContext(ctx)
req.IsAdmin = middleware.GetUserIsAdminModerator(ctx)
if !req.IsAdmin {
handler.HandleResponse(ctx, errors.Forbidden(reason.ForbiddenError), nil)
return
}
err := rc.reportService.ReviewReport(ctx, req)
handler.HandleResponse(ctx, err, nil)
}
+112
View File
@@ -0,0 +1,112 @@
/*
* 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 controller
import (
"github.com/apache/incubator-answer/internal/base/handler"
"github.com/apache/incubator-answer/internal/base/middleware"
"github.com/apache/incubator-answer/internal/base/reason"
"github.com/apache/incubator-answer/internal/schema"
"github.com/apache/incubator-answer/internal/service/action"
"github.com/apache/incubator-answer/internal/service/rank"
"github.com/apache/incubator-answer/internal/service/review"
"github.com/apache/incubator-answer/plugin"
"github.com/gin-gonic/gin"
"github.com/segmentfault/pacman/errors"
)
// ReviewController review controller
type ReviewController struct {
reviewService *review.ReviewService
rankService *rank.RankService
actionService *action.CaptchaService
}
// NewReviewController new controller
func NewReviewController(
reviewService *review.ReviewService,
rankService *rank.RankService,
actionService *action.CaptchaService,
) *ReviewController {
return &ReviewController{
reviewService: reviewService,
rankService: rankService,
actionService: actionService,
}
}
// GetUnreviewedPostPage get unreviewed post page
// @Summary get unreviewed post page
// @Description get unreviewed post page
// @Tags Review
// @Accept json
// @Produce json
// @Security ApiKeyAuth
// @Param page query int false "page"
// @Param object_id query string false "object_id"
// @Success 200 {object} handler.RespBody{data=pager.PageModel{list=[]schema.GetUnreviewedPostPageResp}}
// @Router /answer/api/v1/review/pending/post/page [get]
func (rc *ReviewController) GetUnreviewedPostPage(ctx *gin.Context) {
req := &schema.GetUnreviewedPostPageReq{}
if handler.BindAndCheck(ctx, req) {
return
}
req.UserID = middleware.GetLoginUserIDFromContext(ctx)
req.IsAdmin = middleware.GetUserIsAdminModerator(ctx)
req.ReviewerMapping = make(map[string]string)
_ = plugin.CallReviewer(func(base plugin.Reviewer) error {
info := base.Info()
req.ReviewerMapping[info.SlugName] = info.Name.Translate(ctx)
return nil
})
resp, err := rc.reviewService.GetUnreviewedPostPage(ctx, req)
handler.HandleResponse(ctx, err, resp)
}
// UpdateReview update review
// @Summary update review
// @Description update review
// @Security ApiKeyAuth
// @Tags Review
// @Accept json
// @Produce json
// @Security ApiKeyAuth
// @Param data body schema.UpdateReviewReq true "review"
// @Success 200 {object} handler.RespBody
// @Router /answer/api/v1/review/pending/post [put]
func (rc *ReviewController) UpdateReview(ctx *gin.Context) {
req := &schema.UpdateReviewReq{}
if handler.BindAndCheck(ctx, req) {
return
}
req.UserID = middleware.GetLoginUserIDFromContext(ctx)
req.IsAdmin = middleware.GetUserIsAdminModerator(ctx)
if !req.IsAdmin {
handler.HandleResponse(ctx, errors.Forbidden(reason.ForbiddenError), nil)
return
}
err := rc.reviewService.UpdateReview(ctx, req)
handler.HandleResponse(ctx, err, nil)
}
+32 -3
View File
@@ -26,7 +26,7 @@ import (
"github.com/apache/incubator-answer/internal/base/reason"
"github.com/apache/incubator-answer/internal/entity"
"github.com/apache/incubator-answer/internal/schema"
"github.com/apache/incubator-answer/internal/service"
"github.com/apache/incubator-answer/internal/service/content"
"github.com/apache/incubator-answer/internal/service/permission"
"github.com/apache/incubator-answer/internal/service/rank"
"github.com/apache/incubator-answer/pkg/obj"
@@ -37,13 +37,13 @@ import (
// RevisionController revision controller
type RevisionController struct {
revisionListService *service.RevisionService
revisionListService *content.RevisionService
rankService *rank.RankService
}
// NewRevisionController new controller
func NewRevisionController(
revisionListService *service.RevisionService,
revisionListService *content.RevisionService,
rankService *rank.RankService,
) *RevisionController {
return &RevisionController{
@@ -191,3 +191,32 @@ func (rc *RevisionController) CheckCanUpdateRevision(ctx *gin.Context) {
resp, err := rc.revisionListService.CheckCanUpdateRevision(ctx, req)
handler.HandleResponse(ctx, err, resp)
}
// GetReviewingType get reviewing type
// @Summary get reviewing type
// @Description get reviewing type
// @Tags Revision
// @Produce json
// @Security ApiKeyAuth
// @Success 200 {object} handler.RespBody{data=[]schema.GetReviewingTypeResp}
// @Router /answer/api/v1/reviewing/type [get]
func (rc *RevisionController) GetReviewingType(ctx *gin.Context) {
req := &schema.GetReviewingTypeReq{}
req.UserID = middleware.GetLoginUserIDFromContext(ctx)
canList, err := rc.rankService.CheckOperationPermissions(ctx, req.UserID, []string{
permission.QuestionAudit,
permission.AnswerAudit,
permission.TagAudit,
})
if err != nil {
handler.HandleResponse(ctx, err, nil)
return
}
req.CanReviewQuestion = canList[0]
req.CanReviewAnswer = canList[1]
req.CanReviewTag = canList[2]
req.IsAdmin = middleware.GetUserIsAdminModerator(ctx)
resp, err := rc.revisionListService.GetReviewingType(ctx, req)
handler.HandleResponse(ctx, err, resp)
}
+3 -3
View File
@@ -27,8 +27,8 @@ import (
"github.com/apache/incubator-answer/internal/base/validator"
"github.com/apache/incubator-answer/internal/entity"
"github.com/apache/incubator-answer/internal/schema"
"github.com/apache/incubator-answer/internal/service"
"github.com/apache/incubator-answer/internal/service/action"
"github.com/apache/incubator-answer/internal/service/content"
"github.com/apache/incubator-answer/plugin"
"github.com/gin-gonic/gin"
"github.com/segmentfault/pacman/errors"
@@ -36,13 +36,13 @@ import (
// SearchController tag controller
type SearchController struct {
searchService *service.SearchService
searchService *content.SearchService
actionService *action.CaptchaService
}
// NewSearchController new controller
func NewSearchController(
searchService *service.SearchService,
searchService *content.SearchService,
actionService *action.CaptchaService,
) *SearchController {
return &SearchController{
@@ -87,6 +87,10 @@ func (sc *SiteInfoController) GetSiteInfo(ctx *gin.Context) {
if err != nil {
log.Error(err)
}
resp.Write, err = sc.siteInfoService.GetSiteWrite(ctx)
if err != nil {
log.Error(err)
}
handler.HandleResponse(ctx, nil, resp)
}

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