mirror of https://gitee.com/answerdev/answer.git
Merge branch 'github-main' into feat/1.1.0/context
This commit is contained in:
commit
420667cd3e
|
@ -1,4 +1,8 @@
|
|||
# url path reserves the keywords list
|
||||
questions:
|
||||
- ask
|
||||
tags:
|
||||
- create
|
||||
users:
|
||||
- unsubscribe
|
||||
- settings
|
||||
|
@ -12,5 +16,3 @@ users:
|
|||
- account-suspended
|
||||
- confirm-email
|
||||
- auth-landing
|
||||
questions:
|
||||
- ask
|
||||
|
|
517
i18n/cy_GB.yaml
517
i18n/cy_GB.yaml
|
@ -11,25 +11,31 @@ backend:
|
|||
other: Anawdurdodedig.
|
||||
database_error:
|
||||
other: Gwall gweinydd data.
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
action:
|
||||
report:
|
||||
other: Flag
|
||||
other: Tynnu sylw
|
||||
edit:
|
||||
other: Edit
|
||||
other: Golygu
|
||||
delete:
|
||||
other: Delete
|
||||
other: Dileu
|
||||
close:
|
||||
other: Close
|
||||
other: Cau
|
||||
reopen:
|
||||
other: Reopen
|
||||
other: Ailagor
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
pin:
|
||||
other: Pin
|
||||
other: Pinio
|
||||
hide:
|
||||
other: Unlist
|
||||
other: Dad-restru
|
||||
unpin:
|
||||
other: Unpin
|
||||
other: Dadbinio
|
||||
show:
|
||||
other: List
|
||||
other: Rhestr
|
||||
invite_someone_to_answer:
|
||||
other: Edit
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
|
@ -45,6 +51,60 @@ backend:
|
|||
other: Bod â'r pŵer llawn i gael mynediad i'r safle.
|
||||
moderator:
|
||||
other: Mae ganddo fynediad i bob post ac eithrio gosodiadau gweinyddol.
|
||||
privilege:
|
||||
level_1:
|
||||
description:
|
||||
other: Level 1 (less reputation required for private team, group)
|
||||
level_2:
|
||||
description:
|
||||
other: Level 2 (low reputation required for startup community)
|
||||
level_3:
|
||||
description:
|
||||
other: Level 3 (high reputation required for mature community)
|
||||
rank_question_add_label:
|
||||
other: Ask question
|
||||
rank_answer_add_label:
|
||||
other: Write answer
|
||||
rank_comment_add_label:
|
||||
other: Write comment
|
||||
rank_report_add_label:
|
||||
other: Flag
|
||||
rank_comment_vote_up_label:
|
||||
other: Upvote comment
|
||||
rank_link_url_limit_label:
|
||||
other: Post more than 2 links at a time
|
||||
rank_question_vote_up_label:
|
||||
other: Upvote question
|
||||
rank_answer_vote_up_label:
|
||||
other: Upvote answer
|
||||
rank_question_vote_down_label:
|
||||
other: Downvote question
|
||||
rank_answer_vote_down_label:
|
||||
other: Downvote answer
|
||||
rank_invite_someone_to_answer_label:
|
||||
other: Invite someone to answer
|
||||
rank_tag_add_label:
|
||||
other: Create new tag
|
||||
rank_tag_edit_label:
|
||||
other: Edit tag description (need to review)
|
||||
rank_question_edit_label:
|
||||
other: Edit other's question (need to review)
|
||||
rank_answer_edit_label:
|
||||
other: Edit other's answer (need to review)
|
||||
rank_question_edit_without_review_label:
|
||||
other: Edit other's question without review
|
||||
rank_answer_edit_without_review_label:
|
||||
other: Edit other's answer without review
|
||||
rank_question_audit_label:
|
||||
other: Review question edits
|
||||
rank_answer_audit_label:
|
||||
other: Review answer edits
|
||||
rank_tag_audit_label:
|
||||
other: Review tag edits
|
||||
rank_tag_edit_without_review_label:
|
||||
other: Edit tag description without review
|
||||
rank_tag_synonym_label:
|
||||
other: Manage tag synonyms
|
||||
email:
|
||||
other: Ebost
|
||||
password:
|
||||
|
@ -52,6 +112,9 @@ backend:
|
|||
email_or_password_wrong_error:
|
||||
other: Nid yw e-bost a chyfrinair yn cyfateb.
|
||||
error:
|
||||
password:
|
||||
space_invalid:
|
||||
other: Password cannot contain spaces.
|
||||
admin:
|
||||
cannot_update_their_password:
|
||||
other: Ni allwch addasu eich cyfrinair.
|
||||
|
@ -82,6 +145,8 @@ backend:
|
|||
other: Dylid gwirio e-bost.
|
||||
verify_url_expired:
|
||||
other: Mae'r URL wedi'i wirio gan e-bost wedi dod i ben, anfonwch yr e-bost eto.
|
||||
illegal_email_domain_error:
|
||||
other: Email is not allowed from that email domain. Please use another one.
|
||||
lang:
|
||||
not_found:
|
||||
other: Ffeil iaith heb ei chanfod.
|
||||
|
@ -119,7 +184,9 @@ backend:
|
|||
fail_to_meet_the_condition:
|
||||
other: Rank yn methu â bodloni'r amod.
|
||||
vote_fail_to_meet_the_condition:
|
||||
other: Thanks for the feedback. You need at least {{ rank }} reputation to cast a vote.
|
||||
other: Thanks for the feedback. You need at least {{.Rank}} reputation to cast a vote.
|
||||
no_enough_rank_to_operate:
|
||||
other: You need at least {{.Rank}} reputation to do this.
|
||||
report:
|
||||
handle_failed:
|
||||
other: Methodd handlen yr adroddiad.
|
||||
|
@ -154,6 +221,10 @@ backend:
|
|||
no_permission:
|
||||
other: Dim caniatâd i adolygu.
|
||||
user:
|
||||
external_login_missing_user_id:
|
||||
other: The third-party platform does not provide a unique UserID, so you cannot login, please contact the website administrator.
|
||||
external_login_unbinding_forbidden:
|
||||
other: Please set a login password for your account before you remove this login.
|
||||
email_or_password_wrong:
|
||||
other:
|
||||
other: Nid yw e-bost a chyfrinair yn cyfateb.
|
||||
|
@ -171,6 +242,10 @@ backend:
|
|||
other: Ni allwch addasu eich rôl.
|
||||
not_allowed_registration:
|
||||
other: Ar hyn o bryd nid yw'r safle ar agor i'w gofrestru
|
||||
access_denied:
|
||||
other: Access denied
|
||||
page_access_denied:
|
||||
other: You do not have access to this page.
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Wedi methu darllen y ffurfwedd
|
||||
|
@ -185,37 +260,74 @@ backend:
|
|||
upload:
|
||||
unsupported_file_format:
|
||||
other: Fformat ffeil heb ei gefnogi.
|
||||
report:
|
||||
site_info:
|
||||
config_not_found:
|
||||
other: Site config not found.
|
||||
reason:
|
||||
spam:
|
||||
name:
|
||||
other: sbam
|
||||
other: spam
|
||||
desc:
|
||||
other: Mae'r swydd hon yn hysbyseb, neu fandaliaeth. Nid yw'n ddefnyddiol nac yn berthnasol i'r pwnc cyfredol.
|
||||
rude:
|
||||
other: This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.
|
||||
rude_or_abusive:
|
||||
name:
|
||||
other: anghwrtais neu sarhaus
|
||||
other: rude or abusive
|
||||
desc:
|
||||
other: Byddai person rhesymol yn gweld y cynnwys hwn yn amhriodol ar gyfer trafodaeth barchus.
|
||||
duplicate:
|
||||
other: A reasonable person would find this content inappropriate for respectful discourse.
|
||||
a_duplicate:
|
||||
name:
|
||||
other: dyblyg
|
||||
other: a duplicate
|
||||
desc:
|
||||
other: Mae'r cwestiwn hwn wedi'i ofyn o'r blaen ac mae ganddo ateb yn barod.
|
||||
not_answer:
|
||||
other: This question has been asked before and already has an answer.
|
||||
placeholder:
|
||||
other: Enter the existing question link
|
||||
not_a_answer:
|
||||
name:
|
||||
other: nid ateb
|
||||
other: not an answer
|
||||
desc:
|
||||
other: Postiwyd hwn fel ateb, ond nid yw'n ceisio ateb y cwestiwn. Mae'n bosibl y dylai fod yn olygiad, yn sylwad, yn gwestiwn arall, neu'n cael ei ddileu yn gyfan gwbl.
|
||||
not_need:
|
||||
other: This was posted as an answer, but it does not attempt to answer the question. It should possibly be an edit, a comment, another question, or deleted altogether.
|
||||
no_longer_needed:
|
||||
name:
|
||||
other: nad oes ei angen mwyach
|
||||
other: no longer needed
|
||||
desc:
|
||||
other: Mae'r sylw hwn yn hen ffasiwn, yn sgyrsiol neu ddim yn berthnasol i'r post hwn.
|
||||
other:
|
||||
other: This comment is outdated, conversational or not relevant to this post.
|
||||
something:
|
||||
name:
|
||||
other: rhywbeth arall
|
||||
other: something else
|
||||
desc:
|
||||
other: Mae'r swydd hon angen sylw staff am reswm arall nad yw wedi'i restru uchod.
|
||||
other: This post requires staff attention for another reason not listed above.
|
||||
placeholder:
|
||||
other: Let us know specifically what you are concerned about
|
||||
community_specific:
|
||||
name:
|
||||
other: a community-specific reason
|
||||
desc:
|
||||
other: This question doesn’t meet a community guideline.
|
||||
not_clarity:
|
||||
name:
|
||||
other: needs details or clarity
|
||||
desc:
|
||||
other: This question currently includes multiple questions in one. It should focus on one problem only.
|
||||
looks_ok:
|
||||
name:
|
||||
other: looks ok
|
||||
desc:
|
||||
other: This post is good as-is and not low quality.
|
||||
needs_edit:
|
||||
name:
|
||||
other: needs edit, and I did it
|
||||
desc:
|
||||
other: Improve and correct problems with this post yourself.
|
||||
needs_close:
|
||||
name:
|
||||
other: needs close
|
||||
desc:
|
||||
other: A closed question can’t answer, but still can edit, vote and comment.
|
||||
needs_delete:
|
||||
name:
|
||||
other: needs delete
|
||||
desc:
|
||||
other: This post will be deleted.
|
||||
question:
|
||||
close:
|
||||
duplicate:
|
||||
|
@ -245,6 +357,8 @@ backend:
|
|||
other: atebodd
|
||||
modified:
|
||||
other: wedi newid
|
||||
deleted_title:
|
||||
other: Deleted question
|
||||
notification:
|
||||
action:
|
||||
update_question:
|
||||
|
@ -271,6 +385,67 @@ backend:
|
|||
other: Mae eich ateb wedi’i dileu
|
||||
your_comment_was_deleted:
|
||||
other: Mae eich sylw wedi’i dileu
|
||||
up_voted_question:
|
||||
other: upvoted question
|
||||
down_voted_question:
|
||||
other: downvoted question
|
||||
up_voted_answer:
|
||||
other: upvoted answer
|
||||
down_voted_answer:
|
||||
other: downvoted answer
|
||||
up_voted_comment:
|
||||
other: upvoted comment
|
||||
invited_you_to_answer:
|
||||
other: invited you to answer
|
||||
email_tpl:
|
||||
change_email:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new email address"
|
||||
body:
|
||||
other: "Confirm your new email address for {{.SiteName}} by clicking on the following link:<br><br>\n\n<a href='{{.ChangeEmailUrl}}' target='_blank'>{{.ChangeEmailUrl}}</a><br><br>\n\nIf you did not request this change, please ignore this email.\n"
|
||||
new_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} answered your question"
|
||||
body:
|
||||
other: "<strong><a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.AnswerSummary}}</blockquote><br>\n<a href='{{.AnswerUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
invited_you_to_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} invited you to answer"
|
||||
body:
|
||||
other: "<strong><a href='{{.InviteUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><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<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
new_comment:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} commented on your post"
|
||||
body:
|
||||
other: "<strong><a href='{{.CommentUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.CommentSummary}}</blockquote><br>\n<a href='{{.CommentUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
pass_reset:
|
||||
title:
|
||||
other: "[{{.SiteName }}] Password reset"
|
||||
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"
|
||||
register:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new account"
|
||||
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"
|
||||
test:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Test Email"
|
||||
body:
|
||||
other: "This is a test email."
|
||||
action_activity_type:
|
||||
upvote:
|
||||
other: upvote
|
||||
upvoted:
|
||||
other: upvoted
|
||||
downvote:
|
||||
other: downvote
|
||||
downvoted:
|
||||
other: downvoted
|
||||
accept:
|
||||
other: accept
|
||||
accepted:
|
||||
other: accepted
|
||||
#The following fields are used for interface presentation(Front-end)
|
||||
ui:
|
||||
how_to_format:
|
||||
|
@ -307,20 +482,28 @@ ui:
|
|||
upgrade: Ateb Uwchraddio
|
||||
maintenance: Cynnal a Chadw Gwefan
|
||||
users: Defnyddwyr
|
||||
oauth_callback: Processing
|
||||
http_404: Gwall HTTP 404
|
||||
http_50X: Gwall HTTP 500
|
||||
http_403: HTTP Error 403
|
||||
http_403: Gwall HTTP 403
|
||||
notifications:
|
||||
title: Hysbysiadau
|
||||
inbox: Mewnflwch
|
||||
achievement: Llwyddiannau
|
||||
all_read: Marciwch y cyfan fel wedi'i ddarllen
|
||||
show_more: Dangos mwy
|
||||
someone: Someone
|
||||
inbox_type:
|
||||
all: All
|
||||
posts: Posts
|
||||
invites: Invites
|
||||
votes: Votes
|
||||
suspended:
|
||||
title: Mae'ch Cyfrif wedi'i Atal
|
||||
until_time: "Cafodd eich cyfrif ei atal tan {{ time }}."
|
||||
forever: Cafodd y defnyddiwr hwn ei atal am byth.
|
||||
end: Nid ydych yn arwain cymunedol.
|
||||
contact_us: Contact us
|
||||
editor:
|
||||
blockquote:
|
||||
text: Dyfyniad
|
||||
|
@ -412,64 +595,64 @@ ui:
|
|||
empty: Ni all URL fod yn wag.
|
||||
name:
|
||||
label: Disgrifiad
|
||||
btn_cancel: Cancel
|
||||
btn_confirm: Add
|
||||
btn_cancel: Canslo
|
||||
btn_confirm: Ychwanegu
|
||||
ordered_list:
|
||||
text: Numbered List
|
||||
text: Rhestr wedi'i rhifo
|
||||
unordered_list:
|
||||
text: Bulleted List
|
||||
text: Rhestr Bwled
|
||||
table:
|
||||
text: Table
|
||||
heading: Heading
|
||||
text: Tabl
|
||||
heading: Pennawd
|
||||
cell: Cell
|
||||
close_modal:
|
||||
title: I am closing this post as...
|
||||
btn_cancel: Cancel
|
||||
btn_submit: Submit
|
||||
title: Rwy'n cau'r post hon fel...
|
||||
btn_cancel: Canslo
|
||||
btn_submit: Cyflwyno
|
||||
remark:
|
||||
empty: Cannot be empty.
|
||||
empty: Ni all fod yn wag.
|
||||
msg:
|
||||
empty: Please select a reason.
|
||||
empty: Dewis rheswm.
|
||||
report_modal:
|
||||
flag_title: I am flagging to report this post as...
|
||||
close_title: I am closing this post as...
|
||||
review_question_title: Review question
|
||||
review_answer_title: Review answer
|
||||
review_comment_title: Review comment
|
||||
btn_cancel: Cancel
|
||||
btn_submit: Submit
|
||||
flag_title: Dwi'n tynnu sylw i adrodd y swydd hon fel...
|
||||
close_title: Rwy'n cau'r post hon fel...
|
||||
review_question_title: Adolygu cwestiwn
|
||||
review_answer_title: Adolygu ateb
|
||||
review_comment_title: Adolygu sylwad
|
||||
btn_cancel: Canslo
|
||||
btn_submit: Cyflwyno
|
||||
remark:
|
||||
empty: Cannot be empty.
|
||||
empty: Ni all fod yn wag.
|
||||
msg:
|
||||
empty: Please select a reason.
|
||||
empty: Dewis rheswm.
|
||||
tag_modal:
|
||||
title: Create new tag
|
||||
title: Creu tag newydd
|
||||
form:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display Name
|
||||
label: Enw dangos
|
||||
msg:
|
||||
empty: Display name cannot be empty.
|
||||
range: Display name up to 35 characters.
|
||||
empty: Ni all fod enw dangos yn wag.
|
||||
range: Enw arddangos hyd at 35 nod.
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
desc: URL slug up to 35 characters.
|
||||
desc: Slug URL hyd at 35 nod.
|
||||
msg:
|
||||
empty: URL slug cannot be empty.
|
||||
range: URL slug up to 35 characters.
|
||||
character: URL slug contains unallowed character set.
|
||||
empty: Ni all Slug URL fod yn wag.
|
||||
range: Slug URL hyd at 35 nod.
|
||||
character: Mae slug URL yn cynnwys set nodau na caniateir.
|
||||
desc:
|
||||
label: Description
|
||||
btn_cancel: Cancel
|
||||
btn_submit: Submit
|
||||
btn_post: Post new tag
|
||||
label: Disgrifiad
|
||||
btn_cancel: Canslo
|
||||
btn_submit: Cyflwyno
|
||||
btn_post: Post tag newydd
|
||||
tag_info:
|
||||
created_at: Created
|
||||
edited_at: Edited
|
||||
history: History
|
||||
created_at: Creuwyd
|
||||
edited_at: Golygwyd
|
||||
history: Hanes
|
||||
synonyms:
|
||||
title: Synonyms
|
||||
text: The following tags will be remapped to
|
||||
title: Cyfystyron
|
||||
text: Bydd y tagiau canlynol yn cael eu hail-fapio i
|
||||
empty: No synonyms found.
|
||||
btn_add: Add a synonym
|
||||
btn_edit: Edit
|
||||
|
@ -527,7 +710,7 @@ ui:
|
|||
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
|
||||
tip_vote: It adds something useful to the post
|
||||
edit_answer:
|
||||
title: Edit Answer
|
||||
default_reason: Edit answer
|
||||
|
@ -544,59 +727,59 @@ ui:
|
|||
placeholder: >-
|
||||
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
|
||||
btn_save_edits: Save edits
|
||||
btn_cancel: Cancel
|
||||
btn_cancel: Canslo
|
||||
tags:
|
||||
title: Tags
|
||||
title: Tagiau
|
||||
sort_buttons:
|
||||
popular: Popular
|
||||
name: Name
|
||||
newest: newest
|
||||
button_follow: Follow
|
||||
button_following: Following
|
||||
tag_label: questions
|
||||
search_placeholder: Filter by tag name
|
||||
no_desc: The tag has no description.
|
||||
more: More
|
||||
popular: Poblogaidd
|
||||
name: Enw
|
||||
newest: mwyaf newydd
|
||||
button_follow: Dilyn
|
||||
button_following: Yn dilyn
|
||||
tag_label: cwestiynau
|
||||
search_placeholder: Hidlo yn ôl enw tag
|
||||
no_desc: Nid oes gan y tag unrhyw ddisgrifiad.
|
||||
more: Mwy
|
||||
ask:
|
||||
title: Add Question
|
||||
edit_title: Edit Question
|
||||
default_reason: Edit question
|
||||
similar_questions: Similar questions
|
||||
title: Ychwanegu Cwestiwn
|
||||
edit_title: Golygu Cwestiwn
|
||||
default_reason: Golygu Cwestiwn
|
||||
similar_questions: Cwestiynau tebyg
|
||||
form:
|
||||
fields:
|
||||
revision:
|
||||
label: Revision
|
||||
label: Diwygiad
|
||||
title:
|
||||
label: Title
|
||||
placeholder: Be specific and imagine you're asking a question to another person
|
||||
label: Teitl
|
||||
placeholder: Byddwch yn benodol a dychmygwch eich bod yn gofyn cwestiwn i berson arall
|
||||
msg:
|
||||
empty: Title cannot be empty.
|
||||
range: Title up to 150 characters
|
||||
empty: Ni all teitl fod yn wag.
|
||||
range: Teitl hyd at 20 nod
|
||||
body:
|
||||
label: Body
|
||||
label: Corff
|
||||
msg:
|
||||
empty: Body cannot be empty.
|
||||
empty: Ni all corff fod yn wag.
|
||||
tags:
|
||||
label: Tags
|
||||
label: Tagiau
|
||||
msg:
|
||||
empty: Tags cannot be empty.
|
||||
empty: Ni all tagiau fod yn wag.
|
||||
answer:
|
||||
label: Answer
|
||||
label: Ateb
|
||||
msg:
|
||||
empty: Answer cannot be empty.
|
||||
empty: Ni all ateb fod yn wag.
|
||||
edit_summary:
|
||||
label: Edit Summary
|
||||
label: Golygu Crynodeb
|
||||
placeholder: >-
|
||||
Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)
|
||||
btn_post_question: Post your question
|
||||
btn_save_edits: Save edits
|
||||
answer_question: Answer your own question
|
||||
post_question&answer: Post your question and answer
|
||||
Eglurwch yn fyr eich newidiadau (sillafu wedi'i gywiro, gramadeg sefydlog, fformatio gwell)
|
||||
btn_post_question: Post cweistiwn
|
||||
btn_save_edits: Cadw golygiadau
|
||||
answer_question: Atebwch eich cwestiwn eich hun
|
||||
post_question&answer: Postiwch eich cwestiwn ac ateb
|
||||
tag_selector:
|
||||
add_btn: Add tag
|
||||
create_btn: Create new tag
|
||||
search_tag: Search tag
|
||||
hint: "Describe what your question is about, at least one tag is required."
|
||||
add_btn: Ychwanegu tag
|
||||
create_btn: Creu tag newydd
|
||||
search_tag: Chwilio tag
|
||||
hint: "Disgrifiwch beth yw eich cwestiwn, mae angen o leiaf un tag."
|
||||
no_result: No tags matched
|
||||
tag_required_text: Required tag (at least one)
|
||||
header:
|
||||
|
@ -609,6 +792,8 @@ ui:
|
|||
logout: Log out
|
||||
admin: Admin
|
||||
review: Review
|
||||
bookmark: Bookmarks
|
||||
moderation: Moderation
|
||||
search:
|
||||
placeholder: Search
|
||||
footer:
|
||||
|
@ -633,7 +818,6 @@ ui:
|
|||
msg:
|
||||
empty: Cannot be empty.
|
||||
login:
|
||||
page_title: Welcome to {{site_name}}
|
||||
login_to_continue: Log in to continue
|
||||
info_sign: Don't have an account? <1>Sign up</1>
|
||||
info_login: Already have an account? <1>Log in</1>
|
||||
|
@ -644,6 +828,7 @@ ui:
|
|||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
|
@ -663,7 +848,6 @@ ui:
|
|||
msg:
|
||||
empty: Email cannot be empty.
|
||||
change_email:
|
||||
page_title: Welcome to {{site_name}}
|
||||
btn_cancel: Cancel
|
||||
btn_update: Update email address
|
||||
send_success: >-
|
||||
|
@ -672,6 +856,17 @@ ui:
|
|||
label: New Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
oauth_bind_email:
|
||||
subtitle: Add a recovery email to your account.
|
||||
btn_update: Update email address
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
modal_title: Email already existes.
|
||||
modal_content: This email address already registered. Are you sure you want to connect to the existing account?
|
||||
modal_cancel: Change email
|
||||
modal_confirm: Connect to the existing account
|
||||
password_reset:
|
||||
page_title: Password Reset
|
||||
btn_name: Reset my password
|
||||
|
@ -690,6 +885,7 @@ ui:
|
|||
label: Confirm New Password
|
||||
settings:
|
||||
page_title: Settings
|
||||
goto_modify: Go to Modify
|
||||
nav:
|
||||
profile: Profile
|
||||
notification: Notifications
|
||||
|
@ -711,7 +907,7 @@ ui:
|
|||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
gravatar_text: You can change image on <1>gravatar.com</1>
|
||||
gravatar_text: You can change image on
|
||||
custom: Custom
|
||||
btn_refresh: Refresh
|
||||
custom_text: You can upload your image.
|
||||
|
@ -738,8 +934,11 @@ ui:
|
|||
change_email_info: >-
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
label: New Email
|
||||
msg: New Email cannot be empty.
|
||||
pass:
|
||||
label: Current Password
|
||||
msg: Password cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
|
@ -756,6 +955,13 @@ ui:
|
|||
lang:
|
||||
label: Interface Language
|
||||
text: User interface language. It will change when you refresh the page.
|
||||
my_logins:
|
||||
title: My Logins
|
||||
label: Log in or sign up on this site using these accounts.
|
||||
modal_title: Remove Login
|
||||
modal_content: Are you sure you want to remove this login from your account?
|
||||
modal_confirm_btn: Remove
|
||||
remove_success: Removed successfully
|
||||
toast:
|
||||
update: update success
|
||||
update_password: Password changed successfully.
|
||||
|
@ -766,6 +972,12 @@ ui:
|
|||
title: Related Questions
|
||||
btn: Add question
|
||||
answers: answers
|
||||
invite_to_answer:
|
||||
title: People asked
|
||||
desc: Invite people who you think might know the answer.
|
||||
invite: Invite to answer
|
||||
add: Add people
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
Asked: Asked
|
||||
|
@ -775,12 +987,13 @@ ui:
|
|||
Views: Viewed
|
||||
Follow: Follow
|
||||
Following: Following
|
||||
follow_tip: Follow this question to receive notifications
|
||||
answered: answered
|
||||
closed_in: Closed in
|
||||
show_exist: Show existing question.
|
||||
useful: Useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
answer_useful: It is useful
|
||||
answer_un_useful: It is not useful
|
||||
answers:
|
||||
|
@ -824,6 +1037,7 @@ ui:
|
|||
btns:
|
||||
confirm: Confirm
|
||||
cancel: Cancel
|
||||
edit: Edit
|
||||
save: Save
|
||||
delete: Delete
|
||||
login: Log in
|
||||
|
@ -836,6 +1050,10 @@ ui:
|
|||
skip: Skip
|
||||
discard_draft: Discard draft
|
||||
pinned: Pinned
|
||||
all: All
|
||||
question: Question
|
||||
answer: Answer
|
||||
comment: Comment
|
||||
search:
|
||||
title: Search Results
|
||||
keywords: Keywords
|
||||
|
@ -870,7 +1088,6 @@ ui:
|
|||
modal_confirm:
|
||||
title: Error...
|
||||
account_result:
|
||||
page_title: Welcome to {{site_name}}
|
||||
success: Your new account is confirmed; you will be redirected to the home page.
|
||||
link: Continue to homepage
|
||||
invalid: >-
|
||||
|
@ -931,8 +1148,7 @@ ui:
|
|||
accepted: Accepted
|
||||
answered: answered
|
||||
asked: asked
|
||||
upvote: upvote
|
||||
downvote: downvote
|
||||
downvoted: downvoted
|
||||
mod_short: Mod
|
||||
mod_long: Moderators
|
||||
x_reputation: reputation
|
||||
|
@ -994,6 +1210,7 @@ ui:
|
|||
admin_name:
|
||||
label: Name
|
||||
msg: Name cannot be empty.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
admin_password:
|
||||
label: Password
|
||||
text: >-
|
||||
|
@ -1051,8 +1268,19 @@ ui:
|
|||
seo: SEO
|
||||
customize: Customize
|
||||
themes: Themes
|
||||
css-html: CSS/HTML
|
||||
css_html: CSS/HTML
|
||||
login: Login
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
plugins:
|
||||
login: Login
|
||||
qrcode_login_tip: Please use {{ agentName }} to scan the QR code and log in.
|
||||
login_failed_email_tip: Login failed, please allow this app to access your email information before try again.
|
||||
oauth:
|
||||
connect: Connect with {{ auth_name }}
|
||||
remove: Remove {{ auth_name }}
|
||||
admin:
|
||||
admin_header:
|
||||
title: Admin
|
||||
|
@ -1095,6 +1323,7 @@ ui:
|
|||
pending: Pending
|
||||
completed: Completed
|
||||
flagged: Flagged
|
||||
flagged_type: Flagged {{ type }}
|
||||
created: Created
|
||||
action: Action
|
||||
review: Review
|
||||
|
@ -1122,7 +1351,7 @@ ui:
|
|||
closed_name: closed
|
||||
closed_desc: "A closed question can't answer, but still can edit, vote and comment."
|
||||
deleted_name: deleted
|
||||
deleted_desc: All reputation gained and lost will be restored.
|
||||
deleted_desc: This post will be deleted.
|
||||
btn_cancel: Cancel
|
||||
btn_submit: Submit
|
||||
btn_next: Next
|
||||
|
@ -1243,9 +1472,6 @@ ui:
|
|||
label: Timezone
|
||||
msg: Timezone cannot be empty.
|
||||
text: Choose a city in the same timezone as you.
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
|
@ -1355,22 +1581,77 @@ ui:
|
|||
footer:
|
||||
label: Footer
|
||||
text: This will insert before </html>.
|
||||
sidebar:
|
||||
label: Sidebar
|
||||
text: This will insert in sidebar.
|
||||
login:
|
||||
page_title: Login
|
||||
membership:
|
||||
title: Membership
|
||||
label: Allow new registrations
|
||||
text: Turn off to prevent anyone from creating a new account.
|
||||
email_registration:
|
||||
title: Email registration
|
||||
label: Allow email registration
|
||||
text: Turn off to prevent anyone creating new account through email.
|
||||
allowed_email_domains:
|
||||
title: Allowed email domains
|
||||
text: Email domains that users must register accounts with. One domain per line. Ignored when empty.
|
||||
private:
|
||||
title: Private
|
||||
label: Login required
|
||||
text: Only logged in users can access this community.
|
||||
installed_plugins:
|
||||
title: Installed Plugins
|
||||
filter:
|
||||
all: All
|
||||
active: Active
|
||||
inactive: Inactive
|
||||
outdated: Outdated
|
||||
plugins:
|
||||
label: Plugins
|
||||
text: Select an existing plugin.
|
||||
name: Name
|
||||
version: Version
|
||||
status: Status
|
||||
action: Action
|
||||
deactivate: Deactivate
|
||||
activate: Activate
|
||||
settings: Settings
|
||||
settings_users:
|
||||
title: Users
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar Base URL
|
||||
text: URL of the Gravatar provider’s API base. Ignored when empty.
|
||||
profile_editable:
|
||||
title: Profile Editable
|
||||
allow_update_display_name:
|
||||
label: Allow users to change their display name
|
||||
allow_update_username:
|
||||
label: Allow users to change their username
|
||||
allow_update_avatar:
|
||||
label: Allow users to change their profile image
|
||||
allow_update_bio:
|
||||
label: Allow users to change their about me
|
||||
allow_update_website:
|
||||
label: Allow users to change their website
|
||||
allow_update_location:
|
||||
label: Allow users to change their location
|
||||
privilege:
|
||||
title: Privileges
|
||||
level:
|
||||
label: Reputation required level
|
||||
text: Choose the reputation required for the privileges
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: cannot be empty
|
||||
invalid: is invalid
|
||||
btn_submit: Save
|
||||
not_found_props: "Required property {{ key }} not found."
|
||||
select: Select
|
||||
page_review:
|
||||
review: Review
|
||||
proposed: proposed
|
||||
|
|
429
i18n/de_DE.yaml
429
i18n/de_DE.yaml
|
@ -11,25 +11,31 @@ backend:
|
|||
other: Nicht autorisiert.
|
||||
database_error:
|
||||
other: Datenbank-Fehler.
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
action:
|
||||
report:
|
||||
other: Flag
|
||||
other: Melden
|
||||
edit:
|
||||
other: Edit
|
||||
other: Bearbeiten
|
||||
delete:
|
||||
other: Delete
|
||||
other: Löschen
|
||||
close:
|
||||
other: Close
|
||||
other: Schließen
|
||||
reopen:
|
||||
other: Reopen
|
||||
other: Wieder öffnen
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
pin:
|
||||
other: Pin
|
||||
other: Anpinnen
|
||||
hide:
|
||||
other: Unlist
|
||||
other: Nicht Aufführen
|
||||
unpin:
|
||||
other: Unpin
|
||||
other: Loslösen
|
||||
show:
|
||||
other: List
|
||||
other: Liste
|
||||
invite_someone_to_answer:
|
||||
other: Edit
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
|
@ -45,6 +51,60 @@ backend:
|
|||
other: Haben Sie die volle Berechtigung, auf die Website zuzugreifen.
|
||||
moderator:
|
||||
other: Hat Zugriff auf alle Beiträge außer Admin-Einstellungen.
|
||||
privilege:
|
||||
level_1:
|
||||
description:
|
||||
other: Level 1 (less reputation required for private team, group)
|
||||
level_2:
|
||||
description:
|
||||
other: Level 2 (low reputation required for startup community)
|
||||
level_3:
|
||||
description:
|
||||
other: Level 3 (high reputation required for mature community)
|
||||
rank_question_add_label:
|
||||
other: Ask question
|
||||
rank_answer_add_label:
|
||||
other: Write answer
|
||||
rank_comment_add_label:
|
||||
other: Write comment
|
||||
rank_report_add_label:
|
||||
other: Flag
|
||||
rank_comment_vote_up_label:
|
||||
other: Upvote comment
|
||||
rank_link_url_limit_label:
|
||||
other: Post more than 2 links at a time
|
||||
rank_question_vote_up_label:
|
||||
other: Upvote question
|
||||
rank_answer_vote_up_label:
|
||||
other: Upvote answer
|
||||
rank_question_vote_down_label:
|
||||
other: Downvote question
|
||||
rank_answer_vote_down_label:
|
||||
other: Downvote answer
|
||||
rank_invite_someone_to_answer_label:
|
||||
other: Invite someone to answer
|
||||
rank_tag_add_label:
|
||||
other: Create new tag
|
||||
rank_tag_edit_label:
|
||||
other: Edit tag description (need to review)
|
||||
rank_question_edit_label:
|
||||
other: Edit other's question (need to review)
|
||||
rank_answer_edit_label:
|
||||
other: Edit other's answer (need to review)
|
||||
rank_question_edit_without_review_label:
|
||||
other: Edit other's question without review
|
||||
rank_answer_edit_without_review_label:
|
||||
other: Edit other's answer without review
|
||||
rank_question_audit_label:
|
||||
other: Review question edits
|
||||
rank_answer_audit_label:
|
||||
other: Review answer edits
|
||||
rank_tag_audit_label:
|
||||
other: Review tag edits
|
||||
rank_tag_edit_without_review_label:
|
||||
other: Edit tag description without review
|
||||
rank_tag_synonym_label:
|
||||
other: Manage tag synonyms
|
||||
email:
|
||||
other: E-Mail
|
||||
password:
|
||||
|
@ -52,6 +112,9 @@ backend:
|
|||
email_or_password_wrong_error:
|
||||
other: E-Mail und Passwort stimmen nicht überein.
|
||||
error:
|
||||
password:
|
||||
space_invalid:
|
||||
other: Password cannot contain spaces.
|
||||
admin:
|
||||
cannot_update_their_password:
|
||||
other: Sie können Ihr Passwort nicht ändern.
|
||||
|
@ -82,6 +145,8 @@ backend:
|
|||
other: E-Mail muss überprüft werden.
|
||||
verify_url_expired:
|
||||
other: E-Mail-verifizierte URL ist abgelaufen, bitte senden Sie die E-Mail erneut.
|
||||
illegal_email_domain_error:
|
||||
other: Email is not allowed from that email domain. Please use another one.
|
||||
lang:
|
||||
not_found:
|
||||
other: Sprachdatei nicht gefunden.
|
||||
|
@ -119,7 +184,9 @@ backend:
|
|||
fail_to_meet_the_condition:
|
||||
other: Rang erfüllt die Bedingung nicht.
|
||||
vote_fail_to_meet_the_condition:
|
||||
other: Thanks for the feedback. You need at least {{ rank }} reputation to cast a vote.
|
||||
other: Thanks for the feedback. You need at least {{.Rank}} reputation to cast a vote.
|
||||
no_enough_rank_to_operate:
|
||||
other: You need at least {{.Rank}} reputation to do this.
|
||||
report:
|
||||
handle_failed:
|
||||
other: Berichtshandle fehlgeschlagen.
|
||||
|
@ -154,6 +221,10 @@ backend:
|
|||
no_permission:
|
||||
other: Keine Berechtigung zum Revision.
|
||||
user:
|
||||
external_login_missing_user_id:
|
||||
other: The third-party platform does not provide a unique UserID, so you cannot login, please contact the website administrator.
|
||||
external_login_unbinding_forbidden:
|
||||
other: Please set a login password for your account before you remove this login.
|
||||
email_or_password_wrong:
|
||||
other:
|
||||
other: E-Mail und Passwort stimmen nicht überein.
|
||||
|
@ -171,6 +242,10 @@ backend:
|
|||
other: Du kannst deine Rolle nicht ändern.
|
||||
not_allowed_registration:
|
||||
other: Derzeit ist die Website nicht zur Registrierung geöffnet
|
||||
access_denied:
|
||||
other: Access denied
|
||||
page_access_denied:
|
||||
other: You do not have access to this page.
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Lesekonfiguration fehlgeschlagen
|
||||
|
@ -185,37 +260,74 @@ backend:
|
|||
upload:
|
||||
unsupported_file_format:
|
||||
other: Dateiformat nicht unterstützt.
|
||||
report:
|
||||
site_info:
|
||||
config_not_found:
|
||||
other: Site config not found.
|
||||
reason:
|
||||
spam:
|
||||
name:
|
||||
other: spam
|
||||
desc:
|
||||
other: Dieser Beitrag ist eine Werbung oder Vandalismus. Er ist nicht nützlich oder relevant für das aktuelle Thema.
|
||||
rude:
|
||||
other: This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.
|
||||
rude_or_abusive:
|
||||
name:
|
||||
other: unhöflich oder beleidigend
|
||||
other: rude or abusive
|
||||
desc:
|
||||
other: Eine vernünftige Person würde diesen Inhalt für respektvoll diskutierten Diskurs für unangemessen halten.
|
||||
duplicate:
|
||||
other: A reasonable person would find this content inappropriate for respectful discourse.
|
||||
a_duplicate:
|
||||
name:
|
||||
other: ein Duplikat
|
||||
other: a duplicate
|
||||
desc:
|
||||
other: Diese Frage ist bereits gestellt worden und hat bereits eine Antwort.
|
||||
not_answer:
|
||||
other: This question has been asked before and already has an answer.
|
||||
placeholder:
|
||||
other: Enter the existing question link
|
||||
not_a_answer:
|
||||
name:
|
||||
other: keine Antwort
|
||||
other: not an answer
|
||||
desc:
|
||||
other: Dies wurde als Antwort veröffentlicht, aber es versucht nicht, die Frage zu beantworten. Es sollte möglicherweise eine Bearbeitung, ein Kommentar, eine andere Frage oder komplett gelöscht werden.
|
||||
not_need:
|
||||
other: This was posted as an answer, but it does not attempt to answer the question. It should possibly be an edit, a comment, another question, or deleted altogether.
|
||||
no_longer_needed:
|
||||
name:
|
||||
other: nicht mehr benötigt
|
||||
other: no longer needed
|
||||
desc:
|
||||
other: Dieser Kommentar ist veraltet, Konversation oder nicht relevant für diesen Beitrag.
|
||||
other:
|
||||
other: This comment is outdated, conversational or not relevant to this post.
|
||||
something:
|
||||
name:
|
||||
other: etwas anderes
|
||||
other: something else
|
||||
desc:
|
||||
other: Dieser Beitrag benötigt die Aufmerksamkeit des Personals aus einem anderen Grund, der oben nicht aufgeführt ist.
|
||||
other: This post requires staff attention for another reason not listed above.
|
||||
placeholder:
|
||||
other: Let us know specifically what you are concerned about
|
||||
community_specific:
|
||||
name:
|
||||
other: a community-specific reason
|
||||
desc:
|
||||
other: This question doesn’t meet a community guideline.
|
||||
not_clarity:
|
||||
name:
|
||||
other: needs details or clarity
|
||||
desc:
|
||||
other: This question currently includes multiple questions in one. It should focus on one problem only.
|
||||
looks_ok:
|
||||
name:
|
||||
other: looks ok
|
||||
desc:
|
||||
other: This post is good as-is and not low quality.
|
||||
needs_edit:
|
||||
name:
|
||||
other: needs edit, and I did it
|
||||
desc:
|
||||
other: Improve and correct problems with this post yourself.
|
||||
needs_close:
|
||||
name:
|
||||
other: needs close
|
||||
desc:
|
||||
other: A closed question can’t answer, but still can edit, vote and comment.
|
||||
needs_delete:
|
||||
name:
|
||||
other: needs delete
|
||||
desc:
|
||||
other: This post will be deleted.
|
||||
question:
|
||||
close:
|
||||
duplicate:
|
||||
|
@ -245,6 +357,8 @@ backend:
|
|||
other: beantwortet
|
||||
modified:
|
||||
other: geändert
|
||||
deleted_title:
|
||||
other: Deleted question
|
||||
notification:
|
||||
action:
|
||||
update_question:
|
||||
|
@ -271,6 +385,67 @@ backend:
|
|||
other: Ihre Antwort wurde gelöscht
|
||||
your_comment_was_deleted:
|
||||
other: Ihr Kommentar wurde gelöscht
|
||||
up_voted_question:
|
||||
other: upvoted question
|
||||
down_voted_question:
|
||||
other: downvoted question
|
||||
up_voted_answer:
|
||||
other: upvoted answer
|
||||
down_voted_answer:
|
||||
other: downvoted answer
|
||||
up_voted_comment:
|
||||
other: upvoted comment
|
||||
invited_you_to_answer:
|
||||
other: invited you to answer
|
||||
email_tpl:
|
||||
change_email:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new email address"
|
||||
body:
|
||||
other: "Confirm your new email address for {{.SiteName}} by clicking on the following link:<br><br>\n\n<a href='{{.ChangeEmailUrl}}' target='_blank'>{{.ChangeEmailUrl}}</a><br><br>\n\nIf you did not request this change, please ignore this email.\n"
|
||||
new_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} answered your question"
|
||||
body:
|
||||
other: "<strong><a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.AnswerSummary}}</blockquote><br>\n<a href='{{.AnswerUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
invited_you_to_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} invited you to answer"
|
||||
body:
|
||||
other: "<strong><a href='{{.InviteUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><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<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
new_comment:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} commented on your post"
|
||||
body:
|
||||
other: "<strong><a href='{{.CommentUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.CommentSummary}}</blockquote><br>\n<a href='{{.CommentUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
pass_reset:
|
||||
title:
|
||||
other: "[{{.SiteName }}] Password reset"
|
||||
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"
|
||||
register:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new account"
|
||||
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"
|
||||
test:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Test Email"
|
||||
body:
|
||||
other: "This is a test email."
|
||||
action_activity_type:
|
||||
upvote:
|
||||
other: upvote
|
||||
upvoted:
|
||||
other: upvoted
|
||||
downvote:
|
||||
other: downvote
|
||||
downvoted:
|
||||
other: downvoted
|
||||
accept:
|
||||
other: accept
|
||||
accepted:
|
||||
other: accepted
|
||||
#The following fields are used for interface presentation(Front-end)
|
||||
ui:
|
||||
how_to_format:
|
||||
|
@ -307,20 +482,28 @@ ui:
|
|||
upgrade: Antwort-Upgrade
|
||||
maintenance: Website-Pflege
|
||||
users: Benutzer
|
||||
oauth_callback: Processing
|
||||
http_404: HTTP-Fehler 404
|
||||
http_50X: HTTP-Fehler 500
|
||||
http_403: HTTP Error 403
|
||||
http_403: HTTP Fehler 403
|
||||
notifications:
|
||||
title: Benachrichtigungen
|
||||
inbox: Posteingang
|
||||
achievement: Erfolge
|
||||
all_read: Alle als gelesen markieren
|
||||
show_more: Mehr Anzeigen
|
||||
someone: Someone
|
||||
inbox_type:
|
||||
all: All
|
||||
posts: Posts
|
||||
invites: Invites
|
||||
votes: Votes
|
||||
suspended:
|
||||
title: Dein Konto wurde gesperrt
|
||||
until_time: "Ihr Konto wurde bis {{ time }} gesperrt."
|
||||
forever: Dieser Benutzer wurde für immer gesperrt.
|
||||
end: Du erfüllst keine Community-Richtlinie.
|
||||
contact_us: Contact us
|
||||
editor:
|
||||
blockquote:
|
||||
text: Blockzitat
|
||||
|
@ -527,7 +710,7 @@ ui:
|
|||
Verwenden Sie Kommentare, um weitere Informationen anzufordern oder Verbesserungen vorzuschlagen. Vermeiden Sie die Beantwortung von Fragen in Kommentaren.
|
||||
tip_answer: >-
|
||||
Verwenden Sie Kommentare, um anderen Benutzern zu antworten oder sie über Änderungen zu informieren. Wenn Sie neue Informationen hinzufügen, bearbeiten Sie Ihren Beitrag, anstatt ihn zu kommentieren.
|
||||
tip_vote: It adds something useful to the post
|
||||
tip_vote: It adds something useful to the post
|
||||
edit_answer:
|
||||
title: Antwort bearbeiten
|
||||
default_reason: Antwort bearbeiten
|
||||
|
@ -609,6 +792,8 @@ ui:
|
|||
logout: Ausloggen
|
||||
admin: Administrator
|
||||
review: Rezension
|
||||
bookmark: Bookmarks
|
||||
moderation: Moderation
|
||||
search:
|
||||
placeholder: Suchen
|
||||
footer:
|
||||
|
@ -633,7 +818,6 @@ ui:
|
|||
msg:
|
||||
empty: Kann nicht leer sein.
|
||||
login:
|
||||
page_title: Willkommen bei {{site_name}}
|
||||
login_to_continue: Melden Sie sich an, um fortzufahren
|
||||
info_sign: Sie haben noch kein Konto? <1>Melden Sie sich an</1>
|
||||
info_login: Haben Sie bereits ein Konto? <1>Melden Sie sich an</1>
|
||||
|
@ -644,6 +828,7 @@ ui:
|
|||
msg:
|
||||
empty: Der Name darf nicht leer sein.
|
||||
range: Nennen Sie bis zu 30 Zeichen.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
|
@ -663,7 +848,6 @@ ui:
|
|||
msg:
|
||||
empty: E-Mail darf nicht leer sein.
|
||||
change_email:
|
||||
page_title: Willkommen bei {{site_name}}
|
||||
btn_cancel: Stornieren
|
||||
btn_update: Aktualisiere email adresse
|
||||
send_success: >-
|
||||
|
@ -672,6 +856,17 @@ ui:
|
|||
label: Neue e-mail
|
||||
msg:
|
||||
empty: E-Mail darf nicht leer sein.
|
||||
oauth_bind_email:
|
||||
subtitle: Add a recovery email to your account.
|
||||
btn_update: Update email address
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
modal_title: Email already existes.
|
||||
modal_content: This email address already registered. Are you sure you want to connect to the existing account?
|
||||
modal_cancel: Change email
|
||||
modal_confirm: Connect to the existing account
|
||||
password_reset:
|
||||
page_title: Passwort zurücksetzen
|
||||
btn_name: Setze mein Passwort zurück
|
||||
|
@ -690,6 +885,7 @@ ui:
|
|||
label: Bestätige neues Passwort
|
||||
settings:
|
||||
page_title: Einstellungen
|
||||
goto_modify: Go to Modify
|
||||
nav:
|
||||
profile: Profil
|
||||
notification: Benachrichtigungen
|
||||
|
@ -711,7 +907,7 @@ ui:
|
|||
avatar:
|
||||
label: Profilbild
|
||||
gravatar: Gravatar
|
||||
gravatar_text: Sie können das Bild auf <1>gravatar.com</1> ändern
|
||||
gravatar_text: You can change image on
|
||||
custom: Benutzerdefiniert
|
||||
btn_refresh: Aktualisieren
|
||||
custom_text: Sie können Ihr Bild hochladen.
|
||||
|
@ -738,8 +934,11 @@ ui:
|
|||
change_email_info: >-
|
||||
Wir haben eine E-Mail an diese Adresse gesendet. Bitte folgen Sie den Bestätigungsanweisungen.
|
||||
email:
|
||||
label: E-Mail
|
||||
msg: E-Mail-Feld darf nicht leer sein.
|
||||
label: New Email
|
||||
msg: New Email cannot be empty.
|
||||
pass:
|
||||
label: Current Password
|
||||
msg: Password cannot be empty.
|
||||
password_title: Passwort
|
||||
current_pass:
|
||||
label: Aktuelles Passwort
|
||||
|
@ -756,6 +955,13 @@ ui:
|
|||
lang:
|
||||
label: Schnittstellensprache
|
||||
text: Sprache der Benutzeroberfläche. Es ändert sich, wenn Sie die Seite aktualisieren.
|
||||
my_logins:
|
||||
title: My Logins
|
||||
label: Log in or sign up on this site using these accounts.
|
||||
modal_title: Remove Login
|
||||
modal_content: Are you sure you want to remove this login from your account?
|
||||
modal_confirm_btn: Remove
|
||||
remove_success: Removed successfully
|
||||
toast:
|
||||
update: erfolg aktualisieren
|
||||
update_password: Das Kennwort wurde erfolgreich geändert.
|
||||
|
@ -766,8 +972,14 @@ ui:
|
|||
title: Verwandte Fragen
|
||||
btn: Frage hinzufügen
|
||||
answers: antworten
|
||||
invite_to_answer:
|
||||
title: People asked
|
||||
desc: Invite people who you think might know the answer.
|
||||
invite: Invite to answer
|
||||
add: Add people
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
action: Aktion
|
||||
Asked: Fragte
|
||||
asked: fragte
|
||||
update: Geändert
|
||||
|
@ -775,14 +987,15 @@ ui:
|
|||
Views: Gesehen
|
||||
Follow: Folgen
|
||||
Following: Folgend
|
||||
follow_tip: Follow this question to receive notifications
|
||||
answered: beantwortet
|
||||
closed_in: Abgeschlossen in
|
||||
show_exist: Bestehende Frage anzeigen.
|
||||
useful: Useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
answer_useful: It is useful
|
||||
answer_un_useful: It is not useful
|
||||
useful: Nützlich
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
answer_useful: Das ist nützlich
|
||||
answer_un_useful: Das ist nicht nützlich
|
||||
answers:
|
||||
title: Antworten
|
||||
score: Punkte
|
||||
|
@ -800,19 +1013,19 @@ ui:
|
|||
empty: Antwort darf nicht leer sein.
|
||||
characters: der Inhalt muss mindestens 6 Zeichen lang sein.
|
||||
tips:
|
||||
header_1: Thanks for your answer
|
||||
li1_1: Please be sure to <strong>answer the question</strong>. Provide details and share your research.
|
||||
li1_2: Back up any statements you make with references or personal experience.
|
||||
header_2: But <strong>avoid</strong> ...
|
||||
li2_1: Asking for help, seeking clarification, or responding to other answers.
|
||||
header_1: Vielen Dank für Ihre Antwort
|
||||
li1_1: Bitte <strong>beantworten Sie die Frage</strong>. Geben Sie Details ein und teilen Sie Ihre Begründung/ Recherche.
|
||||
li1_2: Begründen Sie Ihre Aussagen mit Referenzen oder persönlicher Erfahrung.
|
||||
header_2: Aber <strong>vermeide</strong>...
|
||||
li2_1: Bitte um Hilfe, um Klarstellung oder um Antwort auf andere Antworten.
|
||||
reopen:
|
||||
confirm_btn: Reopen
|
||||
confirm_btn: Wieder öffnen
|
||||
title: Diesen Beitrag erneut öffnen
|
||||
content: Möchten Sie wirklich wieder öffnen?
|
||||
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.
|
||||
confirm_btn: Pin
|
||||
title: Beitrag anheften
|
||||
content: Sind Sie sicher, dass Sie global anpinnen möchten? Dieser Beitrag wird oben auf allen Beitragslisten erscheinen.
|
||||
confirm_btn: Anheften
|
||||
delete:
|
||||
title: Diesen Beitrag löschen
|
||||
question: >-
|
||||
|
@ -824,6 +1037,7 @@ ui:
|
|||
btns:
|
||||
confirm: Bestätigen
|
||||
cancel: Abbrechen
|
||||
edit: Edit
|
||||
save: Speichern
|
||||
delete: Löschen
|
||||
login: Einloggen
|
||||
|
@ -835,7 +1049,11 @@ ui:
|
|||
reject: Ablehnen
|
||||
skip: Überspringen
|
||||
discard_draft: Entwurf verwerfen
|
||||
pinned: Pinned
|
||||
pinned: Angeheftet
|
||||
all: All
|
||||
question: Question
|
||||
answer: Answer
|
||||
comment: Comment
|
||||
search:
|
||||
title: Suchergebnisse
|
||||
keywords: Schlüsselwörter
|
||||
|
@ -870,7 +1088,6 @@ ui:
|
|||
modal_confirm:
|
||||
title: Fehler...
|
||||
account_result:
|
||||
page_title: Willkommen bei {{site_name}}
|
||||
success: Ihr neues Konto wird bestätigt; Sie werden auf die Startseite weitergeleitet.
|
||||
link: Weiter zur Startseite
|
||||
invalid: >-
|
||||
|
@ -931,8 +1148,7 @@ ui:
|
|||
accepted: Akzeptiert
|
||||
answered: antwortete
|
||||
asked: fragte
|
||||
upvote: positiv bewerten
|
||||
downvote: ablehnen
|
||||
downvoted: downvoted
|
||||
mod_short: Mod
|
||||
mod_long: Moderatoren
|
||||
x_reputation: ruf
|
||||
|
@ -994,6 +1210,7 @@ ui:
|
|||
admin_name:
|
||||
label: Name
|
||||
msg: Der Name darf nicht leer sein.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
admin_password:
|
||||
label: Passwort
|
||||
text: >-
|
||||
|
@ -1025,11 +1242,11 @@ ui:
|
|||
answers: antworten
|
||||
accepted: Akzeptiert
|
||||
page_error:
|
||||
http_error: HTTP Error {{ code }}
|
||||
desc_403: You don’t have permission to access this page.
|
||||
desc_404: Unfortunately, this page doesn't exist.
|
||||
desc_50X: The server encountered an error and could not complete your request.
|
||||
back_home: Back to homepage
|
||||
http_error: HTTP Fehler {{ code }}
|
||||
desc_403: Sie haben keine Zugriffsberechtigung für diese Seite.
|
||||
desc_404: Leider existiert diese Seite nicht.
|
||||
desc_50X: Der Server ist auf einen Fehler gestoßen und konnte Ihre Anfrage nicht abschließen.
|
||||
back_home: Zurück zur Startseite
|
||||
page_maintenance:
|
||||
desc: "Wir werden gewartet, wir sind bald wieder da."
|
||||
nav_menus:
|
||||
|
@ -1051,8 +1268,19 @@ ui:
|
|||
seo: SEO
|
||||
customize: Anpassen
|
||||
themes: Themen
|
||||
css-html: CSS/HTML
|
||||
css_html: CSS/HTML
|
||||
login: Anmeldung
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
plugins:
|
||||
login: Login
|
||||
qrcode_login_tip: Please use {{ agentName }} to scan the QR code and log in.
|
||||
login_failed_email_tip: Login failed, please allow this app to access your email information before try again.
|
||||
oauth:
|
||||
connect: Connect with {{ auth_name }}
|
||||
remove: Remove {{ auth_name }}
|
||||
admin:
|
||||
admin_header:
|
||||
title: Administrator
|
||||
|
@ -1095,6 +1323,7 @@ ui:
|
|||
pending: Ausstehend
|
||||
completed: Abgeschlossen
|
||||
flagged: Gekennzeichnet
|
||||
flagged_type: Flagged {{ type }}
|
||||
created: Erstellt
|
||||
action: Aktion
|
||||
review: Rezension
|
||||
|
@ -1122,7 +1351,7 @@ ui:
|
|||
closed_name: schließen
|
||||
closed_desc: "Eine geschlossene Frage kann nicht beantworten, kann aber trotzdem bearbeiten, abstimmen und kommentieren."
|
||||
deleted_name: gelöschte
|
||||
deleted_desc: Alle erworbenen und verlorenen Reputationen werden wiederhergestellt.
|
||||
deleted_desc: This post will be deleted.
|
||||
btn_cancel: Abbrechen
|
||||
btn_submit: Senden
|
||||
btn_next: Weiter
|
||||
|
@ -1243,9 +1472,6 @@ ui:
|
|||
label: Zeitzone
|
||||
msg: Die Zeitzone darf nicht leer sein.
|
||||
text: Wählen Sie eine Stadt in derselben Zeitzone wie Sie.
|
||||
avatar:
|
||||
label: Standard-Avatar
|
||||
text: Für Benutzer ohne eigenen Avatar.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
|
@ -1355,22 +1581,77 @@ ui:
|
|||
footer:
|
||||
label: Fusszeile
|
||||
text: Dies wird vor </html> eingefügt.
|
||||
sidebar:
|
||||
label: Sidebar
|
||||
text: This will insert in sidebar.
|
||||
login:
|
||||
page_title: Anmeldung
|
||||
membership:
|
||||
title: Mitgliedschaft
|
||||
label: Neuregistrierungen zulassen
|
||||
text: Deaktivieren Sie diese Option, um zu verhindern, dass jemand ein neues Konto erstellt.
|
||||
email_registration:
|
||||
title: Email registration
|
||||
label: Allow email registration
|
||||
text: Turn off to prevent anyone creating new account through email.
|
||||
allowed_email_domains:
|
||||
title: Allowed email domains
|
||||
text: Email domains that users must register accounts with. One domain per line. Ignored when empty.
|
||||
private:
|
||||
title: Privatgelände
|
||||
label: Anmeldung erforderlich
|
||||
text: Nur angemeldete Benutzer können auf diese Community zugreifen.
|
||||
installed_plugins:
|
||||
title: Installed Plugins
|
||||
filter:
|
||||
all: All
|
||||
active: Active
|
||||
inactive: Inactive
|
||||
outdated: Outdated
|
||||
plugins:
|
||||
label: Plugins
|
||||
text: Select an existing plugin.
|
||||
name: Name
|
||||
version: Version
|
||||
status: Status
|
||||
action: Action
|
||||
deactivate: Deactivate
|
||||
activate: Activate
|
||||
settings: Settings
|
||||
settings_users:
|
||||
title: Users
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar Base URL
|
||||
text: URL of the Gravatar provider’s API base. Ignored when empty.
|
||||
profile_editable:
|
||||
title: Profile Editable
|
||||
allow_update_display_name:
|
||||
label: Allow users to change their display name
|
||||
allow_update_username:
|
||||
label: Allow users to change their username
|
||||
allow_update_avatar:
|
||||
label: Allow users to change their profile image
|
||||
allow_update_bio:
|
||||
label: Allow users to change their about me
|
||||
allow_update_website:
|
||||
label: Allow users to change their website
|
||||
allow_update_location:
|
||||
label: Allow users to change their location
|
||||
privilege:
|
||||
title: Privileges
|
||||
level:
|
||||
label: Reputation required level
|
||||
text: Choose the reputation required for the privileges
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: kann nicht leer sein
|
||||
invalid: ist ungültig
|
||||
btn_submit: Speichern
|
||||
not_found_props: "Erforderliche Eigenschaft {{ key }} nicht gefunden."
|
||||
select: Select
|
||||
page_review:
|
||||
review: Rezension
|
||||
proposed: vorgeschlagen
|
||||
|
@ -1397,10 +1678,10 @@ ui:
|
|||
closed: geschlossen
|
||||
reopened: wiedereröffnet
|
||||
created: erstellt
|
||||
pin: pinned
|
||||
unpin: unpinned
|
||||
show: listed
|
||||
hide: unlisted
|
||||
pin: angeheftet
|
||||
unpin: losgelöst
|
||||
show: gelistet
|
||||
hide: nicht gelistet
|
||||
title: "Geschichte für"
|
||||
tag_title: "Zeitleiste für"
|
||||
show_votes: "Stimmen anzeigen"
|
||||
|
@ -1415,8 +1696,8 @@ ui:
|
|||
no_data: "Wir konnten nichts finden."
|
||||
users:
|
||||
title: Benutzer
|
||||
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
|
||||
users_with_the_most_reputation: Benutzer mit den höchsten Reputationspunkten dieser Woche
|
||||
users_with_the_most_vote: Benutzer, die diese Woche am meisten gestimmt haben
|
||||
staffs: Benutzer
|
||||
reputation: ruf
|
||||
votes: stimmen
|
||||
|
@ -1427,8 +1708,8 @@ ui:
|
|||
discard_confirm: Möchten Sie Ihren Entwurf wirklich verwerfen?
|
||||
messages:
|
||||
post_deleted: Dieser Beitrag wurde gelöscht.
|
||||
post_pin: This post has been pinned.
|
||||
post_unpin: This post has been unpinned.
|
||||
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_pin: Dieser Beitrag wurde angepinnt.
|
||||
post_unpin: Dieser Beitrag wurde losgelöst.
|
||||
post_hide_list: Dieser Beitrag wurde aus der Liste verborgen.
|
||||
post_show_list: Dieser Beitrag wird in der Liste angezeigt.
|
||||
post_reopen: Dieser Beitrag wurde wieder geöffnet.
|
||||
|
|
|
@ -261,6 +261,9 @@ backend:
|
|||
upload:
|
||||
unsupported_file_format:
|
||||
other: Unsupported file format.
|
||||
site_info:
|
||||
config_not_found:
|
||||
other: Site config not found.
|
||||
reason:
|
||||
spam:
|
||||
name:
|
||||
|
@ -328,7 +331,7 @@ backend:
|
|||
name:
|
||||
other: needs delete
|
||||
desc:
|
||||
other: All reputation gained and lost will be restored.
|
||||
other: This post will be deleted.
|
||||
question:
|
||||
close:
|
||||
duplicate:
|
||||
|
@ -504,6 +507,11 @@ ui:
|
|||
all_read: Mark all as read
|
||||
show_more: Show more
|
||||
someone: Someone
|
||||
inbox_type:
|
||||
all: All
|
||||
posts: Posts
|
||||
invites: Invites
|
||||
votes: Votes
|
||||
suspended:
|
||||
title: Your Account has been Suspended
|
||||
until_time: "Your account was suspended until {{ time }}."
|
||||
|
@ -805,6 +813,8 @@ ui:
|
|||
logout: Log out
|
||||
admin: Admin
|
||||
review: Review
|
||||
bookmark: Bookmarks
|
||||
moderation: Moderation
|
||||
search:
|
||||
placeholder: Search
|
||||
footer:
|
||||
|
@ -925,7 +935,7 @@ ui:
|
|||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
gravatar_text: You can change image on <1>gravatar.com</1>
|
||||
gravatar_text: You can change image on
|
||||
custom: Custom
|
||||
btn_refresh: Refresh
|
||||
custom_text: You can upload your image.
|
||||
|
@ -991,6 +1001,12 @@ ui:
|
|||
title: Related Questions
|
||||
btn: Add question
|
||||
answers: answers
|
||||
invite_to_answer:
|
||||
title: People asked
|
||||
desc: Invite people who you think might know the answer.
|
||||
invite: Invite to answer
|
||||
add: Add people
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
Asked: Asked
|
||||
|
@ -1000,6 +1016,7 @@ ui:
|
|||
Views: Viewed
|
||||
Follow: Follow
|
||||
Following: Following
|
||||
follow_tip: Follow this question to receive notifications
|
||||
answered: answered
|
||||
closed_in: Closed in
|
||||
show_exist: Show existing question.
|
||||
|
@ -1056,6 +1073,7 @@ ui:
|
|||
btns:
|
||||
confirm: Confirm
|
||||
cancel: Cancel
|
||||
edit: Edit
|
||||
save: Save
|
||||
delete: Delete
|
||||
login: Log in
|
||||
|
@ -1168,8 +1186,7 @@ ui:
|
|||
accepted: Accepted
|
||||
answered: answered
|
||||
asked: asked
|
||||
upvote: upvote
|
||||
downvote: downvote
|
||||
downvoted: downvoted
|
||||
mod_short: Mod
|
||||
mod_long: Moderators
|
||||
x_reputation: reputation
|
||||
|
@ -1378,7 +1395,7 @@ ui:
|
|||
closed_name: closed
|
||||
closed_desc: "A closed question can't answer, but still can edit, vote and comment."
|
||||
deleted_name: deleted
|
||||
deleted_desc: All reputation gained and lost will be restored.
|
||||
deleted_desc: This post will be deleted.
|
||||
btn_cancel: Cancel
|
||||
btn_submit: Submit
|
||||
btn_next: Next
|
||||
|
@ -1652,6 +1669,9 @@ ui:
|
|||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar Base URL
|
||||
text: URL of the Gravatar provider’s API base. Ignored when empty.
|
||||
profile_editable:
|
||||
title: Profile Editable
|
||||
allow_update_display_name:
|
||||
|
|
349
i18n/es_ES.yaml
349
i18n/es_ES.yaml
|
@ -11,6 +11,8 @@ backend:
|
|||
other: No autorizado.
|
||||
database_error:
|
||||
other: Error en el servidor de datos.
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
action:
|
||||
report:
|
||||
other: Flag
|
||||
|
@ -22,6 +24,8 @@ backend:
|
|||
other: Close
|
||||
reopen:
|
||||
other: Reopen
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
pin:
|
||||
other: Pin
|
||||
hide:
|
||||
|
@ -30,6 +34,8 @@ backend:
|
|||
other: Unpin
|
||||
show:
|
||||
other: List
|
||||
invite_someone_to_answer:
|
||||
other: Edit
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
|
@ -45,6 +51,60 @@ backend:
|
|||
other: Dispone de acceso total al sitio web y sus ajustes.
|
||||
moderator:
|
||||
other: Dispone de acceso a todas las publicaciones pero no a los ajustes de administrador.
|
||||
privilege:
|
||||
level_1:
|
||||
description:
|
||||
other: Level 1 (less reputation required for private team, group)
|
||||
level_2:
|
||||
description:
|
||||
other: Level 2 (low reputation required for startup community)
|
||||
level_3:
|
||||
description:
|
||||
other: Level 3 (high reputation required for mature community)
|
||||
rank_question_add_label:
|
||||
other: Ask question
|
||||
rank_answer_add_label:
|
||||
other: Write answer
|
||||
rank_comment_add_label:
|
||||
other: Write comment
|
||||
rank_report_add_label:
|
||||
other: Flag
|
||||
rank_comment_vote_up_label:
|
||||
other: Upvote comment
|
||||
rank_link_url_limit_label:
|
||||
other: Post more than 2 links at a time
|
||||
rank_question_vote_up_label:
|
||||
other: Upvote question
|
||||
rank_answer_vote_up_label:
|
||||
other: Upvote answer
|
||||
rank_question_vote_down_label:
|
||||
other: Downvote question
|
||||
rank_answer_vote_down_label:
|
||||
other: Downvote answer
|
||||
rank_invite_someone_to_answer_label:
|
||||
other: Invite someone to answer
|
||||
rank_tag_add_label:
|
||||
other: Create new tag
|
||||
rank_tag_edit_label:
|
||||
other: Edit tag description (need to review)
|
||||
rank_question_edit_label:
|
||||
other: Edit other's question (need to review)
|
||||
rank_answer_edit_label:
|
||||
other: Edit other's answer (need to review)
|
||||
rank_question_edit_without_review_label:
|
||||
other: Edit other's question without review
|
||||
rank_answer_edit_without_review_label:
|
||||
other: Edit other's answer without review
|
||||
rank_question_audit_label:
|
||||
other: Review question edits
|
||||
rank_answer_audit_label:
|
||||
other: Review answer edits
|
||||
rank_tag_audit_label:
|
||||
other: Review tag edits
|
||||
rank_tag_edit_without_review_label:
|
||||
other: Edit tag description without review
|
||||
rank_tag_synonym_label:
|
||||
other: Manage tag synonyms
|
||||
email:
|
||||
other: Correo electrónico
|
||||
password:
|
||||
|
@ -52,6 +112,9 @@ backend:
|
|||
email_or_password_wrong_error:
|
||||
other: Contraseña o correo incorrecto.
|
||||
error:
|
||||
password:
|
||||
space_invalid:
|
||||
other: Password cannot contain spaces.
|
||||
admin:
|
||||
cannot_update_their_password:
|
||||
other: No puede modificar su contraseña.
|
||||
|
@ -82,6 +145,8 @@ backend:
|
|||
other: El correo debe ser verificado.
|
||||
verify_url_expired:
|
||||
other: La URL verificada del correo electrónico ha caducado. Por favor, vuelva a enviar el correo electrónico.
|
||||
illegal_email_domain_error:
|
||||
other: Email is not allowed from that email domain. Please use another one.
|
||||
lang:
|
||||
not_found:
|
||||
other: Archivo de idioma no encontrado.
|
||||
|
@ -119,7 +184,9 @@ backend:
|
|||
fail_to_meet_the_condition:
|
||||
other: El rango no cumple la condición.
|
||||
vote_fail_to_meet_the_condition:
|
||||
other: Thanks for the feedback. You need at least {{ rank }} reputation to cast a vote.
|
||||
other: Thanks for the feedback. You need at least {{.Rank}} reputation to cast a vote.
|
||||
no_enough_rank_to_operate:
|
||||
other: You need at least {{.Rank}} reputation to do this.
|
||||
report:
|
||||
handle_failed:
|
||||
other: Error en el manejador del reporte.
|
||||
|
@ -154,6 +221,10 @@ backend:
|
|||
no_permission:
|
||||
other: Sin permiso para revisar.
|
||||
user:
|
||||
external_login_missing_user_id:
|
||||
other: The third-party platform does not provide a unique UserID, so you cannot login, please contact the website administrator.
|
||||
external_login_unbinding_forbidden:
|
||||
other: Please set a login password for your account before you remove this login.
|
||||
email_or_password_wrong:
|
||||
other:
|
||||
other: Contraseña o correo incorrecto.
|
||||
|
@ -171,6 +242,10 @@ backend:
|
|||
other: No puedes modificar tu propio rol.
|
||||
not_allowed_registration:
|
||||
other: Actualmente el sitio no acepta registros
|
||||
access_denied:
|
||||
other: Access denied
|
||||
page_access_denied:
|
||||
other: You do not have access to this page.
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Lectura de configuración fallida
|
||||
|
@ -185,37 +260,74 @@ backend:
|
|||
upload:
|
||||
unsupported_file_format:
|
||||
other: Formato de archivo no soportado.
|
||||
report:
|
||||
site_info:
|
||||
config_not_found:
|
||||
other: Site config not found.
|
||||
reason:
|
||||
spam:
|
||||
name:
|
||||
other: spam
|
||||
desc:
|
||||
other: Esta publicación es un anuncio o vandalismo. No es útil ni relevante para el tema actual.
|
||||
rude:
|
||||
other: This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.
|
||||
rude_or_abusive:
|
||||
name:
|
||||
other: grosero o abusivo
|
||||
other: rude or abusive
|
||||
desc:
|
||||
other: Una persona con juicio encontraría este contenido inapropiado para un discurso respuetuoso.
|
||||
duplicate:
|
||||
other: A reasonable person would find this content inappropriate for respectful discourse.
|
||||
a_duplicate:
|
||||
name:
|
||||
other: duplicado
|
||||
other: a duplicate
|
||||
desc:
|
||||
other: La pregunta ya ha sido preguntada y resuelta previamente.
|
||||
not_answer:
|
||||
other: This question has been asked before and already has an answer.
|
||||
placeholder:
|
||||
other: Enter the existing question link
|
||||
not_a_answer:
|
||||
name:
|
||||
other: no una respuesta
|
||||
other: not an answer
|
||||
desc:
|
||||
other: Esto fue publicado como una respuesta, pero no intenta responder a la pregunta. Posiblemente debería de ser una edición, un comentario, otra pregunta o directamente eliminado totalmente.
|
||||
not_need:
|
||||
other: This was posted as an answer, but it does not attempt to answer the question. It should possibly be an edit, a comment, another question, or deleted altogether.
|
||||
no_longer_needed:
|
||||
name:
|
||||
other: ya no necesario
|
||||
other: no longer needed
|
||||
desc:
|
||||
other: El comentario está desactualizado, es altamente controvertido o ya no relevante para esta publicación.
|
||||
other:
|
||||
other: This comment is outdated, conversational or not relevant to this post.
|
||||
something:
|
||||
name:
|
||||
other: otra razón
|
||||
other: something else
|
||||
desc:
|
||||
other: Esta publicación requiere revisión por parte del gestor del sitio por alguna razón diferente a las anteriores.
|
||||
other: This post requires staff attention for another reason not listed above.
|
||||
placeholder:
|
||||
other: Let us know specifically what you are concerned about
|
||||
community_specific:
|
||||
name:
|
||||
other: a community-specific reason
|
||||
desc:
|
||||
other: This question doesn’t meet a community guideline.
|
||||
not_clarity:
|
||||
name:
|
||||
other: needs details or clarity
|
||||
desc:
|
||||
other: This question currently includes multiple questions in one. It should focus on one problem only.
|
||||
looks_ok:
|
||||
name:
|
||||
other: looks ok
|
||||
desc:
|
||||
other: This post is good as-is and not low quality.
|
||||
needs_edit:
|
||||
name:
|
||||
other: needs edit, and I did it
|
||||
desc:
|
||||
other: Improve and correct problems with this post yourself.
|
||||
needs_close:
|
||||
name:
|
||||
other: needs close
|
||||
desc:
|
||||
other: A closed question can’t answer, but still can edit, vote and comment.
|
||||
needs_delete:
|
||||
name:
|
||||
other: needs delete
|
||||
desc:
|
||||
other: This post will be deleted.
|
||||
question:
|
||||
close:
|
||||
duplicate:
|
||||
|
@ -245,6 +357,8 @@ backend:
|
|||
other: respondida
|
||||
modified:
|
||||
other: modificada
|
||||
deleted_title:
|
||||
other: Deleted question
|
||||
notification:
|
||||
action:
|
||||
update_question:
|
||||
|
@ -271,6 +385,67 @@ backend:
|
|||
other: Tu respuesta ha sido eliminada
|
||||
your_comment_was_deleted:
|
||||
other: Tu comentario ha sido eliminado
|
||||
up_voted_question:
|
||||
other: upvoted question
|
||||
down_voted_question:
|
||||
other: downvoted question
|
||||
up_voted_answer:
|
||||
other: upvoted answer
|
||||
down_voted_answer:
|
||||
other: downvoted answer
|
||||
up_voted_comment:
|
||||
other: upvoted comment
|
||||
invited_you_to_answer:
|
||||
other: invited you to answer
|
||||
email_tpl:
|
||||
change_email:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new email address"
|
||||
body:
|
||||
other: "Confirm your new email address for {{.SiteName}} by clicking on the following link:<br><br>\n\n<a href='{{.ChangeEmailUrl}}' target='_blank'>{{.ChangeEmailUrl}}</a><br><br>\n\nIf you did not request this change, please ignore this email.\n"
|
||||
new_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} answered your question"
|
||||
body:
|
||||
other: "<strong><a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.AnswerSummary}}</blockquote><br>\n<a href='{{.AnswerUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
invited_you_to_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} invited you to answer"
|
||||
body:
|
||||
other: "<strong><a href='{{.InviteUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><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<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
new_comment:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} commented on your post"
|
||||
body:
|
||||
other: "<strong><a href='{{.CommentUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.CommentSummary}}</blockquote><br>\n<a href='{{.CommentUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
pass_reset:
|
||||
title:
|
||||
other: "[{{.SiteName }}] Password reset"
|
||||
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"
|
||||
register:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new account"
|
||||
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"
|
||||
test:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Test Email"
|
||||
body:
|
||||
other: "This is a test email."
|
||||
action_activity_type:
|
||||
upvote:
|
||||
other: upvote
|
||||
upvoted:
|
||||
other: upvoted
|
||||
downvote:
|
||||
other: downvote
|
||||
downvoted:
|
||||
other: downvoted
|
||||
accept:
|
||||
other: accept
|
||||
accepted:
|
||||
other: accepted
|
||||
#The following fields are used for interface presentation(Front-end)
|
||||
ui:
|
||||
how_to_format:
|
||||
|
@ -328,6 +503,7 @@ ui:
|
|||
upgrade: Actualización de Answer
|
||||
maintenance: Mantenimiento del sitio web
|
||||
users: Usuarios
|
||||
oauth_callback: Processing
|
||||
http_404: HTTP Error 404
|
||||
http_50X: HTTP Error 500
|
||||
http_403: HTTP Error 403
|
||||
|
@ -337,11 +513,18 @@ ui:
|
|||
achievement: Logros
|
||||
all_read: Marcar todo como leído
|
||||
show_more: Mostrar más
|
||||
someone: Someone
|
||||
inbox_type:
|
||||
all: All
|
||||
posts: Posts
|
||||
invites: Invites
|
||||
votes: Votes
|
||||
suspended:
|
||||
title: Tu cuenta ha sido suspendida
|
||||
until_time: "Tu cuenta ha sido suspendida hasta el {{ time }}."
|
||||
forever: Este usuario ha sido suspendido indefinidamente.
|
||||
end: Has infringido alguna norma de la comunidad.
|
||||
contact_us: Contact us
|
||||
editor:
|
||||
blockquote:
|
||||
text: Cita
|
||||
|
@ -548,7 +731,7 @@ ui:
|
|||
Utiliza los comentarios para pedir más información o sugerir mejoras y modificaciones. Evita responder preguntas en los comentarios.
|
||||
tip_answer: >-
|
||||
Usa comentarios para responder a otros usuarios o notificarles de cambios. Si estás añadiendo nueva información, edita tu publicación en vez de comentar.
|
||||
tip_vote: It adds something useful to the post
|
||||
tip_vote: It adds something useful to the post
|
||||
edit_answer:
|
||||
title: Editar respuesta
|
||||
default_reason: Editar respuesta
|
||||
|
@ -630,6 +813,8 @@ ui:
|
|||
logout: Cerrar sesión
|
||||
admin: Administrador
|
||||
review: Revisar
|
||||
bookmark: Bookmarks
|
||||
moderation: Moderation
|
||||
search:
|
||||
placeholder: Buscar
|
||||
footer:
|
||||
|
@ -654,7 +839,6 @@ ui:
|
|||
msg:
|
||||
empty: No puede estar en blanco.
|
||||
login:
|
||||
page_title: Bienvenido a {{site_name}}
|
||||
login_to_continue: Inicia sesión para continuar
|
||||
info_sign: '¿No tienes cuenta? <1>Regístrate</1>'
|
||||
info_login: '¿Ya tienes una cuenta? <1>Inicia sesión</1>'
|
||||
|
@ -665,6 +849,7 @@ ui:
|
|||
msg:
|
||||
empty: El nombre no puede estar vacío.
|
||||
range: Nombre hasta 30 caracteres.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Correo electrónico
|
||||
msg:
|
||||
|
@ -684,7 +869,6 @@ ui:
|
|||
msg:
|
||||
empty: El correo electrónico no puede estar vacío.
|
||||
change_email:
|
||||
page_title: Bienvenido a {{site_name}}
|
||||
btn_cancel: Cancelar
|
||||
btn_update: Actualizar dirección de correo
|
||||
send_success: >-
|
||||
|
@ -693,6 +877,17 @@ ui:
|
|||
label: Nuevo correo electrónico
|
||||
msg:
|
||||
empty: El correo electrónico no puede estar vacío.
|
||||
oauth_bind_email:
|
||||
subtitle: Add a recovery email to your account.
|
||||
btn_update: Update email address
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
modal_title: Email already existes.
|
||||
modal_content: This email address already registered. Are you sure you want to connect to the existing account?
|
||||
modal_cancel: Change email
|
||||
modal_confirm: Connect to the existing account
|
||||
password_reset:
|
||||
page_title: Restablecimiento de Contraseña
|
||||
btn_name: Restablecer mi contraseña
|
||||
|
@ -711,6 +906,7 @@ ui:
|
|||
label: Confirmar nueva contraseña
|
||||
settings:
|
||||
page_title: Ajustes
|
||||
goto_modify: Go to Modify
|
||||
nav:
|
||||
profile: Perfil
|
||||
notification: Notificaciones
|
||||
|
@ -732,7 +928,7 @@ ui:
|
|||
avatar:
|
||||
label: Imagen de perfil
|
||||
gravatar: Gravatar
|
||||
gravatar_text: Puedes cambiar la imagen en <1>gravatar.com</1>
|
||||
gravatar_text: You can change image on
|
||||
custom: Propia
|
||||
btn_refresh: Actualizar
|
||||
custom_text: Puedes subir tu propia imagen.
|
||||
|
@ -759,8 +955,11 @@ ui:
|
|||
change_email_info: >-
|
||||
Te hemos enviado un email a esa dirección. Por favor sigue las instrucciones de confirmación.
|
||||
email:
|
||||
label: Correo electrónico
|
||||
msg: El correo electrónico no puede estar vacío.
|
||||
label: New Email
|
||||
msg: New Email cannot be empty.
|
||||
pass:
|
||||
label: Current Password
|
||||
msg: Password cannot be empty.
|
||||
password_title: Contraseña
|
||||
current_pass:
|
||||
label: Contraseña actual
|
||||
|
@ -777,6 +976,13 @@ ui:
|
|||
lang:
|
||||
label: Idioma de la Interfaz
|
||||
text: Idioma de la interfaz de usuario. Cambiará cuando actualices la página.
|
||||
my_logins:
|
||||
title: My Logins
|
||||
label: Log in or sign up on this site using these accounts.
|
||||
modal_title: Remove Login
|
||||
modal_content: Are you sure you want to remove this login from your account?
|
||||
modal_confirm_btn: Remove
|
||||
remove_success: Removed successfully
|
||||
toast:
|
||||
update: actualización correcta
|
||||
update_password: Contraseña cambiada con éxito.
|
||||
|
@ -787,6 +993,12 @@ ui:
|
|||
title: Preguntas relacionadas
|
||||
btn: Añadir pregunta
|
||||
answers: respuestas
|
||||
invite_to_answer:
|
||||
title: People asked
|
||||
desc: Invite people who you think might know the answer.
|
||||
invite: Invite to answer
|
||||
add: Add people
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
Asked: Preguntada
|
||||
|
@ -796,12 +1008,13 @@ ui:
|
|||
Views: Visto
|
||||
Follow: Seguir
|
||||
Following: Siguiendo
|
||||
follow_tip: Follow this question to receive notifications
|
||||
answered: respondida
|
||||
closed_in: Cerrado el
|
||||
show_exist: Mostrar una pregunta existente.
|
||||
useful: Useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
answer_useful: It is useful
|
||||
answer_un_useful: It is not useful
|
||||
answers:
|
||||
|
@ -849,6 +1062,7 @@ ui:
|
|||
btns:
|
||||
confirm: Confirmar
|
||||
cancel: Cancelar
|
||||
edit: Edit
|
||||
save: Guardar
|
||||
delete: Eliminar
|
||||
login: Acceder
|
||||
|
@ -861,6 +1075,10 @@ ui:
|
|||
skip: Omitir
|
||||
discard_draft: Descartar borrador
|
||||
pinned: Pinned
|
||||
all: All
|
||||
question: Question
|
||||
answer: Answer
|
||||
comment: Comment
|
||||
search:
|
||||
title: Resultados de la búsqueda
|
||||
keywords: Palabras claves
|
||||
|
@ -895,7 +1113,6 @@ ui:
|
|||
modal_confirm:
|
||||
title: Error...
|
||||
account_result:
|
||||
page_title: Bienvenido a {{site_name}}
|
||||
success: Tu nueva cuenta ha sido confirmada, serás redirigido a la página de inicio.
|
||||
link: Continuar a la página de inicio
|
||||
invalid: >-
|
||||
|
@ -956,8 +1173,7 @@ ui:
|
|||
accepted: Aceptada
|
||||
answered: respondida
|
||||
asked: preguntó
|
||||
upvote: votar a favor
|
||||
downvote: voto negativo
|
||||
downvoted: downvoted
|
||||
mod_short: Modificación
|
||||
mod_long: Moderadores
|
||||
x_reputation: reputación
|
||||
|
@ -1019,6 +1235,7 @@ ui:
|
|||
admin_name:
|
||||
label: Nombre
|
||||
msg: El nombre no puede estar vacío.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
admin_password:
|
||||
label: Contraseña
|
||||
text: >-
|
||||
|
@ -1076,8 +1293,19 @@ ui:
|
|||
seo: ESTE
|
||||
customize: Personalizar
|
||||
themes: Temas
|
||||
css-html: CSS/HTML
|
||||
css_html: CSS/HTML
|
||||
login: Iniciar sesión
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
plugins:
|
||||
login: Login
|
||||
qrcode_login_tip: Please use {{ agentName }} to scan the QR code and log in.
|
||||
login_failed_email_tip: Login failed, please allow this app to access your email information before try again.
|
||||
oauth:
|
||||
connect: Connect with {{ auth_name }}
|
||||
remove: Remove {{ auth_name }}
|
||||
admin:
|
||||
admin_header:
|
||||
title: Administrador
|
||||
|
@ -1120,6 +1348,7 @@ ui:
|
|||
pending: Pendiente
|
||||
completed: Terminado
|
||||
flagged: Marcado
|
||||
flagged_type: Flagged {{ type }}
|
||||
created: Creado
|
||||
action: Acción
|
||||
review: Revisar
|
||||
|
@ -1147,7 +1376,7 @@ ui:
|
|||
closed_name: cerrada
|
||||
closed_desc: "Una pregunta cerrada no puede responder, pero aún puede editar, votar y comentar."
|
||||
deleted_name: eliminado
|
||||
deleted_desc: Toda la reputación ganada y perdida será restaurada.
|
||||
deleted_desc: This post will be deleted.
|
||||
btn_cancel: Cancelar
|
||||
btn_submit: Entregar
|
||||
btn_next: Próximo
|
||||
|
@ -1268,9 +1497,6 @@ ui:
|
|||
label: Zona horaria
|
||||
msg: Timezone cannot be empty.
|
||||
text: Elija una ciudad en la misma zona horaria que usted.
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
|
@ -1380,22 +1606,77 @@ ui:
|
|||
footer:
|
||||
label: Pie de página
|
||||
text: Esto se insertará antes de </html>.
|
||||
sidebar:
|
||||
label: Sidebar
|
||||
text: This will insert in sidebar.
|
||||
login:
|
||||
page_title: Iniciar sesión
|
||||
membership:
|
||||
title: Membresía
|
||||
label: Permitir registro de nuevas ceuntas
|
||||
text: Desactiva esto para evitar que cualquier persona pueda crear una cuenta.
|
||||
email_registration:
|
||||
title: Email registration
|
||||
label: Allow email registration
|
||||
text: Turn off to prevent anyone creating new account through email.
|
||||
allowed_email_domains:
|
||||
title: Allowed email domains
|
||||
text: Email domains that users must register accounts with. One domain per line. Ignored when empty.
|
||||
private:
|
||||
title: Privado
|
||||
label: Inicio de sesión requerido
|
||||
text: Sólo usuarios con sesión iniciada pueden acceder a esta comunidad.
|
||||
installed_plugins:
|
||||
title: Installed Plugins
|
||||
filter:
|
||||
all: All
|
||||
active: Active
|
||||
inactive: Inactive
|
||||
outdated: Outdated
|
||||
plugins:
|
||||
label: Plugins
|
||||
text: Select an existing plugin.
|
||||
name: Name
|
||||
version: Version
|
||||
status: Status
|
||||
action: Action
|
||||
deactivate: Deactivate
|
||||
activate: Activate
|
||||
settings: Settings
|
||||
settings_users:
|
||||
title: Users
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar Base URL
|
||||
text: URL of the Gravatar provider’s API base. Ignored when empty.
|
||||
profile_editable:
|
||||
title: Profile Editable
|
||||
allow_update_display_name:
|
||||
label: Allow users to change their display name
|
||||
allow_update_username:
|
||||
label: Allow users to change their username
|
||||
allow_update_avatar:
|
||||
label: Allow users to change their profile image
|
||||
allow_update_bio:
|
||||
label: Allow users to change their about me
|
||||
allow_update_website:
|
||||
label: Allow users to change their website
|
||||
allow_update_location:
|
||||
label: Allow users to change their location
|
||||
privilege:
|
||||
title: Privileges
|
||||
level:
|
||||
label: Reputation required level
|
||||
text: Choose the reputation required for the privileges
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: no puede estar en blanco
|
||||
invalid: no es válido
|
||||
btn_submit: Guardar
|
||||
not_found_props: "La propiedad requerida {{ key }} no se ha encontrado."
|
||||
select: Select
|
||||
page_review:
|
||||
review: Revisar
|
||||
proposed: propuesto
|
||||
|
|
425
i18n/fr_FR.yaml
425
i18n/fr_FR.yaml
|
@ -11,25 +11,31 @@ backend:
|
|||
other: Non autorisé.
|
||||
database_error:
|
||||
other: Erreur du serveur de données.
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
action:
|
||||
report:
|
||||
other: Flag
|
||||
edit:
|
||||
other: Edit
|
||||
other: Éditer
|
||||
delete:
|
||||
other: Delete
|
||||
other: Supprimer
|
||||
close:
|
||||
other: Close
|
||||
other: Fermer
|
||||
reopen:
|
||||
other: Reopen
|
||||
other: Rouvrir
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
pin:
|
||||
other: Pin
|
||||
other: Épingler
|
||||
hide:
|
||||
other: Unlist
|
||||
other: Délister
|
||||
unpin:
|
||||
other: Unpin
|
||||
other: Désépingler
|
||||
show:
|
||||
other: List
|
||||
other: Liste
|
||||
invite_someone_to_answer:
|
||||
other: Edit
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
|
@ -45,6 +51,60 @@ backend:
|
|||
other: Possède tous les droits pour accéder au site.
|
||||
moderator:
|
||||
other: Possède les accès à tous les messages sauf aux paramètres d'administration.
|
||||
privilege:
|
||||
level_1:
|
||||
description:
|
||||
other: Level 1 (less reputation required for private team, group)
|
||||
level_2:
|
||||
description:
|
||||
other: Level 2 (low reputation required for startup community)
|
||||
level_3:
|
||||
description:
|
||||
other: Level 3 (high reputation required for mature community)
|
||||
rank_question_add_label:
|
||||
other: Ask question
|
||||
rank_answer_add_label:
|
||||
other: Write answer
|
||||
rank_comment_add_label:
|
||||
other: Write comment
|
||||
rank_report_add_label:
|
||||
other: Flag
|
||||
rank_comment_vote_up_label:
|
||||
other: Upvote comment
|
||||
rank_link_url_limit_label:
|
||||
other: Post more than 2 links at a time
|
||||
rank_question_vote_up_label:
|
||||
other: Upvote question
|
||||
rank_answer_vote_up_label:
|
||||
other: Upvote answer
|
||||
rank_question_vote_down_label:
|
||||
other: Downvote question
|
||||
rank_answer_vote_down_label:
|
||||
other: Downvote answer
|
||||
rank_invite_someone_to_answer_label:
|
||||
other: Invite someone to answer
|
||||
rank_tag_add_label:
|
||||
other: Create new tag
|
||||
rank_tag_edit_label:
|
||||
other: Edit tag description (need to review)
|
||||
rank_question_edit_label:
|
||||
other: Edit other's question (need to review)
|
||||
rank_answer_edit_label:
|
||||
other: Edit other's answer (need to review)
|
||||
rank_question_edit_without_review_label:
|
||||
other: Edit other's question without review
|
||||
rank_answer_edit_without_review_label:
|
||||
other: Edit other's answer without review
|
||||
rank_question_audit_label:
|
||||
other: Review question edits
|
||||
rank_answer_audit_label:
|
||||
other: Review answer edits
|
||||
rank_tag_audit_label:
|
||||
other: Review tag edits
|
||||
rank_tag_edit_without_review_label:
|
||||
other: Edit tag description without review
|
||||
rank_tag_synonym_label:
|
||||
other: Manage tag synonyms
|
||||
email:
|
||||
other: Email
|
||||
password:
|
||||
|
@ -52,6 +112,9 @@ backend:
|
|||
email_or_password_wrong_error:
|
||||
other: L'email et le mot de passe ne correspondent pas.
|
||||
error:
|
||||
password:
|
||||
space_invalid:
|
||||
other: Password cannot contain spaces.
|
||||
admin:
|
||||
cannot_update_their_password:
|
||||
other: Vous ne pouvez pas modifier votre mot de passe.
|
||||
|
@ -82,6 +145,8 @@ backend:
|
|||
other: L'adresse e-mail doit être vérifiée.
|
||||
verify_url_expired:
|
||||
other: L'URL de vérification de l'email a expiré, veuillez renvoyer l'email.
|
||||
illegal_email_domain_error:
|
||||
other: Email is not allowed from that email domain. Please use another one.
|
||||
lang:
|
||||
not_found:
|
||||
other: Fichier de langue non trouvé.
|
||||
|
@ -119,7 +184,9 @@ backend:
|
|||
fail_to_meet_the_condition:
|
||||
other: Le rang ne remplit pas la condition.
|
||||
vote_fail_to_meet_the_condition:
|
||||
other: Thanks for the feedback. You need at least {{ rank }} reputation to cast a vote.
|
||||
other: Thanks for the feedback. You need at least {{.Rank}} reputation to cast a vote.
|
||||
no_enough_rank_to_operate:
|
||||
other: You need at least {{.Rank}} reputation to do this.
|
||||
report:
|
||||
handle_failed:
|
||||
other: La gestion du rapport a échoué.
|
||||
|
@ -154,6 +221,10 @@ backend:
|
|||
no_permission:
|
||||
other: Vous n'êtes pas autorisé à Vérifier.
|
||||
user:
|
||||
external_login_missing_user_id:
|
||||
other: The third-party platform does not provide a unique UserID, so you cannot login, please contact the website administrator.
|
||||
external_login_unbinding_forbidden:
|
||||
other: Please set a login password for your account before you remove this login.
|
||||
email_or_password_wrong:
|
||||
other:
|
||||
other: L'email et le mot de passe ne correspondent pas.
|
||||
|
@ -171,6 +242,10 @@ backend:
|
|||
other: Vous ne pouvez pas modifier votre rôle.
|
||||
not_allowed_registration:
|
||||
other: Actuellement, le site n'est pas ouvert aux inscriptions
|
||||
access_denied:
|
||||
other: Access denied
|
||||
page_access_denied:
|
||||
other: You do not have access to this page.
|
||||
config:
|
||||
read_config_failed:
|
||||
other: La lecture de la configuration a échoué
|
||||
|
@ -185,37 +260,74 @@ backend:
|
|||
upload:
|
||||
unsupported_file_format:
|
||||
other: Format de fichier non supporté.
|
||||
report:
|
||||
site_info:
|
||||
config_not_found:
|
||||
other: Site config not found.
|
||||
reason:
|
||||
spam:
|
||||
name:
|
||||
other: spam
|
||||
desc:
|
||||
other: Ce message est une publicité ou un vandalisme. Il n'est pas utile ou pertinent pour le sujet actuel.
|
||||
rude:
|
||||
other: This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.
|
||||
rude_or_abusive:
|
||||
name:
|
||||
other: grossier ou abusif
|
||||
other: rude or abusive
|
||||
desc:
|
||||
other: Une personne raisonnable jugerait que ce contenu est inapproprié pour un discours respectueux.
|
||||
duplicate:
|
||||
other: A reasonable person would find this content inappropriate for respectful discourse.
|
||||
a_duplicate:
|
||||
name:
|
||||
other: doublon
|
||||
other: a duplicate
|
||||
desc:
|
||||
other: Cette question a déjà été posée auparavant et a déjà une réponse.
|
||||
not_answer:
|
||||
other: This question has been asked before and already has an answer.
|
||||
placeholder:
|
||||
other: Enter the existing question link
|
||||
not_a_answer:
|
||||
name:
|
||||
other: ce n'est pas une réponse
|
||||
other: not an answer
|
||||
desc:
|
||||
other: Cela a été posté comme une réponse, mais il n'essaie pas de répondre à la question. Il devrait s'agir d'une modification, d'un commentaire, d'une autre question, ou d'une suppression totale.
|
||||
not_need:
|
||||
other: This was posted as an answer, but it does not attempt to answer the question. It should possibly be an edit, a comment, another question, or deleted altogether.
|
||||
no_longer_needed:
|
||||
name:
|
||||
other: n’est plus nécessaire
|
||||
other: no longer needed
|
||||
desc:
|
||||
other: Ce commentaire est obsolète, conversationnel ou non pertinent pour ce post.
|
||||
other:
|
||||
other: This comment is outdated, conversational or not relevant to this post.
|
||||
something:
|
||||
name:
|
||||
other: quelque chose d'autre
|
||||
other: something else
|
||||
desc:
|
||||
other: Ce message nécessite l'attention du personnel pour une autre raison non listée ci-dessus.
|
||||
other: This post requires staff attention for another reason not listed above.
|
||||
placeholder:
|
||||
other: Let us know specifically what you are concerned about
|
||||
community_specific:
|
||||
name:
|
||||
other: a community-specific reason
|
||||
desc:
|
||||
other: This question doesn’t meet a community guideline.
|
||||
not_clarity:
|
||||
name:
|
||||
other: needs details or clarity
|
||||
desc:
|
||||
other: This question currently includes multiple questions in one. It should focus on one problem only.
|
||||
looks_ok:
|
||||
name:
|
||||
other: looks ok
|
||||
desc:
|
||||
other: This post is good as-is and not low quality.
|
||||
needs_edit:
|
||||
name:
|
||||
other: needs edit, and I did it
|
||||
desc:
|
||||
other: Improve and correct problems with this post yourself.
|
||||
needs_close:
|
||||
name:
|
||||
other: needs close
|
||||
desc:
|
||||
other: A closed question can’t answer, but still can edit, vote and comment.
|
||||
needs_delete:
|
||||
name:
|
||||
other: needs delete
|
||||
desc:
|
||||
other: This post will be deleted.
|
||||
question:
|
||||
close:
|
||||
duplicate:
|
||||
|
@ -245,6 +357,8 @@ backend:
|
|||
other: a répondu
|
||||
modified:
|
||||
other: modifié
|
||||
deleted_title:
|
||||
other: Deleted question
|
||||
notification:
|
||||
action:
|
||||
update_question:
|
||||
|
@ -271,6 +385,67 @@ backend:
|
|||
other: Votre réponse a bien été supprimée
|
||||
your_comment_was_deleted:
|
||||
other: Votre commentaire a été supprimé
|
||||
up_voted_question:
|
||||
other: upvoted question
|
||||
down_voted_question:
|
||||
other: downvoted question
|
||||
up_voted_answer:
|
||||
other: upvoted answer
|
||||
down_voted_answer:
|
||||
other: downvoted answer
|
||||
up_voted_comment:
|
||||
other: upvoted comment
|
||||
invited_you_to_answer:
|
||||
other: invited you to answer
|
||||
email_tpl:
|
||||
change_email:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new email address"
|
||||
body:
|
||||
other: "Confirm your new email address for {{.SiteName}} by clicking on the following link:<br><br>\n\n<a href='{{.ChangeEmailUrl}}' target='_blank'>{{.ChangeEmailUrl}}</a><br><br>\n\nIf you did not request this change, please ignore this email.\n"
|
||||
new_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} answered your question"
|
||||
body:
|
||||
other: "<strong><a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.AnswerSummary}}</blockquote><br>\n<a href='{{.AnswerUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
invited_you_to_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} invited you to answer"
|
||||
body:
|
||||
other: "<strong><a href='{{.InviteUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><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<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
new_comment:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} commented on your post"
|
||||
body:
|
||||
other: "<strong><a href='{{.CommentUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.CommentSummary}}</blockquote><br>\n<a href='{{.CommentUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
pass_reset:
|
||||
title:
|
||||
other: "[{{.SiteName }}] Password reset"
|
||||
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"
|
||||
register:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new account"
|
||||
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"
|
||||
test:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Test Email"
|
||||
body:
|
||||
other: "This is a test email."
|
||||
action_activity_type:
|
||||
upvote:
|
||||
other: upvote
|
||||
upvoted:
|
||||
other: upvoted
|
||||
downvote:
|
||||
other: downvote
|
||||
downvoted:
|
||||
other: downvoted
|
||||
accept:
|
||||
other: accept
|
||||
accepted:
|
||||
other: accepted
|
||||
#The following fields are used for interface presentation(Front-end)
|
||||
ui:
|
||||
how_to_format:
|
||||
|
@ -307,20 +482,28 @@ ui:
|
|||
upgrade: Mise à jour d'Answer
|
||||
maintenance: Maintenance du site
|
||||
users: Utilisateurs
|
||||
oauth_callback: Processing
|
||||
http_404: Erreur HTTP 404
|
||||
http_50X: Erreur HTTP 500
|
||||
http_403: HTTP Error 403
|
||||
http_403: Erreur HTTP 403
|
||||
notifications:
|
||||
title: Notifications
|
||||
inbox: Boîte de réception
|
||||
achievement: Succès
|
||||
all_read: Tout marquer comme lu
|
||||
show_more: Afficher plus
|
||||
someone: Someone
|
||||
inbox_type:
|
||||
all: All
|
||||
posts: Posts
|
||||
invites: Invites
|
||||
votes: Votes
|
||||
suspended:
|
||||
title: Votre compte a été suspendu
|
||||
until_time: "Votre compte a été suspendu jusqu'au {{ time }}."
|
||||
forever: Cet utilisateur a été suspendu pour toujours.
|
||||
end: Vous ne respectez pas les directives de la communauté.
|
||||
contact_us: Contact us
|
||||
editor:
|
||||
blockquote:
|
||||
text: Bloc de citation
|
||||
|
@ -527,7 +710,7 @@ ui:
|
|||
Utilisez les commentaires pour demander plus d'informations ou suggérer des améliorations. Évitez de répondre aux questions dans les commentaires.
|
||||
tip_answer: >-
|
||||
Utilisez des commentaires pour répondre à d'autres utilisateurs ou leur signaler des modifications. Si vous ajoutez de nouvelles informations, modifiez votre message au lieu de commenter.
|
||||
tip_vote: It adds something useful to the post
|
||||
tip_vote: It adds something useful to the post
|
||||
edit_answer:
|
||||
title: Modifier la réponse
|
||||
default_reason: Modifier la réponse
|
||||
|
@ -609,6 +792,8 @@ ui:
|
|||
logout: Se déconnecter
|
||||
admin: Administration
|
||||
review: Vérifier
|
||||
bookmark: Bookmarks
|
||||
moderation: Moderation
|
||||
search:
|
||||
placeholder: Rechercher
|
||||
footer:
|
||||
|
@ -633,7 +818,6 @@ ui:
|
|||
msg:
|
||||
empty: Ne peut pas être vide.
|
||||
login:
|
||||
page_title: Bienvenue sur {{site_name}}
|
||||
login_to_continue: Connectez-vous pour continuer
|
||||
info_sign: Vous n'avez pas de compte ? <1>Inscrivez-vous</1>
|
||||
info_login: Vous avez déjà un compte ? <1>Connectez-vous</1>
|
||||
|
@ -644,6 +828,7 @@ ui:
|
|||
msg:
|
||||
empty: Le nom ne peut pas être vide.
|
||||
range: Le nom doit contenir moins de 30 caractères.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
|
@ -663,7 +848,6 @@ ui:
|
|||
msg:
|
||||
empty: L'e-mail ne peut pas être vide.
|
||||
change_email:
|
||||
page_title: Bienvenue sur {{site_name}}
|
||||
btn_cancel: Annuler
|
||||
btn_update: Mettre à jour l'adresse e-mail
|
||||
send_success: >-
|
||||
|
@ -672,6 +856,17 @@ ui:
|
|||
label: Nouvel e-mail
|
||||
msg:
|
||||
empty: L'email ne peut pas être vide.
|
||||
oauth_bind_email:
|
||||
subtitle: Add a recovery email to your account.
|
||||
btn_update: Update email address
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
modal_title: Email already existes.
|
||||
modal_content: This email address already registered. Are you sure you want to connect to the existing account?
|
||||
modal_cancel: Change email
|
||||
modal_confirm: Connect to the existing account
|
||||
password_reset:
|
||||
page_title: Réinitialiser le mot de passe
|
||||
btn_name: Réinitialiser mon mot de passe
|
||||
|
@ -690,6 +885,7 @@ ui:
|
|||
label: Confirmer le nouveau mot de passe
|
||||
settings:
|
||||
page_title: Paramètres
|
||||
goto_modify: Go to Modify
|
||||
nav:
|
||||
profile: Profil
|
||||
notification: Notifications
|
||||
|
@ -711,7 +907,7 @@ ui:
|
|||
avatar:
|
||||
label: Image de profil
|
||||
gravatar: Gravatar
|
||||
gravatar_text: Vous pouvez changer d'image sur <1>gravatar.com</1>
|
||||
gravatar_text: You can change image on
|
||||
custom: Personnaliser
|
||||
btn_refresh: Actualiser
|
||||
custom_text: Vous pouvez charger votre image.
|
||||
|
@ -738,8 +934,11 @@ ui:
|
|||
change_email_info: >-
|
||||
Nous vous avons envoyé un mail à cette adresse. Merci de suivre les instructions.
|
||||
email:
|
||||
label: E-mail
|
||||
msg: L'e-mail ne peut pas être vide.
|
||||
label: New Email
|
||||
msg: New Email cannot be empty.
|
||||
pass:
|
||||
label: Current Password
|
||||
msg: Password cannot be empty.
|
||||
password_title: Mot de passe
|
||||
current_pass:
|
||||
label: Mot de passe actuel
|
||||
|
@ -756,6 +955,13 @@ ui:
|
|||
lang:
|
||||
label: Langue de l'interface
|
||||
text: Langue de l'interface utilisateur. Cela changera lorsque vous rafraîchissez la page.
|
||||
my_logins:
|
||||
title: My Logins
|
||||
label: Log in or sign up on this site using these accounts.
|
||||
modal_title: Remove Login
|
||||
modal_content: Are you sure you want to remove this login from your account?
|
||||
modal_confirm_btn: Remove
|
||||
remove_success: Removed successfully
|
||||
toast:
|
||||
update: mise à jour effectuée
|
||||
update_password: Mot de passe changé avec succès.
|
||||
|
@ -766,6 +972,12 @@ ui:
|
|||
title: Questions liées
|
||||
btn: Ajouter une question
|
||||
answers: réponses
|
||||
invite_to_answer:
|
||||
title: People asked
|
||||
desc: Invite people who you think might know the answer.
|
||||
invite: Invite to answer
|
||||
add: Add people
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
Asked: Demandé
|
||||
|
@ -775,14 +987,15 @@ ui:
|
|||
Views: Consultée
|
||||
Follow: S’abonner
|
||||
Following: Abonné(s)
|
||||
follow_tip: Follow this question to receive notifications
|
||||
answered: répondu
|
||||
closed_in: Fermé dans
|
||||
show_exist: Afficher la question existante.
|
||||
useful: Useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
answer_useful: It is useful
|
||||
answer_un_useful: It is not useful
|
||||
useful: Utile
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
answer_useful: C'est utile
|
||||
answer_un_useful: Ce n'est pas utile
|
||||
answers:
|
||||
title: Réponses
|
||||
score: Score
|
||||
|
@ -800,19 +1013,19 @@ ui:
|
|||
empty: La réponse ne peut être vide.
|
||||
characters: le contenu doit comporter au moins 6 caractères.
|
||||
tips:
|
||||
header_1: Thanks for your answer
|
||||
li1_1: Please be sure to <strong>answer the question</strong>. Provide details and share your research.
|
||||
li1_2: Back up any statements you make with references or personal experience.
|
||||
header_2: But <strong>avoid</strong> ...
|
||||
li2_1: Asking for help, seeking clarification, or responding to other answers.
|
||||
header_1: Merci pour votre réponse
|
||||
li1_1: N’oubliez pas de <strong>répondre à la question</strong>. Fournissez des détails et partagez vos recherches.
|
||||
li1_2: Sauvegardez toutes les déclarations que vous faites avec des références ou une expérience personnelle.
|
||||
header_2: Mais <strong>évitez</strong>...
|
||||
li2_1: Demander de l’aide, chercher des éclaircissements ou répondre à d’autres réponses.
|
||||
reopen:
|
||||
confirm_btn: Reopen
|
||||
confirm_btn: Rouvrir
|
||||
title: Rouvrir ce message
|
||||
content: Êtes-vous sûr de vouloir rouvrir ?
|
||||
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.
|
||||
confirm_btn: Pin
|
||||
title: Épingler cet article
|
||||
content: Êtes-vous sûr de vouloir l'épingler globalement ? Ce message apparaîtra en haut de toutes les listes de messages.
|
||||
confirm_btn: Épingler
|
||||
delete:
|
||||
title: Supprimer la publication
|
||||
question: >-
|
||||
|
@ -824,6 +1037,7 @@ ui:
|
|||
btns:
|
||||
confirm: Confimer
|
||||
cancel: Annuler
|
||||
edit: Edit
|
||||
save: Enregistrer
|
||||
delete: Supprimer
|
||||
login: Se connecter
|
||||
|
@ -835,7 +1049,11 @@ ui:
|
|||
reject: Rejeter
|
||||
skip: Ignorer
|
||||
discard_draft: Abandonner le brouillon
|
||||
pinned: Pinned
|
||||
pinned: Épinglé
|
||||
all: All
|
||||
question: Question
|
||||
answer: Answer
|
||||
comment: Comment
|
||||
search:
|
||||
title: Résultats de la recherche
|
||||
keywords: Mots-clés
|
||||
|
@ -870,7 +1088,6 @@ ui:
|
|||
modal_confirm:
|
||||
title: Erreur...
|
||||
account_result:
|
||||
page_title: Bienvenue sur {{site_name}}
|
||||
success: Votre nouveau compte est confirmé; vous serez redirigé vers la page d'accueil.
|
||||
link: Continuer vers la page d'accueil
|
||||
invalid: >-
|
||||
|
@ -931,8 +1148,7 @@ ui:
|
|||
accepted: Accepté
|
||||
answered: a répondu
|
||||
asked: a demandé
|
||||
upvote: voter pour
|
||||
downvote: voter contre
|
||||
downvoted: downvoted
|
||||
mod_short: Modérateurs
|
||||
mod_long: Modérateurs
|
||||
x_reputation: réputation
|
||||
|
@ -994,6 +1210,7 @@ ui:
|
|||
admin_name:
|
||||
label: Nom
|
||||
msg: Le nom ne peut pas être vide.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
admin_password:
|
||||
label: Mot de passe
|
||||
text: >-
|
||||
|
@ -1025,11 +1242,11 @@ ui:
|
|||
answers: réponses
|
||||
accepted: Accepté
|
||||
page_error:
|
||||
http_error: HTTP Error {{ code }}
|
||||
desc_403: You don’t have permission to access this page.
|
||||
desc_404: Unfortunately, this page doesn't exist.
|
||||
desc_50X: The server encountered an error and could not complete your request.
|
||||
back_home: Back to homepage
|
||||
http_error: Erreur HTTP {{ code }}
|
||||
desc_403: Vous n'avez pas la permission d'accéder à cette page.
|
||||
desc_404: Malheureusement, cette page n'existe pas.
|
||||
desc_50X: Le serveur a rencontré une erreur et n'a pas pu répondre à votre requête.
|
||||
back_home: Retour à la page d'accueil
|
||||
page_maintenance:
|
||||
desc: "Nous sommes en maintenance, nous serons bientôt de retour."
|
||||
nav_menus:
|
||||
|
@ -1051,8 +1268,19 @@ ui:
|
|||
seo: SEO
|
||||
customize: Personnaliser
|
||||
themes: Thèmes
|
||||
css-html: CSS/HTML
|
||||
css_html: CSS/HTML
|
||||
login: Se connecter
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
plugins:
|
||||
login: Login
|
||||
qrcode_login_tip: Please use {{ agentName }} to scan the QR code and log in.
|
||||
login_failed_email_tip: Login failed, please allow this app to access your email information before try again.
|
||||
oauth:
|
||||
connect: Connect with {{ auth_name }}
|
||||
remove: Remove {{ auth_name }}
|
||||
admin:
|
||||
admin_header:
|
||||
title: Admin
|
||||
|
@ -1095,6 +1323,7 @@ ui:
|
|||
pending: En attente
|
||||
completed: Complété
|
||||
flagged: Signalé
|
||||
flagged_type: Flagged {{ type }}
|
||||
created: Créé
|
||||
action: Action
|
||||
review: Vérification
|
||||
|
@ -1122,7 +1351,7 @@ ui:
|
|||
closed_name: fermé
|
||||
closed_desc: "Une question fermée ne peut pas être répondue, mais peut-être quand même modifiée, votée et commentée."
|
||||
deleted_name: supprimé
|
||||
deleted_desc: Tous les points de réputation gagnés et perdus seront restaurés.
|
||||
deleted_desc: This post will be deleted.
|
||||
btn_cancel: Annuler
|
||||
btn_submit: Valider
|
||||
btn_next: Suivant
|
||||
|
@ -1243,9 +1472,6 @@ ui:
|
|||
label: Fuseau Horaire
|
||||
msg: Le fuseau horaire ne peut pas être vide.
|
||||
text: Choisissez une ville dans le même fuseau horaire que vous.
|
||||
avatar:
|
||||
label: Avatar par défaut
|
||||
text: Pour les utilisateurs sans avatar personnalisé.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
|
@ -1355,22 +1581,77 @@ ui:
|
|||
footer:
|
||||
label: Footer
|
||||
text: Ceci va être inséré avant </html>.
|
||||
sidebar:
|
||||
label: Sidebar
|
||||
text: This will insert in sidebar.
|
||||
login:
|
||||
page_title: Se connecter
|
||||
membership:
|
||||
title: Adhésion
|
||||
label: Autoriser les inscriptions
|
||||
text: Désactivez pour empêcher quiconque de créer un nouveau compte.
|
||||
email_registration:
|
||||
title: Email registration
|
||||
label: Allow email registration
|
||||
text: Turn off to prevent anyone creating new account through email.
|
||||
allowed_email_domains:
|
||||
title: Allowed email domains
|
||||
text: Email domains that users must register accounts with. One domain per line. Ignored when empty.
|
||||
private:
|
||||
title: Privé
|
||||
label: Connexion requise
|
||||
text: Seuls les utilisateurs connectés peuvent accéder à cette communauté.
|
||||
installed_plugins:
|
||||
title: Installed Plugins
|
||||
filter:
|
||||
all: All
|
||||
active: Active
|
||||
inactive: Inactive
|
||||
outdated: Outdated
|
||||
plugins:
|
||||
label: Plugins
|
||||
text: Select an existing plugin.
|
||||
name: Name
|
||||
version: Version
|
||||
status: Status
|
||||
action: Action
|
||||
deactivate: Deactivate
|
||||
activate: Activate
|
||||
settings: Settings
|
||||
settings_users:
|
||||
title: Users
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar Base URL
|
||||
text: URL of the Gravatar provider’s API base. Ignored when empty.
|
||||
profile_editable:
|
||||
title: Profile Editable
|
||||
allow_update_display_name:
|
||||
label: Allow users to change their display name
|
||||
allow_update_username:
|
||||
label: Allow users to change their username
|
||||
allow_update_avatar:
|
||||
label: Allow users to change their profile image
|
||||
allow_update_bio:
|
||||
label: Allow users to change their about me
|
||||
allow_update_website:
|
||||
label: Allow users to change their website
|
||||
allow_update_location:
|
||||
label: Allow users to change their location
|
||||
privilege:
|
||||
title: Privileges
|
||||
level:
|
||||
label: Reputation required level
|
||||
text: Choose the reputation required for the privileges
|
||||
form:
|
||||
optional: (optionnel)
|
||||
empty: ne peut pas être vide
|
||||
invalid: est invalide
|
||||
btn_submit: Sauvegarder
|
||||
not_found_props: "La propriété requise {{ key }} est introuvable."
|
||||
select: Select
|
||||
page_review:
|
||||
review: Vérifier
|
||||
proposed: proposé
|
||||
|
@ -1397,10 +1678,10 @@ ui:
|
|||
closed: fermé
|
||||
reopened: réouvert
|
||||
created: créé
|
||||
pin: pinned
|
||||
unpin: unpinned
|
||||
show: listed
|
||||
hide: unlisted
|
||||
pin: épinglé
|
||||
unpin: non épinglé
|
||||
show: listé
|
||||
hide: non listé
|
||||
title: "Historique de"
|
||||
tag_title: "Chronologie de"
|
||||
show_votes: "Afficher les votes"
|
||||
|
@ -1415,8 +1696,8 @@ ui:
|
|||
no_data: "Nous n'avons rien pu trouver."
|
||||
users:
|
||||
title: Utilisateurs
|
||||
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
|
||||
users_with_the_most_reputation: Utilisateurs ayant le score de réputation le plus élevé cette semaine
|
||||
users_with_the_most_vote: Utilisateurs qui ont le plus voté cette semaine
|
||||
staffs: Staff de la communauté
|
||||
reputation: réputation
|
||||
votes: votes
|
||||
|
@ -1427,8 +1708,8 @@ ui:
|
|||
discard_confirm: Êtes-vous sûr de vouloir abandonner ce brouillon ?
|
||||
messages:
|
||||
post_deleted: Ce message a été supprimé.
|
||||
post_pin: This post has been pinned.
|
||||
post_unpin: This post has been unpinned.
|
||||
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_pin: Ce message a été épinglé.
|
||||
post_unpin: Ce message a été déépinglé.
|
||||
post_hide_list: Ce message a été masqué de la liste.
|
||||
post_show_list: Ce message a été affiché dans la liste.
|
||||
post_reopen: Ce message a été rouvert.
|
||||
|
|
351
i18n/id_ID.yaml
351
i18n/id_ID.yaml
|
@ -11,6 +11,8 @@ backend:
|
|||
other: Tidak diizinkan.
|
||||
database_error:
|
||||
other: Kesalahan data server.
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
action:
|
||||
report:
|
||||
other: Flag
|
||||
|
@ -22,6 +24,8 @@ backend:
|
|||
other: Close
|
||||
reopen:
|
||||
other: Reopen
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
pin:
|
||||
other: Pin
|
||||
hide:
|
||||
|
@ -30,6 +34,8 @@ backend:
|
|||
other: Unpin
|
||||
show:
|
||||
other: List
|
||||
invite_someone_to_answer:
|
||||
other: Edit
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
|
@ -45,6 +51,60 @@ backend:
|
|||
other: Memiliki hak penuh untuk mengakses website.
|
||||
moderator:
|
||||
other: Memiliki hak penuh pada semua pertanyaan, kecuali pengaturan Admin.
|
||||
privilege:
|
||||
level_1:
|
||||
description:
|
||||
other: Level 1 (less reputation required for private team, group)
|
||||
level_2:
|
||||
description:
|
||||
other: Level 2 (low reputation required for startup community)
|
||||
level_3:
|
||||
description:
|
||||
other: Level 3 (high reputation required for mature community)
|
||||
rank_question_add_label:
|
||||
other: Ask question
|
||||
rank_answer_add_label:
|
||||
other: Write answer
|
||||
rank_comment_add_label:
|
||||
other: Write comment
|
||||
rank_report_add_label:
|
||||
other: Flag
|
||||
rank_comment_vote_up_label:
|
||||
other: Upvote comment
|
||||
rank_link_url_limit_label:
|
||||
other: Post more than 2 links at a time
|
||||
rank_question_vote_up_label:
|
||||
other: Upvote question
|
||||
rank_answer_vote_up_label:
|
||||
other: Upvote answer
|
||||
rank_question_vote_down_label:
|
||||
other: Downvote question
|
||||
rank_answer_vote_down_label:
|
||||
other: Downvote answer
|
||||
rank_invite_someone_to_answer_label:
|
||||
other: Invite someone to answer
|
||||
rank_tag_add_label:
|
||||
other: Create new tag
|
||||
rank_tag_edit_label:
|
||||
other: Edit tag description (need to review)
|
||||
rank_question_edit_label:
|
||||
other: Edit other's question (need to review)
|
||||
rank_answer_edit_label:
|
||||
other: Edit other's answer (need to review)
|
||||
rank_question_edit_without_review_label:
|
||||
other: Edit other's question without review
|
||||
rank_answer_edit_without_review_label:
|
||||
other: Edit other's answer without review
|
||||
rank_question_audit_label:
|
||||
other: Review question edits
|
||||
rank_answer_audit_label:
|
||||
other: Review answer edits
|
||||
rank_tag_audit_label:
|
||||
other: Review tag edits
|
||||
rank_tag_edit_without_review_label:
|
||||
other: Edit tag description without review
|
||||
rank_tag_synonym_label:
|
||||
other: Manage tag synonyms
|
||||
email:
|
||||
other: Email
|
||||
password:
|
||||
|
@ -52,6 +112,9 @@ backend:
|
|||
email_or_password_wrong_error:
|
||||
other: Email dan kata sandi tidak cocok.
|
||||
error:
|
||||
password:
|
||||
space_invalid:
|
||||
other: Password cannot contain spaces.
|
||||
admin:
|
||||
cannot_update_their_password:
|
||||
other: You cannot modify your password.
|
||||
|
@ -82,6 +145,8 @@ backend:
|
|||
other: Email harus terverifikasi.
|
||||
verify_url_expired:
|
||||
other: URL verifikasi email telah kadaluwarsa, silahkan kirim ulang.
|
||||
illegal_email_domain_error:
|
||||
other: Email is not allowed from that email domain. Please use another one.
|
||||
lang:
|
||||
not_found:
|
||||
other: Bahasa tidak ditemukan.
|
||||
|
@ -119,7 +184,9 @@ backend:
|
|||
fail_to_meet_the_condition:
|
||||
other: Peringkat gagal memenuhi syarat.
|
||||
vote_fail_to_meet_the_condition:
|
||||
other: Thanks for the feedback. You need at least {{ rank }} reputation to cast a vote.
|
||||
other: Thanks for the feedback. You need at least {{.Rank}} reputation to cast a vote.
|
||||
no_enough_rank_to_operate:
|
||||
other: You need at least {{.Rank}} reputation to do this.
|
||||
report:
|
||||
handle_failed:
|
||||
other: Laporan penanganan gagal.
|
||||
|
@ -154,6 +221,10 @@ backend:
|
|||
no_permission:
|
||||
other: Tidak memiliki izin untuk merevisi.
|
||||
user:
|
||||
external_login_missing_user_id:
|
||||
other: The third-party platform does not provide a unique UserID, so you cannot login, please contact the website administrator.
|
||||
external_login_unbinding_forbidden:
|
||||
other: Please set a login password for your account before you remove this login.
|
||||
email_or_password_wrong:
|
||||
other:
|
||||
other: Email dan kata sandi tidak cocok.
|
||||
|
@ -171,6 +242,10 @@ backend:
|
|||
other: Anda tidak dapat memodifikasi role anda sendiri.
|
||||
not_allowed_registration:
|
||||
other: Website tidak membuka pendaftaran baru untuk saat ini
|
||||
access_denied:
|
||||
other: Access denied
|
||||
page_access_denied:
|
||||
other: You do not have access to this page.
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Gagal membaca konfigurasi
|
||||
|
@ -185,37 +260,74 @@ backend:
|
|||
upload:
|
||||
unsupported_file_format:
|
||||
other: Unsupported file format.
|
||||
report:
|
||||
site_info:
|
||||
config_not_found:
|
||||
other: Site config not found.
|
||||
reason:
|
||||
spam:
|
||||
name:
|
||||
other: Spam
|
||||
other: spam
|
||||
desc:
|
||||
other: Posting ini adalah iklan, atau vandalisme. Tidak berguna atau relevan dengan topik saat ini.
|
||||
rude:
|
||||
other: This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.
|
||||
rude_or_abusive:
|
||||
name:
|
||||
other: kasar atau kejam
|
||||
other: rude or abusive
|
||||
desc:
|
||||
other: Orang yang berakal sehat akan menganggap konten ini tidak pantas untuk wacana yang terhormat.
|
||||
duplicate:
|
||||
other: A reasonable person would find this content inappropriate for respectful discourse.
|
||||
a_duplicate:
|
||||
name:
|
||||
other: Duplikat
|
||||
other: a duplicate
|
||||
desc:
|
||||
other: Pertanyaan ini telah ditanyakan sebelumnya dan sudah ada jawabannya.
|
||||
not_answer:
|
||||
other: This question has been asked before and already has an answer.
|
||||
placeholder:
|
||||
other: Enter the existing question link
|
||||
not_a_answer:
|
||||
name:
|
||||
other: bukan jawaban
|
||||
other: not an answer
|
||||
desc:
|
||||
other: Ini diposting sebagai jawaban, tetapi tidak menjawab pertanyaan. Itu mungkin berupa suntingan, komentar, pertanyaan lain, atau telah dihapus sepenuhnya.
|
||||
not_need:
|
||||
other: This was posted as an answer, but it does not attempt to answer the question. It should possibly be an edit, a comment, another question, or deleted altogether.
|
||||
no_longer_needed:
|
||||
name:
|
||||
other: tidak Dibutuhkan Lagi
|
||||
other: no longer needed
|
||||
desc:
|
||||
other: Komentar ini kedaluwarsa, sesuai percakapan, atau tidak relevan dengan postingan ini.
|
||||
other:
|
||||
other: This comment is outdated, conversational or not relevant to this post.
|
||||
something:
|
||||
name:
|
||||
other: lainnya
|
||||
other: something else
|
||||
desc:
|
||||
other: Posting ini membutuhkan perhatian staf karena alasan lain yang tidak tercantum di atas.
|
||||
other: This post requires staff attention for another reason not listed above.
|
||||
placeholder:
|
||||
other: Let us know specifically what you are concerned about
|
||||
community_specific:
|
||||
name:
|
||||
other: a community-specific reason
|
||||
desc:
|
||||
other: This question doesn’t meet a community guideline.
|
||||
not_clarity:
|
||||
name:
|
||||
other: needs details or clarity
|
||||
desc:
|
||||
other: This question currently includes multiple questions in one. It should focus on one problem only.
|
||||
looks_ok:
|
||||
name:
|
||||
other: looks ok
|
||||
desc:
|
||||
other: This post is good as-is and not low quality.
|
||||
needs_edit:
|
||||
name:
|
||||
other: needs edit, and I did it
|
||||
desc:
|
||||
other: Improve and correct problems with this post yourself.
|
||||
needs_close:
|
||||
name:
|
||||
other: needs close
|
||||
desc:
|
||||
other: A closed question can’t answer, but still can edit, vote and comment.
|
||||
needs_delete:
|
||||
name:
|
||||
other: needs delete
|
||||
desc:
|
||||
other: This post will be deleted.
|
||||
question:
|
||||
close:
|
||||
duplicate:
|
||||
|
@ -245,6 +357,8 @@ backend:
|
|||
other: dijawab
|
||||
modified:
|
||||
other: dimodifikasi
|
||||
deleted_title:
|
||||
other: Deleted question
|
||||
notification:
|
||||
action:
|
||||
update_question:
|
||||
|
@ -271,6 +385,67 @@ backend:
|
|||
other: Jawabanmu telah dihapus
|
||||
your_comment_was_deleted:
|
||||
other: Komentarmu telah dihapus
|
||||
up_voted_question:
|
||||
other: upvoted question
|
||||
down_voted_question:
|
||||
other: downvoted question
|
||||
up_voted_answer:
|
||||
other: upvoted answer
|
||||
down_voted_answer:
|
||||
other: downvoted answer
|
||||
up_voted_comment:
|
||||
other: upvoted comment
|
||||
invited_you_to_answer:
|
||||
other: invited you to answer
|
||||
email_tpl:
|
||||
change_email:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new email address"
|
||||
body:
|
||||
other: "Confirm your new email address for {{.SiteName}} by clicking on the following link:<br><br>\n\n<a href='{{.ChangeEmailUrl}}' target='_blank'>{{.ChangeEmailUrl}}</a><br><br>\n\nIf you did not request this change, please ignore this email.\n"
|
||||
new_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} answered your question"
|
||||
body:
|
||||
other: "<strong><a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.AnswerSummary}}</blockquote><br>\n<a href='{{.AnswerUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
invited_you_to_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} invited you to answer"
|
||||
body:
|
||||
other: "<strong><a href='{{.InviteUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><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<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
new_comment:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} commented on your post"
|
||||
body:
|
||||
other: "<strong><a href='{{.CommentUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.CommentSummary}}</blockquote><br>\n<a href='{{.CommentUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
pass_reset:
|
||||
title:
|
||||
other: "[{{.SiteName }}] Password reset"
|
||||
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"
|
||||
register:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new account"
|
||||
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"
|
||||
test:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Test Email"
|
||||
body:
|
||||
other: "This is a test email."
|
||||
action_activity_type:
|
||||
upvote:
|
||||
other: upvote
|
||||
upvoted:
|
||||
other: upvoted
|
||||
downvote:
|
||||
other: downvote
|
||||
downvoted:
|
||||
other: downvoted
|
||||
accept:
|
||||
other: accept
|
||||
accepted:
|
||||
other: accepted
|
||||
#The following fields are used for interface presentation(Front-end)
|
||||
ui:
|
||||
how_to_format:
|
||||
|
@ -307,6 +482,7 @@ ui:
|
|||
upgrade: Meng-upgrade Answer
|
||||
maintenance: Pemeliharaan Website
|
||||
users: Pengguna
|
||||
oauth_callback: Processing
|
||||
http_404: HTTP Error 404
|
||||
http_50X: HTTP Error 500
|
||||
http_403: HTTP Error 403
|
||||
|
@ -316,11 +492,18 @@ ui:
|
|||
achievement: Pencapaian
|
||||
all_read: Tandai Semua Jika Sudah Dibaca
|
||||
show_more: Tampilkan lebih banyak
|
||||
someone: Someone
|
||||
inbox_type:
|
||||
all: All
|
||||
posts: Posts
|
||||
invites: Invites
|
||||
votes: Votes
|
||||
suspended:
|
||||
title: Akun Anda telah ditangguhkan
|
||||
until_time: "Akun anda ditangguhkan sampai {{ time }}."
|
||||
forever: Pengguna ini ditangguhkan selamanya.
|
||||
end: Anda tidak sesuai dengan syarat pedoman komunitas.
|
||||
contact_us: Contact us
|
||||
editor:
|
||||
blockquote:
|
||||
text: Blockquote
|
||||
|
@ -527,7 +710,7 @@ ui:
|
|||
Gunakan komentar untuk meminta informasi lebih lanjut atau menyarankan perbaikan. Hindari menjawab pertanyaan di komentar.
|
||||
tip_answer: >-
|
||||
Gunakan komentar untuk membalas pengguna lain atau memberi tahu mereka tentang perubahan. Jika Anda menambahkan informasi baru, cukup edit posting Anda.
|
||||
tip_vote: It adds something useful to the post
|
||||
tip_vote: It adds something useful to the post
|
||||
edit_answer:
|
||||
title: Sunting jawaban
|
||||
default_reason: Edit jawaban
|
||||
|
@ -609,6 +792,8 @@ ui:
|
|||
logout: Keluar
|
||||
admin: Admin
|
||||
review: Ulasan
|
||||
bookmark: Bookmarks
|
||||
moderation: Moderation
|
||||
search:
|
||||
placeholder: Cari
|
||||
footer:
|
||||
|
@ -633,7 +818,6 @@ ui:
|
|||
msg:
|
||||
empty: Tidak bisa kosong.
|
||||
login:
|
||||
page_title: Selamat datang ke {{site_name}}
|
||||
login_to_continue: Masuk untuk melanjutkan
|
||||
info_sign: Belum punya akun? <1>Daftar</1>
|
||||
info_login: Sudah punya akun? <1>Masuk</1>
|
||||
|
@ -644,6 +828,7 @@ ui:
|
|||
msg:
|
||||
empty: Nama tidak boleh kosong.
|
||||
range: Nama harus menunjukkan 1-30 karakter.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
|
@ -663,7 +848,6 @@ ui:
|
|||
msg:
|
||||
empty: Email tidak boleh kosong.
|
||||
change_email:
|
||||
page_title: Welcome to {{site_name}}
|
||||
btn_cancel: Batal
|
||||
btn_update: Perbarui alamat email
|
||||
send_success: >-
|
||||
|
@ -672,6 +856,17 @@ ui:
|
|||
label: Email Baru
|
||||
msg:
|
||||
empty: Email tidak boleh kosong.
|
||||
oauth_bind_email:
|
||||
subtitle: Add a recovery email to your account.
|
||||
btn_update: Update email address
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
modal_title: Email already existes.
|
||||
modal_content: This email address already registered. Are you sure you want to connect to the existing account?
|
||||
modal_cancel: Change email
|
||||
modal_confirm: Connect to the existing account
|
||||
password_reset:
|
||||
page_title: Atur ulang kata sandi
|
||||
btn_name: Atur ulang kata sandi saya
|
||||
|
@ -690,6 +885,7 @@ ui:
|
|||
label: Confirm New Password
|
||||
settings:
|
||||
page_title: Settings
|
||||
goto_modify: Go to Modify
|
||||
nav:
|
||||
profile: Profile
|
||||
notification: Notifications
|
||||
|
@ -711,7 +907,7 @@ ui:
|
|||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
gravatar_text: You can change image on <1>gravatar.com</1>
|
||||
gravatar_text: You can change image on
|
||||
custom: Custom
|
||||
btn_refresh: Refresh
|
||||
custom_text: You can upload your image.
|
||||
|
@ -738,8 +934,11 @@ ui:
|
|||
change_email_info: >-
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
label: New Email
|
||||
msg: New Email cannot be empty.
|
||||
pass:
|
||||
label: Current Password
|
||||
msg: Password cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
|
@ -756,6 +955,13 @@ ui:
|
|||
lang:
|
||||
label: Bahasa Antarmuka
|
||||
text: Bahasa antarmuka pengguna. Itu akan berubah ketika Anda me-refresh halaman.
|
||||
my_logins:
|
||||
title: My Logins
|
||||
label: Log in or sign up on this site using these accounts.
|
||||
modal_title: Remove Login
|
||||
modal_content: Are you sure you want to remove this login from your account?
|
||||
modal_confirm_btn: Remove
|
||||
remove_success: Removed successfully
|
||||
toast:
|
||||
update: pembaruan sukses
|
||||
update_password: Kata sandi berhasil diganti.
|
||||
|
@ -766,6 +972,12 @@ ui:
|
|||
title: Pertanyaan Terkait
|
||||
btn: Tambahkan pertanyaan
|
||||
answers: jawaban
|
||||
invite_to_answer:
|
||||
title: People asked
|
||||
desc: Invite people who you think might know the answer.
|
||||
invite: Invite to answer
|
||||
add: Add people
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
Asked: Ditanyakan
|
||||
|
@ -775,12 +987,13 @@ ui:
|
|||
Views: Dilihat
|
||||
Follow: Ikuti
|
||||
Following: Mengikuti
|
||||
follow_tip: Follow this question to receive notifications
|
||||
answered: dijawab
|
||||
closed_in: Ditutup pada
|
||||
show_exist: Gunakan pertanyaan yang sudah ada.
|
||||
useful: Useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
answer_useful: It is useful
|
||||
answer_un_useful: It is not useful
|
||||
answers:
|
||||
|
@ -824,6 +1037,7 @@ ui:
|
|||
btns:
|
||||
confirm: Konfirmasi
|
||||
cancel: Batal
|
||||
edit: Edit
|
||||
save: Simpan
|
||||
delete: Hapus
|
||||
login: Masuk
|
||||
|
@ -836,6 +1050,10 @@ ui:
|
|||
skip: Skip
|
||||
discard_draft: Discard draft
|
||||
pinned: Pinned
|
||||
all: All
|
||||
question: Question
|
||||
answer: Answer
|
||||
comment: Comment
|
||||
search:
|
||||
title: Search Results
|
||||
keywords: Keywords
|
||||
|
@ -870,7 +1088,6 @@ ui:
|
|||
modal_confirm:
|
||||
title: Error...
|
||||
account_result:
|
||||
page_title: Welcome to {{site_name}}
|
||||
success: Your new account is confirmed; you will be redirected to the home page.
|
||||
link: Continue to homepage
|
||||
invalid: >-
|
||||
|
@ -931,8 +1148,7 @@ ui:
|
|||
accepted: Diterima
|
||||
answered: dijawab
|
||||
asked: ditanyakan
|
||||
upvote: upvote
|
||||
downvote: downvote
|
||||
downvoted: downvoted
|
||||
mod_short: Mod
|
||||
mod_long: Moderator
|
||||
x_reputation: reputasi
|
||||
|
@ -994,6 +1210,7 @@ ui:
|
|||
admin_name:
|
||||
label: Name
|
||||
msg: Name cannot be empty.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
admin_password:
|
||||
label: Password
|
||||
text: >-
|
||||
|
@ -1051,8 +1268,19 @@ ui:
|
|||
seo: SEO
|
||||
customize: Kostumisasi
|
||||
themes: Tema
|
||||
css-html: CSS/HTML
|
||||
css_html: CSS/HTML
|
||||
login: Masuk
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
plugins:
|
||||
login: Login
|
||||
qrcode_login_tip: Please use {{ agentName }} to scan the QR code and log in.
|
||||
login_failed_email_tip: Login failed, please allow this app to access your email information before try again.
|
||||
oauth:
|
||||
connect: Connect with {{ auth_name }}
|
||||
remove: Remove {{ auth_name }}
|
||||
admin:
|
||||
admin_header:
|
||||
title: Admin
|
||||
|
@ -1095,6 +1323,7 @@ ui:
|
|||
pending: Pending
|
||||
completed: Completed
|
||||
flagged: Flagged
|
||||
flagged_type: Flagged {{ type }}
|
||||
created: Created
|
||||
action: Action
|
||||
review: Review
|
||||
|
@ -1122,7 +1351,7 @@ ui:
|
|||
closed_name: closed
|
||||
closed_desc: "A closed question can't answer, but still can edit, vote and comment."
|
||||
deleted_name: deleted
|
||||
deleted_desc: All reputation gained and lost will be restored.
|
||||
deleted_desc: This post will be deleted.
|
||||
btn_cancel: Cancel
|
||||
btn_submit: Submit
|
||||
btn_next: Next
|
||||
|
@ -1243,9 +1472,6 @@ ui:
|
|||
label: Timezone
|
||||
msg: Timezone cannot be empty.
|
||||
text: Choose a city in the same timezone as you.
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
|
@ -1355,22 +1581,77 @@ ui:
|
|||
footer:
|
||||
label: Footer
|
||||
text: This will insert before </html>.
|
||||
sidebar:
|
||||
label: Sidebar
|
||||
text: This will insert in sidebar.
|
||||
login:
|
||||
page_title: Login
|
||||
membership:
|
||||
title: Membership
|
||||
label: Allow new registrations
|
||||
text: Turn off to prevent anyone from creating a new account.
|
||||
email_registration:
|
||||
title: Email registration
|
||||
label: Allow email registration
|
||||
text: Turn off to prevent anyone creating new account through email.
|
||||
allowed_email_domains:
|
||||
title: Allowed email domains
|
||||
text: Email domains that users must register accounts with. One domain per line. Ignored when empty.
|
||||
private:
|
||||
title: Private
|
||||
label: Login required
|
||||
text: Only logged in users can access this community.
|
||||
installed_plugins:
|
||||
title: Installed Plugins
|
||||
filter:
|
||||
all: All
|
||||
active: Active
|
||||
inactive: Inactive
|
||||
outdated: Outdated
|
||||
plugins:
|
||||
label: Plugins
|
||||
text: Select an existing plugin.
|
||||
name: Name
|
||||
version: Version
|
||||
status: Status
|
||||
action: Action
|
||||
deactivate: Deactivate
|
||||
activate: Activate
|
||||
settings: Settings
|
||||
settings_users:
|
||||
title: Users
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar Base URL
|
||||
text: URL of the Gravatar provider’s API base. Ignored when empty.
|
||||
profile_editable:
|
||||
title: Profile Editable
|
||||
allow_update_display_name:
|
||||
label: Allow users to change their display name
|
||||
allow_update_username:
|
||||
label: Allow users to change their username
|
||||
allow_update_avatar:
|
||||
label: Allow users to change their profile image
|
||||
allow_update_bio:
|
||||
label: Allow users to change their about me
|
||||
allow_update_website:
|
||||
label: Allow users to change their website
|
||||
allow_update_location:
|
||||
label: Allow users to change their location
|
||||
privilege:
|
||||
title: Privileges
|
||||
level:
|
||||
label: Reputation required level
|
||||
text: Choose the reputation required for the privileges
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: cannot be empty
|
||||
invalid: is invalid
|
||||
btn_submit: Save
|
||||
not_found_props: "Required property {{ key }} not found."
|
||||
select: Select
|
||||
page_review:
|
||||
review: Review
|
||||
proposed: proposed
|
||||
|
|
351
i18n/it_IT.yaml
351
i18n/it_IT.yaml
|
@ -11,6 +11,8 @@ backend:
|
|||
other: Non autorizzato
|
||||
database_error:
|
||||
other: Errore server dati
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
action:
|
||||
report:
|
||||
other: Flag
|
||||
|
@ -22,6 +24,8 @@ backend:
|
|||
other: Close
|
||||
reopen:
|
||||
other: Reopen
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
pin:
|
||||
other: Pin
|
||||
hide:
|
||||
|
@ -30,6 +34,8 @@ backend:
|
|||
other: Unpin
|
||||
show:
|
||||
other: List
|
||||
invite_someone_to_answer:
|
||||
other: Edit
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
|
@ -45,6 +51,60 @@ backend:
|
|||
other: Avere il pieno potere di accedere al sito.
|
||||
moderator:
|
||||
other: Ha accesso a tutti i post tranne le impostazioni di amministratore.
|
||||
privilege:
|
||||
level_1:
|
||||
description:
|
||||
other: Level 1 (less reputation required for private team, group)
|
||||
level_2:
|
||||
description:
|
||||
other: Level 2 (low reputation required for startup community)
|
||||
level_3:
|
||||
description:
|
||||
other: Level 3 (high reputation required for mature community)
|
||||
rank_question_add_label:
|
||||
other: Ask question
|
||||
rank_answer_add_label:
|
||||
other: Write answer
|
||||
rank_comment_add_label:
|
||||
other: Write comment
|
||||
rank_report_add_label:
|
||||
other: Flag
|
||||
rank_comment_vote_up_label:
|
||||
other: Upvote comment
|
||||
rank_link_url_limit_label:
|
||||
other: Post more than 2 links at a time
|
||||
rank_question_vote_up_label:
|
||||
other: Upvote question
|
||||
rank_answer_vote_up_label:
|
||||
other: Upvote answer
|
||||
rank_question_vote_down_label:
|
||||
other: Downvote question
|
||||
rank_answer_vote_down_label:
|
||||
other: Downvote answer
|
||||
rank_invite_someone_to_answer_label:
|
||||
other: Invite someone to answer
|
||||
rank_tag_add_label:
|
||||
other: Create new tag
|
||||
rank_tag_edit_label:
|
||||
other: Edit tag description (need to review)
|
||||
rank_question_edit_label:
|
||||
other: Edit other's question (need to review)
|
||||
rank_answer_edit_label:
|
||||
other: Edit other's answer (need to review)
|
||||
rank_question_edit_without_review_label:
|
||||
other: Edit other's question without review
|
||||
rank_answer_edit_without_review_label:
|
||||
other: Edit other's answer without review
|
||||
rank_question_audit_label:
|
||||
other: Review question edits
|
||||
rank_answer_audit_label:
|
||||
other: Review answer edits
|
||||
rank_tag_audit_label:
|
||||
other: Review tag edits
|
||||
rank_tag_edit_without_review_label:
|
||||
other: Edit tag description without review
|
||||
rank_tag_synonym_label:
|
||||
other: Manage tag synonyms
|
||||
email:
|
||||
other: E-mail
|
||||
password:
|
||||
|
@ -52,6 +112,9 @@ backend:
|
|||
email_or_password_wrong_error:
|
||||
other: Email o password errati
|
||||
error:
|
||||
password:
|
||||
space_invalid:
|
||||
other: Password cannot contain spaces.
|
||||
admin:
|
||||
cannot_update_their_password:
|
||||
other: You cannot modify your password.
|
||||
|
@ -82,6 +145,8 @@ backend:
|
|||
other: email deve essere verificata
|
||||
verify_url_expired:
|
||||
other: l'url di verifica email è scaduto, si prega di reinviare la email
|
||||
illegal_email_domain_error:
|
||||
other: Email is not allowed from that email domain. Please use another one.
|
||||
lang:
|
||||
not_found:
|
||||
other: lingua non trovata
|
||||
|
@ -119,7 +184,9 @@ backend:
|
|||
fail_to_meet_the_condition:
|
||||
other: Condizioni non valide per il grado
|
||||
vote_fail_to_meet_the_condition:
|
||||
other: Thanks for the feedback. You need at least {{ rank }} reputation to cast a vote.
|
||||
other: Thanks for the feedback. You need at least {{.Rank}} reputation to cast a vote.
|
||||
no_enough_rank_to_operate:
|
||||
other: You need at least {{.Rank}} reputation to do this.
|
||||
report:
|
||||
handle_failed:
|
||||
other: Gestione del report fallita
|
||||
|
@ -154,6 +221,10 @@ backend:
|
|||
no_permission:
|
||||
other: Nessun permesso per la revisione.
|
||||
user:
|
||||
external_login_missing_user_id:
|
||||
other: The third-party platform does not provide a unique UserID, so you cannot login, please contact the website administrator.
|
||||
external_login_unbinding_forbidden:
|
||||
other: Please set a login password for your account before you remove this login.
|
||||
email_or_password_wrong:
|
||||
other:
|
||||
other: Email o password errati
|
||||
|
@ -171,6 +242,10 @@ backend:
|
|||
other: Non puoi modificare il tuo ruolo.
|
||||
not_allowed_registration:
|
||||
other: Al momento il sito non è aperto per la registrazione
|
||||
access_denied:
|
||||
other: Access denied
|
||||
page_access_denied:
|
||||
other: You do not have access to this page.
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Read config failed
|
||||
|
@ -185,37 +260,74 @@ backend:
|
|||
upload:
|
||||
unsupported_file_format:
|
||||
other: Unsupported file format.
|
||||
report:
|
||||
site_info:
|
||||
config_not_found:
|
||||
other: Site config not found.
|
||||
reason:
|
||||
spam:
|
||||
name:
|
||||
other: posta indesiderata
|
||||
other: spam
|
||||
desc:
|
||||
other: Questo articolo è una pubblicità o vandalismo. Non è utile o rilevante all'argomento corrente.
|
||||
rude:
|
||||
other: This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.
|
||||
rude_or_abusive:
|
||||
name:
|
||||
other: scortese o violento
|
||||
other: rude or abusive
|
||||
desc:
|
||||
other: Una persona ragionevole trova questo contenuto inappropriato a un discorso rispettoso.
|
||||
duplicate:
|
||||
other: A reasonable person would find this content inappropriate for respectful discourse.
|
||||
a_duplicate:
|
||||
name:
|
||||
other: duplicato
|
||||
other: a duplicate
|
||||
desc:
|
||||
other: Questa domanda è già stata posta e ha già una risposta.
|
||||
not_answer:
|
||||
other: This question has been asked before and already has an answer.
|
||||
placeholder:
|
||||
other: Enter the existing question link
|
||||
not_a_answer:
|
||||
name:
|
||||
other: non è una risposta
|
||||
other: not an answer
|
||||
desc:
|
||||
other: Questo è stato pubblicato come una risposta, ma non tenta di rispondere alla domanda. Dovrebbe forse essere una modifica, un commento, un'altra domanda, o cancellata del tutto.
|
||||
not_need:
|
||||
other: This was posted as an answer, but it does not attempt to answer the question. It should possibly be an edit, a comment, another question, or deleted altogether.
|
||||
no_longer_needed:
|
||||
name:
|
||||
other: non più necessario
|
||||
other: no longer needed
|
||||
desc:
|
||||
other: Questo commento è obsoleto, conversazionale o non pertinente per questo post.
|
||||
other:
|
||||
other: This comment is outdated, conversational or not relevant to this post.
|
||||
something:
|
||||
name:
|
||||
other: altro
|
||||
other: something else
|
||||
desc:
|
||||
other: Questo articolo richiede una supervisione dello staff per altre ragioni non listate sopra.
|
||||
other: This post requires staff attention for another reason not listed above.
|
||||
placeholder:
|
||||
other: Let us know specifically what you are concerned about
|
||||
community_specific:
|
||||
name:
|
||||
other: a community-specific reason
|
||||
desc:
|
||||
other: This question doesn’t meet a community guideline.
|
||||
not_clarity:
|
||||
name:
|
||||
other: needs details or clarity
|
||||
desc:
|
||||
other: This question currently includes multiple questions in one. It should focus on one problem only.
|
||||
looks_ok:
|
||||
name:
|
||||
other: looks ok
|
||||
desc:
|
||||
other: This post is good as-is and not low quality.
|
||||
needs_edit:
|
||||
name:
|
||||
other: needs edit, and I did it
|
||||
desc:
|
||||
other: Improve and correct problems with this post yourself.
|
||||
needs_close:
|
||||
name:
|
||||
other: needs close
|
||||
desc:
|
||||
other: A closed question can’t answer, but still can edit, vote and comment.
|
||||
needs_delete:
|
||||
name:
|
||||
other: needs delete
|
||||
desc:
|
||||
other: This post will be deleted.
|
||||
question:
|
||||
close:
|
||||
duplicate:
|
||||
|
@ -245,6 +357,8 @@ backend:
|
|||
other: answered
|
||||
modified:
|
||||
other: modified
|
||||
deleted_title:
|
||||
other: Deleted question
|
||||
notification:
|
||||
action:
|
||||
update_question:
|
||||
|
@ -271,6 +385,67 @@ backend:
|
|||
other: la tua risposta è stata rimossa
|
||||
your_comment_was_deleted:
|
||||
other: il tuo commento è stato rimosso
|
||||
up_voted_question:
|
||||
other: upvoted question
|
||||
down_voted_question:
|
||||
other: downvoted question
|
||||
up_voted_answer:
|
||||
other: upvoted answer
|
||||
down_voted_answer:
|
||||
other: downvoted answer
|
||||
up_voted_comment:
|
||||
other: upvoted comment
|
||||
invited_you_to_answer:
|
||||
other: invited you to answer
|
||||
email_tpl:
|
||||
change_email:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new email address"
|
||||
body:
|
||||
other: "Confirm your new email address for {{.SiteName}} by clicking on the following link:<br><br>\n\n<a href='{{.ChangeEmailUrl}}' target='_blank'>{{.ChangeEmailUrl}}</a><br><br>\n\nIf you did not request this change, please ignore this email.\n"
|
||||
new_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} answered your question"
|
||||
body:
|
||||
other: "<strong><a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.AnswerSummary}}</blockquote><br>\n<a href='{{.AnswerUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
invited_you_to_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} invited you to answer"
|
||||
body:
|
||||
other: "<strong><a href='{{.InviteUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><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<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
new_comment:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} commented on your post"
|
||||
body:
|
||||
other: "<strong><a href='{{.CommentUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.CommentSummary}}</blockquote><br>\n<a href='{{.CommentUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
pass_reset:
|
||||
title:
|
||||
other: "[{{.SiteName }}] Password reset"
|
||||
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"
|
||||
register:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new account"
|
||||
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"
|
||||
test:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Test Email"
|
||||
body:
|
||||
other: "This is a test email."
|
||||
action_activity_type:
|
||||
upvote:
|
||||
other: upvote
|
||||
upvoted:
|
||||
other: upvoted
|
||||
downvote:
|
||||
other: downvote
|
||||
downvoted:
|
||||
other: downvoted
|
||||
accept:
|
||||
other: accept
|
||||
accepted:
|
||||
other: accepted
|
||||
#The following fields are used for interface presentation(Front-end)
|
||||
ui:
|
||||
how_to_format:
|
||||
|
@ -307,6 +482,7 @@ ui:
|
|||
upgrade: Answer Upgrade
|
||||
maintenance: Website Maintenance
|
||||
users: Users
|
||||
oauth_callback: Processing
|
||||
http_404: HTTP Error 404
|
||||
http_50X: HTTP Error 500
|
||||
http_403: HTTP Error 403
|
||||
|
@ -316,11 +492,18 @@ ui:
|
|||
achievement: Achievements
|
||||
all_read: Mark all as read
|
||||
show_more: Show more
|
||||
someone: Someone
|
||||
inbox_type:
|
||||
all: All
|
||||
posts: Posts
|
||||
invites: Invites
|
||||
votes: Votes
|
||||
suspended:
|
||||
title: Your Account has been Suspended
|
||||
until_time: "Your account was suspended until {{ time }}."
|
||||
forever: This user was suspended forever.
|
||||
end: You don't meet a community guideline.
|
||||
contact_us: Contact us
|
||||
editor:
|
||||
blockquote:
|
||||
text: Blockquote
|
||||
|
@ -527,7 +710,7 @@ ui:
|
|||
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
|
||||
tip_vote: It adds something useful to the post
|
||||
edit_answer:
|
||||
title: Edit Answer
|
||||
default_reason: Edit answer
|
||||
|
@ -609,6 +792,8 @@ ui:
|
|||
logout: Log out
|
||||
admin: Admin
|
||||
review: Review
|
||||
bookmark: Bookmarks
|
||||
moderation: Moderation
|
||||
search:
|
||||
placeholder: Search
|
||||
footer:
|
||||
|
@ -633,7 +818,6 @@ ui:
|
|||
msg:
|
||||
empty: Cannot be empty.
|
||||
login:
|
||||
page_title: Welcome to {{site_name}}
|
||||
login_to_continue: Log in to continue
|
||||
info_sign: Don't have an account? <1>Sign up</1>
|
||||
info_login: Already have an account? <1>Log in</1>
|
||||
|
@ -644,6 +828,7 @@ ui:
|
|||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
|
@ -663,7 +848,6 @@ ui:
|
|||
msg:
|
||||
empty: Email cannot be empty.
|
||||
change_email:
|
||||
page_title: Welcome to {{site_name}}
|
||||
btn_cancel: Cancel
|
||||
btn_update: Update email address
|
||||
send_success: >-
|
||||
|
@ -672,6 +856,17 @@ ui:
|
|||
label: New Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
oauth_bind_email:
|
||||
subtitle: Add a recovery email to your account.
|
||||
btn_update: Update email address
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
modal_title: Email already existes.
|
||||
modal_content: This email address already registered. Are you sure you want to connect to the existing account?
|
||||
modal_cancel: Change email
|
||||
modal_confirm: Connect to the existing account
|
||||
password_reset:
|
||||
page_title: Password Reset
|
||||
btn_name: Reset my password
|
||||
|
@ -690,6 +885,7 @@ ui:
|
|||
label: Confirm New Password
|
||||
settings:
|
||||
page_title: Settings
|
||||
goto_modify: Go to Modify
|
||||
nav:
|
||||
profile: Profile
|
||||
notification: Notifications
|
||||
|
@ -711,7 +907,7 @@ ui:
|
|||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
gravatar_text: You can change image on <1>gravatar.com</1>
|
||||
gravatar_text: You can change image on
|
||||
custom: Custom
|
||||
btn_refresh: Refresh
|
||||
custom_text: You can upload your image.
|
||||
|
@ -738,8 +934,11 @@ ui:
|
|||
change_email_info: >-
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
label: New Email
|
||||
msg: New Email cannot be empty.
|
||||
pass:
|
||||
label: Current Password
|
||||
msg: Password cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
|
@ -756,6 +955,13 @@ ui:
|
|||
lang:
|
||||
label: Interface Language
|
||||
text: User interface language. It will change when you refresh the page.
|
||||
my_logins:
|
||||
title: My Logins
|
||||
label: Log in or sign up on this site using these accounts.
|
||||
modal_title: Remove Login
|
||||
modal_content: Are you sure you want to remove this login from your account?
|
||||
modal_confirm_btn: Remove
|
||||
remove_success: Removed successfully
|
||||
toast:
|
||||
update: update success
|
||||
update_password: Password changed successfully.
|
||||
|
@ -766,6 +972,12 @@ ui:
|
|||
title: Related Questions
|
||||
btn: Add question
|
||||
answers: answers
|
||||
invite_to_answer:
|
||||
title: People asked
|
||||
desc: Invite people who you think might know the answer.
|
||||
invite: Invite to answer
|
||||
add: Add people
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
Asked: Asked
|
||||
|
@ -775,12 +987,13 @@ ui:
|
|||
Views: Viewed
|
||||
Follow: Follow
|
||||
Following: Following
|
||||
follow_tip: Follow this question to receive notifications
|
||||
answered: answered
|
||||
closed_in: Closed in
|
||||
show_exist: Show existing question.
|
||||
useful: Useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
answer_useful: It is useful
|
||||
answer_un_useful: It is not useful
|
||||
answers:
|
||||
|
@ -824,6 +1037,7 @@ ui:
|
|||
btns:
|
||||
confirm: Confirm
|
||||
cancel: Cancel
|
||||
edit: Edit
|
||||
save: Save
|
||||
delete: Delete
|
||||
login: Log in
|
||||
|
@ -836,6 +1050,10 @@ ui:
|
|||
skip: Skip
|
||||
discard_draft: Discard draft
|
||||
pinned: Pinned
|
||||
all: All
|
||||
question: Question
|
||||
answer: Answer
|
||||
comment: Comment
|
||||
search:
|
||||
title: Search Results
|
||||
keywords: Keywords
|
||||
|
@ -870,7 +1088,6 @@ ui:
|
|||
modal_confirm:
|
||||
title: Error...
|
||||
account_result:
|
||||
page_title: Welcome to {{site_name}}
|
||||
success: Your new account is confirmed; you will be redirected to the home page.
|
||||
link: Continue to homepage
|
||||
invalid: >-
|
||||
|
@ -931,8 +1148,7 @@ ui:
|
|||
accepted: Accepted
|
||||
answered: answered
|
||||
asked: asked
|
||||
upvote: upvote
|
||||
downvote: downvote
|
||||
downvoted: downvoted
|
||||
mod_short: Mod
|
||||
mod_long: Moderators
|
||||
x_reputation: reputation
|
||||
|
@ -994,6 +1210,7 @@ ui:
|
|||
admin_name:
|
||||
label: Name
|
||||
msg: Name cannot be empty.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
admin_password:
|
||||
label: Password
|
||||
text: >-
|
||||
|
@ -1051,8 +1268,19 @@ ui:
|
|||
seo: SEO
|
||||
customize: Customize
|
||||
themes: Themes
|
||||
css-html: CSS/HTML
|
||||
css_html: CSS/HTML
|
||||
login: Login
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
plugins:
|
||||
login: Login
|
||||
qrcode_login_tip: Please use {{ agentName }} to scan the QR code and log in.
|
||||
login_failed_email_tip: Login failed, please allow this app to access your email information before try again.
|
||||
oauth:
|
||||
connect: Connect with {{ auth_name }}
|
||||
remove: Remove {{ auth_name }}
|
||||
admin:
|
||||
admin_header:
|
||||
title: Admin
|
||||
|
@ -1095,6 +1323,7 @@ ui:
|
|||
pending: Pending
|
||||
completed: Completed
|
||||
flagged: Flagged
|
||||
flagged_type: Flagged {{ type }}
|
||||
created: Created
|
||||
action: Action
|
||||
review: Review
|
||||
|
@ -1122,7 +1351,7 @@ ui:
|
|||
closed_name: closed
|
||||
closed_desc: "A closed question can't answer, but still can edit, vote and comment."
|
||||
deleted_name: deleted
|
||||
deleted_desc: All reputation gained and lost will be restored.
|
||||
deleted_desc: This post will be deleted.
|
||||
btn_cancel: Cancel
|
||||
btn_submit: Submit
|
||||
btn_next: Next
|
||||
|
@ -1243,9 +1472,6 @@ ui:
|
|||
label: Timezone
|
||||
msg: Timezone cannot be empty.
|
||||
text: Choose a city in the same timezone as you.
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
|
@ -1355,22 +1581,77 @@ ui:
|
|||
footer:
|
||||
label: Footer
|
||||
text: This will insert before </html>.
|
||||
sidebar:
|
||||
label: Sidebar
|
||||
text: This will insert in sidebar.
|
||||
login:
|
||||
page_title: Login
|
||||
membership:
|
||||
title: Membership
|
||||
label: Allow new registrations
|
||||
text: Turn off to prevent anyone from creating a new account.
|
||||
email_registration:
|
||||
title: Email registration
|
||||
label: Allow email registration
|
||||
text: Turn off to prevent anyone creating new account through email.
|
||||
allowed_email_domains:
|
||||
title: Allowed email domains
|
||||
text: Email domains that users must register accounts with. One domain per line. Ignored when empty.
|
||||
private:
|
||||
title: Private
|
||||
label: Login required
|
||||
text: Only logged in users can access this community.
|
||||
installed_plugins:
|
||||
title: Installed Plugins
|
||||
filter:
|
||||
all: All
|
||||
active: Active
|
||||
inactive: Inactive
|
||||
outdated: Outdated
|
||||
plugins:
|
||||
label: Plugins
|
||||
text: Select an existing plugin.
|
||||
name: Name
|
||||
version: Version
|
||||
status: Status
|
||||
action: Action
|
||||
deactivate: Deactivate
|
||||
activate: Activate
|
||||
settings: Settings
|
||||
settings_users:
|
||||
title: Users
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar Base URL
|
||||
text: URL of the Gravatar provider’s API base. Ignored when empty.
|
||||
profile_editable:
|
||||
title: Profile Editable
|
||||
allow_update_display_name:
|
||||
label: Allow users to change their display name
|
||||
allow_update_username:
|
||||
label: Allow users to change their username
|
||||
allow_update_avatar:
|
||||
label: Allow users to change their profile image
|
||||
allow_update_bio:
|
||||
label: Allow users to change their about me
|
||||
allow_update_website:
|
||||
label: Allow users to change their website
|
||||
allow_update_location:
|
||||
label: Allow users to change their location
|
||||
privilege:
|
||||
title: Privileges
|
||||
level:
|
||||
label: Reputation required level
|
||||
text: Choose the reputation required for the privileges
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: cannot be empty
|
||||
invalid: is invalid
|
||||
btn_submit: Save
|
||||
not_found_props: "Required property {{ key }} not found."
|
||||
select: Select
|
||||
page_review:
|
||||
review: Review
|
||||
proposed: proposed
|
||||
|
|
329
i18n/ja_JP.yaml
329
i18n/ja_JP.yaml
|
@ -11,6 +11,8 @@ backend:
|
|||
other: 権限がありません。
|
||||
database_error:
|
||||
other: データサーバーエラー
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
action:
|
||||
report:
|
||||
other: フラグ
|
||||
|
@ -22,6 +24,8 @@ backend:
|
|||
other: 閉じる
|
||||
reopen:
|
||||
other: Reopen
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
pin:
|
||||
other: Pin
|
||||
hide:
|
||||
|
@ -30,6 +34,8 @@ backend:
|
|||
other: Unpin
|
||||
show:
|
||||
other: List
|
||||
invite_someone_to_answer:
|
||||
other: Edit
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
|
@ -45,6 +51,60 @@ backend:
|
|||
other: Have the full power to access the site.
|
||||
moderator:
|
||||
other: Has access to all posts except admin settings.
|
||||
privilege:
|
||||
level_1:
|
||||
description:
|
||||
other: Level 1 (less reputation required for private team, group)
|
||||
level_2:
|
||||
description:
|
||||
other: Level 2 (low reputation required for startup community)
|
||||
level_3:
|
||||
description:
|
||||
other: Level 3 (high reputation required for mature community)
|
||||
rank_question_add_label:
|
||||
other: Ask question
|
||||
rank_answer_add_label:
|
||||
other: Write answer
|
||||
rank_comment_add_label:
|
||||
other: Write comment
|
||||
rank_report_add_label:
|
||||
other: Flag
|
||||
rank_comment_vote_up_label:
|
||||
other: Upvote comment
|
||||
rank_link_url_limit_label:
|
||||
other: Post more than 2 links at a time
|
||||
rank_question_vote_up_label:
|
||||
other: Upvote question
|
||||
rank_answer_vote_up_label:
|
||||
other: Upvote answer
|
||||
rank_question_vote_down_label:
|
||||
other: Downvote question
|
||||
rank_answer_vote_down_label:
|
||||
other: Downvote answer
|
||||
rank_invite_someone_to_answer_label:
|
||||
other: Invite someone to answer
|
||||
rank_tag_add_label:
|
||||
other: Create new tag
|
||||
rank_tag_edit_label:
|
||||
other: Edit tag description (need to review)
|
||||
rank_question_edit_label:
|
||||
other: Edit other's question (need to review)
|
||||
rank_answer_edit_label:
|
||||
other: Edit other's answer (need to review)
|
||||
rank_question_edit_without_review_label:
|
||||
other: Edit other's question without review
|
||||
rank_answer_edit_without_review_label:
|
||||
other: Edit other's answer without review
|
||||
rank_question_audit_label:
|
||||
other: Review question edits
|
||||
rank_answer_audit_label:
|
||||
other: Review answer edits
|
||||
rank_tag_audit_label:
|
||||
other: Review tag edits
|
||||
rank_tag_edit_without_review_label:
|
||||
other: Edit tag description without review
|
||||
rank_tag_synonym_label:
|
||||
other: Manage tag synonyms
|
||||
email:
|
||||
other: メールアドレス
|
||||
password:
|
||||
|
@ -52,6 +112,9 @@ backend:
|
|||
email_or_password_wrong_error:
|
||||
other: メールアドレスとパスワードが一致しません。
|
||||
error:
|
||||
password:
|
||||
space_invalid:
|
||||
other: Password cannot contain spaces.
|
||||
admin:
|
||||
cannot_update_their_password:
|
||||
other: パスワードは変更できません。
|
||||
|
@ -82,6 +145,8 @@ backend:
|
|||
other: 電子メールを確認する必要があります。
|
||||
verify_url_expired:
|
||||
other: メール認証済みURLの有効期限が切れています。メールを再送信してください。
|
||||
illegal_email_domain_error:
|
||||
other: Email is not allowed from that email domain. Please use another one.
|
||||
lang:
|
||||
not_found:
|
||||
other: 言語ファイルが見つかりません。
|
||||
|
@ -119,7 +184,9 @@ backend:
|
|||
fail_to_meet_the_condition:
|
||||
other: ランクは条件を満たしていません。
|
||||
vote_fail_to_meet_the_condition:
|
||||
other: Thanks for the feedback. You need at least {{ rank }} reputation to cast a vote.
|
||||
other: Thanks for the feedback. You need at least {{.Rank}} reputation to cast a vote.
|
||||
no_enough_rank_to_operate:
|
||||
other: You need at least {{.Rank}} reputation to do this.
|
||||
report:
|
||||
handle_failed:
|
||||
other: レポートの処理に失敗しました。
|
||||
|
@ -154,6 +221,10 @@ backend:
|
|||
no_permission:
|
||||
other: No permission to Revision.
|
||||
user:
|
||||
external_login_missing_user_id:
|
||||
other: The third-party platform does not provide a unique UserID, so you cannot login, please contact the website administrator.
|
||||
external_login_unbinding_forbidden:
|
||||
other: Please set a login password for your account before you remove this login.
|
||||
email_or_password_wrong:
|
||||
other:
|
||||
other: メールアドレスとパスワードが一致しません。
|
||||
|
@ -171,6 +242,10 @@ backend:
|
|||
other: You cannot modify your role.
|
||||
not_allowed_registration:
|
||||
other: Currently the site is not open for registration
|
||||
access_denied:
|
||||
other: Access denied
|
||||
page_access_denied:
|
||||
other: You do not have access to this page.
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Read config failed
|
||||
|
@ -185,37 +260,74 @@ backend:
|
|||
upload:
|
||||
unsupported_file_format:
|
||||
other: Unsupported file format.
|
||||
report:
|
||||
site_info:
|
||||
config_not_found:
|
||||
other: Site config not found.
|
||||
reason:
|
||||
spam:
|
||||
name:
|
||||
other: スパム
|
||||
other: spam
|
||||
desc:
|
||||
other: This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.
|
||||
rude:
|
||||
rude_or_abusive:
|
||||
name:
|
||||
other: rude or abusive
|
||||
desc:
|
||||
other: A reasonable person would find this content inappropriate for respectful discourse.
|
||||
duplicate:
|
||||
a_duplicate:
|
||||
name:
|
||||
other: a duplicate
|
||||
desc:
|
||||
other: This question has been asked before and already has an answer.
|
||||
not_answer:
|
||||
placeholder:
|
||||
other: Enter the existing question link
|
||||
not_a_answer:
|
||||
name:
|
||||
other: not an answer
|
||||
desc:
|
||||
other: This was posted as an answer, but it does not attempt to answer the question. It should possibly be an edit, a comment, another question, or deleted altogether.
|
||||
not_need:
|
||||
no_longer_needed:
|
||||
name:
|
||||
other: no longer needed
|
||||
desc:
|
||||
other: This comment is outdated, conversational or not relevant to this post.
|
||||
other:
|
||||
something:
|
||||
name:
|
||||
other: something else
|
||||
desc:
|
||||
other: This post requires staff attention for another reason not listed above.
|
||||
placeholder:
|
||||
other: Let us know specifically what you are concerned about
|
||||
community_specific:
|
||||
name:
|
||||
other: a community-specific reason
|
||||
desc:
|
||||
other: This question doesn’t meet a community guideline.
|
||||
not_clarity:
|
||||
name:
|
||||
other: needs details or clarity
|
||||
desc:
|
||||
other: This question currently includes multiple questions in one. It should focus on one problem only.
|
||||
looks_ok:
|
||||
name:
|
||||
other: looks ok
|
||||
desc:
|
||||
other: This post is good as-is and not low quality.
|
||||
needs_edit:
|
||||
name:
|
||||
other: needs edit, and I did it
|
||||
desc:
|
||||
other: Improve and correct problems with this post yourself.
|
||||
needs_close:
|
||||
name:
|
||||
other: needs close
|
||||
desc:
|
||||
other: A closed question can’t answer, but still can edit, vote and comment.
|
||||
needs_delete:
|
||||
name:
|
||||
other: needs delete
|
||||
desc:
|
||||
other: This post will be deleted.
|
||||
question:
|
||||
close:
|
||||
duplicate:
|
||||
|
@ -245,6 +357,8 @@ backend:
|
|||
other: 回答済み
|
||||
modified:
|
||||
other: 修正済み
|
||||
deleted_title:
|
||||
other: Deleted question
|
||||
notification:
|
||||
action:
|
||||
update_question:
|
||||
|
@ -271,6 +385,67 @@ backend:
|
|||
other: Your answer has been deleted
|
||||
your_comment_was_deleted:
|
||||
other: Your comment has been deleted
|
||||
up_voted_question:
|
||||
other: upvoted question
|
||||
down_voted_question:
|
||||
other: downvoted question
|
||||
up_voted_answer:
|
||||
other: upvoted answer
|
||||
down_voted_answer:
|
||||
other: downvoted answer
|
||||
up_voted_comment:
|
||||
other: upvoted comment
|
||||
invited_you_to_answer:
|
||||
other: invited you to answer
|
||||
email_tpl:
|
||||
change_email:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new email address"
|
||||
body:
|
||||
other: "Confirm your new email address for {{.SiteName}} by clicking on the following link:<br><br>\n\n<a href='{{.ChangeEmailUrl}}' target='_blank'>{{.ChangeEmailUrl}}</a><br><br>\n\nIf you did not request this change, please ignore this email.\n"
|
||||
new_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} answered your question"
|
||||
body:
|
||||
other: "<strong><a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.AnswerSummary}}</blockquote><br>\n<a href='{{.AnswerUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
invited_you_to_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} invited you to answer"
|
||||
body:
|
||||
other: "<strong><a href='{{.InviteUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><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<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
new_comment:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} commented on your post"
|
||||
body:
|
||||
other: "<strong><a href='{{.CommentUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.CommentSummary}}</blockquote><br>\n<a href='{{.CommentUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
pass_reset:
|
||||
title:
|
||||
other: "[{{.SiteName }}] Password reset"
|
||||
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"
|
||||
register:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new account"
|
||||
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"
|
||||
test:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Test Email"
|
||||
body:
|
||||
other: "This is a test email."
|
||||
action_activity_type:
|
||||
upvote:
|
||||
other: upvote
|
||||
upvoted:
|
||||
other: upvoted
|
||||
downvote:
|
||||
other: downvote
|
||||
downvoted:
|
||||
other: downvoted
|
||||
accept:
|
||||
other: accept
|
||||
accepted:
|
||||
other: accepted
|
||||
#The following fields are used for interface presentation(Front-end)
|
||||
ui:
|
||||
how_to_format:
|
||||
|
@ -307,6 +482,7 @@ ui:
|
|||
upgrade: Answer Upgrade
|
||||
maintenance: Website Maintenance
|
||||
users: ユーザー
|
||||
oauth_callback: Processing
|
||||
http_404: HTTP エラー 404
|
||||
http_50X: HTTP エラー 500
|
||||
http_403: HTTP エラー 403
|
||||
|
@ -316,11 +492,18 @@ ui:
|
|||
achievement: Achievements
|
||||
all_read: Mark all as read
|
||||
show_more: もっと見る
|
||||
someone: Someone
|
||||
inbox_type:
|
||||
all: All
|
||||
posts: Posts
|
||||
invites: Invites
|
||||
votes: Votes
|
||||
suspended:
|
||||
title: あなたのアカウントは停止されています。
|
||||
until_time: "あなたのアカウントは {{ time }} まで停止されました。"
|
||||
forever: このユーザーは永久に停止されました。
|
||||
end: You don't meet a community guideline.
|
||||
contact_us: Contact us
|
||||
editor:
|
||||
blockquote:
|
||||
text: 引用
|
||||
|
@ -527,7 +710,7 @@ ui:
|
|||
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
|
||||
tip_vote: It adds something useful to the post
|
||||
edit_answer:
|
||||
title: Edit Answer
|
||||
default_reason: Edit answer
|
||||
|
@ -609,6 +792,8 @@ ui:
|
|||
logout: Log out
|
||||
admin: Admin
|
||||
review: Review
|
||||
bookmark: Bookmarks
|
||||
moderation: Moderation
|
||||
search:
|
||||
placeholder: Search
|
||||
footer:
|
||||
|
@ -633,7 +818,6 @@ ui:
|
|||
msg:
|
||||
empty: Cannot be empty.
|
||||
login:
|
||||
page_title: '{{site_name}} へようこそ'
|
||||
login_to_continue: Log in to continue
|
||||
info_sign: Don't have an account? <1>Sign up</1>
|
||||
info_login: Already have an account? <1>Log in</1>
|
||||
|
@ -644,6 +828,7 @@ ui:
|
|||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: メールアドレス
|
||||
msg:
|
||||
|
@ -663,7 +848,6 @@ ui:
|
|||
msg:
|
||||
empty: メールアドレスを入力してください。
|
||||
change_email:
|
||||
page_title: '{{site_name}} へようこそ'
|
||||
btn_cancel: キャンセル
|
||||
btn_update: メールアドレスを更新
|
||||
send_success: >-
|
||||
|
@ -672,6 +856,17 @@ ui:
|
|||
label: New Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
oauth_bind_email:
|
||||
subtitle: Add a recovery email to your account.
|
||||
btn_update: Update email address
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
modal_title: Email already existes.
|
||||
modal_content: This email address already registered. Are you sure you want to connect to the existing account?
|
||||
modal_cancel: Change email
|
||||
modal_confirm: Connect to the existing account
|
||||
password_reset:
|
||||
page_title: パスワード再設定
|
||||
btn_name: パスワードをリセット
|
||||
|
@ -690,6 +885,7 @@ ui:
|
|||
label: Confirm New Password
|
||||
settings:
|
||||
page_title: Settings
|
||||
goto_modify: Go to Modify
|
||||
nav:
|
||||
profile: Profile
|
||||
notification: Notifications
|
||||
|
@ -711,7 +907,7 @@ ui:
|
|||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
gravatar_text: You can change image on <1>gravatar.com</1>
|
||||
gravatar_text: You can change image on
|
||||
custom: Custom
|
||||
btn_refresh: Refresh
|
||||
custom_text: You can upload your image.
|
||||
|
@ -738,8 +934,11 @@ ui:
|
|||
change_email_info: >-
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: メールアドレス
|
||||
msg: Email cannot be empty.
|
||||
label: New Email
|
||||
msg: New Email cannot be empty.
|
||||
pass:
|
||||
label: Current Password
|
||||
msg: Password cannot be empty.
|
||||
password_title: パスワード
|
||||
current_pass:
|
||||
label: 現在のパスワード
|
||||
|
@ -756,6 +955,13 @@ ui:
|
|||
lang:
|
||||
label: Interface Language
|
||||
text: User interface language. It will change when you refresh the page.
|
||||
my_logins:
|
||||
title: My Logins
|
||||
label: Log in or sign up on this site using these accounts.
|
||||
modal_title: Remove Login
|
||||
modal_content: Are you sure you want to remove this login from your account?
|
||||
modal_confirm_btn: Remove
|
||||
remove_success: Removed successfully
|
||||
toast:
|
||||
update: update success
|
||||
update_password: Password changed successfully.
|
||||
|
@ -766,6 +972,12 @@ ui:
|
|||
title: Related Questions
|
||||
btn: Add question
|
||||
answers: answers
|
||||
invite_to_answer:
|
||||
title: People asked
|
||||
desc: Invite people who you think might know the answer.
|
||||
invite: Invite to answer
|
||||
add: Add people
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
Asked: Asked
|
||||
|
@ -775,12 +987,13 @@ ui:
|
|||
Views: Viewed
|
||||
Follow: Follow
|
||||
Following: Following
|
||||
follow_tip: Follow this question to receive notifications
|
||||
answered: answered
|
||||
closed_in: Closed in
|
||||
show_exist: Show existing question.
|
||||
useful: Useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
answer_useful: It is useful
|
||||
answer_un_useful: It is not useful
|
||||
answers:
|
||||
|
@ -824,6 +1037,7 @@ ui:
|
|||
btns:
|
||||
confirm: Confirm
|
||||
cancel: Cancel
|
||||
edit: Edit
|
||||
save: Save
|
||||
delete: Delete
|
||||
login: Log in
|
||||
|
@ -836,6 +1050,10 @@ ui:
|
|||
skip: Skip
|
||||
discard_draft: Discard draft
|
||||
pinned: Pinned
|
||||
all: All
|
||||
question: Question
|
||||
answer: Answer
|
||||
comment: Comment
|
||||
search:
|
||||
title: Search Results
|
||||
keywords: Keywords
|
||||
|
@ -870,7 +1088,6 @@ ui:
|
|||
modal_confirm:
|
||||
title: Error...
|
||||
account_result:
|
||||
page_title: '{{site_name}} へようこそ'
|
||||
success: Your new account is confirmed; you will be redirected to the home page.
|
||||
link: Continue to homepage
|
||||
invalid: >-
|
||||
|
@ -931,8 +1148,7 @@ ui:
|
|||
accepted: Accepted
|
||||
answered: answered
|
||||
asked: 質問済み
|
||||
upvote: 賛成
|
||||
downvote: 反対票を投じる
|
||||
downvoted: downvoted
|
||||
mod_short: Mod
|
||||
mod_long: モデレーター
|
||||
x_reputation: reputation
|
||||
|
@ -994,6 +1210,7 @@ ui:
|
|||
admin_name:
|
||||
label: Name
|
||||
msg: Name cannot be empty.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
admin_password:
|
||||
label: パスワード
|
||||
text: >-
|
||||
|
@ -1051,8 +1268,19 @@ ui:
|
|||
seo: SEO
|
||||
customize: カスタマイズ
|
||||
themes: テーマ
|
||||
css-html: CSS/HTML
|
||||
css_html: CSS/HTML
|
||||
login: ログイン
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
plugins:
|
||||
login: Login
|
||||
qrcode_login_tip: Please use {{ agentName }} to scan the QR code and log in.
|
||||
login_failed_email_tip: Login failed, please allow this app to access your email information before try again.
|
||||
oauth:
|
||||
connect: Connect with {{ auth_name }}
|
||||
remove: Remove {{ auth_name }}
|
||||
admin:
|
||||
admin_header:
|
||||
title: 管理者
|
||||
|
@ -1095,6 +1323,7 @@ ui:
|
|||
pending: Pending
|
||||
completed: Completed
|
||||
flagged: Flagged
|
||||
flagged_type: Flagged {{ type }}
|
||||
created: Created
|
||||
action: Action
|
||||
review: Review
|
||||
|
@ -1122,7 +1351,7 @@ ui:
|
|||
closed_name: closed
|
||||
closed_desc: "A closed question can't answer, but still can edit, vote and comment."
|
||||
deleted_name: deleted
|
||||
deleted_desc: All reputation gained and lost will be restored.
|
||||
deleted_desc: This post will be deleted.
|
||||
btn_cancel: Cancel
|
||||
btn_submit: Submit
|
||||
btn_next: Next
|
||||
|
@ -1243,9 +1472,6 @@ ui:
|
|||
label: Timezone
|
||||
msg: Timezone cannot be empty.
|
||||
text: Choose a city in the same timezone as you.
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
|
@ -1355,22 +1581,77 @@ ui:
|
|||
footer:
|
||||
label: Footer
|
||||
text: This will insert before </html>.
|
||||
sidebar:
|
||||
label: Sidebar
|
||||
text: This will insert in sidebar.
|
||||
login:
|
||||
page_title: Login
|
||||
membership:
|
||||
title: Membership
|
||||
label: Allow new registrations
|
||||
text: Turn off to prevent anyone from creating a new account.
|
||||
email_registration:
|
||||
title: Email registration
|
||||
label: Allow email registration
|
||||
text: Turn off to prevent anyone creating new account through email.
|
||||
allowed_email_domains:
|
||||
title: Allowed email domains
|
||||
text: Email domains that users must register accounts with. One domain per line. Ignored when empty.
|
||||
private:
|
||||
title: Private
|
||||
label: Login required
|
||||
text: Only logged in users can access this community.
|
||||
installed_plugins:
|
||||
title: Installed Plugins
|
||||
filter:
|
||||
all: All
|
||||
active: Active
|
||||
inactive: Inactive
|
||||
outdated: Outdated
|
||||
plugins:
|
||||
label: Plugins
|
||||
text: Select an existing plugin.
|
||||
name: Name
|
||||
version: Version
|
||||
status: Status
|
||||
action: Action
|
||||
deactivate: Deactivate
|
||||
activate: Activate
|
||||
settings: Settings
|
||||
settings_users:
|
||||
title: Users
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar Base URL
|
||||
text: URL of the Gravatar provider’s API base. Ignored when empty.
|
||||
profile_editable:
|
||||
title: Profile Editable
|
||||
allow_update_display_name:
|
||||
label: Allow users to change their display name
|
||||
allow_update_username:
|
||||
label: Allow users to change their username
|
||||
allow_update_avatar:
|
||||
label: Allow users to change their profile image
|
||||
allow_update_bio:
|
||||
label: Allow users to change their about me
|
||||
allow_update_website:
|
||||
label: Allow users to change their website
|
||||
allow_update_location:
|
||||
label: Allow users to change their location
|
||||
privilege:
|
||||
title: Privileges
|
||||
level:
|
||||
label: Reputation required level
|
||||
text: Choose the reputation required for the privileges
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: cannot be empty
|
||||
invalid: is invalid
|
||||
btn_submit: 保存
|
||||
not_found_props: "Required property {{ key }} not found."
|
||||
select: Select
|
||||
page_review:
|
||||
review: Review
|
||||
proposed: proposed
|
||||
|
|
331
i18n/pt_PT.yaml
331
i18n/pt_PT.yaml
|
@ -11,6 +11,8 @@ backend:
|
|||
other: Não autorizado.
|
||||
database_error:
|
||||
other: Erro no servidor de dados.
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
action:
|
||||
report:
|
||||
other: Flag
|
||||
|
@ -22,6 +24,8 @@ backend:
|
|||
other: Close
|
||||
reopen:
|
||||
other: Reopen
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
pin:
|
||||
other: Pin
|
||||
hide:
|
||||
|
@ -30,6 +34,8 @@ backend:
|
|||
other: Unpin
|
||||
show:
|
||||
other: List
|
||||
invite_someone_to_answer:
|
||||
other: Edit
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
|
@ -45,6 +51,60 @@ backend:
|
|||
other: Possui acesso total ao site.
|
||||
moderator:
|
||||
other: Possui acesso a todas as postagens exceto às configurações de usuários.
|
||||
privilege:
|
||||
level_1:
|
||||
description:
|
||||
other: Level 1 (less reputation required for private team, group)
|
||||
level_2:
|
||||
description:
|
||||
other: Level 2 (low reputation required for startup community)
|
||||
level_3:
|
||||
description:
|
||||
other: Level 3 (high reputation required for mature community)
|
||||
rank_question_add_label:
|
||||
other: Ask question
|
||||
rank_answer_add_label:
|
||||
other: Write answer
|
||||
rank_comment_add_label:
|
||||
other: Write comment
|
||||
rank_report_add_label:
|
||||
other: Flag
|
||||
rank_comment_vote_up_label:
|
||||
other: Upvote comment
|
||||
rank_link_url_limit_label:
|
||||
other: Post more than 2 links at a time
|
||||
rank_question_vote_up_label:
|
||||
other: Upvote question
|
||||
rank_answer_vote_up_label:
|
||||
other: Upvote answer
|
||||
rank_question_vote_down_label:
|
||||
other: Downvote question
|
||||
rank_answer_vote_down_label:
|
||||
other: Downvote answer
|
||||
rank_invite_someone_to_answer_label:
|
||||
other: Invite someone to answer
|
||||
rank_tag_add_label:
|
||||
other: Create new tag
|
||||
rank_tag_edit_label:
|
||||
other: Edit tag description (need to review)
|
||||
rank_question_edit_label:
|
||||
other: Edit other's question (need to review)
|
||||
rank_answer_edit_label:
|
||||
other: Edit other's answer (need to review)
|
||||
rank_question_edit_without_review_label:
|
||||
other: Edit other's question without review
|
||||
rank_answer_edit_without_review_label:
|
||||
other: Edit other's answer without review
|
||||
rank_question_audit_label:
|
||||
other: Review question edits
|
||||
rank_answer_audit_label:
|
||||
other: Review answer edits
|
||||
rank_tag_audit_label:
|
||||
other: Review tag edits
|
||||
rank_tag_edit_without_review_label:
|
||||
other: Edit tag description without review
|
||||
rank_tag_synonym_label:
|
||||
other: Manage tag synonyms
|
||||
email:
|
||||
other: E-mail
|
||||
password:
|
||||
|
@ -52,6 +112,9 @@ backend:
|
|||
email_or_password_wrong_error:
|
||||
other: O e-mail e a palavra-passe não coincidem.
|
||||
error:
|
||||
password:
|
||||
space_invalid:
|
||||
other: Password cannot contain spaces.
|
||||
admin:
|
||||
cannot_update_their_password:
|
||||
other: You cannot modify your password.
|
||||
|
@ -82,6 +145,8 @@ backend:
|
|||
other: O e-mail deve ser verificado.
|
||||
verify_url_expired:
|
||||
other: O e-mail verificado URL expirou, por favor, reenvie o e-mail.
|
||||
illegal_email_domain_error:
|
||||
other: Email is not allowed from that email domain. Please use another one.
|
||||
lang:
|
||||
not_found:
|
||||
other: Arquivo de idioma não encontrado.
|
||||
|
@ -119,7 +184,9 @@ backend:
|
|||
fail_to_meet_the_condition:
|
||||
other: O nível não consegue satisfazer a condição.
|
||||
vote_fail_to_meet_the_condition:
|
||||
other: Thanks for the feedback. You need at least {{ rank }} reputation to cast a vote.
|
||||
other: Thanks for the feedback. You need at least {{.Rank}} reputation to cast a vote.
|
||||
no_enough_rank_to_operate:
|
||||
other: You need at least {{.Rank}} reputation to do this.
|
||||
report:
|
||||
handle_failed:
|
||||
other: Falha ao manusear relatório.
|
||||
|
@ -154,6 +221,10 @@ backend:
|
|||
no_permission:
|
||||
other: Sem permissão de modificação.
|
||||
user:
|
||||
external_login_missing_user_id:
|
||||
other: The third-party platform does not provide a unique UserID, so you cannot login, please contact the website administrator.
|
||||
external_login_unbinding_forbidden:
|
||||
other: Please set a login password for your account before you remove this login.
|
||||
email_or_password_wrong:
|
||||
other:
|
||||
other: O e-mail e a senha não conferem.
|
||||
|
@ -171,6 +242,10 @@ backend:
|
|||
other: Você não pode modificar a sua função.
|
||||
not_allowed_registration:
|
||||
other: O site não está aberto para novos registros
|
||||
access_denied:
|
||||
other: Access denied
|
||||
page_access_denied:
|
||||
other: You do not have access to this page.
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Falha ao ler configuração
|
||||
|
@ -185,37 +260,74 @@ backend:
|
|||
upload:
|
||||
unsupported_file_format:
|
||||
other: Formato de arquivo não suportado.
|
||||
report:
|
||||
site_info:
|
||||
config_not_found:
|
||||
other: Site config not found.
|
||||
reason:
|
||||
spam:
|
||||
name:
|
||||
other: spam
|
||||
desc:
|
||||
other: Essa postagem é um anúncio, ou vandalismo. Não é útil ou relevante para o tópico atual.
|
||||
rude:
|
||||
other: This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.
|
||||
rude_or_abusive:
|
||||
name:
|
||||
other: rude ou abusivo
|
||||
other: rude or abusive
|
||||
desc:
|
||||
other: A reasonable person would find this content inappropriate for respectful discourse.
|
||||
duplicate:
|
||||
a_duplicate:
|
||||
name:
|
||||
other: a duplicate
|
||||
desc:
|
||||
other: This question has been asked before and already has an answer.
|
||||
not_answer:
|
||||
placeholder:
|
||||
other: Enter the existing question link
|
||||
not_a_answer:
|
||||
name:
|
||||
other: not an answer
|
||||
desc:
|
||||
other: This was posted as an answer, but it does not attempt to answer the question. It should possibly be an edit, a comment, another question, or deleted altogether.
|
||||
not_need:
|
||||
no_longer_needed:
|
||||
name:
|
||||
other: no longer needed
|
||||
desc:
|
||||
other: This comment is outdated, conversational or not relevant to this post.
|
||||
other:
|
||||
something:
|
||||
name:
|
||||
other: something else
|
||||
desc:
|
||||
other: This post requires staff attention for another reason not listed above.
|
||||
placeholder:
|
||||
other: Let us know specifically what you are concerned about
|
||||
community_specific:
|
||||
name:
|
||||
other: a community-specific reason
|
||||
desc:
|
||||
other: This question doesn’t meet a community guideline.
|
||||
not_clarity:
|
||||
name:
|
||||
other: needs details or clarity
|
||||
desc:
|
||||
other: This question currently includes multiple questions in one. It should focus on one problem only.
|
||||
looks_ok:
|
||||
name:
|
||||
other: looks ok
|
||||
desc:
|
||||
other: This post is good as-is and not low quality.
|
||||
needs_edit:
|
||||
name:
|
||||
other: needs edit, and I did it
|
||||
desc:
|
||||
other: Improve and correct problems with this post yourself.
|
||||
needs_close:
|
||||
name:
|
||||
other: needs close
|
||||
desc:
|
||||
other: A closed question can’t answer, but still can edit, vote and comment.
|
||||
needs_delete:
|
||||
name:
|
||||
other: needs delete
|
||||
desc:
|
||||
other: This post will be deleted.
|
||||
question:
|
||||
close:
|
||||
duplicate:
|
||||
|
@ -245,6 +357,8 @@ backend:
|
|||
other: answered
|
||||
modified:
|
||||
other: modified
|
||||
deleted_title:
|
||||
other: Deleted question
|
||||
notification:
|
||||
action:
|
||||
update_question:
|
||||
|
@ -271,6 +385,67 @@ backend:
|
|||
other: Your answer has been deleted
|
||||
your_comment_was_deleted:
|
||||
other: Your comment has been deleted
|
||||
up_voted_question:
|
||||
other: upvoted question
|
||||
down_voted_question:
|
||||
other: downvoted question
|
||||
up_voted_answer:
|
||||
other: upvoted answer
|
||||
down_voted_answer:
|
||||
other: downvoted answer
|
||||
up_voted_comment:
|
||||
other: upvoted comment
|
||||
invited_you_to_answer:
|
||||
other: invited you to answer
|
||||
email_tpl:
|
||||
change_email:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new email address"
|
||||
body:
|
||||
other: "Confirm your new email address for {{.SiteName}} by clicking on the following link:<br><br>\n\n<a href='{{.ChangeEmailUrl}}' target='_blank'>{{.ChangeEmailUrl}}</a><br><br>\n\nIf you did not request this change, please ignore this email.\n"
|
||||
new_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} answered your question"
|
||||
body:
|
||||
other: "<strong><a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.AnswerSummary}}</blockquote><br>\n<a href='{{.AnswerUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
invited_you_to_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} invited you to answer"
|
||||
body:
|
||||
other: "<strong><a href='{{.InviteUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><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<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
new_comment:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} commented on your post"
|
||||
body:
|
||||
other: "<strong><a href='{{.CommentUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.CommentSummary}}</blockquote><br>\n<a href='{{.CommentUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
pass_reset:
|
||||
title:
|
||||
other: "[{{.SiteName }}] Password reset"
|
||||
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"
|
||||
register:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new account"
|
||||
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"
|
||||
test:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Test Email"
|
||||
body:
|
||||
other: "This is a test email."
|
||||
action_activity_type:
|
||||
upvote:
|
||||
other: upvote
|
||||
upvoted:
|
||||
other: upvoted
|
||||
downvote:
|
||||
other: downvote
|
||||
downvoted:
|
||||
other: downvoted
|
||||
accept:
|
||||
other: accept
|
||||
accepted:
|
||||
other: accepted
|
||||
#The following fields are used for interface presentation(Front-end)
|
||||
ui:
|
||||
how_to_format:
|
||||
|
@ -307,6 +482,7 @@ ui:
|
|||
upgrade: Atualização do Answer
|
||||
maintenance: Manutenção do website
|
||||
users: Usuários
|
||||
oauth_callback: Processing
|
||||
http_404: HTTP Error 404
|
||||
http_50X: HTTP Error 500
|
||||
http_403: HTTP Error 403
|
||||
|
@ -316,11 +492,18 @@ ui:
|
|||
achievement: Conquistas
|
||||
all_read: Marcar todos como lida
|
||||
show_more: Mostrar mais
|
||||
someone: Someone
|
||||
inbox_type:
|
||||
all: All
|
||||
posts: Posts
|
||||
invites: Invites
|
||||
votes: Votes
|
||||
suspended:
|
||||
title: A sua conta foi suspensa
|
||||
until_time: "Sua conta está suspensa até {{ time }}."
|
||||
forever: Este usuário foi suspenso permanentemente.
|
||||
end: Você não atende a uma diretriz da comunidade.
|
||||
contact_us: Contact us
|
||||
editor:
|
||||
blockquote:
|
||||
text: Bloco de citação
|
||||
|
@ -527,7 +710,7 @@ ui:
|
|||
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
|
||||
tip_vote: It adds something useful to the post
|
||||
edit_answer:
|
||||
title: Edit Answer
|
||||
default_reason: Edit answer
|
||||
|
@ -609,6 +792,8 @@ ui:
|
|||
logout: Log out
|
||||
admin: Admin
|
||||
review: Review
|
||||
bookmark: Bookmarks
|
||||
moderation: Moderation
|
||||
search:
|
||||
placeholder: Search
|
||||
footer:
|
||||
|
@ -633,7 +818,6 @@ ui:
|
|||
msg:
|
||||
empty: Cannot be empty.
|
||||
login:
|
||||
page_title: Welcome to {{site_name}}
|
||||
login_to_continue: Log in to continue
|
||||
info_sign: Don't have an account? <1>Sign up</1>
|
||||
info_login: Already have an account? <1>Log in</1>
|
||||
|
@ -644,6 +828,7 @@ ui:
|
|||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
|
@ -663,7 +848,6 @@ ui:
|
|||
msg:
|
||||
empty: Email cannot be empty.
|
||||
change_email:
|
||||
page_title: Welcome to {{site_name}}
|
||||
btn_cancel: Cancel
|
||||
btn_update: Update email address
|
||||
send_success: >-
|
||||
|
@ -672,6 +856,17 @@ ui:
|
|||
label: New Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
oauth_bind_email:
|
||||
subtitle: Add a recovery email to your account.
|
||||
btn_update: Update email address
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
modal_title: Email already existes.
|
||||
modal_content: This email address already registered. Are you sure you want to connect to the existing account?
|
||||
modal_cancel: Change email
|
||||
modal_confirm: Connect to the existing account
|
||||
password_reset:
|
||||
page_title: Password Reset
|
||||
btn_name: Reset my password
|
||||
|
@ -690,6 +885,7 @@ ui:
|
|||
label: Confirm New Password
|
||||
settings:
|
||||
page_title: Settings
|
||||
goto_modify: Go to Modify
|
||||
nav:
|
||||
profile: Profile
|
||||
notification: Notifications
|
||||
|
@ -711,7 +907,7 @@ ui:
|
|||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
gravatar_text: You can change image on <1>gravatar.com</1>
|
||||
gravatar_text: You can change image on
|
||||
custom: Custom
|
||||
btn_refresh: Refresh
|
||||
custom_text: You can upload your image.
|
||||
|
@ -738,8 +934,11 @@ ui:
|
|||
change_email_info: >-
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
label: New Email
|
||||
msg: New Email cannot be empty.
|
||||
pass:
|
||||
label: Current Password
|
||||
msg: Password cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
|
@ -756,6 +955,13 @@ ui:
|
|||
lang:
|
||||
label: Interface Language
|
||||
text: User interface language. It will change when you refresh the page.
|
||||
my_logins:
|
||||
title: My Logins
|
||||
label: Log in or sign up on this site using these accounts.
|
||||
modal_title: Remove Login
|
||||
modal_content: Are you sure you want to remove this login from your account?
|
||||
modal_confirm_btn: Remove
|
||||
remove_success: Removed successfully
|
||||
toast:
|
||||
update: update success
|
||||
update_password: Password changed successfully.
|
||||
|
@ -766,6 +972,12 @@ ui:
|
|||
title: Related Questions
|
||||
btn: Add question
|
||||
answers: answers
|
||||
invite_to_answer:
|
||||
title: People asked
|
||||
desc: Invite people who you think might know the answer.
|
||||
invite: Invite to answer
|
||||
add: Add people
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
Asked: Asked
|
||||
|
@ -775,12 +987,13 @@ ui:
|
|||
Views: Viewed
|
||||
Follow: Follow
|
||||
Following: Following
|
||||
follow_tip: Follow this question to receive notifications
|
||||
answered: answered
|
||||
closed_in: Closed in
|
||||
show_exist: Show existing question.
|
||||
useful: Useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
answer_useful: It is useful
|
||||
answer_un_useful: It is not useful
|
||||
answers:
|
||||
|
@ -824,6 +1037,7 @@ ui:
|
|||
btns:
|
||||
confirm: Confirm
|
||||
cancel: Cancel
|
||||
edit: Edit
|
||||
save: Save
|
||||
delete: Delete
|
||||
login: Log in
|
||||
|
@ -836,6 +1050,10 @@ ui:
|
|||
skip: Skip
|
||||
discard_draft: Discard draft
|
||||
pinned: Pinned
|
||||
all: All
|
||||
question: Question
|
||||
answer: Answer
|
||||
comment: Comment
|
||||
search:
|
||||
title: Search Results
|
||||
keywords: Keywords
|
||||
|
@ -870,7 +1088,6 @@ ui:
|
|||
modal_confirm:
|
||||
title: Error...
|
||||
account_result:
|
||||
page_title: Welcome to {{site_name}}
|
||||
success: Your new account is confirmed; you will be redirected to the home page.
|
||||
link: Continue to homepage
|
||||
invalid: >-
|
||||
|
@ -931,8 +1148,7 @@ ui:
|
|||
accepted: Accepted
|
||||
answered: answered
|
||||
asked: asked
|
||||
upvote: upvote
|
||||
downvote: downvote
|
||||
downvoted: downvoted
|
||||
mod_short: Mod
|
||||
mod_long: Moderators
|
||||
x_reputation: reputation
|
||||
|
@ -994,6 +1210,7 @@ ui:
|
|||
admin_name:
|
||||
label: Name
|
||||
msg: Name cannot be empty.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
admin_password:
|
||||
label: Password
|
||||
text: >-
|
||||
|
@ -1051,8 +1268,19 @@ ui:
|
|||
seo: SEO
|
||||
customize: Customize
|
||||
themes: Themes
|
||||
css-html: CSS/HTML
|
||||
css_html: CSS/HTML
|
||||
login: Login
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
plugins:
|
||||
login: Login
|
||||
qrcode_login_tip: Please use {{ agentName }} to scan the QR code and log in.
|
||||
login_failed_email_tip: Login failed, please allow this app to access your email information before try again.
|
||||
oauth:
|
||||
connect: Connect with {{ auth_name }}
|
||||
remove: Remove {{ auth_name }}
|
||||
admin:
|
||||
admin_header:
|
||||
title: Admin
|
||||
|
@ -1095,6 +1323,7 @@ ui:
|
|||
pending: Pending
|
||||
completed: Completed
|
||||
flagged: Flagged
|
||||
flagged_type: Flagged {{ type }}
|
||||
created: Created
|
||||
action: Action
|
||||
review: Review
|
||||
|
@ -1122,7 +1351,7 @@ ui:
|
|||
closed_name: closed
|
||||
closed_desc: "A closed question can't answer, but still can edit, vote and comment."
|
||||
deleted_name: deleted
|
||||
deleted_desc: All reputation gained and lost will be restored.
|
||||
deleted_desc: This post will be deleted.
|
||||
btn_cancel: Cancel
|
||||
btn_submit: Submit
|
||||
btn_next: Next
|
||||
|
@ -1243,9 +1472,6 @@ ui:
|
|||
label: Timezone
|
||||
msg: Timezone cannot be empty.
|
||||
text: Choose a city in the same timezone as you.
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
|
@ -1355,22 +1581,77 @@ ui:
|
|||
footer:
|
||||
label: Footer
|
||||
text: This will insert before </html>.
|
||||
sidebar:
|
||||
label: Sidebar
|
||||
text: This will insert in sidebar.
|
||||
login:
|
||||
page_title: Login
|
||||
membership:
|
||||
title: Membership
|
||||
label: Allow new registrations
|
||||
text: Turn off to prevent anyone from creating a new account.
|
||||
email_registration:
|
||||
title: Email registration
|
||||
label: Allow email registration
|
||||
text: Turn off to prevent anyone creating new account through email.
|
||||
allowed_email_domains:
|
||||
title: Allowed email domains
|
||||
text: Email domains that users must register accounts with. One domain per line. Ignored when empty.
|
||||
private:
|
||||
title: Private
|
||||
label: Login required
|
||||
text: Only logged in users can access this community.
|
||||
installed_plugins:
|
||||
title: Installed Plugins
|
||||
filter:
|
||||
all: All
|
||||
active: Active
|
||||
inactive: Inactive
|
||||
outdated: Outdated
|
||||
plugins:
|
||||
label: Plugins
|
||||
text: Select an existing plugin.
|
||||
name: Name
|
||||
version: Version
|
||||
status: Status
|
||||
action: Action
|
||||
deactivate: Deactivate
|
||||
activate: Activate
|
||||
settings: Settings
|
||||
settings_users:
|
||||
title: Users
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar Base URL
|
||||
text: URL of the Gravatar provider’s API base. Ignored when empty.
|
||||
profile_editable:
|
||||
title: Profile Editable
|
||||
allow_update_display_name:
|
||||
label: Allow users to change their display name
|
||||
allow_update_username:
|
||||
label: Allow users to change their username
|
||||
allow_update_avatar:
|
||||
label: Allow users to change their profile image
|
||||
allow_update_bio:
|
||||
label: Allow users to change their about me
|
||||
allow_update_website:
|
||||
label: Allow users to change their website
|
||||
allow_update_location:
|
||||
label: Allow users to change their location
|
||||
privilege:
|
||||
title: Privileges
|
||||
level:
|
||||
label: Reputation required level
|
||||
text: Choose the reputation required for the privileges
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: cannot be empty
|
||||
invalid: is invalid
|
||||
btn_submit: Save
|
||||
not_found_props: "Required property {{ key }} not found."
|
||||
select: Select
|
||||
page_review:
|
||||
review: Review
|
||||
proposed: proposed
|
||||
|
|
327
i18n/ru_RU.yaml
327
i18n/ru_RU.yaml
|
@ -11,6 +11,8 @@ backend:
|
|||
other: Авторизация не выполнена.
|
||||
database_error:
|
||||
other: Ошибка сервера данных.
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
action:
|
||||
report:
|
||||
other: Flag
|
||||
|
@ -22,6 +24,8 @@ backend:
|
|||
other: Close
|
||||
reopen:
|
||||
other: Reopen
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
pin:
|
||||
other: Pin
|
||||
hide:
|
||||
|
@ -30,6 +34,8 @@ backend:
|
|||
other: Unpin
|
||||
show:
|
||||
other: List
|
||||
invite_someone_to_answer:
|
||||
other: Edit
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
|
@ -45,6 +51,60 @@ backend:
|
|||
other: Имейте все полномочия для доступа к сайту.
|
||||
moderator:
|
||||
other: Имеет доступ ко всем сообщениям, кроме настроек администратора.
|
||||
privilege:
|
||||
level_1:
|
||||
description:
|
||||
other: Level 1 (less reputation required for private team, group)
|
||||
level_2:
|
||||
description:
|
||||
other: Level 2 (low reputation required for startup community)
|
||||
level_3:
|
||||
description:
|
||||
other: Level 3 (high reputation required for mature community)
|
||||
rank_question_add_label:
|
||||
other: Ask question
|
||||
rank_answer_add_label:
|
||||
other: Write answer
|
||||
rank_comment_add_label:
|
||||
other: Write comment
|
||||
rank_report_add_label:
|
||||
other: Flag
|
||||
rank_comment_vote_up_label:
|
||||
other: Upvote comment
|
||||
rank_link_url_limit_label:
|
||||
other: Post more than 2 links at a time
|
||||
rank_question_vote_up_label:
|
||||
other: Upvote question
|
||||
rank_answer_vote_up_label:
|
||||
other: Upvote answer
|
||||
rank_question_vote_down_label:
|
||||
other: Downvote question
|
||||
rank_answer_vote_down_label:
|
||||
other: Downvote answer
|
||||
rank_invite_someone_to_answer_label:
|
||||
other: Invite someone to answer
|
||||
rank_tag_add_label:
|
||||
other: Create new tag
|
||||
rank_tag_edit_label:
|
||||
other: Edit tag description (need to review)
|
||||
rank_question_edit_label:
|
||||
other: Edit other's question (need to review)
|
||||
rank_answer_edit_label:
|
||||
other: Edit other's answer (need to review)
|
||||
rank_question_edit_without_review_label:
|
||||
other: Edit other's question without review
|
||||
rank_answer_edit_without_review_label:
|
||||
other: Edit other's answer without review
|
||||
rank_question_audit_label:
|
||||
other: Review question edits
|
||||
rank_answer_audit_label:
|
||||
other: Review answer edits
|
||||
rank_tag_audit_label:
|
||||
other: Review tag edits
|
||||
rank_tag_edit_without_review_label:
|
||||
other: Edit tag description without review
|
||||
rank_tag_synonym_label:
|
||||
other: Manage tag synonyms
|
||||
email:
|
||||
other: Эл. почта
|
||||
password:
|
||||
|
@ -52,6 +112,9 @@ backend:
|
|||
email_or_password_wrong_error:
|
||||
other: Неверное имя пользователя или пароль.
|
||||
error:
|
||||
password:
|
||||
space_invalid:
|
||||
other: Password cannot contain spaces.
|
||||
admin:
|
||||
cannot_update_their_password:
|
||||
other: You cannot modify your password.
|
||||
|
@ -82,6 +145,8 @@ backend:
|
|||
other: Адрес электронной почты должен быть подтвержден.
|
||||
verify_url_expired:
|
||||
other: Срок действия подтверждённого адреса электронной почты истек, пожалуйста, отправьте письмо повторно.
|
||||
illegal_email_domain_error:
|
||||
other: Email is not allowed from that email domain. Please use another one.
|
||||
lang:
|
||||
not_found:
|
||||
other: Языковой файл не найден.
|
||||
|
@ -119,7 +184,9 @@ backend:
|
|||
fail_to_meet_the_condition:
|
||||
other: Ранг не соответствует условию.
|
||||
vote_fail_to_meet_the_condition:
|
||||
other: Thanks for the feedback. You need at least {{ rank }} reputation to cast a vote.
|
||||
other: Thanks for the feedback. You need at least {{.Rank}} reputation to cast a vote.
|
||||
no_enough_rank_to_operate:
|
||||
other: You need at least {{.Rank}} reputation to do this.
|
||||
report:
|
||||
handle_failed:
|
||||
other: Не удалось обработать отчет.
|
||||
|
@ -154,6 +221,10 @@ backend:
|
|||
no_permission:
|
||||
other: Нет прав на ревизию.
|
||||
user:
|
||||
external_login_missing_user_id:
|
||||
other: The third-party platform does not provide a unique UserID, so you cannot login, please contact the website administrator.
|
||||
external_login_unbinding_forbidden:
|
||||
other: Please set a login password for your account before you remove this login.
|
||||
email_or_password_wrong:
|
||||
other:
|
||||
other: Email and password do not match.
|
||||
|
@ -171,6 +242,10 @@ backend:
|
|||
other: You cannot modify your role.
|
||||
not_allowed_registration:
|
||||
other: Currently the site is not open for registration
|
||||
access_denied:
|
||||
other: Access denied
|
||||
page_access_denied:
|
||||
other: You do not have access to this page.
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Read config failed
|
||||
|
@ -185,37 +260,74 @@ backend:
|
|||
upload:
|
||||
unsupported_file_format:
|
||||
other: Unsupported file format.
|
||||
report:
|
||||
site_info:
|
||||
config_not_found:
|
||||
other: Site config not found.
|
||||
reason:
|
||||
spam:
|
||||
name:
|
||||
other: spam
|
||||
desc:
|
||||
other: This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.
|
||||
rude:
|
||||
rude_or_abusive:
|
||||
name:
|
||||
other: rude or abusive
|
||||
desc:
|
||||
other: A reasonable person would find this content inappropriate for respectful discourse.
|
||||
duplicate:
|
||||
a_duplicate:
|
||||
name:
|
||||
other: a duplicate
|
||||
desc:
|
||||
other: This question has been asked before and already has an answer.
|
||||
not_answer:
|
||||
placeholder:
|
||||
other: Enter the existing question link
|
||||
not_a_answer:
|
||||
name:
|
||||
other: not an answer
|
||||
desc:
|
||||
other: This was posted as an answer, but it does not attempt to answer the question. It should possibly be an edit, a comment, another question, or deleted altogether.
|
||||
not_need:
|
||||
no_longer_needed:
|
||||
name:
|
||||
other: no longer needed
|
||||
desc:
|
||||
other: This comment is outdated, conversational or not relevant to this post.
|
||||
other:
|
||||
something:
|
||||
name:
|
||||
other: something else
|
||||
desc:
|
||||
other: This post requires staff attention for another reason not listed above.
|
||||
placeholder:
|
||||
other: Let us know specifically what you are concerned about
|
||||
community_specific:
|
||||
name:
|
||||
other: a community-specific reason
|
||||
desc:
|
||||
other: This question doesn’t meet a community guideline.
|
||||
not_clarity:
|
||||
name:
|
||||
other: needs details or clarity
|
||||
desc:
|
||||
other: This question currently includes multiple questions in one. It should focus on one problem only.
|
||||
looks_ok:
|
||||
name:
|
||||
other: looks ok
|
||||
desc:
|
||||
other: This post is good as-is and not low quality.
|
||||
needs_edit:
|
||||
name:
|
||||
other: needs edit, and I did it
|
||||
desc:
|
||||
other: Improve and correct problems with this post yourself.
|
||||
needs_close:
|
||||
name:
|
||||
other: needs close
|
||||
desc:
|
||||
other: A closed question can’t answer, but still can edit, vote and comment.
|
||||
needs_delete:
|
||||
name:
|
||||
other: needs delete
|
||||
desc:
|
||||
other: This post will be deleted.
|
||||
question:
|
||||
close:
|
||||
duplicate:
|
||||
|
@ -245,6 +357,8 @@ backend:
|
|||
other: answered
|
||||
modified:
|
||||
other: modified
|
||||
deleted_title:
|
||||
other: Deleted question
|
||||
notification:
|
||||
action:
|
||||
update_question:
|
||||
|
@ -271,6 +385,67 @@ backend:
|
|||
other: Your answer has been deleted
|
||||
your_comment_was_deleted:
|
||||
other: Your comment has been deleted
|
||||
up_voted_question:
|
||||
other: upvoted question
|
||||
down_voted_question:
|
||||
other: downvoted question
|
||||
up_voted_answer:
|
||||
other: upvoted answer
|
||||
down_voted_answer:
|
||||
other: downvoted answer
|
||||
up_voted_comment:
|
||||
other: upvoted comment
|
||||
invited_you_to_answer:
|
||||
other: invited you to answer
|
||||
email_tpl:
|
||||
change_email:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new email address"
|
||||
body:
|
||||
other: "Confirm your new email address for {{.SiteName}} by clicking on the following link:<br><br>\n\n<a href='{{.ChangeEmailUrl}}' target='_blank'>{{.ChangeEmailUrl}}</a><br><br>\n\nIf you did not request this change, please ignore this email.\n"
|
||||
new_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} answered your question"
|
||||
body:
|
||||
other: "<strong><a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.AnswerSummary}}</blockquote><br>\n<a href='{{.AnswerUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
invited_you_to_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} invited you to answer"
|
||||
body:
|
||||
other: "<strong><a href='{{.InviteUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><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<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
new_comment:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} commented on your post"
|
||||
body:
|
||||
other: "<strong><a href='{{.CommentUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.CommentSummary}}</blockquote><br>\n<a href='{{.CommentUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
pass_reset:
|
||||
title:
|
||||
other: "[{{.SiteName }}] Password reset"
|
||||
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"
|
||||
register:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new account"
|
||||
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"
|
||||
test:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Test Email"
|
||||
body:
|
||||
other: "This is a test email."
|
||||
action_activity_type:
|
||||
upvote:
|
||||
other: upvote
|
||||
upvoted:
|
||||
other: upvoted
|
||||
downvote:
|
||||
other: downvote
|
||||
downvoted:
|
||||
other: downvoted
|
||||
accept:
|
||||
other: accept
|
||||
accepted:
|
||||
other: accepted
|
||||
#The following fields are used for interface presentation(Front-end)
|
||||
ui:
|
||||
how_to_format:
|
||||
|
@ -307,6 +482,7 @@ ui:
|
|||
upgrade: Обновить ответ
|
||||
maintenance: Обслуживание сайта
|
||||
users: Пользователи
|
||||
oauth_callback: Processing
|
||||
http_404: HTTP Error 404
|
||||
http_50X: HTTP Error 500
|
||||
http_403: HTTP Error 403
|
||||
|
@ -316,11 +492,18 @@ ui:
|
|||
achievement: Достижения
|
||||
all_read: Отметить всё как прочитанное
|
||||
show_more: Показать еще
|
||||
someone: Someone
|
||||
inbox_type:
|
||||
all: All
|
||||
posts: Posts
|
||||
invites: Invites
|
||||
votes: Votes
|
||||
suspended:
|
||||
title: Ваш аккаунт заблокирован
|
||||
until_time: "Ваша учетная запись была заблокирована до {{ time }}."
|
||||
forever: Этот пользователь был навсегда заблокирован.
|
||||
end: Вы не соответствуете правилам сообщества.
|
||||
contact_us: Contact us
|
||||
editor:
|
||||
blockquote:
|
||||
text: Цитата
|
||||
|
@ -527,7 +710,7 @@ ui:
|
|||
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
|
||||
tip_vote: It adds something useful to the post
|
||||
edit_answer:
|
||||
title: Edit Answer
|
||||
default_reason: Edit answer
|
||||
|
@ -609,6 +792,8 @@ ui:
|
|||
logout: Log out
|
||||
admin: Admin
|
||||
review: Review
|
||||
bookmark: Bookmarks
|
||||
moderation: Moderation
|
||||
search:
|
||||
placeholder: Search
|
||||
footer:
|
||||
|
@ -633,7 +818,6 @@ ui:
|
|||
msg:
|
||||
empty: Cannot be empty.
|
||||
login:
|
||||
page_title: Welcome to {{site_name}}
|
||||
login_to_continue: Log in to continue
|
||||
info_sign: Don't have an account? <1>Sign up</1>
|
||||
info_login: Already have an account? <1>Log in</1>
|
||||
|
@ -644,6 +828,7 @@ ui:
|
|||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
|
@ -663,7 +848,6 @@ ui:
|
|||
msg:
|
||||
empty: Email cannot be empty.
|
||||
change_email:
|
||||
page_title: Welcome to {{site_name}}
|
||||
btn_cancel: Cancel
|
||||
btn_update: Update email address
|
||||
send_success: >-
|
||||
|
@ -672,6 +856,17 @@ ui:
|
|||
label: New Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
oauth_bind_email:
|
||||
subtitle: Add a recovery email to your account.
|
||||
btn_update: Update email address
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
modal_title: Email already existes.
|
||||
modal_content: This email address already registered. Are you sure you want to connect to the existing account?
|
||||
modal_cancel: Change email
|
||||
modal_confirm: Connect to the existing account
|
||||
password_reset:
|
||||
page_title: Password Reset
|
||||
btn_name: Reset my password
|
||||
|
@ -690,6 +885,7 @@ ui:
|
|||
label: Confirm New Password
|
||||
settings:
|
||||
page_title: Settings
|
||||
goto_modify: Go to Modify
|
||||
nav:
|
||||
profile: Profile
|
||||
notification: Notifications
|
||||
|
@ -711,7 +907,7 @@ ui:
|
|||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
gravatar_text: You can change image on <1>gravatar.com</1>
|
||||
gravatar_text: You can change image on
|
||||
custom: Custom
|
||||
btn_refresh: Refresh
|
||||
custom_text: You can upload your image.
|
||||
|
@ -738,8 +934,11 @@ ui:
|
|||
change_email_info: >-
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
label: New Email
|
||||
msg: New Email cannot be empty.
|
||||
pass:
|
||||
label: Current Password
|
||||
msg: Password cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
|
@ -756,6 +955,13 @@ ui:
|
|||
lang:
|
||||
label: Interface Language
|
||||
text: User interface language. It will change when you refresh the page.
|
||||
my_logins:
|
||||
title: My Logins
|
||||
label: Log in or sign up on this site using these accounts.
|
||||
modal_title: Remove Login
|
||||
modal_content: Are you sure you want to remove this login from your account?
|
||||
modal_confirm_btn: Remove
|
||||
remove_success: Removed successfully
|
||||
toast:
|
||||
update: update success
|
||||
update_password: Password changed successfully.
|
||||
|
@ -766,6 +972,12 @@ ui:
|
|||
title: Related Questions
|
||||
btn: Add question
|
||||
answers: answers
|
||||
invite_to_answer:
|
||||
title: People asked
|
||||
desc: Invite people who you think might know the answer.
|
||||
invite: Invite to answer
|
||||
add: Add people
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
Asked: Asked
|
||||
|
@ -775,12 +987,13 @@ ui:
|
|||
Views: Viewed
|
||||
Follow: Follow
|
||||
Following: Following
|
||||
follow_tip: Follow this question to receive notifications
|
||||
answered: answered
|
||||
closed_in: Closed in
|
||||
show_exist: Show existing question.
|
||||
useful: Useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
answer_useful: It is useful
|
||||
answer_un_useful: It is not useful
|
||||
answers:
|
||||
|
@ -824,6 +1037,7 @@ ui:
|
|||
btns:
|
||||
confirm: Confirm
|
||||
cancel: Cancel
|
||||
edit: Edit
|
||||
save: Save
|
||||
delete: Delete
|
||||
login: Log in
|
||||
|
@ -836,6 +1050,10 @@ ui:
|
|||
skip: Skip
|
||||
discard_draft: Discard draft
|
||||
pinned: Pinned
|
||||
all: All
|
||||
question: Question
|
||||
answer: Answer
|
||||
comment: Comment
|
||||
search:
|
||||
title: Search Results
|
||||
keywords: Keywords
|
||||
|
@ -870,7 +1088,6 @@ ui:
|
|||
modal_confirm:
|
||||
title: Error...
|
||||
account_result:
|
||||
page_title: Welcome to {{site_name}}
|
||||
success: Your new account is confirmed; you will be redirected to the home page.
|
||||
link: Continue to homepage
|
||||
invalid: >-
|
||||
|
@ -931,8 +1148,7 @@ ui:
|
|||
accepted: Accepted
|
||||
answered: answered
|
||||
asked: asked
|
||||
upvote: upvote
|
||||
downvote: downvote
|
||||
downvoted: downvoted
|
||||
mod_short: Mod
|
||||
mod_long: Moderators
|
||||
x_reputation: reputation
|
||||
|
@ -994,6 +1210,7 @@ ui:
|
|||
admin_name:
|
||||
label: Name
|
||||
msg: Name cannot be empty.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
admin_password:
|
||||
label: Password
|
||||
text: >-
|
||||
|
@ -1051,8 +1268,19 @@ ui:
|
|||
seo: SEO
|
||||
customize: Customize
|
||||
themes: Themes
|
||||
css-html: CSS/HTML
|
||||
css_html: CSS/HTML
|
||||
login: Login
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
plugins:
|
||||
login: Login
|
||||
qrcode_login_tip: Please use {{ agentName }} to scan the QR code and log in.
|
||||
login_failed_email_tip: Login failed, please allow this app to access your email information before try again.
|
||||
oauth:
|
||||
connect: Connect with {{ auth_name }}
|
||||
remove: Remove {{ auth_name }}
|
||||
admin:
|
||||
admin_header:
|
||||
title: Admin
|
||||
|
@ -1095,6 +1323,7 @@ ui:
|
|||
pending: Pending
|
||||
completed: Completed
|
||||
flagged: Flagged
|
||||
flagged_type: Flagged {{ type }}
|
||||
created: Created
|
||||
action: Action
|
||||
review: Review
|
||||
|
@ -1122,7 +1351,7 @@ ui:
|
|||
closed_name: closed
|
||||
closed_desc: "A closed question can't answer, but still can edit, vote and comment."
|
||||
deleted_name: deleted
|
||||
deleted_desc: All reputation gained and lost will be restored.
|
||||
deleted_desc: This post will be deleted.
|
||||
btn_cancel: Cancel
|
||||
btn_submit: Submit
|
||||
btn_next: Next
|
||||
|
@ -1243,9 +1472,6 @@ ui:
|
|||
label: Timezone
|
||||
msg: Timezone cannot be empty.
|
||||
text: Choose a city in the same timezone as you.
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
|
@ -1355,22 +1581,77 @@ ui:
|
|||
footer:
|
||||
label: Footer
|
||||
text: This will insert before </html>.
|
||||
sidebar:
|
||||
label: Sidebar
|
||||
text: This will insert in sidebar.
|
||||
login:
|
||||
page_title: Login
|
||||
membership:
|
||||
title: Membership
|
||||
label: Allow new registrations
|
||||
text: Turn off to prevent anyone from creating a new account.
|
||||
email_registration:
|
||||
title: Email registration
|
||||
label: Allow email registration
|
||||
text: Turn off to prevent anyone creating new account through email.
|
||||
allowed_email_domains:
|
||||
title: Allowed email domains
|
||||
text: Email domains that users must register accounts with. One domain per line. Ignored when empty.
|
||||
private:
|
||||
title: Private
|
||||
label: Login required
|
||||
text: Only logged in users can access this community.
|
||||
installed_plugins:
|
||||
title: Installed Plugins
|
||||
filter:
|
||||
all: All
|
||||
active: Active
|
||||
inactive: Inactive
|
||||
outdated: Outdated
|
||||
plugins:
|
||||
label: Plugins
|
||||
text: Select an existing plugin.
|
||||
name: Name
|
||||
version: Version
|
||||
status: Status
|
||||
action: Action
|
||||
deactivate: Deactivate
|
||||
activate: Activate
|
||||
settings: Settings
|
||||
settings_users:
|
||||
title: Users
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar Base URL
|
||||
text: URL of the Gravatar provider’s API base. Ignored when empty.
|
||||
profile_editable:
|
||||
title: Profile Editable
|
||||
allow_update_display_name:
|
||||
label: Allow users to change their display name
|
||||
allow_update_username:
|
||||
label: Allow users to change their username
|
||||
allow_update_avatar:
|
||||
label: Allow users to change their profile image
|
||||
allow_update_bio:
|
||||
label: Allow users to change their about me
|
||||
allow_update_website:
|
||||
label: Allow users to change their website
|
||||
allow_update_location:
|
||||
label: Allow users to change their location
|
||||
privilege:
|
||||
title: Privileges
|
||||
level:
|
||||
label: Reputation required level
|
||||
text: Choose the reputation required for the privileges
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: cannot be empty
|
||||
invalid: is invalid
|
||||
btn_submit: Save
|
||||
not_found_props: "Required property {{ key }} not found."
|
||||
select: Select
|
||||
page_review:
|
||||
review: Review
|
||||
proposed: proposed
|
||||
|
|
351
i18n/sk_SK.yaml
351
i18n/sk_SK.yaml
|
@ -11,6 +11,8 @@ backend:
|
|||
other: Neoprávnené.
|
||||
database_error:
|
||||
other: Chyba dátového servera.
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
action:
|
||||
report:
|
||||
other: Flag
|
||||
|
@ -22,6 +24,8 @@ backend:
|
|||
other: Close
|
||||
reopen:
|
||||
other: Reopen
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
pin:
|
||||
other: Pin
|
||||
hide:
|
||||
|
@ -30,6 +34,8 @@ backend:
|
|||
other: Unpin
|
||||
show:
|
||||
other: List
|
||||
invite_someone_to_answer:
|
||||
other: Edit
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
|
@ -45,6 +51,60 @@ backend:
|
|||
other: Má plnú moc a prístup ku stránke.
|
||||
moderator:
|
||||
other: Má prístup ku všetkým príspevkom okrem nastavenia správcu.
|
||||
privilege:
|
||||
level_1:
|
||||
description:
|
||||
other: Level 1 (less reputation required for private team, group)
|
||||
level_2:
|
||||
description:
|
||||
other: Level 2 (low reputation required for startup community)
|
||||
level_3:
|
||||
description:
|
||||
other: Level 3 (high reputation required for mature community)
|
||||
rank_question_add_label:
|
||||
other: Ask question
|
||||
rank_answer_add_label:
|
||||
other: Write answer
|
||||
rank_comment_add_label:
|
||||
other: Write comment
|
||||
rank_report_add_label:
|
||||
other: Flag
|
||||
rank_comment_vote_up_label:
|
||||
other: Upvote comment
|
||||
rank_link_url_limit_label:
|
||||
other: Post more than 2 links at a time
|
||||
rank_question_vote_up_label:
|
||||
other: Upvote question
|
||||
rank_answer_vote_up_label:
|
||||
other: Upvote answer
|
||||
rank_question_vote_down_label:
|
||||
other: Downvote question
|
||||
rank_answer_vote_down_label:
|
||||
other: Downvote answer
|
||||
rank_invite_someone_to_answer_label:
|
||||
other: Invite someone to answer
|
||||
rank_tag_add_label:
|
||||
other: Create new tag
|
||||
rank_tag_edit_label:
|
||||
other: Edit tag description (need to review)
|
||||
rank_question_edit_label:
|
||||
other: Edit other's question (need to review)
|
||||
rank_answer_edit_label:
|
||||
other: Edit other's answer (need to review)
|
||||
rank_question_edit_without_review_label:
|
||||
other: Edit other's question without review
|
||||
rank_answer_edit_without_review_label:
|
||||
other: Edit other's answer without review
|
||||
rank_question_audit_label:
|
||||
other: Review question edits
|
||||
rank_answer_audit_label:
|
||||
other: Review answer edits
|
||||
rank_tag_audit_label:
|
||||
other: Review tag edits
|
||||
rank_tag_edit_without_review_label:
|
||||
other: Edit tag description without review
|
||||
rank_tag_synonym_label:
|
||||
other: Manage tag synonyms
|
||||
email:
|
||||
other: E-mail
|
||||
password:
|
||||
|
@ -52,6 +112,9 @@ backend:
|
|||
email_or_password_wrong_error:
|
||||
other: E-mail a heslo sa nezhodujú.
|
||||
error:
|
||||
password:
|
||||
space_invalid:
|
||||
other: Password cannot contain spaces.
|
||||
admin:
|
||||
cannot_update_their_password:
|
||||
other: Svoje heslo upraviť.
|
||||
|
@ -82,6 +145,8 @@ backend:
|
|||
other: E-mail by sa mal overiť.
|
||||
verify_url_expired:
|
||||
other: Platnosť overenej adresy URL e-mailu vypršala, pošlite e-mail znova.
|
||||
illegal_email_domain_error:
|
||||
other: Email is not allowed from that email domain. Please use another one.
|
||||
lang:
|
||||
not_found:
|
||||
other: Jazykový súbor sa nenašiel.
|
||||
|
@ -119,7 +184,9 @@ backend:
|
|||
fail_to_meet_the_condition:
|
||||
other: Poradie nespĺňa podmienku.
|
||||
vote_fail_to_meet_the_condition:
|
||||
other: Thanks for the feedback. You need at least {{ rank }} reputation to cast a vote.
|
||||
other: Thanks for the feedback. You need at least {{.Rank}} reputation to cast a vote.
|
||||
no_enough_rank_to_operate:
|
||||
other: You need at least {{.Rank}} reputation to do this.
|
||||
report:
|
||||
handle_failed:
|
||||
other: Spracovanie prehľadu zlyhalo.
|
||||
|
@ -154,6 +221,10 @@ backend:
|
|||
no_permission:
|
||||
other: Žiadne povolenie na revíziu.
|
||||
user:
|
||||
external_login_missing_user_id:
|
||||
other: The third-party platform does not provide a unique UserID, so you cannot login, please contact the website administrator.
|
||||
external_login_unbinding_forbidden:
|
||||
other: Please set a login password for your account before you remove this login.
|
||||
email_or_password_wrong:
|
||||
other:
|
||||
other: E-mail a heslo sa nezhodujú.
|
||||
|
@ -171,6 +242,10 @@ backend:
|
|||
other: Svoju rolu nemôžete zmeniť.
|
||||
not_allowed_registration:
|
||||
other: V súčasnosti nie je stránka otvorená na registráciu
|
||||
access_denied:
|
||||
other: Access denied
|
||||
page_access_denied:
|
||||
other: You do not have access to this page.
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Read Config zlyhal
|
||||
|
@ -185,37 +260,74 @@ backend:
|
|||
upload:
|
||||
unsupported_file_format:
|
||||
other: Nepodporovaný formát súboru.
|
||||
report:
|
||||
site_info:
|
||||
config_not_found:
|
||||
other: Site config not found.
|
||||
reason:
|
||||
spam:
|
||||
name:
|
||||
other: nevyžiadaná pošta
|
||||
other: spam
|
||||
desc:
|
||||
other: Tento príspevok je reklama alebo vandalizmus. Nie je to užitočné ani relevantné pre aktuálnu tému.
|
||||
rude:
|
||||
other: This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.
|
||||
rude_or_abusive:
|
||||
name:
|
||||
other: hrubý alebo urážlivý
|
||||
other: rude or abusive
|
||||
desc:
|
||||
other: Rozumný človek by považoval tento obsah za nevhodný na zdvorilý prejav.
|
||||
duplicate:
|
||||
other: A reasonable person would find this content inappropriate for respectful discourse.
|
||||
a_duplicate:
|
||||
name:
|
||||
other: duplikát
|
||||
other: a duplicate
|
||||
desc:
|
||||
other: Táto otázka už bola položená a už má odpoveď.
|
||||
not_answer:
|
||||
other: This question has been asked before and already has an answer.
|
||||
placeholder:
|
||||
other: Enter the existing question link
|
||||
not_a_answer:
|
||||
name:
|
||||
other: nie odpoveď
|
||||
other: not an answer
|
||||
desc:
|
||||
other: Toto bolo uverejnené ako odpoveď, ale nepokúša sa odpovedať na otázku. Možno by to mala byť úprava, komentár, iná otázka, alebo úplne vymazané.
|
||||
not_need:
|
||||
other: This was posted as an answer, but it does not attempt to answer the question. It should possibly be an edit, a comment, another question, or deleted altogether.
|
||||
no_longer_needed:
|
||||
name:
|
||||
other: už nie sú potrebné
|
||||
other: no longer needed
|
||||
desc:
|
||||
other: Tento komentár je zastaraný, konverzačný alebo nesúvisí s týmto príspevkom.
|
||||
other:
|
||||
other: This comment is outdated, conversational or not relevant to this post.
|
||||
something:
|
||||
name:
|
||||
other: niečo iné
|
||||
other: something else
|
||||
desc:
|
||||
other: Tento príspevok si vyžaduje pozornosť zamestnancov z iného dôvodu, ktorý nie je uvedený vyššie.
|
||||
other: This post requires staff attention for another reason not listed above.
|
||||
placeholder:
|
||||
other: Let us know specifically what you are concerned about
|
||||
community_specific:
|
||||
name:
|
||||
other: a community-specific reason
|
||||
desc:
|
||||
other: This question doesn’t meet a community guideline.
|
||||
not_clarity:
|
||||
name:
|
||||
other: needs details or clarity
|
||||
desc:
|
||||
other: This question currently includes multiple questions in one. It should focus on one problem only.
|
||||
looks_ok:
|
||||
name:
|
||||
other: looks ok
|
||||
desc:
|
||||
other: This post is good as-is and not low quality.
|
||||
needs_edit:
|
||||
name:
|
||||
other: needs edit, and I did it
|
||||
desc:
|
||||
other: Improve and correct problems with this post yourself.
|
||||
needs_close:
|
||||
name:
|
||||
other: needs close
|
||||
desc:
|
||||
other: A closed question can’t answer, but still can edit, vote and comment.
|
||||
needs_delete:
|
||||
name:
|
||||
other: needs delete
|
||||
desc:
|
||||
other: This post will be deleted.
|
||||
question:
|
||||
close:
|
||||
duplicate:
|
||||
|
@ -245,6 +357,8 @@ backend:
|
|||
other: zodpovedaný
|
||||
modified:
|
||||
other: upravený
|
||||
deleted_title:
|
||||
other: Deleted question
|
||||
notification:
|
||||
action:
|
||||
update_question:
|
||||
|
@ -271,6 +385,67 @@ backend:
|
|||
other: Vaša odpoveď bola odstránená
|
||||
your_comment_was_deleted:
|
||||
other: Váš komentár bol odstránený
|
||||
up_voted_question:
|
||||
other: upvoted question
|
||||
down_voted_question:
|
||||
other: downvoted question
|
||||
up_voted_answer:
|
||||
other: upvoted answer
|
||||
down_voted_answer:
|
||||
other: downvoted answer
|
||||
up_voted_comment:
|
||||
other: upvoted comment
|
||||
invited_you_to_answer:
|
||||
other: invited you to answer
|
||||
email_tpl:
|
||||
change_email:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new email address"
|
||||
body:
|
||||
other: "Confirm your new email address for {{.SiteName}} by clicking on the following link:<br><br>\n\n<a href='{{.ChangeEmailUrl}}' target='_blank'>{{.ChangeEmailUrl}}</a><br><br>\n\nIf you did not request this change, please ignore this email.\n"
|
||||
new_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} answered your question"
|
||||
body:
|
||||
other: "<strong><a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.AnswerSummary}}</blockquote><br>\n<a href='{{.AnswerUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
invited_you_to_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} invited you to answer"
|
||||
body:
|
||||
other: "<strong><a href='{{.InviteUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><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<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
new_comment:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} commented on your post"
|
||||
body:
|
||||
other: "<strong><a href='{{.CommentUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.CommentSummary}}</blockquote><br>\n<a href='{{.CommentUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
pass_reset:
|
||||
title:
|
||||
other: "[{{.SiteName }}] Password reset"
|
||||
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"
|
||||
register:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new account"
|
||||
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"
|
||||
test:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Test Email"
|
||||
body:
|
||||
other: "This is a test email."
|
||||
action_activity_type:
|
||||
upvote:
|
||||
other: upvote
|
||||
upvoted:
|
||||
other: upvoted
|
||||
downvote:
|
||||
other: downvote
|
||||
downvoted:
|
||||
other: downvoted
|
||||
accept:
|
||||
other: accept
|
||||
accepted:
|
||||
other: accepted
|
||||
#The following fields are used for interface presentation(Front-end)
|
||||
ui:
|
||||
how_to_format:
|
||||
|
@ -307,6 +482,7 @@ ui:
|
|||
upgrade: Answer Upgrade
|
||||
maintenance: Údržba webových stránok
|
||||
users: Užívatelia
|
||||
oauth_callback: Processing
|
||||
http_404: HTTP chyba 404
|
||||
http_50X: HTTP chyba 403
|
||||
http_403: HTTP Error 403
|
||||
|
@ -316,11 +492,18 @@ ui:
|
|||
achievement: Úspechy
|
||||
all_read: Označiť všetko ako prečítané
|
||||
show_more: Zobraziť viac
|
||||
someone: Someone
|
||||
inbox_type:
|
||||
all: All
|
||||
posts: Posts
|
||||
invites: Invites
|
||||
votes: Votes
|
||||
suspended:
|
||||
title: Váš účet bol pozastavený
|
||||
until_time: "Váš účet bol pozastavený do {{ time }}."
|
||||
forever: Tento používateľ bol navždy pozastavený.
|
||||
end: Nespĺňate pokyny pre komunitu.
|
||||
contact_us: Contact us
|
||||
editor:
|
||||
blockquote:
|
||||
text: Blockquote
|
||||
|
@ -527,7 +710,7 @@ ui:
|
|||
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
|
||||
tip_vote: It adds something useful to the post
|
||||
edit_answer:
|
||||
title: Uprav odpoveď
|
||||
default_reason: Uprav odpoveď
|
||||
|
@ -609,6 +792,8 @@ ui:
|
|||
logout: Odhlásiť sa
|
||||
admin: Správca
|
||||
review: Preskúmanie
|
||||
bookmark: Bookmarks
|
||||
moderation: Moderation
|
||||
search:
|
||||
placeholder: Vyhľadávanie
|
||||
footer:
|
||||
|
@ -633,7 +818,6 @@ ui:
|
|||
msg:
|
||||
empty: Nemôže byť prázdny.
|
||||
login:
|
||||
page_title: Vitajte na stránke {{site_name}}
|
||||
login_to_continue: Pre pokračovanie sa prihláste
|
||||
info_sign: Nemáte účet? <1>Sign up</1>
|
||||
info_login: Máte už účet? <1>Log in</1>
|
||||
|
@ -644,6 +828,7 @@ ui:
|
|||
msg:
|
||||
empty: Prihlasovacie meno nemôže byť prázdne.
|
||||
range: Prihlasovacie meno nesmie mať viac ako 30 znakov.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: E-mail
|
||||
msg:
|
||||
|
@ -663,7 +848,6 @@ ui:
|
|||
msg:
|
||||
empty: E-mail nemôže byť prázdny.
|
||||
change_email:
|
||||
page_title: Vitajte na stránke {{site_name}}
|
||||
btn_cancel: Zrušiť
|
||||
btn_update: Aktualizovať e-mailovú adresu
|
||||
send_success: >-
|
||||
|
@ -672,6 +856,17 @@ ui:
|
|||
label: Nový e-mail
|
||||
msg:
|
||||
empty: E-mail nemôže byť prázdny.
|
||||
oauth_bind_email:
|
||||
subtitle: Add a recovery email to your account.
|
||||
btn_update: Update email address
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
modal_title: Email already existes.
|
||||
modal_content: This email address already registered. Are you sure you want to connect to the existing account?
|
||||
modal_cancel: Change email
|
||||
modal_confirm: Connect to the existing account
|
||||
password_reset:
|
||||
page_title: Resetovanie hesla
|
||||
btn_name: Obnoviť heslo
|
||||
|
@ -690,6 +885,7 @@ ui:
|
|||
label: Potvrďte nové heslo
|
||||
settings:
|
||||
page_title: Nastavenia
|
||||
goto_modify: Go to Modify
|
||||
nav:
|
||||
profile: Profil
|
||||
notification: Oznámenia
|
||||
|
@ -711,7 +907,7 @@ ui:
|
|||
avatar:
|
||||
label: Profilová fotka
|
||||
gravatar: Gravatar
|
||||
gravatar_text: Obrázok môžete zmeniť na <1>gravatar.com</1>
|
||||
gravatar_text: You can change image on
|
||||
custom: Vlastný
|
||||
btn_refresh: Obnoviť
|
||||
custom_text: Môžete nahrať svoj obrázok.
|
||||
|
@ -738,8 +934,11 @@ ui:
|
|||
change_email_info: >-
|
||||
Na túto adresu sme poslali e-mail. Postupujte podľa pokynov na potvrdenie.
|
||||
email:
|
||||
label: E-mail
|
||||
msg: E-mail nemôže byť prázdny.
|
||||
label: New Email
|
||||
msg: New Email cannot be empty.
|
||||
pass:
|
||||
label: Current Password
|
||||
msg: Password cannot be empty.
|
||||
password_title: Heslo
|
||||
current_pass:
|
||||
label: Aktuálne heslo
|
||||
|
@ -756,6 +955,13 @@ ui:
|
|||
lang:
|
||||
label: Jazyk rozhrania
|
||||
text: Jazyk používateľského rozhrania. Zmení sa pri obnove stránky.
|
||||
my_logins:
|
||||
title: My Logins
|
||||
label: Log in or sign up on this site using these accounts.
|
||||
modal_title: Remove Login
|
||||
modal_content: Are you sure you want to remove this login from your account?
|
||||
modal_confirm_btn: Remove
|
||||
remove_success: Removed successfully
|
||||
toast:
|
||||
update: aktualizácia úspešna
|
||||
update_password: Heslo bolo úspešne zmenené.
|
||||
|
@ -766,6 +972,12 @@ ui:
|
|||
title: Súvisiace otázky
|
||||
btn: Pridať otázku
|
||||
answers: odpovede
|
||||
invite_to_answer:
|
||||
title: People asked
|
||||
desc: Invite people who you think might know the answer.
|
||||
invite: Invite to answer
|
||||
add: Add people
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
Asked: Opýtané
|
||||
|
@ -775,12 +987,13 @@ ui:
|
|||
Views: Videné
|
||||
Follow: Sledovať
|
||||
Following: Sledované
|
||||
follow_tip: Follow this question to receive notifications
|
||||
answered: zodpovedaný
|
||||
closed_in: Uzatvorené
|
||||
show_exist: Ukázať existujúcu otázku.
|
||||
useful: Useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
answer_useful: It is useful
|
||||
answer_un_useful: It is not useful
|
||||
answers:
|
||||
|
@ -824,6 +1037,7 @@ ui:
|
|||
btns:
|
||||
confirm: Potvrdiť
|
||||
cancel: Zrušiť
|
||||
edit: Edit
|
||||
save: Uložiť
|
||||
delete: Vymazať
|
||||
login: Prihlásiť sa
|
||||
|
@ -836,6 +1050,10 @@ ui:
|
|||
skip: Preskočiť
|
||||
discard_draft: Zahodiť koncept
|
||||
pinned: Pinned
|
||||
all: All
|
||||
question: Question
|
||||
answer: Answer
|
||||
comment: Comment
|
||||
search:
|
||||
title: Výsledky vyhľadávania
|
||||
keywords: Kľúčové slová
|
||||
|
@ -870,7 +1088,6 @@ ui:
|
|||
modal_confirm:
|
||||
title: Chyba...
|
||||
account_result:
|
||||
page_title: Vitajte na stránke {{site_name}}
|
||||
success: Váš nový účet je potvrdený; Budete presmerovaný na domovskú stránku.
|
||||
link: Pokračovať na domovskú stránku
|
||||
invalid: >-
|
||||
|
@ -931,8 +1148,7 @@ ui:
|
|||
accepted: Prijaté
|
||||
answered: zodpovedané
|
||||
asked: opýtané
|
||||
upvote: hlasovať za
|
||||
downvote: hlasovať proti
|
||||
downvoted: downvoted
|
||||
mod_short: mod
|
||||
mod_long: Moderátori
|
||||
x_reputation: reputácia
|
||||
|
@ -994,6 +1210,7 @@ ui:
|
|||
admin_name:
|
||||
label: Meno
|
||||
msg: Meno nemôže byť prázdne.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
admin_password:
|
||||
label: Heslo
|
||||
text: >-
|
||||
|
@ -1051,8 +1268,19 @@ ui:
|
|||
seo: SEO
|
||||
customize: Prispôsobiť
|
||||
themes: Témy
|
||||
css-html: CSS/HTML
|
||||
css_html: CSS/HTML
|
||||
login: Prihlásiť sa
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
plugins:
|
||||
login: Login
|
||||
qrcode_login_tip: Please use {{ agentName }} to scan the QR code and log in.
|
||||
login_failed_email_tip: Login failed, please allow this app to access your email information before try again.
|
||||
oauth:
|
||||
connect: Connect with {{ auth_name }}
|
||||
remove: Remove {{ auth_name }}
|
||||
admin:
|
||||
admin_header:
|
||||
title: Administrátor
|
||||
|
@ -1095,6 +1323,7 @@ ui:
|
|||
pending: Prebiehajúce
|
||||
completed: Dokončené
|
||||
flagged: Označené
|
||||
flagged_type: Flagged {{ type }}
|
||||
created: Vytvorené
|
||||
action: Akcia
|
||||
review: Preskúmanie
|
||||
|
@ -1122,7 +1351,7 @@ ui:
|
|||
closed_name: Uzavreté
|
||||
closed_desc: "Na uzavretú otázku nemôžete odpovedať, ale stále ju môžete upravovať, hlasovať a komentovať."
|
||||
deleted_name: Vymazané
|
||||
deleted_desc: Získaná a stratená reputácia sa obnoví.
|
||||
deleted_desc: This post will be deleted.
|
||||
btn_cancel: Zrušiť
|
||||
btn_submit: Odovdať
|
||||
btn_next: Ďalšie
|
||||
|
@ -1243,9 +1472,6 @@ ui:
|
|||
label: Časové pásmo
|
||||
msg: Časové pásmo nemôže byť prázdne.
|
||||
text: Vyberte si mesto v rovnakom časovom pásme ako vy.
|
||||
avatar:
|
||||
label: Predvolený avatar
|
||||
text: Pre používateľov bez vlastného avatara.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
|
@ -1355,22 +1581,77 @@ ui:
|
|||
footer:
|
||||
label: Päta
|
||||
text: Toto sa vloží pred </html>.
|
||||
sidebar:
|
||||
label: Sidebar
|
||||
text: This will insert in sidebar.
|
||||
login:
|
||||
page_title: Prihlásenie
|
||||
membership:
|
||||
title: Členstvo
|
||||
label: Povoliť nové registrácie
|
||||
text: Vypnúť, aby sa zabránilo vytvorenie nového účtu hocikým.
|
||||
email_registration:
|
||||
title: Email registration
|
||||
label: Allow email registration
|
||||
text: Turn off to prevent anyone creating new account through email.
|
||||
allowed_email_domains:
|
||||
title: Allowed email domains
|
||||
text: Email domains that users must register accounts with. One domain per line. Ignored when empty.
|
||||
private:
|
||||
title: Súkromné
|
||||
label: Vyžaduje sa prihlásenie
|
||||
text: Do tejto komunity majú prístup iba prihlásení používatelia
|
||||
installed_plugins:
|
||||
title: Installed Plugins
|
||||
filter:
|
||||
all: All
|
||||
active: Active
|
||||
inactive: Inactive
|
||||
outdated: Outdated
|
||||
plugins:
|
||||
label: Plugins
|
||||
text: Select an existing plugin.
|
||||
name: Name
|
||||
version: Version
|
||||
status: Status
|
||||
action: Action
|
||||
deactivate: Deactivate
|
||||
activate: Activate
|
||||
settings: Settings
|
||||
settings_users:
|
||||
title: Users
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar Base URL
|
||||
text: URL of the Gravatar provider’s API base. Ignored when empty.
|
||||
profile_editable:
|
||||
title: Profile Editable
|
||||
allow_update_display_name:
|
||||
label: Allow users to change their display name
|
||||
allow_update_username:
|
||||
label: Allow users to change their username
|
||||
allow_update_avatar:
|
||||
label: Allow users to change their profile image
|
||||
allow_update_bio:
|
||||
label: Allow users to change their about me
|
||||
allow_update_website:
|
||||
label: Allow users to change their website
|
||||
allow_update_location:
|
||||
label: Allow users to change their location
|
||||
privilege:
|
||||
title: Privileges
|
||||
level:
|
||||
label: Reputation required level
|
||||
text: Choose the reputation required for the privileges
|
||||
form:
|
||||
optional: (voliteľné)
|
||||
empty: nemôže byť prázdne
|
||||
invalid: je neplatné
|
||||
btn_submit: Uložiť
|
||||
not_found_props: "Požadovaná vlastnosť {{ key }} nebola nájdená."
|
||||
select: Select
|
||||
page_review:
|
||||
review: Preskúmanie
|
||||
proposed: navrhované
|
||||
|
|
329
i18n/tr_TR.yaml
329
i18n/tr_TR.yaml
|
@ -11,6 +11,8 @@ backend:
|
|||
other: İzin yok.
|
||||
database_error:
|
||||
other: Veri sunucu hatası.
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
action:
|
||||
report:
|
||||
other: Flag
|
||||
|
@ -22,6 +24,8 @@ backend:
|
|||
other: Close
|
||||
reopen:
|
||||
other: Reopen
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
pin:
|
||||
other: Pin
|
||||
hide:
|
||||
|
@ -30,6 +34,8 @@ backend:
|
|||
other: Unpin
|
||||
show:
|
||||
other: List
|
||||
invite_someone_to_answer:
|
||||
other: Edit
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
|
@ -45,6 +51,60 @@ backend:
|
|||
other: Have the full power to access the site.
|
||||
moderator:
|
||||
other: Has access to all posts except admin settings.
|
||||
privilege:
|
||||
level_1:
|
||||
description:
|
||||
other: Level 1 (less reputation required for private team, group)
|
||||
level_2:
|
||||
description:
|
||||
other: Level 2 (low reputation required for startup community)
|
||||
level_3:
|
||||
description:
|
||||
other: Level 3 (high reputation required for mature community)
|
||||
rank_question_add_label:
|
||||
other: Ask question
|
||||
rank_answer_add_label:
|
||||
other: Write answer
|
||||
rank_comment_add_label:
|
||||
other: Write comment
|
||||
rank_report_add_label:
|
||||
other: Flag
|
||||
rank_comment_vote_up_label:
|
||||
other: Upvote comment
|
||||
rank_link_url_limit_label:
|
||||
other: Post more than 2 links at a time
|
||||
rank_question_vote_up_label:
|
||||
other: Upvote question
|
||||
rank_answer_vote_up_label:
|
||||
other: Upvote answer
|
||||
rank_question_vote_down_label:
|
||||
other: Downvote question
|
||||
rank_answer_vote_down_label:
|
||||
other: Downvote answer
|
||||
rank_invite_someone_to_answer_label:
|
||||
other: Invite someone to answer
|
||||
rank_tag_add_label:
|
||||
other: Create new tag
|
||||
rank_tag_edit_label:
|
||||
other: Edit tag description (need to review)
|
||||
rank_question_edit_label:
|
||||
other: Edit other's question (need to review)
|
||||
rank_answer_edit_label:
|
||||
other: Edit other's answer (need to review)
|
||||
rank_question_edit_without_review_label:
|
||||
other: Edit other's question without review
|
||||
rank_answer_edit_without_review_label:
|
||||
other: Edit other's answer without review
|
||||
rank_question_audit_label:
|
||||
other: Review question edits
|
||||
rank_answer_audit_label:
|
||||
other: Review answer edits
|
||||
rank_tag_audit_label:
|
||||
other: Review tag edits
|
||||
rank_tag_edit_without_review_label:
|
||||
other: Edit tag description without review
|
||||
rank_tag_synonym_label:
|
||||
other: Manage tag synonyms
|
||||
email:
|
||||
other: E-Posta
|
||||
password:
|
||||
|
@ -52,6 +112,9 @@ backend:
|
|||
email_or_password_wrong_error:
|
||||
other: E-Posta ve parola eşleşmiyor.
|
||||
error:
|
||||
password:
|
||||
space_invalid:
|
||||
other: Password cannot contain spaces.
|
||||
admin:
|
||||
cannot_update_their_password:
|
||||
other: You cannot modify your password.
|
||||
|
@ -82,6 +145,8 @@ backend:
|
|||
other: E-Posta doğrulanmalı.
|
||||
verify_url_expired:
|
||||
other: Email verified URL has expired, please resend the email.
|
||||
illegal_email_domain_error:
|
||||
other: Email is not allowed from that email domain. Please use another one.
|
||||
lang:
|
||||
not_found:
|
||||
other: Dil dosyası bulunamadı.
|
||||
|
@ -119,7 +184,9 @@ backend:
|
|||
fail_to_meet_the_condition:
|
||||
other: Rank fail to meet the condition.
|
||||
vote_fail_to_meet_the_condition:
|
||||
other: Thanks for the feedback. You need at least {{ rank }} reputation to cast a vote.
|
||||
other: Thanks for the feedback. You need at least {{.Rank}} reputation to cast a vote.
|
||||
no_enough_rank_to_operate:
|
||||
other: You need at least {{.Rank}} reputation to do this.
|
||||
report:
|
||||
handle_failed:
|
||||
other: Rapor işlenemedi.
|
||||
|
@ -154,6 +221,10 @@ backend:
|
|||
no_permission:
|
||||
other: Revizyon izni yok.
|
||||
user:
|
||||
external_login_missing_user_id:
|
||||
other: The third-party platform does not provide a unique UserID, so you cannot login, please contact the website administrator.
|
||||
external_login_unbinding_forbidden:
|
||||
other: Please set a login password for your account before you remove this login.
|
||||
email_or_password_wrong:
|
||||
other:
|
||||
other: E-Posta ve parola eşleşmiyor.
|
||||
|
@ -171,6 +242,10 @@ backend:
|
|||
other: Kendi rolünüzü değiştiremezsiniz.
|
||||
not_allowed_registration:
|
||||
other: Site şu anda kayıt olmaya açık değil
|
||||
access_denied:
|
||||
other: Access denied
|
||||
page_access_denied:
|
||||
other: You do not have access to this page.
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Read config failed
|
||||
|
@ -185,37 +260,74 @@ backend:
|
|||
upload:
|
||||
unsupported_file_format:
|
||||
other: Desteklenmeyen dosya formatı.
|
||||
report:
|
||||
site_info:
|
||||
config_not_found:
|
||||
other: Site config not found.
|
||||
reason:
|
||||
spam:
|
||||
name:
|
||||
other: spam
|
||||
desc:
|
||||
other: This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.
|
||||
rude:
|
||||
rude_or_abusive:
|
||||
name:
|
||||
other: rude or abusive
|
||||
desc:
|
||||
other: A reasonable person would find this content inappropriate for respectful discourse.
|
||||
duplicate:
|
||||
a_duplicate:
|
||||
name:
|
||||
other: a duplicate
|
||||
desc:
|
||||
other: This question has been asked before and already has an answer.
|
||||
not_answer:
|
||||
placeholder:
|
||||
other: Enter the existing question link
|
||||
not_a_answer:
|
||||
name:
|
||||
other: cevap değil
|
||||
other: not an answer
|
||||
desc:
|
||||
other: This was posted as an answer, but it does not attempt to answer the question. It should possibly be an edit, a comment, another question, or deleted altogether.
|
||||
not_need:
|
||||
no_longer_needed:
|
||||
name:
|
||||
other: no longer needed
|
||||
desc:
|
||||
other: This comment is outdated, conversational or not relevant to this post.
|
||||
other:
|
||||
something:
|
||||
name:
|
||||
other: something else
|
||||
desc:
|
||||
other: This post requires staff attention for another reason not listed above.
|
||||
placeholder:
|
||||
other: Let us know specifically what you are concerned about
|
||||
community_specific:
|
||||
name:
|
||||
other: a community-specific reason
|
||||
desc:
|
||||
other: This question doesn’t meet a community guideline.
|
||||
not_clarity:
|
||||
name:
|
||||
other: needs details or clarity
|
||||
desc:
|
||||
other: This question currently includes multiple questions in one. It should focus on one problem only.
|
||||
looks_ok:
|
||||
name:
|
||||
other: looks ok
|
||||
desc:
|
||||
other: This post is good as-is and not low quality.
|
||||
needs_edit:
|
||||
name:
|
||||
other: needs edit, and I did it
|
||||
desc:
|
||||
other: Improve and correct problems with this post yourself.
|
||||
needs_close:
|
||||
name:
|
||||
other: needs close
|
||||
desc:
|
||||
other: A closed question can’t answer, but still can edit, vote and comment.
|
||||
needs_delete:
|
||||
name:
|
||||
other: needs delete
|
||||
desc:
|
||||
other: This post will be deleted.
|
||||
question:
|
||||
close:
|
||||
duplicate:
|
||||
|
@ -245,6 +357,8 @@ backend:
|
|||
other: answered
|
||||
modified:
|
||||
other: modified
|
||||
deleted_title:
|
||||
other: Deleted question
|
||||
notification:
|
||||
action:
|
||||
update_question:
|
||||
|
@ -271,6 +385,67 @@ backend:
|
|||
other: Cevabınız silindi
|
||||
your_comment_was_deleted:
|
||||
other: Yorumunuz silindi
|
||||
up_voted_question:
|
||||
other: upvoted question
|
||||
down_voted_question:
|
||||
other: downvoted question
|
||||
up_voted_answer:
|
||||
other: upvoted answer
|
||||
down_voted_answer:
|
||||
other: downvoted answer
|
||||
up_voted_comment:
|
||||
other: upvoted comment
|
||||
invited_you_to_answer:
|
||||
other: invited you to answer
|
||||
email_tpl:
|
||||
change_email:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new email address"
|
||||
body:
|
||||
other: "Confirm your new email address for {{.SiteName}} by clicking on the following link:<br><br>\n\n<a href='{{.ChangeEmailUrl}}' target='_blank'>{{.ChangeEmailUrl}}</a><br><br>\n\nIf you did not request this change, please ignore this email.\n"
|
||||
new_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} answered your question"
|
||||
body:
|
||||
other: "<strong><a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.AnswerSummary}}</blockquote><br>\n<a href='{{.AnswerUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
invited_you_to_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} invited you to answer"
|
||||
body:
|
||||
other: "<strong><a href='{{.InviteUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><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<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
new_comment:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} commented on your post"
|
||||
body:
|
||||
other: "<strong><a href='{{.CommentUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.CommentSummary}}</blockquote><br>\n<a href='{{.CommentUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
pass_reset:
|
||||
title:
|
||||
other: "[{{.SiteName }}] Password reset"
|
||||
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"
|
||||
register:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new account"
|
||||
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"
|
||||
test:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Test Email"
|
||||
body:
|
||||
other: "This is a test email."
|
||||
action_activity_type:
|
||||
upvote:
|
||||
other: upvote
|
||||
upvoted:
|
||||
other: upvoted
|
||||
downvote:
|
||||
other: downvote
|
||||
downvoted:
|
||||
other: downvoted
|
||||
accept:
|
||||
other: accept
|
||||
accepted:
|
||||
other: accepted
|
||||
#The following fields are used for interface presentation(Front-end)
|
||||
ui:
|
||||
how_to_format:
|
||||
|
@ -307,6 +482,7 @@ ui:
|
|||
upgrade: Answer Upgrade
|
||||
maintenance: Website Bakımı
|
||||
users: Kullanıcılar
|
||||
oauth_callback: Processing
|
||||
http_404: HTTP Error 404
|
||||
http_50X: HTTP Error 500
|
||||
http_403: HTTP Error 403
|
||||
|
@ -316,11 +492,18 @@ ui:
|
|||
achievement: Başarılar
|
||||
all_read: Tümünü okundu olarak işaretle
|
||||
show_more: Daha fazla göster
|
||||
someone: Someone
|
||||
inbox_type:
|
||||
all: All
|
||||
posts: Posts
|
||||
invites: Invites
|
||||
votes: Votes
|
||||
suspended:
|
||||
title: Hesabınız Askıya Alındı
|
||||
until_time: "Your account was suspended until {{ time }}."
|
||||
forever: This user was suspended forever.
|
||||
end: You don't meet a community guideline.
|
||||
contact_us: Contact us
|
||||
editor:
|
||||
blockquote:
|
||||
text: Alıntı
|
||||
|
@ -527,7 +710,7 @@ ui:
|
|||
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
|
||||
tip_vote: It adds something useful to the post
|
||||
edit_answer:
|
||||
title: Edit Answer
|
||||
default_reason: Edit answer
|
||||
|
@ -609,6 +792,8 @@ ui:
|
|||
logout: Log out
|
||||
admin: Admin
|
||||
review: Review
|
||||
bookmark: Bookmarks
|
||||
moderation: Moderation
|
||||
search:
|
||||
placeholder: Search
|
||||
footer:
|
||||
|
@ -633,7 +818,6 @@ ui:
|
|||
msg:
|
||||
empty: Cannot be empty.
|
||||
login:
|
||||
page_title: Welcome to {{site_name}}
|
||||
login_to_continue: Log in to continue
|
||||
info_sign: Don't have an account? <1>Sign up</1>
|
||||
info_login: Already have an account? <1>Log in</1>
|
||||
|
@ -644,6 +828,7 @@ ui:
|
|||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
|
@ -663,7 +848,6 @@ ui:
|
|||
msg:
|
||||
empty: Email cannot be empty.
|
||||
change_email:
|
||||
page_title: Welcome to {{site_name}}
|
||||
btn_cancel: Cancel
|
||||
btn_update: Update email address
|
||||
send_success: >-
|
||||
|
@ -672,6 +856,17 @@ ui:
|
|||
label: New Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
oauth_bind_email:
|
||||
subtitle: Add a recovery email to your account.
|
||||
btn_update: Update email address
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
modal_title: Email already existes.
|
||||
modal_content: This email address already registered. Are you sure you want to connect to the existing account?
|
||||
modal_cancel: Change email
|
||||
modal_confirm: Connect to the existing account
|
||||
password_reset:
|
||||
page_title: Password Reset
|
||||
btn_name: Reset my password
|
||||
|
@ -690,6 +885,7 @@ ui:
|
|||
label: Confirm New Password
|
||||
settings:
|
||||
page_title: Settings
|
||||
goto_modify: Go to Modify
|
||||
nav:
|
||||
profile: Profile
|
||||
notification: Notifications
|
||||
|
@ -711,7 +907,7 @@ ui:
|
|||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
gravatar_text: You can change image on <1>gravatar.com</1>
|
||||
gravatar_text: You can change image on
|
||||
custom: Custom
|
||||
btn_refresh: Refresh
|
||||
custom_text: You can upload your image.
|
||||
|
@ -738,8 +934,11 @@ ui:
|
|||
change_email_info: >-
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
label: New Email
|
||||
msg: New Email cannot be empty.
|
||||
pass:
|
||||
label: Current Password
|
||||
msg: Password cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
|
@ -756,6 +955,13 @@ ui:
|
|||
lang:
|
||||
label: Interface Language
|
||||
text: User interface language. It will change when you refresh the page.
|
||||
my_logins:
|
||||
title: My Logins
|
||||
label: Log in or sign up on this site using these accounts.
|
||||
modal_title: Remove Login
|
||||
modal_content: Are you sure you want to remove this login from your account?
|
||||
modal_confirm_btn: Remove
|
||||
remove_success: Removed successfully
|
||||
toast:
|
||||
update: update success
|
||||
update_password: Password changed successfully.
|
||||
|
@ -766,6 +972,12 @@ ui:
|
|||
title: Related Questions
|
||||
btn: Add question
|
||||
answers: answers
|
||||
invite_to_answer:
|
||||
title: People asked
|
||||
desc: Invite people who you think might know the answer.
|
||||
invite: Invite to answer
|
||||
add: Add people
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
Asked: Asked
|
||||
|
@ -775,12 +987,13 @@ ui:
|
|||
Views: Viewed
|
||||
Follow: Follow
|
||||
Following: Following
|
||||
follow_tip: Follow this question to receive notifications
|
||||
answered: answered
|
||||
closed_in: Closed in
|
||||
show_exist: Show existing question.
|
||||
useful: Useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
answer_useful: It is useful
|
||||
answer_un_useful: It is not useful
|
||||
answers:
|
||||
|
@ -824,6 +1037,7 @@ ui:
|
|||
btns:
|
||||
confirm: Confirm
|
||||
cancel: Cancel
|
||||
edit: Edit
|
||||
save: Save
|
||||
delete: Delete
|
||||
login: Log in
|
||||
|
@ -836,6 +1050,10 @@ ui:
|
|||
skip: Skip
|
||||
discard_draft: Discard draft
|
||||
pinned: Pinned
|
||||
all: All
|
||||
question: Question
|
||||
answer: Answer
|
||||
comment: Comment
|
||||
search:
|
||||
title: Search Results
|
||||
keywords: Keywords
|
||||
|
@ -870,7 +1088,6 @@ ui:
|
|||
modal_confirm:
|
||||
title: Error...
|
||||
account_result:
|
||||
page_title: Welcome to {{site_name}}
|
||||
success: Your new account is confirmed; you will be redirected to the home page.
|
||||
link: Continue to homepage
|
||||
invalid: >-
|
||||
|
@ -931,8 +1148,7 @@ ui:
|
|||
accepted: Accepted
|
||||
answered: answered
|
||||
asked: asked
|
||||
upvote: upvote
|
||||
downvote: downvote
|
||||
downvoted: downvoted
|
||||
mod_short: Mod
|
||||
mod_long: Moderators
|
||||
x_reputation: reputation
|
||||
|
@ -994,6 +1210,7 @@ ui:
|
|||
admin_name:
|
||||
label: Name
|
||||
msg: Name cannot be empty.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
admin_password:
|
||||
label: Password
|
||||
text: >-
|
||||
|
@ -1051,8 +1268,19 @@ ui:
|
|||
seo: SEO
|
||||
customize: Customize
|
||||
themes: Themes
|
||||
css-html: CSS/HTML
|
||||
css_html: CSS/HTML
|
||||
login: Login
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
plugins:
|
||||
login: Login
|
||||
qrcode_login_tip: Please use {{ agentName }} to scan the QR code and log in.
|
||||
login_failed_email_tip: Login failed, please allow this app to access your email information before try again.
|
||||
oauth:
|
||||
connect: Connect with {{ auth_name }}
|
||||
remove: Remove {{ auth_name }}
|
||||
admin:
|
||||
admin_header:
|
||||
title: Admin
|
||||
|
@ -1095,6 +1323,7 @@ ui:
|
|||
pending: Pending
|
||||
completed: Completed
|
||||
flagged: Flagged
|
||||
flagged_type: Flagged {{ type }}
|
||||
created: Created
|
||||
action: Action
|
||||
review: Review
|
||||
|
@ -1122,7 +1351,7 @@ ui:
|
|||
closed_name: closed
|
||||
closed_desc: "A closed question can't answer, but still can edit, vote and comment."
|
||||
deleted_name: deleted
|
||||
deleted_desc: All reputation gained and lost will be restored.
|
||||
deleted_desc: This post will be deleted.
|
||||
btn_cancel: Cancel
|
||||
btn_submit: Submit
|
||||
btn_next: Next
|
||||
|
@ -1243,9 +1472,6 @@ ui:
|
|||
label: Timezone
|
||||
msg: Timezone cannot be empty.
|
||||
text: Choose a city in the same timezone as you.
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
|
@ -1355,22 +1581,77 @@ ui:
|
|||
footer:
|
||||
label: Footer
|
||||
text: This will insert before </html>.
|
||||
sidebar:
|
||||
label: Sidebar
|
||||
text: This will insert in sidebar.
|
||||
login:
|
||||
page_title: Login
|
||||
membership:
|
||||
title: Membership
|
||||
label: Allow new registrations
|
||||
text: Turn off to prevent anyone from creating a new account.
|
||||
email_registration:
|
||||
title: Email registration
|
||||
label: Allow email registration
|
||||
text: Turn off to prevent anyone creating new account through email.
|
||||
allowed_email_domains:
|
||||
title: Allowed email domains
|
||||
text: Email domains that users must register accounts with. One domain per line. Ignored when empty.
|
||||
private:
|
||||
title: Private
|
||||
label: Login required
|
||||
text: Only logged in users can access this community.
|
||||
installed_plugins:
|
||||
title: Installed Plugins
|
||||
filter:
|
||||
all: All
|
||||
active: Active
|
||||
inactive: Inactive
|
||||
outdated: Outdated
|
||||
plugins:
|
||||
label: Plugins
|
||||
text: Select an existing plugin.
|
||||
name: Name
|
||||
version: Version
|
||||
status: Status
|
||||
action: Action
|
||||
deactivate: Deactivate
|
||||
activate: Activate
|
||||
settings: Settings
|
||||
settings_users:
|
||||
title: Users
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar Base URL
|
||||
text: URL of the Gravatar provider’s API base. Ignored when empty.
|
||||
profile_editable:
|
||||
title: Profile Editable
|
||||
allow_update_display_name:
|
||||
label: Allow users to change their display name
|
||||
allow_update_username:
|
||||
label: Allow users to change their username
|
||||
allow_update_avatar:
|
||||
label: Allow users to change their profile image
|
||||
allow_update_bio:
|
||||
label: Allow users to change their about me
|
||||
allow_update_website:
|
||||
label: Allow users to change their website
|
||||
allow_update_location:
|
||||
label: Allow users to change their location
|
||||
privilege:
|
||||
title: Privileges
|
||||
level:
|
||||
label: Reputation required level
|
||||
text: Choose the reputation required for the privileges
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: cannot be empty
|
||||
invalid: is invalid
|
||||
btn_submit: Save
|
||||
not_found_props: "Required property {{ key }} not found."
|
||||
select: Select
|
||||
page_review:
|
||||
review: Review
|
||||
proposed: proposed
|
||||
|
|
327
i18n/vi_VN.yaml
327
i18n/vi_VN.yaml
|
@ -11,6 +11,8 @@ backend:
|
|||
other: Unauthorized.
|
||||
database_error:
|
||||
other: Data server error.
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
action:
|
||||
report:
|
||||
other: Flag
|
||||
|
@ -22,6 +24,8 @@ backend:
|
|||
other: Close
|
||||
reopen:
|
||||
other: Reopen
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
pin:
|
||||
other: Pin
|
||||
hide:
|
||||
|
@ -30,6 +34,8 @@ backend:
|
|||
other: Unpin
|
||||
show:
|
||||
other: List
|
||||
invite_someone_to_answer:
|
||||
other: Edit
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
|
@ -45,6 +51,60 @@ backend:
|
|||
other: Have the full power to access the site.
|
||||
moderator:
|
||||
other: Has access to all posts except admin settings.
|
||||
privilege:
|
||||
level_1:
|
||||
description:
|
||||
other: Level 1 (less reputation required for private team, group)
|
||||
level_2:
|
||||
description:
|
||||
other: Level 2 (low reputation required for startup community)
|
||||
level_3:
|
||||
description:
|
||||
other: Level 3 (high reputation required for mature community)
|
||||
rank_question_add_label:
|
||||
other: Ask question
|
||||
rank_answer_add_label:
|
||||
other: Write answer
|
||||
rank_comment_add_label:
|
||||
other: Write comment
|
||||
rank_report_add_label:
|
||||
other: Flag
|
||||
rank_comment_vote_up_label:
|
||||
other: Upvote comment
|
||||
rank_link_url_limit_label:
|
||||
other: Post more than 2 links at a time
|
||||
rank_question_vote_up_label:
|
||||
other: Upvote question
|
||||
rank_answer_vote_up_label:
|
||||
other: Upvote answer
|
||||
rank_question_vote_down_label:
|
||||
other: Downvote question
|
||||
rank_answer_vote_down_label:
|
||||
other: Downvote answer
|
||||
rank_invite_someone_to_answer_label:
|
||||
other: Invite someone to answer
|
||||
rank_tag_add_label:
|
||||
other: Create new tag
|
||||
rank_tag_edit_label:
|
||||
other: Edit tag description (need to review)
|
||||
rank_question_edit_label:
|
||||
other: Edit other's question (need to review)
|
||||
rank_answer_edit_label:
|
||||
other: Edit other's answer (need to review)
|
||||
rank_question_edit_without_review_label:
|
||||
other: Edit other's question without review
|
||||
rank_answer_edit_without_review_label:
|
||||
other: Edit other's answer without review
|
||||
rank_question_audit_label:
|
||||
other: Review question edits
|
||||
rank_answer_audit_label:
|
||||
other: Review answer edits
|
||||
rank_tag_audit_label:
|
||||
other: Review tag edits
|
||||
rank_tag_edit_without_review_label:
|
||||
other: Edit tag description without review
|
||||
rank_tag_synonym_label:
|
||||
other: Manage tag synonyms
|
||||
email:
|
||||
other: Email
|
||||
password:
|
||||
|
@ -52,6 +112,9 @@ backend:
|
|||
email_or_password_wrong_error:
|
||||
other: Email and password do not match.
|
||||
error:
|
||||
password:
|
||||
space_invalid:
|
||||
other: Password cannot contain spaces.
|
||||
admin:
|
||||
cannot_update_their_password:
|
||||
other: You cannot modify your password.
|
||||
|
@ -82,6 +145,8 @@ backend:
|
|||
other: Email should be verified.
|
||||
verify_url_expired:
|
||||
other: Email verified URL has expired, please resend the email.
|
||||
illegal_email_domain_error:
|
||||
other: Email is not allowed from that email domain. Please use another one.
|
||||
lang:
|
||||
not_found:
|
||||
other: Language file not found.
|
||||
|
@ -119,7 +184,9 @@ backend:
|
|||
fail_to_meet_the_condition:
|
||||
other: Rank fail to meet the condition.
|
||||
vote_fail_to_meet_the_condition:
|
||||
other: Thanks for the feedback. You need at least {{ rank }} reputation to cast a vote.
|
||||
other: Thanks for the feedback. You need at least {{.Rank}} reputation to cast a vote.
|
||||
no_enough_rank_to_operate:
|
||||
other: You need at least {{.Rank}} reputation to do this.
|
||||
report:
|
||||
handle_failed:
|
||||
other: Report handle failed.
|
||||
|
@ -154,6 +221,10 @@ backend:
|
|||
no_permission:
|
||||
other: No permission to Revision.
|
||||
user:
|
||||
external_login_missing_user_id:
|
||||
other: The third-party platform does not provide a unique UserID, so you cannot login, please contact the website administrator.
|
||||
external_login_unbinding_forbidden:
|
||||
other: Please set a login password for your account before you remove this login.
|
||||
email_or_password_wrong:
|
||||
other:
|
||||
other: Email and password do not match.
|
||||
|
@ -171,6 +242,10 @@ backend:
|
|||
other: You cannot modify your role.
|
||||
not_allowed_registration:
|
||||
other: Currently the site is not open for registration
|
||||
access_denied:
|
||||
other: Access denied
|
||||
page_access_denied:
|
||||
other: You do not have access to this page.
|
||||
config:
|
||||
read_config_failed:
|
||||
other: Read config failed
|
||||
|
@ -185,37 +260,74 @@ backend:
|
|||
upload:
|
||||
unsupported_file_format:
|
||||
other: Unsupported file format.
|
||||
report:
|
||||
site_info:
|
||||
config_not_found:
|
||||
other: Site config not found.
|
||||
reason:
|
||||
spam:
|
||||
name:
|
||||
other: spam
|
||||
desc:
|
||||
other: This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.
|
||||
rude:
|
||||
rude_or_abusive:
|
||||
name:
|
||||
other: rude or abusive
|
||||
desc:
|
||||
other: A reasonable person would find this content inappropriate for respectful discourse.
|
||||
duplicate:
|
||||
a_duplicate:
|
||||
name:
|
||||
other: a duplicate
|
||||
desc:
|
||||
other: This question has been asked before and already has an answer.
|
||||
not_answer:
|
||||
placeholder:
|
||||
other: Enter the existing question link
|
||||
not_a_answer:
|
||||
name:
|
||||
other: not an answer
|
||||
desc:
|
||||
other: This was posted as an answer, but it does not attempt to answer the question. It should possibly be an edit, a comment, another question, or deleted altogether.
|
||||
not_need:
|
||||
no_longer_needed:
|
||||
name:
|
||||
other: no longer needed
|
||||
desc:
|
||||
other: This comment is outdated, conversational or not relevant to this post.
|
||||
other:
|
||||
something:
|
||||
name:
|
||||
other: something else
|
||||
desc:
|
||||
other: This post requires staff attention for another reason not listed above.
|
||||
placeholder:
|
||||
other: Let us know specifically what you are concerned about
|
||||
community_specific:
|
||||
name:
|
||||
other: a community-specific reason
|
||||
desc:
|
||||
other: This question doesn’t meet a community guideline.
|
||||
not_clarity:
|
||||
name:
|
||||
other: needs details or clarity
|
||||
desc:
|
||||
other: This question currently includes multiple questions in one. It should focus on one problem only.
|
||||
looks_ok:
|
||||
name:
|
||||
other: looks ok
|
||||
desc:
|
||||
other: This post is good as-is and not low quality.
|
||||
needs_edit:
|
||||
name:
|
||||
other: needs edit, and I did it
|
||||
desc:
|
||||
other: Improve and correct problems with this post yourself.
|
||||
needs_close:
|
||||
name:
|
||||
other: needs close
|
||||
desc:
|
||||
other: A closed question can’t answer, but still can edit, vote and comment.
|
||||
needs_delete:
|
||||
name:
|
||||
other: needs delete
|
||||
desc:
|
||||
other: This post will be deleted.
|
||||
question:
|
||||
close:
|
||||
duplicate:
|
||||
|
@ -245,6 +357,8 @@ backend:
|
|||
other: answered
|
||||
modified:
|
||||
other: modified
|
||||
deleted_title:
|
||||
other: Deleted question
|
||||
notification:
|
||||
action:
|
||||
update_question:
|
||||
|
@ -271,6 +385,67 @@ backend:
|
|||
other: Your answer has been deleted
|
||||
your_comment_was_deleted:
|
||||
other: Your comment has been deleted
|
||||
up_voted_question:
|
||||
other: upvoted question
|
||||
down_voted_question:
|
||||
other: downvoted question
|
||||
up_voted_answer:
|
||||
other: upvoted answer
|
||||
down_voted_answer:
|
||||
other: downvoted answer
|
||||
up_voted_comment:
|
||||
other: upvoted comment
|
||||
invited_you_to_answer:
|
||||
other: invited you to answer
|
||||
email_tpl:
|
||||
change_email:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new email address"
|
||||
body:
|
||||
other: "Confirm your new email address for {{.SiteName}} by clicking on the following link:<br><br>\n\n<a href='{{.ChangeEmailUrl}}' target='_blank'>{{.ChangeEmailUrl}}</a><br><br>\n\nIf you did not request this change, please ignore this email.\n"
|
||||
new_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} answered your question"
|
||||
body:
|
||||
other: "<strong><a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.AnswerSummary}}</blockquote><br>\n<a href='{{.AnswerUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
invited_you_to_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} invited you to answer"
|
||||
body:
|
||||
other: "<strong><a href='{{.InviteUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><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<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
new_comment:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} commented on your post"
|
||||
body:
|
||||
other: "<strong><a href='{{.CommentUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.CommentSummary}}</blockquote><br>\n<a href='{{.CommentUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
pass_reset:
|
||||
title:
|
||||
other: "[{{.SiteName }}] Password reset"
|
||||
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"
|
||||
register:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new account"
|
||||
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"
|
||||
test:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Test Email"
|
||||
body:
|
||||
other: "This is a test email."
|
||||
action_activity_type:
|
||||
upvote:
|
||||
other: upvote
|
||||
upvoted:
|
||||
other: upvoted
|
||||
downvote:
|
||||
other: downvote
|
||||
downvoted:
|
||||
other: downvoted
|
||||
accept:
|
||||
other: accept
|
||||
accepted:
|
||||
other: accepted
|
||||
#The following fields are used for interface presentation(Front-end)
|
||||
ui:
|
||||
how_to_format:
|
||||
|
@ -307,6 +482,7 @@ ui:
|
|||
upgrade: Answer Upgrade
|
||||
maintenance: Website Maintenance
|
||||
users: Users
|
||||
oauth_callback: Processing
|
||||
http_404: HTTP Error 404
|
||||
http_50X: HTTP Error 500
|
||||
http_403: HTTP Error 403
|
||||
|
@ -316,11 +492,18 @@ ui:
|
|||
achievement: Achievements
|
||||
all_read: Mark all as read
|
||||
show_more: Show more
|
||||
someone: Someone
|
||||
inbox_type:
|
||||
all: All
|
||||
posts: Posts
|
||||
invites: Invites
|
||||
votes: Votes
|
||||
suspended:
|
||||
title: Your Account has been Suspended
|
||||
until_time: "Your account was suspended until {{ time }}."
|
||||
forever: This user was suspended forever.
|
||||
end: You don't meet a community guideline.
|
||||
contact_us: Contact us
|
||||
editor:
|
||||
blockquote:
|
||||
text: Blockquote
|
||||
|
@ -527,7 +710,7 @@ ui:
|
|||
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
|
||||
tip_vote: It adds something useful to the post
|
||||
edit_answer:
|
||||
title: Edit Answer
|
||||
default_reason: Edit answer
|
||||
|
@ -609,6 +792,8 @@ ui:
|
|||
logout: Log out
|
||||
admin: Admin
|
||||
review: Review
|
||||
bookmark: Bookmarks
|
||||
moderation: Moderation
|
||||
search:
|
||||
placeholder: Search
|
||||
footer:
|
||||
|
@ -633,7 +818,6 @@ ui:
|
|||
msg:
|
||||
empty: Cannot be empty.
|
||||
login:
|
||||
page_title: Welcome to {{site_name}}
|
||||
login_to_continue: Log in to continue
|
||||
info_sign: Don't have an account? <1>Sign up</1>
|
||||
info_login: Already have an account? <1>Log in</1>
|
||||
|
@ -644,6 +828,7 @@ ui:
|
|||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
|
@ -663,7 +848,6 @@ ui:
|
|||
msg:
|
||||
empty: Email cannot be empty.
|
||||
change_email:
|
||||
page_title: Welcome to {{site_name}}
|
||||
btn_cancel: Cancel
|
||||
btn_update: Update email address
|
||||
send_success: >-
|
||||
|
@ -672,6 +856,17 @@ ui:
|
|||
label: New Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
oauth_bind_email:
|
||||
subtitle: Add a recovery email to your account.
|
||||
btn_update: Update email address
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
modal_title: Email already existes.
|
||||
modal_content: This email address already registered. Are you sure you want to connect to the existing account?
|
||||
modal_cancel: Change email
|
||||
modal_confirm: Connect to the existing account
|
||||
password_reset:
|
||||
page_title: Password Reset
|
||||
btn_name: Reset my password
|
||||
|
@ -690,6 +885,7 @@ ui:
|
|||
label: Confirm New Password
|
||||
settings:
|
||||
page_title: Settings
|
||||
goto_modify: Go to Modify
|
||||
nav:
|
||||
profile: Profile
|
||||
notification: Notifications
|
||||
|
@ -711,7 +907,7 @@ ui:
|
|||
avatar:
|
||||
label: Profile Image
|
||||
gravatar: Gravatar
|
||||
gravatar_text: You can change image on <1>gravatar.com</1>
|
||||
gravatar_text: You can change image on
|
||||
custom: Custom
|
||||
btn_refresh: Refresh
|
||||
custom_text: You can upload your image.
|
||||
|
@ -738,8 +934,11 @@ ui:
|
|||
change_email_info: >-
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
label: New Email
|
||||
msg: New Email cannot be empty.
|
||||
pass:
|
||||
label: Current Password
|
||||
msg: Password cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
|
@ -756,6 +955,13 @@ ui:
|
|||
lang:
|
||||
label: Interface Language
|
||||
text: User interface language. It will change when you refresh the page.
|
||||
my_logins:
|
||||
title: My Logins
|
||||
label: Log in or sign up on this site using these accounts.
|
||||
modal_title: Remove Login
|
||||
modal_content: Are you sure you want to remove this login from your account?
|
||||
modal_confirm_btn: Remove
|
||||
remove_success: Removed successfully
|
||||
toast:
|
||||
update: update success
|
||||
update_password: Password changed successfully.
|
||||
|
@ -766,6 +972,12 @@ ui:
|
|||
title: Related Questions
|
||||
btn: Add question
|
||||
answers: answers
|
||||
invite_to_answer:
|
||||
title: People asked
|
||||
desc: Invite people who you think might know the answer.
|
||||
invite: Invite to answer
|
||||
add: Add people
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
Asked: Asked
|
||||
|
@ -775,12 +987,13 @@ ui:
|
|||
Views: Viewed
|
||||
Follow: Follow
|
||||
Following: Following
|
||||
follow_tip: Follow this question to receive notifications
|
||||
answered: answered
|
||||
closed_in: Closed in
|
||||
show_exist: Show existing question.
|
||||
useful: Useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
answer_useful: It is useful
|
||||
answer_un_useful: It is not useful
|
||||
answers:
|
||||
|
@ -824,6 +1037,7 @@ ui:
|
|||
btns:
|
||||
confirm: Confirm
|
||||
cancel: Cancel
|
||||
edit: Edit
|
||||
save: Save
|
||||
delete: Delete
|
||||
login: Log in
|
||||
|
@ -836,6 +1050,10 @@ ui:
|
|||
skip: Skip
|
||||
discard_draft: Discard draft
|
||||
pinned: Pinned
|
||||
all: All
|
||||
question: Question
|
||||
answer: Answer
|
||||
comment: Comment
|
||||
search:
|
||||
title: Search Results
|
||||
keywords: Keywords
|
||||
|
@ -870,7 +1088,6 @@ ui:
|
|||
modal_confirm:
|
||||
title: Error...
|
||||
account_result:
|
||||
page_title: Welcome to {{site_name}}
|
||||
success: Your new account is confirmed; you will be redirected to the home page.
|
||||
link: Continue to homepage
|
||||
invalid: >-
|
||||
|
@ -931,8 +1148,7 @@ ui:
|
|||
accepted: Accepted
|
||||
answered: answered
|
||||
asked: asked
|
||||
upvote: upvote
|
||||
downvote: downvote
|
||||
downvoted: downvoted
|
||||
mod_short: Mod
|
||||
mod_long: Moderators
|
||||
x_reputation: reputation
|
||||
|
@ -994,6 +1210,7 @@ ui:
|
|||
admin_name:
|
||||
label: Name
|
||||
msg: Name cannot be empty.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
admin_password:
|
||||
label: Password
|
||||
text: >-
|
||||
|
@ -1051,8 +1268,19 @@ ui:
|
|||
seo: SEO
|
||||
customize: Customize
|
||||
themes: Themes
|
||||
css-html: CSS/HTML
|
||||
css_html: CSS/HTML
|
||||
login: Login
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
plugins:
|
||||
login: Login
|
||||
qrcode_login_tip: Please use {{ agentName }} to scan the QR code and log in.
|
||||
login_failed_email_tip: Login failed, please allow this app to access your email information before try again.
|
||||
oauth:
|
||||
connect: Connect with {{ auth_name }}
|
||||
remove: Remove {{ auth_name }}
|
||||
admin:
|
||||
admin_header:
|
||||
title: Admin
|
||||
|
@ -1095,6 +1323,7 @@ ui:
|
|||
pending: Pending
|
||||
completed: Completed
|
||||
flagged: Flagged
|
||||
flagged_type: Flagged {{ type }}
|
||||
created: Created
|
||||
action: Action
|
||||
review: Review
|
||||
|
@ -1122,7 +1351,7 @@ ui:
|
|||
closed_name: closed
|
||||
closed_desc: "A closed question can't answer, but still can edit, vote and comment."
|
||||
deleted_name: deleted
|
||||
deleted_desc: All reputation gained and lost will be restored.
|
||||
deleted_desc: This post will be deleted.
|
||||
btn_cancel: Cancel
|
||||
btn_submit: Submit
|
||||
btn_next: Next
|
||||
|
@ -1243,9 +1472,6 @@ ui:
|
|||
label: Timezone
|
||||
msg: Timezone cannot be empty.
|
||||
text: Choose a city in the same timezone as you.
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
|
@ -1355,22 +1581,77 @@ ui:
|
|||
footer:
|
||||
label: Footer
|
||||
text: This will insert before </html>.
|
||||
sidebar:
|
||||
label: Sidebar
|
||||
text: This will insert in sidebar.
|
||||
login:
|
||||
page_title: Login
|
||||
membership:
|
||||
title: Membership
|
||||
label: Allow new registrations
|
||||
text: Turn off to prevent anyone from creating a new account.
|
||||
email_registration:
|
||||
title: Email registration
|
||||
label: Allow email registration
|
||||
text: Turn off to prevent anyone creating new account through email.
|
||||
allowed_email_domains:
|
||||
title: Allowed email domains
|
||||
text: Email domains that users must register accounts with. One domain per line. Ignored when empty.
|
||||
private:
|
||||
title: Private
|
||||
label: Login required
|
||||
text: Only logged in users can access this community.
|
||||
installed_plugins:
|
||||
title: Installed Plugins
|
||||
filter:
|
||||
all: All
|
||||
active: Active
|
||||
inactive: Inactive
|
||||
outdated: Outdated
|
||||
plugins:
|
||||
label: Plugins
|
||||
text: Select an existing plugin.
|
||||
name: Name
|
||||
version: Version
|
||||
status: Status
|
||||
action: Action
|
||||
deactivate: Deactivate
|
||||
activate: Activate
|
||||
settings: Settings
|
||||
settings_users:
|
||||
title: Users
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar Base URL
|
||||
text: URL of the Gravatar provider’s API base. Ignored when empty.
|
||||
profile_editable:
|
||||
title: Profile Editable
|
||||
allow_update_display_name:
|
||||
label: Allow users to change their display name
|
||||
allow_update_username:
|
||||
label: Allow users to change their username
|
||||
allow_update_avatar:
|
||||
label: Allow users to change their profile image
|
||||
allow_update_bio:
|
||||
label: Allow users to change their about me
|
||||
allow_update_website:
|
||||
label: Allow users to change their website
|
||||
allow_update_location:
|
||||
label: Allow users to change their location
|
||||
privilege:
|
||||
title: Privileges
|
||||
level:
|
||||
label: Reputation required level
|
||||
text: Choose the reputation required for the privileges
|
||||
form:
|
||||
optional: (optional)
|
||||
empty: cannot be empty
|
||||
invalid: is invalid
|
||||
btn_submit: Save
|
||||
not_found_props: "Required property {{ key }} not found."
|
||||
select: Select
|
||||
page_review:
|
||||
review: Review
|
||||
proposed: proposed
|
||||
|
|
359
i18n/zh_CN.yaml
359
i18n/zh_CN.yaml
|
@ -11,6 +11,8 @@ backend:
|
|||
other: 未授权。
|
||||
database_error:
|
||||
other: 数据服务器错误。
|
||||
forbidden_error:
|
||||
other: 禁止访问。
|
||||
action:
|
||||
report:
|
||||
other: 举报
|
||||
|
@ -22,14 +24,18 @@ backend:
|
|||
other: 关闭
|
||||
reopen:
|
||||
other: 重新打开
|
||||
forbidden_error:
|
||||
other: 禁止访问。
|
||||
pin:
|
||||
other: 置顶
|
||||
hide:
|
||||
other: 隐藏
|
||||
other: 列表隐藏
|
||||
unpin:
|
||||
other: 取消置顶
|
||||
show:
|
||||
other: 显示
|
||||
other: 列表显示
|
||||
invite_someone_to_answer:
|
||||
other: 编辑
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
|
@ -44,62 +50,62 @@ backend:
|
|||
admin:
|
||||
other: 拥有管理网站的全部权限。
|
||||
moderator:
|
||||
other: 拥有访问除管理员设置以外的所有权限。
|
||||
other: 拥有访问除后台管理以外的所有权限。
|
||||
privilege:
|
||||
level_1:
|
||||
description:
|
||||
other: 等级1(创业社区所需的声望最低)
|
||||
other: 第 1 级 (私人团队、群组所需的声望)
|
||||
level_2:
|
||||
description:
|
||||
other: 等级2(创业社区所需的声望较低)
|
||||
other: 级别2(启动社区所需的低声望)
|
||||
level_3:
|
||||
description:
|
||||
other: 等级3(成熟社区所需的声望较高)
|
||||
other: 等级 3 (成熟社区所需的高声望)
|
||||
rank_question_add_label:
|
||||
other: 提问
|
||||
other: 提问s
|
||||
rank_answer_add_label:
|
||||
other: 回答问题
|
||||
other: 写入答案
|
||||
rank_comment_add_label:
|
||||
other: 发表评论
|
||||
rank_report_add_label:
|
||||
other: 举报
|
||||
rank_comment_vote_up_label:
|
||||
other: 评论点赞
|
||||
other: 点赞评论
|
||||
rank_link_url_limit_label:
|
||||
other: 一次发布超过两个链接
|
||||
other: 每次发布超过 2 个链接
|
||||
rank_question_vote_up_label:
|
||||
other: 问题点赞
|
||||
other: 点赞问题
|
||||
rank_answer_vote_up_label:
|
||||
other: 答案点赞
|
||||
other: 点赞答案
|
||||
rank_question_vote_down_label:
|
||||
other: 问题点踩
|
||||
other: 点踩问题
|
||||
rank_answer_vote_down_label:
|
||||
other: 答案点踩
|
||||
other: 点踩答案
|
||||
rank_invite_someone_to_answer_label:
|
||||
other: 邀请回答
|
||||
rank_tag_add_label:
|
||||
other: 创建新标签
|
||||
rank_tag_edit_label:
|
||||
other: 编辑标签描述(需要审核)
|
||||
other: 编辑标签描述(需要审核)
|
||||
rank_question_edit_label:
|
||||
other: 编辑他人提问(需要审核)
|
||||
other: 编辑对方的问题 (需要审查)
|
||||
rank_answer_edit_label:
|
||||
other: 编辑他人回答(需要审核)
|
||||
other: 编辑对方的答案 (需要审查)
|
||||
rank_question_edit_without_review_label:
|
||||
other: 编辑他人提问(无需审核)
|
||||
other: 不经评论编辑对方的问题
|
||||
rank_answer_edit_without_review_label:
|
||||
other: 编辑他人回答(无需审核)
|
||||
other: 编辑对方的答案而不需要审核
|
||||
rank_question_audit_label:
|
||||
other: 审核问题编辑
|
||||
other: 审查问题
|
||||
rank_answer_audit_label:
|
||||
other: 审核答案编辑
|
||||
other: 审核回答
|
||||
rank_tag_audit_label:
|
||||
other: 审核标签编辑
|
||||
rank_tag_edit_without_review_label:
|
||||
other: 编辑标签描述(无需审核)
|
||||
other: 编辑标签且无需审核
|
||||
rank_tag_synonym_label:
|
||||
other: 管理标签同义词
|
||||
e_mail:
|
||||
email:
|
||||
other: 邮箱
|
||||
password:
|
||||
other: 密码
|
||||
|
@ -108,12 +114,12 @@ backend:
|
|||
error:
|
||||
password:
|
||||
space_invalid:
|
||||
other: 密码不能包含空格。
|
||||
other: 密码不得含有空格
|
||||
admin:
|
||||
cannot_update_their_password:
|
||||
other: 您无法修改自己的密码。
|
||||
other: 你无法修改自己的密码。
|
||||
cannot_modify_self_status:
|
||||
other: 您无法修改自己的状态。
|
||||
other: 你无法修改自己的状态。
|
||||
email_or_password_wrong:
|
||||
other: 邮箱和密码不匹配。
|
||||
answer:
|
||||
|
@ -131,7 +137,7 @@ backend:
|
|||
not_found:
|
||||
other: 评论未找到。
|
||||
cannot_edit_after_deadline:
|
||||
other: 评论时间太长,无法修改。
|
||||
other: 评论时间太久,无法修改。
|
||||
email:
|
||||
duplicate:
|
||||
other: 邮箱已经存在。
|
||||
|
@ -140,102 +146,106 @@ backend:
|
|||
verify_url_expired:
|
||||
other: 邮箱验证的网址已过期,请重新发送邮件。
|
||||
illegal_email_domain_error:
|
||||
other: 该域名的邮箱无法使用。请尝试更换其他邮箱。
|
||||
other: 此邮箱不在允许注册的邮箱域中。请使用其他邮箱尝试。
|
||||
lang:
|
||||
not_found:
|
||||
other: 语言未找到
|
||||
other: 语言文件未找到。
|
||||
object:
|
||||
captcha_verification_failed:
|
||||
other: 验证码错误
|
||||
other: 验证码错误。
|
||||
disallow_follow:
|
||||
other: 你不能关注
|
||||
other: 你不能关注。
|
||||
disallow_vote:
|
||||
other: 你不能投票
|
||||
other: 你不能投票。
|
||||
disallow_vote_your_self:
|
||||
other: 你不能为自己的帖子投票!
|
||||
other: 你不能为自己的帖子投票。
|
||||
not_found:
|
||||
other: 对象未找到
|
||||
other: 对象未找到。
|
||||
verification_failed:
|
||||
other: 验证失败
|
||||
other: 验证失败。
|
||||
email_or_password_incorrect:
|
||||
other: 邮箱或密码不正确
|
||||
other: 邮箱和密码不匹配。
|
||||
old_password_verification_failed:
|
||||
other: 旧密码验证失败
|
||||
other: 旧密码验证失败。
|
||||
new_password_same_as_previous_setting:
|
||||
other: 新密码与之前的设置相同
|
||||
other: 新密码和旧密码相同。
|
||||
question:
|
||||
already_deleted:
|
||||
other: 此问题已被删除.
|
||||
other: 该帖子已被删除。
|
||||
not_found:
|
||||
other: 问题未找到
|
||||
other: 问题未找到。
|
||||
cannot_deleted:
|
||||
other: 无删除权限
|
||||
other: 没有删除权限。
|
||||
cannot_close:
|
||||
other: 无关闭权限
|
||||
other: 没有关闭权限。
|
||||
cannot_update:
|
||||
other: 无更新权限
|
||||
other: 没有更新权限。
|
||||
rank:
|
||||
fail_to_meet_the_condition:
|
||||
other: 级别不符合条件
|
||||
other: 声望值未达到要求。
|
||||
vote_fail_to_meet_the_condition:
|
||||
other: 感谢您的投票。您至少需要{{.Rank}}声望才能投票。
|
||||
no_enough_rank_to_operate:
|
||||
other: 您至少需要{{.Rank}}声望才能执行此操作。
|
||||
report:
|
||||
handle_failed:
|
||||
other: 报告处理失败
|
||||
other: 报告处理失败。
|
||||
not_found:
|
||||
other: 报告未找到
|
||||
other: 报告未找到。
|
||||
tag:
|
||||
already_exist:
|
||||
other: 标签已存在。
|
||||
not_found:
|
||||
other: 标签未找到
|
||||
other: 标签未找到。
|
||||
recommend_tag_not_found:
|
||||
other: 推荐标签不存在
|
||||
other: 推荐的标签不存在。
|
||||
recommend_tag_enter:
|
||||
other: 请输入至少一个必需的标签。
|
||||
other: 请选择至少一个必选标签。
|
||||
not_contain_synonym_tags:
|
||||
other: 不应包含同义词标签。
|
||||
cannot_update:
|
||||
other: 没有更新标签权限。
|
||||
other: 没有更新权限。
|
||||
is_used_cannot_delete:
|
||||
other: 您不能删除正在使用的标签
|
||||
other: 您不能删除这个正在使用的标签。
|
||||
cannot_set_synonym_as_itself:
|
||||
other: 您不能将当前标签的同义词设置为本身。
|
||||
other: 你不能将当前标签设为自己的同义词。
|
||||
smtp:
|
||||
config_from_name_cannot_be_email:
|
||||
other: 发件人名称不能是电子邮件地址。
|
||||
other: 发件人名称不能是邮箱地址。
|
||||
theme:
|
||||
not_found:
|
||||
other: 主题未找到
|
||||
other: 主题未找到。
|
||||
revision:
|
||||
review_underway:
|
||||
other: 目前无法编辑,有一个版本在审阅队列中。
|
||||
no_permission:
|
||||
other: 无权限修改
|
||||
user:
|
||||
external_login_missing_user_id:
|
||||
other: 第三方平台没有提供唯一的用户ID,所以您不能登录,请联系网站管理员。
|
||||
external_login_unbinding_forbidden:
|
||||
other: 请在您移除此登录之前为您的帐户设置登录密码。
|
||||
email_or_password_wrong:
|
||||
other:
|
||||
other: 邮箱或密码错误
|
||||
other: 邮箱和密码不匹配。
|
||||
not_found:
|
||||
other: 用户未找到
|
||||
other: 用户未找到。
|
||||
suspended:
|
||||
other: 用户已被暂停
|
||||
other: 用户已被封禁。
|
||||
username_invalid:
|
||||
other: 用户名无效
|
||||
other: 用户名无效。
|
||||
username_duplicate:
|
||||
other: 用户名已被使用
|
||||
other: 用户名已被使用。
|
||||
set_avatar:
|
||||
other: 头像设置错误
|
||||
other: 头像设置错误。
|
||||
cannot_update_your_role:
|
||||
other: 您不能修改自己的角色。
|
||||
other: 你不能修改自己的角色。
|
||||
not_allowed_registration:
|
||||
other: 目前该站点未开放注册
|
||||
other: 目前该站点未开放注册。
|
||||
access_denied:
|
||||
other: 访问被拒绝
|
||||
other: 拒绝访问
|
||||
page_access_denied:
|
||||
other: 你没有权限进入这个页面。
|
||||
other: 您没有权限访问此页面。
|
||||
config:
|
||||
read_config_failed:
|
||||
other: 读取配置失败
|
||||
|
@ -250,12 +260,15 @@ backend:
|
|||
upload:
|
||||
unsupported_file_format:
|
||||
other: 不支持的文件格式。
|
||||
site_info:
|
||||
config_not_found:
|
||||
other: 未找到网站的该配置信息。
|
||||
reason:
|
||||
spam:
|
||||
name:
|
||||
other: 垃圾信息
|
||||
desc:
|
||||
other: 这个帖子是一个广告,或是破坏性行为。它对当前的主题没有用处,也不相关。
|
||||
other: 这个帖子是一个广告,或是破坏性行为。它对当前的主题无帮助或无关。
|
||||
rude_or_abusive:
|
||||
name:
|
||||
other: 粗鲁或辱骂的
|
||||
|
@ -265,46 +278,46 @@ backend:
|
|||
name:
|
||||
other: 重复信息
|
||||
desc:
|
||||
other: 此问题以前就有人问过,而且已经有了答案。
|
||||
other: 该问题有人问过,而且已经有了答案。
|
||||
placeholder:
|
||||
other: 请输入重复的问题的网址
|
||||
other: 输入已有的问题链接
|
||||
not_a_answer:
|
||||
name:
|
||||
other: 不是答案
|
||||
desc:
|
||||
other: 此帖子是作为一个答案发布的,但它并没有试图回答这个问题。总之,它可能应该是个编辑,评论,另一个问题或者被删除。
|
||||
other: 该帖是作为答案发布的,但它并没有试图回答这个问题。总之,它可能应该是个编辑、评论、另一个问题或需要被删除。
|
||||
no_longer_needed:
|
||||
name:
|
||||
other: 不再需要
|
||||
desc:
|
||||
other: 此评论已过时,对话或与此帖子无关。
|
||||
other: 该评论已过时,对话性质或与此帖子无关。
|
||||
something:
|
||||
name:
|
||||
other: 其他原因
|
||||
desc:
|
||||
other: 此帖子需要工作人员关注,因为是上述所列以外的其他理由。
|
||||
other: 此帖子需要工作人员注意,因为是上述所列以外的其他理由。
|
||||
placeholder:
|
||||
other: 让我们具体了解你所关注的内容
|
||||
other: 让我们具体知道你关心的什么
|
||||
community_specific:
|
||||
name:
|
||||
other: 特定社区原因
|
||||
other: 社区特定原因
|
||||
desc:
|
||||
other: 这个问题不符合社区准则。
|
||||
other: 该问题不符合社区准则。
|
||||
not_clarity:
|
||||
name:
|
||||
other: 需要细节或澄清
|
||||
desc:
|
||||
other: 此问题目前包含多个问题。它应该只关注一个问题。
|
||||
other: 该问题目前涵盖多个问题。它应该侧重在一个问题上。
|
||||
looks_ok:
|
||||
name:
|
||||
other: 看起来不错
|
||||
other: 看起来还好
|
||||
desc:
|
||||
other: 这篇文章很好,不是低质量的。
|
||||
other: 这个帖子是好的,不是低质量。
|
||||
needs_edit:
|
||||
name:
|
||||
other: 需要编辑,我已经编辑了
|
||||
other: 需要编辑,我已做了修改。
|
||||
desc:
|
||||
other: 自己改善和纠正这篇文章中的问题。
|
||||
other: 改进和纠正你自己帖子中的问题。
|
||||
needs_close:
|
||||
name:
|
||||
other: 需要关闭
|
||||
|
@ -314,7 +327,7 @@ backend:
|
|||
name:
|
||||
other: 需要删除
|
||||
desc:
|
||||
other: 所有获得和失去的声望都将被恢复。
|
||||
other: 该帖子将被删除。
|
||||
question:
|
||||
close:
|
||||
duplicate:
|
||||
|
@ -326,17 +339,17 @@ backend:
|
|||
name:
|
||||
other: 社区特定原因
|
||||
desc:
|
||||
other: 此问题不符合社区准则。
|
||||
other: 该问题不符合社区准则。
|
||||
multiple:
|
||||
name:
|
||||
other: 需要细节或澄清
|
||||
desc:
|
||||
other: 此问题目前涵盖多个问题。它应该只集中在一个问题上。
|
||||
other: 该问题目前涵盖多个问题。它应该只集中在一个问题上。
|
||||
other:
|
||||
name:
|
||||
other: 其他原因
|
||||
desc:
|
||||
other: 这个帖子需要上面没有列出的另一个原因。
|
||||
other: 该帖子存在上面没有列出的另一个原因。
|
||||
operation_type:
|
||||
asked:
|
||||
other: 提问于
|
||||
|
@ -345,7 +358,7 @@ backend:
|
|||
modified:
|
||||
other: 修改于
|
||||
deleted_title:
|
||||
other: 问题已被删除
|
||||
other: 删除的问题
|
||||
notification:
|
||||
action:
|
||||
update_question:
|
||||
|
@ -355,7 +368,7 @@ backend:
|
|||
update_answer:
|
||||
other: 更新了答案
|
||||
accept_answer:
|
||||
other: 已接受的回答
|
||||
other: 采纳了答案
|
||||
comment_question:
|
||||
other: 评论了问题
|
||||
comment_answer:
|
||||
|
@ -373,48 +386,48 @@ backend:
|
|||
your_comment_was_deleted:
|
||||
other: 你的评论已被删除
|
||||
up_voted_question:
|
||||
other: 赞了问题
|
||||
other: 点赞问题
|
||||
down_voted_question:
|
||||
other: 踩了问题
|
||||
other: 点踩问题
|
||||
up_voted_answer:
|
||||
other: 赞了答案
|
||||
other: 点赞答案
|
||||
down_voted_answer:
|
||||
other: 踩了答案
|
||||
other: 点踩回答
|
||||
up_voted_comment:
|
||||
other: 赞了评论
|
||||
other: 点赞评论
|
||||
invited_you_to_answer:
|
||||
other: 邀请你回答问题
|
||||
other: 邀请你回答
|
||||
email_tpl:
|
||||
change_email:
|
||||
title:
|
||||
other: "[{{.SiteName}}] 确认您的新电子邮件地址"
|
||||
other: "[{{.SiteName}}] 确认你的新邮箱地址"
|
||||
body:
|
||||
other: "请点击以下链接确认您在 {{.SiteName}} 上的新电子邮件地址:<br><br>\n\n<a href='{{.ChangeEmailUrl}}' target='_blank'>{{.ChangeEmailUrl}}</a><br><br>\n\n如果您没有请求此更改,请忽略此电子邮件。\n"
|
||||
other: "请点击以下链接确认你在 {{.SiteName}} 上的新邮箱地址:<br><br>\n\n<a href='{{.ChangeEmailUrl}}' target='_blank'>{{.ChangeEmailUrl}}</a><br><br>\n\n如果你没有请求此更改,请忽略此邮件。\n\n"
|
||||
new_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} 回答了您的问题"
|
||||
body:
|
||||
other: "<strong><a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.AnswerSummary}}</blockquote><br>\n<a href='{{.AnswerUrl}}'>在 {{.SiteName}} 上查看</a><br><br>\n\n<small>您会收到此邮件是因为您开启了订阅。<a href='{{.UnsubscribeUrl}}'>取消订阅</a></small>"
|
||||
other: "<strong><a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\\n\\n<small>{{.DisplayName}}:</small><br>\\n<blockquote>{{.AnswerSummary}}</blockquote><br>\\n<a href='{{.AnswerUrl}}'>在 {{.SiteName}} 上查看</a><br><br>\\n\\n<small>您会收到此邮件是因为您开启了订阅。<a href='{{.UnsubscribeUrl}}'>取消订阅</a></small>"
|
||||
invited_you_to_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} 邀请您回答问题"
|
||||
body:
|
||||
other: "<strong><a href='{{.InviteUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>我想你可能知道答案。</blockquote><br>\n<a href='{{.InviteUrl}}'>在 {{.SiteName}} 上查看</a><br><br>\n\n<small>您会收到此邮件是因为您开启了订阅. <a href='{{.UnsubscribeUrl}}'>取消订阅</a></small>"
|
||||
other: "<strong><a href='{{.InviteUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\\n\\n<small>{{.DisplayName}}:</small><br>\\n<blockquote>我想你可能知道答案。</blockquote><br>\\n<a href='{{.InviteUrl}}'>在 {{.SiteName}} 上查看</a><br><br>\\n\\n<small>您会收到此邮件是因为您开启了订阅. <a href='{{.UnsubscribeUrl}}'>取消订阅</a></small>"
|
||||
new_comment:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} 评论了您的帖子"
|
||||
body:
|
||||
other: "<strong><a href='{{.CommentUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.CommentSummary}}</blockquote><br>\n<a href='{{.CommentUrl}}'>在 {{.SiteName}} 上查看</a><br><br>\n\n<small>您会收到此邮件是因为您开启了订阅。<a href='{{.UnsubscribeUrl}}'>取消订阅</a></small>"
|
||||
other: "<strong><a href='{{.CommentUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\\n\\n<small>{{.DisplayName}}:</small><br>\\n<blockquote>{{.CommentSummary}}</blockquote><br>\\n<a href='{{.CommentUrl}}'>在 {{.SiteName}} 上查看</a><br><br>\\n\\n<small>您会收到此邮件是因为您开启了订阅。<a href='{{.UnsubscribeUrl}}'>取消订阅</a></small>"
|
||||
pass_reset:
|
||||
title:
|
||||
other: "[{{.SiteName }}] 重置密码"
|
||||
body:
|
||||
other: "有人要求在 [{{.SiteName}}] 上重置您的密码。<br><br>\n\n如果这不是您的操作,请安心忽略此电子邮件。<br><br>\n\n请点击以下链接选择一个新密码:<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>"
|
||||
register:
|
||||
title:
|
||||
other: "[{{.SiteName}}] 确认您的新账户"
|
||||
body:
|
||||
other: "欢迎加入 {{.SiteName}}<br><br>\n\n请点击以下链接确认并激活您的新账户:<br>\n<a href='{{.RegisterUrl}}' target='_blank'>{{.RegisterUrl}}</a><br><br>\n\n如果上面的链接不能点击,请将其复制并粘贴到您的浏览器地址栏中。\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}}] 测试邮件"
|
||||
|
@ -424,21 +437,21 @@ backend:
|
|||
upvote:
|
||||
other: 点赞
|
||||
upvoted:
|
||||
other: 被赞
|
||||
other: 点赞
|
||||
downvote:
|
||||
other: 点踩
|
||||
downvoted:
|
||||
other: 被踩
|
||||
other: 已踩
|
||||
accept:
|
||||
other: 采纳
|
||||
accepted:
|
||||
other: 被采纳
|
||||
other: 已采纳
|
||||
#The following fields are used for interface presentation(Front-end)
|
||||
ui:
|
||||
how_to_format:
|
||||
title: 如何设定文本格式
|
||||
title: 如何排版
|
||||
desc: >-
|
||||
<ul class="mb-0"><li><p class="mb-2">添加链接:</p><pre class="mb-2"><code><https://url.com><br/><br/>[标题](https://url.com)</code></pre></li><li><p class="mb-2">段落之间使用空行分隔</p></li><li><p class="mb-2"><em>_斜体_</em> 或者 **<strong>粗体</strong>**</p></li><li><p class="mb-2">使用 4 个空格缩进代码</p></li><li><p class="mb-2">在行首添加<code>></code>表示引用</p></li><li><p class="mb-2">反引号进行转义 <code>`像 _这样_`</code></p></li><li><p class="mb-2">使用<code>```</code>创建代码块</p><pre class="mb-0"><code>```<br/>// 这是代码<br/>```</code></pre></li></ul>
|
||||
<ul class="mb-0"><li><p class="mb-2">添加链接</p><pre class="mb-2"><code><https://url.com><br/><br/>[标题](https://url.com)</code></pre></li><li><p class="mb-2">段落之间使用空行分隔</p></li><li><p class="mb-2"><em>_斜体_</em> 或者 **<strong>粗体</strong>**</p></li><li><p class="mb-2">使用 4 个空格缩进代码</p></li><li><p class="mb-2">在行首添加 <code>></code> 表示引用</p></li><li><p class="mb-2">反引号进行转义 <code>`像 _这样_`</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: 下一页
|
||||
|
@ -447,7 +460,7 @@ ui:
|
|||
questions: 问题
|
||||
tag: 标签
|
||||
tags: 标签
|
||||
tag_wiki: 标签 wiki
|
||||
tag_wiki: 标记维基
|
||||
create_tag: 创建标签
|
||||
edit_tag: 编辑标签
|
||||
ask_a_question: 提问题
|
||||
|
@ -455,20 +468,21 @@ ui:
|
|||
edit_answer: 编辑回答
|
||||
search: 搜索
|
||||
posts_containing: 包含
|
||||
settings: 设定
|
||||
settings: 设置
|
||||
notifications: 通知
|
||||
login: 登录
|
||||
sign_up: 注册
|
||||
account_recovery: 账号恢复
|
||||
account_activation: 账号激活
|
||||
confirm_email: 确认电子邮件
|
||||
account_suspended: 账号已封禁
|
||||
account_suspended: 账号已被封禁
|
||||
admin: 后台管理
|
||||
change_email: 修改邮箱
|
||||
install: Answer 安装
|
||||
upgrade: Answer 升级
|
||||
maintenance: 网站维护
|
||||
users: 用户
|
||||
oauth_callback: 处理中
|
||||
http_404: HTTP 错误 404
|
||||
http_50X: HTTP 错误 500
|
||||
http_403: HTTP 错误 403
|
||||
|
@ -479,11 +493,17 @@ ui:
|
|||
all_read: 全部标记为已读
|
||||
show_more: 显示更多
|
||||
someone: 有人
|
||||
inbox_type:
|
||||
all: 全部
|
||||
posts: 帖子
|
||||
invites: 邀请
|
||||
votes: 投票
|
||||
suspended:
|
||||
title: 账号已封禁
|
||||
until_time: "你的账号被封禁至{{ time }}。"
|
||||
title: 你的账号账号已被封禁
|
||||
until_time: "你的账号被封禁直到 {{ time }}。"
|
||||
forever: 你的账号已被永久封禁。
|
||||
end: 违反了我们的社区准则。
|
||||
contact_us: 联系我们
|
||||
editor:
|
||||
blockquote:
|
||||
text: 引用
|
||||
|
@ -772,6 +792,8 @@ ui:
|
|||
logout: 退出登录
|
||||
admin: 后台管理
|
||||
review: 审查
|
||||
bookmark: 收藏夹
|
||||
moderation: 管理
|
||||
search:
|
||||
placeholder: 搜索
|
||||
footer:
|
||||
|
@ -796,7 +818,6 @@ ui:
|
|||
msg:
|
||||
empty: 不能为空
|
||||
login:
|
||||
page_title: 欢迎来到 {{site_name}}
|
||||
login_to_continue: 登录以继续
|
||||
info_sign: 没有账户?<1>注册</1>
|
||||
info_login: 已经有一个账户?<1>登录</1>
|
||||
|
@ -807,6 +828,7 @@ ui:
|
|||
msg:
|
||||
empty: 昵称不能为空
|
||||
range: 昵称最多 30 个字符
|
||||
character: '只能由 "a-z", "0-9", " - . _" 组成'
|
||||
email:
|
||||
label: 邮箱
|
||||
msg:
|
||||
|
@ -826,7 +848,6 @@ ui:
|
|||
msg:
|
||||
empty: 邮箱不能为空
|
||||
change_email:
|
||||
page_title: 欢迎来到 {{site_name}}
|
||||
btn_cancel: 取消
|
||||
btn_update: 更新电子邮件地址
|
||||
send_success: >-
|
||||
|
@ -835,6 +856,17 @@ ui:
|
|||
label: 新邮箱
|
||||
msg:
|
||||
empty: 邮箱不能为空
|
||||
oauth_bind_email:
|
||||
subtitle: 向你的账户添加恢复邮件地址。
|
||||
btn_update: 更新电子邮件地址
|
||||
email:
|
||||
label: 邮箱
|
||||
msg:
|
||||
empty: 邮箱不能为空。
|
||||
modal_title: 邮箱已经存在。
|
||||
modal_content: 此电子邮件地址已经注册。你确定要连接到已有账户吗?
|
||||
modal_cancel: 更改邮箱
|
||||
modal_confirm: 连接到已有账户
|
||||
password_reset:
|
||||
page_title: 密码重置
|
||||
btn_name: 重置我的密码
|
||||
|
@ -875,7 +907,7 @@ ui:
|
|||
avatar:
|
||||
label: 头像
|
||||
gravatar: Gravatar
|
||||
gravatar_text: 您可以在 <1>gravatar.com</1> 更改图像
|
||||
gravatar_text: 你可以更改图像在
|
||||
custom: 自定义
|
||||
btn_refresh: 刷新
|
||||
custom_text: 您可以上传您的图片。
|
||||
|
@ -902,8 +934,11 @@ ui:
|
|||
change_email_info: >-
|
||||
邮件已发送。请根据指引完成验证。
|
||||
email:
|
||||
label: 邮箱
|
||||
msg: 邮箱不能为空
|
||||
label: 新邮箱
|
||||
msg: 新邮箱不能为空。
|
||||
pass:
|
||||
label: 当前密码
|
||||
msg: 密码不能为空。
|
||||
password_title: 密码
|
||||
current_pass:
|
||||
label: 当前密码
|
||||
|
@ -920,6 +955,13 @@ ui:
|
|||
lang:
|
||||
label: 界面语言
|
||||
text: 设置用户界面语言,在刷新页面后生效。
|
||||
my_logins:
|
||||
title: 我的登录
|
||||
label: 使用这些账户登录或注册本网站。
|
||||
modal_title: 移除登录
|
||||
modal_content: 你确定要从账户里移除该登录?
|
||||
modal_confirm_btn: 移除
|
||||
remove_success: 移除成功
|
||||
toast:
|
||||
update: 更新成功
|
||||
update_password: 更改密码成功。
|
||||
|
@ -930,6 +972,12 @@ ui:
|
|||
title: 相关问题
|
||||
btn: 我要提问
|
||||
answers: 个回答
|
||||
invite_to_answer:
|
||||
title: 受邀人
|
||||
desc: 邀请你认为可能知道答案的人。
|
||||
invite: 邀请回答
|
||||
add: 添加人员
|
||||
search: 搜索人员
|
||||
question_detail:
|
||||
action: 操作
|
||||
Asked: 提问于
|
||||
|
@ -939,12 +987,13 @@ ui:
|
|||
Views: 阅读次数
|
||||
Follow: 关注此问题
|
||||
Following: 已关注
|
||||
follow_tip: 关注此问题以接收通知
|
||||
answered: 回答于
|
||||
closed_in: 关闭于
|
||||
show_exist: 查看相关问题。
|
||||
useful: 有用的
|
||||
question_useful: 这是有用和清楚的
|
||||
question_un_useful: 它不明确或没有用
|
||||
question_useful: 它是有用和明确的
|
||||
question_un_useful: 它不明确或没用的
|
||||
answer_useful: 这是有用的
|
||||
answer_un_useful: 它是没有用的
|
||||
answers:
|
||||
|
@ -988,6 +1037,7 @@ ui:
|
|||
btns:
|
||||
confirm: 确认
|
||||
cancel: 取消
|
||||
edit: 编辑
|
||||
save: 保存
|
||||
delete: 删除
|
||||
login: 登录
|
||||
|
@ -1000,7 +1050,7 @@ ui:
|
|||
skip: 略过
|
||||
discard_draft: 丢弃草稿
|
||||
pinned: 已置顶
|
||||
all: 所有
|
||||
all: 全部
|
||||
question: 问题
|
||||
answer: 回答
|
||||
comment: 评论
|
||||
|
@ -1038,7 +1088,6 @@ ui:
|
|||
modal_confirm:
|
||||
title: 发生错误...
|
||||
account_result:
|
||||
page_title: 欢迎来到 {{site_name}}
|
||||
success: 你的账号已通过验证,即将返回首页。
|
||||
link: 返回首页
|
||||
invalid: >-
|
||||
|
@ -1099,8 +1148,7 @@ ui:
|
|||
accepted: 已采纳
|
||||
answered: 回答于
|
||||
asked: 提问于
|
||||
upvote: 赞同
|
||||
downvote: 反对
|
||||
downvoted: 点踩
|
||||
mod_short: 管理员
|
||||
mod_long: 管理员
|
||||
x_reputation: 声望
|
||||
|
@ -1162,6 +1210,7 @@ ui:
|
|||
admin_name:
|
||||
label: 昵称
|
||||
msg: 昵称不能为空。
|
||||
character: '只能由 "a-z", "0-9", " - . _" 组成'
|
||||
admin_password:
|
||||
label: 密码
|
||||
text: >-
|
||||
|
@ -1219,18 +1268,19 @@ ui:
|
|||
seo: SEO
|
||||
customize: 自定义
|
||||
themes: 主题
|
||||
css-html: CSS/HTML
|
||||
css_html: CSS/HTML
|
||||
login: 登录
|
||||
privileges: 特权
|
||||
plugins: 插件
|
||||
installed_plugins: 插件列表
|
||||
installed_plugins: 已安装插件
|
||||
website_welcome: 欢迎来到 {{site_name}}
|
||||
plugins:
|
||||
login: 登录
|
||||
qrcode_login_tip: 请使用 {{ agentName }} 扫描二维码登录
|
||||
login_failed_email_tip: 登录失败, 请允许该应用程序访问您的电子邮件信息,然后再试一次。
|
||||
qrcode_login_tip: 请使用 {{ agentName }} 扫描二维码并登录。
|
||||
login_failed_email_tip: 登录失败,请允许此应用访问您的邮箱信息,然后重试。
|
||||
oauth:
|
||||
connect: 连接到 {{ auth_name }}
|
||||
remove: 解绑 {{ auth_name }}
|
||||
remove: 移除 {{ auth_name }}
|
||||
admin:
|
||||
admin_header:
|
||||
title: 后台管理
|
||||
|
@ -1273,7 +1323,7 @@ ui:
|
|||
pending: 等待处理
|
||||
completed: 已完成
|
||||
flagged: 被举报内容
|
||||
flagged_type: 被举报的{{ type }}
|
||||
flagged_type: 标记了 {{ type }}
|
||||
created: 创建于
|
||||
action: 操作
|
||||
review: 审查
|
||||
|
@ -1301,7 +1351,7 @@ ui:
|
|||
closed_name: 关闭
|
||||
closed_desc: "关闭的问题不能回答,但仍然可以编辑、投票和评论。"
|
||||
deleted_name: 删除
|
||||
deleted_desc: 获得和丧失的所有信誉积分将被恢复。
|
||||
deleted_desc: 该帖子将被删除。
|
||||
btn_cancel: 取消
|
||||
btn_submit: 提交
|
||||
btn_next: 下一步
|
||||
|
@ -1422,9 +1472,6 @@ ui:
|
|||
label: 时区
|
||||
msg: 时区不能为空。
|
||||
text: 选择一个与您相同时区的城市。
|
||||
avatar:
|
||||
label: 默认头像
|
||||
text: 没有自定义头像的用户。
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
|
@ -1523,39 +1570,49 @@ ui:
|
|||
css_and_html:
|
||||
page_title: CSS 与 HTML
|
||||
custom_css:
|
||||
label: 自定义CSS
|
||||
text: 这将在 <link> 之前插入
|
||||
label: 自定义 CSS
|
||||
text: 这将以 <link> 方式插入
|
||||
head:
|
||||
label: 头部
|
||||
text: 这将在 </head> 之前插入
|
||||
header:
|
||||
label: 标题
|
||||
text: 这将在 <body> 之前插入
|
||||
label: 页眉
|
||||
text: 这将在 <body> 之后插入
|
||||
footer:
|
||||
label: 页脚
|
||||
text: 这将在 </html> 之前插入
|
||||
sidebar:
|
||||
label: 侧边栏
|
||||
text: 这将插入侧边栏中。
|
||||
login:
|
||||
page_title: 登录
|
||||
membership:
|
||||
title: 会员
|
||||
label: 允许新注册
|
||||
text: 关闭以防止任何人创建新帐户。
|
||||
email_registration:
|
||||
title: 邮箱注册
|
||||
label: 允许邮箱注册
|
||||
text: 关闭以防止任何人通过邮箱创建新账户。
|
||||
allowed_email_domains:
|
||||
title: 允许的邮箱域
|
||||
text: 允许注册账户的邮箱域。每行一个域名。留空时忽略。
|
||||
private:
|
||||
title: 非公开的
|
||||
label: 需要登录
|
||||
text: 只有登录用户才能访问这个社区。
|
||||
installed_plugins:
|
||||
title: 插件列表
|
||||
title: 已安装插件
|
||||
filter:
|
||||
all: 全部
|
||||
active: 启用
|
||||
active: 已启用
|
||||
inactive: 未启用
|
||||
outdated: 已过期
|
||||
plugins:
|
||||
label: 插件
|
||||
text: 选择一个插件
|
||||
name: 插件名称
|
||||
version: 插件版本
|
||||
text: 选择一个现有的插件。
|
||||
name: 名称
|
||||
version: 版本
|
||||
status: 状态
|
||||
action: 操作
|
||||
deactivate: 停用
|
||||
|
@ -1565,32 +1622,36 @@ ui:
|
|||
title: 用户
|
||||
avatar:
|
||||
label: 默认头像
|
||||
text: 未设置自定义头像的用户所展示的头像。
|
||||
text: 没有自定义头像的用户。
|
||||
gravatar_base_url:
|
||||
label: Gravatar 基础 URL
|
||||
text: Gravatar 提供商的 API 基础 URL 。留空时忽略。
|
||||
profile_editable:
|
||||
title: 可编辑的个人资料
|
||||
title: 个人资料可编辑
|
||||
allow_update_display_name:
|
||||
label: 允许用户更改显示名称
|
||||
label: 允许用户修改显示名称
|
||||
allow_update_username:
|
||||
label: 允许用户更改用户名
|
||||
label: 允许用户修改用户名
|
||||
allow_update_avatar:
|
||||
label: 允许用户更改头像
|
||||
label: 允许用户修改个人头像
|
||||
allow_update_bio:
|
||||
label: 允许用户更改自我介绍
|
||||
label: 允许用户修改个人介绍
|
||||
allow_update_website:
|
||||
label: 允许用户更改个人网站
|
||||
label: 允许用户修改个人主页网址
|
||||
allow_update_location:
|
||||
label: 允许用户更改所在地
|
||||
label: 允许用户更改位置
|
||||
privilege:
|
||||
title: 声望权限
|
||||
title: 特权
|
||||
level:
|
||||
label: 所需声望等级
|
||||
text: 选择所需的声望等级以获取权限
|
||||
label: 级别所需声望
|
||||
text: 选择特权所需的声望值
|
||||
form:
|
||||
optional: (选填)
|
||||
empty: 不能为空
|
||||
invalid: 是无效的
|
||||
btn_submit: 保存
|
||||
not_found_props: "所需属性 {{ key }} 未找到。"
|
||||
select: 选择
|
||||
page_review:
|
||||
review: 评论
|
||||
proposed: 提案
|
||||
|
@ -1606,7 +1667,7 @@ ui:
|
|||
undeleted: 取消删除
|
||||
deleted: 删除
|
||||
downvote: 反对
|
||||
upvote: 赞同
|
||||
upvote: 点赞
|
||||
accept: 采纳
|
||||
cancelled: 已取消
|
||||
commented: '评论:'
|
||||
|
|
369
i18n/zh_TW.yaml
369
i18n/zh_TW.yaml
|
@ -11,17 +11,21 @@ backend:
|
|||
other: 未授權。
|
||||
database_error:
|
||||
other: 資料庫錯誤。
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
action:
|
||||
report:
|
||||
other: Flag
|
||||
other: 举报
|
||||
edit:
|
||||
other: Edit
|
||||
other: 编辑
|
||||
delete:
|
||||
other: Delete
|
||||
other: 删除
|
||||
close:
|
||||
other: Close
|
||||
other: 关闭
|
||||
reopen:
|
||||
other: Reopen
|
||||
forbidden_error:
|
||||
other: Forbidden.
|
||||
pin:
|
||||
other: Pin
|
||||
hide:
|
||||
|
@ -30,6 +34,8 @@ backend:
|
|||
other: Unpin
|
||||
show:
|
||||
other: List
|
||||
invite_someone_to_answer:
|
||||
other: Edit
|
||||
role:
|
||||
name:
|
||||
user:
|
||||
|
@ -45,6 +51,60 @@ backend:
|
|||
other: 擁有訪問該網站的全部權限。
|
||||
moderator:
|
||||
other: 可以訪問除了管理員設定以外的所有貼文。
|
||||
privilege:
|
||||
level_1:
|
||||
description:
|
||||
other: Level 1 (less reputation required for private team, group)
|
||||
level_2:
|
||||
description:
|
||||
other: Level 2 (low reputation required for startup community)
|
||||
level_3:
|
||||
description:
|
||||
other: Level 3 (high reputation required for mature community)
|
||||
rank_question_add_label:
|
||||
other: Ask question
|
||||
rank_answer_add_label:
|
||||
other: Write answer
|
||||
rank_comment_add_label:
|
||||
other: Write comment
|
||||
rank_report_add_label:
|
||||
other: Flag
|
||||
rank_comment_vote_up_label:
|
||||
other: Upvote comment
|
||||
rank_link_url_limit_label:
|
||||
other: Post more than 2 links at a time
|
||||
rank_question_vote_up_label:
|
||||
other: Upvote question
|
||||
rank_answer_vote_up_label:
|
||||
other: Upvote answer
|
||||
rank_question_vote_down_label:
|
||||
other: Downvote question
|
||||
rank_answer_vote_down_label:
|
||||
other: Downvote answer
|
||||
rank_invite_someone_to_answer_label:
|
||||
other: Invite someone to answer
|
||||
rank_tag_add_label:
|
||||
other: Create new tag
|
||||
rank_tag_edit_label:
|
||||
other: Edit tag description (need to review)
|
||||
rank_question_edit_label:
|
||||
other: Edit other's question (need to review)
|
||||
rank_answer_edit_label:
|
||||
other: Edit other's answer (need to review)
|
||||
rank_question_edit_without_review_label:
|
||||
other: Edit other's question without review
|
||||
rank_answer_edit_without_review_label:
|
||||
other: Edit other's answer without review
|
||||
rank_question_audit_label:
|
||||
other: Review question edits
|
||||
rank_answer_audit_label:
|
||||
other: Review answer edits
|
||||
rank_tag_audit_label:
|
||||
other: Review tag edits
|
||||
rank_tag_edit_without_review_label:
|
||||
other: Edit tag description without review
|
||||
rank_tag_synonym_label:
|
||||
other: Manage tag synonyms
|
||||
email:
|
||||
other: 電子郵件
|
||||
password:
|
||||
|
@ -52,9 +112,12 @@ backend:
|
|||
email_or_password_wrong_error:
|
||||
other: 電郵和密碼不匹配。
|
||||
error:
|
||||
password:
|
||||
space_invalid:
|
||||
other: Password cannot contain spaces.
|
||||
admin:
|
||||
cannot_update_their_password:
|
||||
other: You cannot modify your password.
|
||||
other: 您不能修改自己的密码。
|
||||
cannot_modify_self_status:
|
||||
other: You cannot modify your status.
|
||||
email_or_password_wrong:
|
||||
|
@ -82,6 +145,8 @@ backend:
|
|||
other: 需驗證電子郵件
|
||||
verify_url_expired:
|
||||
other: 電子郵件驗證網址已過期,請重發電子郵件。
|
||||
illegal_email_domain_error:
|
||||
other: Email is not allowed from that email domain. Please use another one.
|
||||
lang:
|
||||
not_found:
|
||||
other: 未找到语言文件。
|
||||
|
@ -119,7 +184,9 @@ backend:
|
|||
fail_to_meet_the_condition:
|
||||
other: 級別不符合條件
|
||||
vote_fail_to_meet_the_condition:
|
||||
other: Thanks for the feedback. You need at least {{ rank }} reputation to cast a vote.
|
||||
other: Thanks for the feedback. You need at least {{.Rank}} reputation to cast a vote.
|
||||
no_enough_rank_to_operate:
|
||||
other: You need at least {{.Rank}} reputation to do this.
|
||||
report:
|
||||
handle_failed:
|
||||
other: 報告處理失敗。
|
||||
|
@ -154,6 +221,10 @@ backend:
|
|||
no_permission:
|
||||
other: 無權限修改。
|
||||
user:
|
||||
external_login_missing_user_id:
|
||||
other: The third-party platform does not provide a unique UserID, so you cannot login, please contact the website administrator.
|
||||
external_login_unbinding_forbidden:
|
||||
other: Please set a login password for your account before you remove this login.
|
||||
email_or_password_wrong:
|
||||
other:
|
||||
other: 電子郵箱和密碼不匹配。
|
||||
|
@ -171,6 +242,10 @@ backend:
|
|||
other: 您不能修改自己的角色。
|
||||
not_allowed_registration:
|
||||
other: 本站目前未開放註冊。
|
||||
access_denied:
|
||||
other: Access denied
|
||||
page_access_denied:
|
||||
other: You do not have access to this page.
|
||||
config:
|
||||
read_config_failed:
|
||||
other: 讀取配置失敗
|
||||
|
@ -185,37 +260,74 @@ backend:
|
|||
upload:
|
||||
unsupported_file_format:
|
||||
other: 不支援的檔案格式。
|
||||
report:
|
||||
site_info:
|
||||
config_not_found:
|
||||
other: Site config not found.
|
||||
reason:
|
||||
spam:
|
||||
name:
|
||||
other: 垃圾貼文。
|
||||
other: spam
|
||||
desc:
|
||||
other: 此貼文是一個廣告,或是破壞性行為。它對當前的主題沒有用處,也不相關。
|
||||
rude:
|
||||
other: This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.
|
||||
rude_or_abusive:
|
||||
name:
|
||||
other: 粗魯或辱罵的
|
||||
other: rude or abusive
|
||||
desc:
|
||||
other: 一個有理智的人都會認為這種內容不適合進行尊重性的討論。
|
||||
duplicate:
|
||||
other: A reasonable person would find this content inappropriate for respectful discourse.
|
||||
a_duplicate:
|
||||
name:
|
||||
other: 重覆信息
|
||||
other: a duplicate
|
||||
desc:
|
||||
other: 此問題以前就有人問過,而且已經有了答案。
|
||||
not_answer:
|
||||
other: This question has been asked before and already has an answer.
|
||||
placeholder:
|
||||
other: Enter the existing question link
|
||||
not_a_answer:
|
||||
name:
|
||||
other: 不是答案
|
||||
other: not an answer
|
||||
desc:
|
||||
other: 此帖子是作為一個答案發布的,但它並沒有試圖回答這個問題。總之,它可能應該是個編輯,評論,另一個問題或者被刪除。
|
||||
not_need:
|
||||
other: This was posted as an answer, but it does not attempt to answer the question. It should possibly be an edit, a comment, another question, or deleted altogether.
|
||||
no_longer_needed:
|
||||
name:
|
||||
other: 不再需要
|
||||
other: no longer needed
|
||||
desc:
|
||||
other: 此評論已過時,對話或與此帖子無關。
|
||||
other:
|
||||
other: This comment is outdated, conversational or not relevant to this post.
|
||||
something:
|
||||
name:
|
||||
other: 其他原因
|
||||
other: something else
|
||||
desc:
|
||||
other: 由於上面未列出的另一個原因,這篇文章需要工作人員注意。
|
||||
other: This post requires staff attention for another reason not listed above.
|
||||
placeholder:
|
||||
other: Let us know specifically what you are concerned about
|
||||
community_specific:
|
||||
name:
|
||||
other: a community-specific reason
|
||||
desc:
|
||||
other: This question doesn’t meet a community guideline.
|
||||
not_clarity:
|
||||
name:
|
||||
other: needs details or clarity
|
||||
desc:
|
||||
other: This question currently includes multiple questions in one. It should focus on one problem only.
|
||||
looks_ok:
|
||||
name:
|
||||
other: looks ok
|
||||
desc:
|
||||
other: This post is good as-is and not low quality.
|
||||
needs_edit:
|
||||
name:
|
||||
other: needs edit, and I did it
|
||||
desc:
|
||||
other: Improve and correct problems with this post yourself.
|
||||
needs_close:
|
||||
name:
|
||||
other: needs close
|
||||
desc:
|
||||
other: A closed question can’t answer, but still can edit, vote and comment.
|
||||
needs_delete:
|
||||
name:
|
||||
other: needs delete
|
||||
desc:
|
||||
other: This post will be deleted.
|
||||
question:
|
||||
close:
|
||||
duplicate:
|
||||
|
@ -245,6 +357,8 @@ backend:
|
|||
other: 回答於
|
||||
modified:
|
||||
other: 修改於
|
||||
deleted_title:
|
||||
other: Deleted question
|
||||
notification:
|
||||
action:
|
||||
update_question:
|
||||
|
@ -271,6 +385,67 @@ backend:
|
|||
other: 你的答案已被刪除
|
||||
your_comment_was_deleted:
|
||||
other: 你的評論已被刪除
|
||||
up_voted_question:
|
||||
other: upvoted question
|
||||
down_voted_question:
|
||||
other: downvoted question
|
||||
up_voted_answer:
|
||||
other: upvoted answer
|
||||
down_voted_answer:
|
||||
other: downvoted answer
|
||||
up_voted_comment:
|
||||
other: upvoted comment
|
||||
invited_you_to_answer:
|
||||
other: invited you to answer
|
||||
email_tpl:
|
||||
change_email:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new email address"
|
||||
body:
|
||||
other: "Confirm your new email address for {{.SiteName}} by clicking on the following link:<br><br>\n\n<a href='{{.ChangeEmailUrl}}' target='_blank'>{{.ChangeEmailUrl}}</a><br><br>\n\nIf you did not request this change, please ignore this email.\n"
|
||||
new_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} answered your question"
|
||||
body:
|
||||
other: "<strong><a href='{{.AnswerUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.AnswerSummary}}</blockquote><br>\n<a href='{{.AnswerUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
invited_you_to_answer:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} invited you to answer"
|
||||
body:
|
||||
other: "<strong><a href='{{.InviteUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><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<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
new_comment:
|
||||
title:
|
||||
other: "[{{.SiteName}}] {{.DisplayName}} commented on your post"
|
||||
body:
|
||||
other: "<strong><a href='{{.CommentUrl}}'>{{.QuestionTitle}}</a></strong><br><br>\n\n<small>{{.DisplayName}}:</small><br>\n<blockquote>{{.CommentSummary}}</blockquote><br>\n<a href='{{.CommentUrl}}'>View it on {{.SiteName}}</a><br><br>\n\n<small>You are receiving this because you authored the thread. <a href='{{.UnsubscribeUrl}}'>Unsubscribe</a></small>"
|
||||
pass_reset:
|
||||
title:
|
||||
other: "[{{.SiteName }}] Password reset"
|
||||
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"
|
||||
register:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Confirm your new account"
|
||||
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"
|
||||
test:
|
||||
title:
|
||||
other: "[{{.SiteName}}] Test Email"
|
||||
body:
|
||||
other: "This is a test email."
|
||||
action_activity_type:
|
||||
upvote:
|
||||
other: upvote
|
||||
upvoted:
|
||||
other: upvoted
|
||||
downvote:
|
||||
other: downvote
|
||||
downvoted:
|
||||
other: downvoted
|
||||
accept:
|
||||
other: accept
|
||||
accepted:
|
||||
other: accepted
|
||||
#The following fields are used for interface presentation(Front-end)
|
||||
ui:
|
||||
how_to_format:
|
||||
|
@ -307,20 +482,28 @@ ui:
|
|||
upgrade: Answer 升級
|
||||
maintenance: 網站維護
|
||||
users: 用戶
|
||||
http_404: HTTP Error 404
|
||||
http_50X: HTTP Error 500
|
||||
http_403: HTTP Error 403
|
||||
oauth_callback: Processing
|
||||
http_404: HTTP 錯誤 404
|
||||
http_50X: HTTP 錯誤 500
|
||||
http_403: HTTP 錯誤 403
|
||||
notifications:
|
||||
title: 通知
|
||||
inbox: 收件夾
|
||||
achievement: 成就
|
||||
all_read: 全部標記為已讀
|
||||
show_more: 顯示更多
|
||||
someone: Someone
|
||||
inbox_type:
|
||||
all: All
|
||||
posts: Posts
|
||||
invites: Invites
|
||||
votes: Votes
|
||||
suspended:
|
||||
title: 您的帳號已被停權
|
||||
until_time: "你的帳號被停權至{{ time }}。"
|
||||
forever: 你的帳號已被永久停權。
|
||||
end: 違反了我們的社群準則。
|
||||
contact_us: Contact us
|
||||
editor:
|
||||
blockquote:
|
||||
text: 引用
|
||||
|
@ -527,7 +710,7 @@ ui:
|
|||
通过評論询问更多问题或提出改進建議。避免在評論中回答問題。
|
||||
tip_answer: >-
|
||||
使用評論回復其他用戶或通知他們进行更改。如果你要添加新的信息,請編輯你的帖子,而不是發表評論。
|
||||
tip_vote: It adds something useful to the post
|
||||
tip_vote: It adds something useful to the post
|
||||
edit_answer:
|
||||
title: 編輯回答
|
||||
default_reason: 編輯回答
|
||||
|
@ -609,6 +792,8 @@ ui:
|
|||
logout: 登出
|
||||
admin: 後台管理
|
||||
review: 審查
|
||||
bookmark: Bookmarks
|
||||
moderation: Moderation
|
||||
search:
|
||||
placeholder: 搜尋
|
||||
footer:
|
||||
|
@ -633,7 +818,6 @@ ui:
|
|||
msg:
|
||||
empty: 不能為空
|
||||
login:
|
||||
page_title: 歡迎來到 {{site_name}}
|
||||
login_to_continue: 登入以繼續
|
||||
info_sign: 沒有帳戶?<1>註冊</1>
|
||||
info_login: 已經有一個帳號?<1>登入</1>
|
||||
|
@ -644,6 +828,7 @@ ui:
|
|||
msg:
|
||||
empty: 名稱不能為空
|
||||
range: 名稱最多 30 個字元
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
email:
|
||||
label: 郵箱
|
||||
msg:
|
||||
|
@ -663,7 +848,6 @@ ui:
|
|||
msg:
|
||||
empty: 郵箱不能為空
|
||||
change_email:
|
||||
page_title: 歡迎來到 {{site_name}}
|
||||
btn_cancel: 取消
|
||||
btn_update: 更新電子郵件地址
|
||||
send_success: >-
|
||||
|
@ -672,6 +856,17 @@ ui:
|
|||
label: 新電子郵件
|
||||
msg:
|
||||
empty: 郵箱不能為空
|
||||
oauth_bind_email:
|
||||
subtitle: Add a recovery email to your account.
|
||||
btn_update: Update email address
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
modal_title: Email already existes.
|
||||
modal_content: This email address already registered. Are you sure you want to connect to the existing account?
|
||||
modal_cancel: Change email
|
||||
modal_confirm: Connect to the existing account
|
||||
password_reset:
|
||||
page_title: 密碼重置
|
||||
btn_name: 重置我的密碼
|
||||
|
@ -690,6 +885,7 @@ ui:
|
|||
label: 確認新密碼
|
||||
settings:
|
||||
page_title: 設置
|
||||
goto_modify: Go to Modify
|
||||
nav:
|
||||
profile: 我的資料
|
||||
notification: 通知
|
||||
|
@ -711,7 +907,7 @@ ui:
|
|||
avatar:
|
||||
label: 頭像
|
||||
gravatar: 頭像
|
||||
gravatar_text: 您可以在 <1>gravatar.com</1> 更改圖像
|
||||
gravatar_text: You can change image on
|
||||
custom: 自定義
|
||||
btn_refresh: 重新整理
|
||||
custom_text: 您可以上傳您的圖片。
|
||||
|
@ -738,8 +934,11 @@ ui:
|
|||
change_email_info: >-
|
||||
我們已經寄出一封郵件至此電子郵件地址,請遵照說明進行確認。
|
||||
email:
|
||||
label: 郵箱
|
||||
msg: 郵箱不能為空
|
||||
label: New Email
|
||||
msg: New Email cannot be empty.
|
||||
pass:
|
||||
label: Current Password
|
||||
msg: Password cannot be empty.
|
||||
password_title: 密碼
|
||||
current_pass:
|
||||
label: 當前密碼
|
||||
|
@ -756,6 +955,13 @@ ui:
|
|||
lang:
|
||||
label: 介面語言
|
||||
text: 設定使用者介面語言,在重新整裡頁面後生效。
|
||||
my_logins:
|
||||
title: My Logins
|
||||
label: Log in or sign up on this site using these accounts.
|
||||
modal_title: Remove Login
|
||||
modal_content: Are you sure you want to remove this login from your account?
|
||||
modal_confirm_btn: Remove
|
||||
remove_success: Removed successfully
|
||||
toast:
|
||||
update: 更新成功
|
||||
update_password: 更改密碼成功。
|
||||
|
@ -766,6 +972,12 @@ ui:
|
|||
title: 相關問題
|
||||
btn: 發問
|
||||
answers: 個回答
|
||||
invite_to_answer:
|
||||
title: People asked
|
||||
desc: Invite people who you think might know the answer.
|
||||
invite: Invite to answer
|
||||
add: Add people
|
||||
search: Search people
|
||||
question_detail:
|
||||
action: Action
|
||||
Asked: 提問於
|
||||
|
@ -775,12 +987,13 @@ ui:
|
|||
Views: 閱讀次數
|
||||
Follow: 關注
|
||||
Following: 已關注
|
||||
follow_tip: Follow this question to receive notifications
|
||||
answered: 回答於
|
||||
closed_in: 關閉於
|
||||
show_exist: 顯示現有問題。
|
||||
useful: Useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
question_useful: It is useful and clear
|
||||
question_un_useful: It is unclear or not useful
|
||||
answer_useful: It is useful
|
||||
answer_un_useful: It is not useful
|
||||
answers:
|
||||
|
@ -824,6 +1037,7 @@ ui:
|
|||
btns:
|
||||
confirm: 確認
|
||||
cancel: 取消
|
||||
edit: Edit
|
||||
save: 儲存
|
||||
delete: 刪除
|
||||
login: 登入
|
||||
|
@ -836,6 +1050,10 @@ ui:
|
|||
skip: 略過
|
||||
discard_draft: Discard draft
|
||||
pinned: Pinned
|
||||
all: All
|
||||
question: Question
|
||||
answer: Answer
|
||||
comment: Comment
|
||||
search:
|
||||
title: 搜尋結果
|
||||
keywords: 關鍵詞
|
||||
|
@ -870,7 +1088,6 @@ ui:
|
|||
modal_confirm:
|
||||
title: 發生錯誤...
|
||||
account_result:
|
||||
page_title: 歡迎來到 {{site_name}}
|
||||
success: 你的帳號已通過驗證,即將返回首頁。
|
||||
link: 繼續訪問主頁
|
||||
invalid: >-
|
||||
|
@ -931,8 +1148,7 @@ ui:
|
|||
accepted: 已採納
|
||||
answered: 回答於
|
||||
asked: 提問於
|
||||
upvote: 讚同
|
||||
downvote: 反對
|
||||
downvoted: downvoted
|
||||
mod_short: 模組
|
||||
mod_long: 管理員
|
||||
x_reputation: 聲望
|
||||
|
@ -994,6 +1210,7 @@ ui:
|
|||
admin_name:
|
||||
label: 暱稱
|
||||
msg: 暱稱不能為空。
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
admin_password:
|
||||
label: 密碼
|
||||
text: >-
|
||||
|
@ -1025,7 +1242,7 @@ ui:
|
|||
answers: 回答
|
||||
accepted: 已採納
|
||||
page_error:
|
||||
http_error: HTTP Error {{ code }}
|
||||
http_error: HTTP 错误 {{ code }}
|
||||
desc_403: You don’t have permission to access this page.
|
||||
desc_404: Unfortunately, this page doesn't exist.
|
||||
desc_50X: The server encountered an error and could not complete your request.
|
||||
|
@ -1051,8 +1268,19 @@ ui:
|
|||
seo: SEO
|
||||
customize: 自定義
|
||||
themes: 主題
|
||||
css-html: CSS/HTML
|
||||
css_html: CSS/HTML
|
||||
login: 登入
|
||||
privileges: Privileges
|
||||
plugins: Plugins
|
||||
installed_plugins: Installed Plugins
|
||||
website_welcome: Welcome to {{site_name}}
|
||||
plugins:
|
||||
login: Login
|
||||
qrcode_login_tip: Please use {{ agentName }} to scan the QR code and log in.
|
||||
login_failed_email_tip: Login failed, please allow this app to access your email information before try again.
|
||||
oauth:
|
||||
connect: Connect with {{ auth_name }}
|
||||
remove: Remove {{ auth_name }}
|
||||
admin:
|
||||
admin_header:
|
||||
title: 後台管理
|
||||
|
@ -1095,6 +1323,7 @@ ui:
|
|||
pending: 等待處理
|
||||
completed: 已完成
|
||||
flagged: 已標記
|
||||
flagged_type: Flagged {{ type }}
|
||||
created: 創建於
|
||||
action: 操作
|
||||
review: 審核
|
||||
|
@ -1122,7 +1351,7 @@ ui:
|
|||
closed_name: 關閉
|
||||
closed_desc: "關閉的問題不能回答,但仍然可以編輯、投票和評論。"
|
||||
deleted_name: 刪除
|
||||
deleted_desc: 獲得和失去的所有信譽將被恢復。
|
||||
deleted_desc: This post will be deleted.
|
||||
btn_cancel: 取消
|
||||
btn_submit: 提交
|
||||
btn_next: 下一步
|
||||
|
@ -1243,9 +1472,6 @@ ui:
|
|||
label: 時區
|
||||
msg: 時區不能為空。
|
||||
text: 選擇一個與您相同時區的城市。
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
smtp:
|
||||
page_title: SMTP
|
||||
from_email:
|
||||
|
@ -1355,22 +1581,77 @@ ui:
|
|||
footer:
|
||||
label: 頁尾
|
||||
text: 這將在 </html> 之前插入
|
||||
sidebar:
|
||||
label: Sidebar
|
||||
text: This will insert in sidebar.
|
||||
login:
|
||||
page_title: 登入
|
||||
membership:
|
||||
title: 會員
|
||||
label: 允許新註冊
|
||||
text: 關閉以防止任何人創建新帳戶。
|
||||
email_registration:
|
||||
title: Email registration
|
||||
label: Allow email registration
|
||||
text: Turn off to prevent anyone creating new account through email.
|
||||
allowed_email_domains:
|
||||
title: Allowed email domains
|
||||
text: Email domains that users must register accounts with. One domain per line. Ignored when empty.
|
||||
private:
|
||||
title: 非公開的
|
||||
label: 需要登入
|
||||
text: 只有登入使用者才能訪問這個社群。
|
||||
installed_plugins:
|
||||
title: Installed Plugins
|
||||
filter:
|
||||
all: All
|
||||
active: Active
|
||||
inactive: Inactive
|
||||
outdated: Outdated
|
||||
plugins:
|
||||
label: Plugins
|
||||
text: Select an existing plugin.
|
||||
name: Name
|
||||
version: Version
|
||||
status: Status
|
||||
action: Action
|
||||
deactivate: Deactivate
|
||||
activate: Activate
|
||||
settings: Settings
|
||||
settings_users:
|
||||
title: Users
|
||||
avatar:
|
||||
label: Default Avatar
|
||||
text: For users without a custom avatar of their own.
|
||||
gravatar_base_url:
|
||||
label: Gravatar Base URL
|
||||
text: URL of the Gravatar provider’s API base. Ignored when empty.
|
||||
profile_editable:
|
||||
title: Profile Editable
|
||||
allow_update_display_name:
|
||||
label: Allow users to change their display name
|
||||
allow_update_username:
|
||||
label: Allow users to change their username
|
||||
allow_update_avatar:
|
||||
label: Allow users to change their profile image
|
||||
allow_update_bio:
|
||||
label: Allow users to change their about me
|
||||
allow_update_website:
|
||||
label: Allow users to change their website
|
||||
allow_update_location:
|
||||
label: Allow users to change their location
|
||||
privilege:
|
||||
title: Privileges
|
||||
level:
|
||||
label: Reputation required level
|
||||
text: Choose the reputation required for the privileges
|
||||
form:
|
||||
optional: (選填)
|
||||
empty: 不能為空
|
||||
invalid: 是無效的
|
||||
btn_submit: 儲存
|
||||
not_found_props: "所需屬性 {{ key }} 未找到。"
|
||||
select: Select
|
||||
page_review:
|
||||
review: 審核
|
||||
proposed: 提案
|
||||
|
|
|
@ -61,7 +61,7 @@ const (
|
|||
DatabaseConnectionFailed = "error.database.connection_failed"
|
||||
InstallCreateTableFailed = "error.database.create_table_failed"
|
||||
InstallConfigFailed = "error.install.create_config_failed"
|
||||
SiteInfoNotFound = "error.site_info.not_found"
|
||||
SiteInfoConfigNotFound = "error.site_info.config_not_found"
|
||||
UploadFileSourceUnsupported = "error.upload.source_unsupported"
|
||||
UploadFileUnsupportedFileFormat = "error.upload.unsupported_file_format"
|
||||
RecommendTagNotExist = "error.tag.recommend_tag_not_found"
|
||||
|
|
|
@ -623,6 +623,7 @@ func (uc *UserController) SearchUserListByName(ctx *gin.Context) {
|
|||
if handler.BindAndCheck(ctx, req) {
|
||||
return
|
||||
}
|
||||
resp, err := uc.userService.SearchUserListByName(ctx, req.Username)
|
||||
req.UserID = middleware.GetLoginUserIDFromContext(ctx)
|
||||
resp, err := uc.userService.SearchUserListByName(ctx, req)
|
||||
handler.HandleResponse(ctx, err, resp)
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ var migrations = []Migration{
|
|||
NewMigration("v1.0.9", "add login limitations", addLoginLimitations, true),
|
||||
NewMigration("v1.1.0-beta.1", "update user pin hide features", updateRolePinAndHideFeatures, true),
|
||||
NewMigration("v1.1.0-beta.2", "update question post time", updateQuestionPostTime, true),
|
||||
NewMigration("v1.1.0", "add gravatar base url", updateCount, false),
|
||||
NewMigration("v1.1.0", "add gravatar base url", updateCount, true),
|
||||
}
|
||||
|
||||
// GetCurrentDBVersion returns the current db version
|
||||
|
|
|
@ -14,14 +14,21 @@ import (
|
|||
)
|
||||
|
||||
func updateCount(x *xorm.Engine) error {
|
||||
addPrivilegeForInviteSomeoneToAnswer(x)
|
||||
addGravatarBaseURL(x)
|
||||
updateQuestionCount(x)
|
||||
updateTagCount(x)
|
||||
updateUserQuestionCount(x)
|
||||
updateUserAnswerCount(x)
|
||||
inviteAnswer(x)
|
||||
inBoxData(x)
|
||||
fns := []func(*xorm.Engine) error{
|
||||
inviteAnswer,
|
||||
addPrivilegeForInviteSomeoneToAnswer,
|
||||
addGravatarBaseURL,
|
||||
updateQuestionCount,
|
||||
updateTagCount,
|
||||
updateUserQuestionCount,
|
||||
updateUserAnswerCount,
|
||||
inBoxData,
|
||||
}
|
||||
for _, fn := range fns {
|
||||
if err := fn(x); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -206,10 +206,29 @@ func (ar *answerRepo) GetByID(ctx context.Context, id string) (*entity.Answer, b
|
|||
return &resp, has, nil
|
||||
}
|
||||
|
||||
func (ar *answerRepo) GetCountByQuestionID(ctx context.Context, questionID string) (int64, error) {
|
||||
questionID = uid.DeShortID(questionID)
|
||||
rows := make([]*entity.Answer, 0)
|
||||
count, err := ar.data.DB.Context(ctx).Where("question_id =? and status = ?", questionID, entity.AnswerStatusAvailable).FindAndCount(&rows)
|
||||
if err != nil {
|
||||
return count, errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
|
||||
}
|
||||
return count, nil
|
||||
}
|
||||
|
||||
func (ar *answerRepo) GetCountByUserID(ctx context.Context, userID string) (int64, error) {
|
||||
rows := make([]*entity.Answer, 0)
|
||||
count, err := ar.data.DB.Context(ctx).Where(" user_id = ? and status = ?", userID, entity.AnswerStatusAvailable).FindAndCount(&rows)
|
||||
if err != nil {
|
||||
return count, errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
|
||||
}
|
||||
return count, nil
|
||||
}
|
||||
|
||||
func (ar *answerRepo) GetByUserIDQuestionID(ctx context.Context, userID string, questionID string) (*entity.Answer, bool, error) {
|
||||
questionID = uid.DeShortID(questionID)
|
||||
var resp entity.Answer
|
||||
has, err := ar.data.DB.Context(ctx).Where("question_id =? and user_id = ?", questionID, userID).Get(&resp)
|
||||
has, err := ar.data.DB.Context(ctx).Where("question_id =? and user_id = ? and status = ?", questionID, userID, entity.AnswerStatusAvailable).Get(&resp)
|
||||
if err != nil {
|
||||
return &resp, false, errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
|
||||
}
|
||||
|
@ -255,7 +274,11 @@ func (ar *answerRepo) SearchList(ctx context.Context, search *entity.AnswerSearc
|
|||
session = session.OrderBy("adopted desc,vote_count desc,created_at asc")
|
||||
}
|
||||
if !search.IncludeDeleted {
|
||||
session = session.And("status = ? OR user_id = ?", entity.AnswerStatusAvailable, search.LoginUserID)
|
||||
if search.LoginUserID == "" {
|
||||
session = session.And("status = ? ", entity.AnswerStatusAvailable)
|
||||
} else {
|
||||
session = session.And("status = ? OR user_id = ?", entity.AnswerStatusAvailable, search.LoginUserID)
|
||||
}
|
||||
}
|
||||
|
||||
session = session.Limit(search.PageSize, offset)
|
||||
|
|
|
@ -80,8 +80,8 @@ func (cr configRepo) GetConfigByKey(ctx context.Context, key string) (c *entity.
|
|||
|
||||
func (cr configRepo) UpdateConfig(ctx context.Context, key string, value string) (err error) {
|
||||
// check if key exists
|
||||
cf := &entity.Config{}
|
||||
exist, err := cr.data.DB.Context(ctx).Get(cf)
|
||||
oldConfig := &entity.Config{}
|
||||
exist, err := cr.data.DB.Context(ctx).Get(oldConfig)
|
||||
if err != nil {
|
||||
return errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
|
||||
}
|
||||
|
@ -90,19 +90,20 @@ func (cr configRepo) UpdateConfig(ctx context.Context, key string, value string)
|
|||
}
|
||||
|
||||
// update database
|
||||
_, err = cr.data.DB.Context(ctx).ID(cf.ID).Update(&entity.Config{Value: value})
|
||||
_, err = cr.data.DB.Context(ctx).ID(oldConfig.ID).Update(&entity.Config{Value: value})
|
||||
if err != nil {
|
||||
return errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
|
||||
}
|
||||
|
||||
cacheVal := cf.JsonString()
|
||||
oldConfig.Value = value
|
||||
cacheVal := oldConfig.JsonString()
|
||||
// update cache
|
||||
if err := cr.data.Cache.SetString(ctx,
|
||||
constant.ConfigKEY2ContentCacheKeyPrefix+key, cacheVal, -1); err != nil {
|
||||
log.Error(err)
|
||||
}
|
||||
if err := cr.data.Cache.SetString(ctx,
|
||||
fmt.Sprintf("%s%d", constant.ConfigID2KEYCacheKeyPrefix, cf.ID), cacheVal, -1); err != nil {
|
||||
fmt.Sprintf("%s%d", constant.ConfigID2KEYCacheKeyPrefix, oldConfig.ID), cacheVal, -1); err != nil {
|
||||
log.Error(err)
|
||||
}
|
||||
return
|
||||
|
|
|
@ -93,7 +93,8 @@ func (qr *questionRepo) UpdatePvCount(ctx context.Context, questionID string) (e
|
|||
func (qr *questionRepo) UpdateAnswerCount(ctx context.Context, questionID string, num int) (err error) {
|
||||
questionID = uid.DeShortID(questionID)
|
||||
question := &entity.Question{}
|
||||
_, err = qr.data.DB.Context(ctx).Where("id =?", questionID).Incr("answer_count", num).Update(question)
|
||||
question.AnswerCount = num
|
||||
_, err = qr.data.DB.Context(ctx).Where("id =?", questionID).Cols("answer_count").Update(question)
|
||||
if err != nil {
|
||||
return errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
|
||||
}
|
||||
|
|
|
@ -355,6 +355,7 @@ type UserBasicInfo struct {
|
|||
|
||||
type GetOtherUserInfoByUsernameReq struct {
|
||||
Username string `validate:"required,gt=0,lte=500" form:"username"`
|
||||
UserID string `json:"-"`
|
||||
}
|
||||
|
||||
type GetOtherUserInfoResp struct {
|
||||
|
|
|
@ -17,6 +17,8 @@ type AnswerRepo interface {
|
|||
GetAnswerPage(ctx context.Context, page, pageSize int, answer *entity.Answer) (answerList []*entity.Answer, total int64, err error)
|
||||
UpdateAccepted(ctx context.Context, id string, questionID string) error
|
||||
GetByID(ctx context.Context, id string) (*entity.Answer, bool, error)
|
||||
GetCountByQuestionID(ctx context.Context, questionID string) (int64, error)
|
||||
GetCountByUserID(ctx context.Context, userID string) (int64, error)
|
||||
GetByUserIDQuestionID(ctx context.Context, userID string, questionID string) (*entity.Answer, bool, error)
|
||||
SearchList(ctx context.Context, search *entity.AnswerSearch) ([]*entity.Answer, int64, error)
|
||||
AdminSearchList(ctx context.Context, search *entity.AdminAnswerSearch) ([]*entity.Answer, int64, error)
|
||||
|
|
|
@ -118,21 +118,24 @@ func (as *AnswerService) RemoveAnswer(ctx context.Context, req *schema.RemoveAns
|
|||
|
||||
}
|
||||
|
||||
// user add question count
|
||||
err = as.questionCommon.UpdateAnswerCount(ctx, answerInfo.QuestionID, -1)
|
||||
if err != nil {
|
||||
log.Error("IncreaseAnswerCount error", err.Error())
|
||||
}
|
||||
|
||||
err = as.userCommon.UpdateAnswerCount(ctx, answerInfo.UserID, -1)
|
||||
if err != nil {
|
||||
log.Error("user IncreaseAnswerCount error", err.Error())
|
||||
}
|
||||
|
||||
err = as.answerRepo.RemoveAnswer(ctx, req.ID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// user add question count
|
||||
err = as.questionCommon.UpdateAnswerCount(ctx, answerInfo.QuestionID)
|
||||
if err != nil {
|
||||
log.Error("IncreaseAnswerCount error", err.Error())
|
||||
}
|
||||
userAnswerCount, err := as.answerRepo.GetCountByUserID(ctx, answerInfo.UserID)
|
||||
if err != nil {
|
||||
log.Error("GetCountByUserID error", err.Error())
|
||||
}
|
||||
err = as.userCommon.UpdateAnswerCount(ctx, answerInfo.UserID, int(userAnswerCount))
|
||||
if err != nil {
|
||||
log.Error("user IncreaseAnswerCount error", err.Error())
|
||||
}
|
||||
// #2372 In order to simplify the process and complexity, as well as to consider if it is in-house,
|
||||
// facing the problem of recovery.
|
||||
//err = as.answerActivityService.DeleteAnswer(ctx, answerInfo.ID, answerInfo.CreatedAt, answerInfo.VoteCount)
|
||||
|
@ -173,7 +176,7 @@ func (as *AnswerService) Insert(ctx context.Context, req *schema.AnswerAddReq) (
|
|||
if err = as.answerRepo.AddAnswer(ctx, insertData); err != nil {
|
||||
return "", err
|
||||
}
|
||||
err = as.questionCommon.UpdateAnswerCount(ctx, req.QuestionID, 1)
|
||||
err = as.questionCommon.UpdateAnswerCount(ctx, req.QuestionID)
|
||||
if err != nil {
|
||||
log.Error("IncreaseAnswerCount error", err.Error())
|
||||
}
|
||||
|
@ -185,8 +188,11 @@ func (as *AnswerService) Insert(ctx context.Context, req *schema.AnswerAddReq) (
|
|||
if err != nil {
|
||||
return insertData.ID, err
|
||||
}
|
||||
|
||||
err = as.userCommon.UpdateAnswerCount(ctx, req.UserID, 1)
|
||||
userAnswerCount, err := as.answerRepo.GetCountByUserID(ctx, req.UserID)
|
||||
if err != nil {
|
||||
log.Error("GetCountByUserID error", err.Error())
|
||||
}
|
||||
err = as.userCommon.UpdateAnswerCount(ctx, req.UserID, int(userAnswerCount))
|
||||
if err != nil {
|
||||
log.Error("user IncreaseAnswerCount error", err.Error())
|
||||
}
|
||||
|
@ -524,6 +530,7 @@ func (as *AnswerService) SearchFormatInfo(ctx context.Context, answers []*entity
|
|||
userIDs = append(userIDs, info.UserID)
|
||||
userIDs = append(userIDs, info.LastEditUserID)
|
||||
if req.UserID != "" {
|
||||
item.ID = uid.DeShortID(item.ID)
|
||||
item.VoteStatus = as.voteRepo.GetVoteStatus(ctx, item.ID, req.UserID)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,19 +54,6 @@ type EmailConfig struct {
|
|||
SMTPUsername string `json:"smtp_username"`
|
||||
SMTPPassword string `json:"smtp_password"`
|
||||
SMTPAuthentication bool `json:"smtp_authentication"`
|
||||
|
||||
RegisterTitle string `json:"register_title"`
|
||||
RegisterBody string `json:"register_body"`
|
||||
PassResetTitle string `json:"pass_reset_title"`
|
||||
PassResetBody string `json:"pass_reset_body"`
|
||||
ChangeTitle string `json:"change_title"`
|
||||
ChangeBody string `json:"change_body"`
|
||||
TestTitle string `json:"test_title"`
|
||||
TestBody string `json:"test_body"`
|
||||
NewAnswerTitle string `json:"new_answer_title"`
|
||||
NewAnswerBody string `json:"new_answer_body"`
|
||||
NewCommentTitle string `json:"new_comment_title"`
|
||||
NewCommentBody string `json:"new_comment_body"`
|
||||
}
|
||||
|
||||
func (e *EmailConfig) IsSSL() bool {
|
||||
|
@ -306,7 +293,8 @@ func (es *EmailService) GetEmailConfig(ctx context.Context) (ec *EmailConfig, er
|
|||
ec = &EmailConfig{}
|
||||
err = json.Unmarshal([]byte(emailConf), ec)
|
||||
if err != nil {
|
||||
return nil, errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
|
||||
log.Errorf("old email config format is invalid, you need to update smtp config: %v", err)
|
||||
return nil, errors.BadRequest(reason.SiteInfoConfigNotFound)
|
||||
}
|
||||
return ec, nil
|
||||
}
|
||||
|
|
|
@ -102,8 +102,12 @@ func (qs *QuestionCommon) UpdatePv(ctx context.Context, questionID string) error
|
|||
return qs.questionRepo.UpdatePvCount(ctx, questionID)
|
||||
}
|
||||
|
||||
func (qs *QuestionCommon) UpdateAnswerCount(ctx context.Context, questionID string, num int) error {
|
||||
return qs.questionRepo.UpdateAnswerCount(ctx, questionID, num)
|
||||
func (qs *QuestionCommon) UpdateAnswerCount(ctx context.Context, questionID string) error {
|
||||
count, err := qs.answerRepo.GetCountByQuestionID(ctx, questionID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return qs.questionRepo.UpdateAnswerCount(ctx, questionID, int(count))
|
||||
}
|
||||
|
||||
func (qs *QuestionCommon) UpdateCollectionCount(ctx context.Context, questionID string, num int) error {
|
||||
|
@ -526,12 +530,15 @@ func (as *QuestionCommon) RemoveAnswer(ctx context.Context, id string) (err erro
|
|||
|
||||
// user add question count
|
||||
|
||||
err = as.UpdateAnswerCount(ctx, answerinfo.QuestionID, -1)
|
||||
err = as.UpdateAnswerCount(ctx, answerinfo.QuestionID)
|
||||
if err != nil {
|
||||
log.Error("UpdateAnswerCount error", err.Error())
|
||||
}
|
||||
|
||||
err = as.userCommon.UpdateAnswerCount(ctx, answerinfo.UserID, -1)
|
||||
userAnswerCount, err := as.answerRepo.GetCountByUserID(ctx, answerinfo.UserID)
|
||||
if err != nil {
|
||||
log.Error("GetCountByUserID error", err.Error())
|
||||
}
|
||||
err = as.userCommon.UpdateAnswerCount(ctx, answerinfo.UserID, int(userAnswerCount))
|
||||
if err != nil {
|
||||
log.Error("user UpdateAnswerCount error", err.Error())
|
||||
}
|
||||
|
|
|
@ -573,10 +573,7 @@ func (qs *QuestionService) UpdateQuestionInviteUser(ctx context.Context, req *sc
|
|||
for _, item := range req.InviteUser {
|
||||
_, ok := inviteUserInfoList[item]
|
||||
if ok {
|
||||
//The inviter can't be himself.
|
||||
if req.UserID != inviteUserInfoList[item].ID {
|
||||
inviteUserIDs = append(inviteUserIDs, inviteUserInfoList[item].ID)
|
||||
}
|
||||
inviteUserIDs = append(inviteUserIDs, inviteUserInfoList[item].ID)
|
||||
}
|
||||
}
|
||||
inviteUserStr := ""
|
||||
|
|
|
@ -226,9 +226,7 @@ func (s *SiteInfoService) SaveSiteUsers(ctx context.Context, req *schema.SiteUse
|
|||
}
|
||||
|
||||
// GetSMTPConfig get smtp config
|
||||
func (s *SiteInfoService) GetSMTPConfig(ctx context.Context) (
|
||||
resp *schema.GetSMTPConfigResp, err error,
|
||||
) {
|
||||
func (s *SiteInfoService) GetSMTPConfig(ctx context.Context) (resp *schema.GetSMTPConfigResp, err error) {
|
||||
emailConfig, err := s.emailService.GetEmailConfig(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -240,13 +238,10 @@ func (s *SiteInfoService) GetSMTPConfig(ctx context.Context) (
|
|||
|
||||
// UpdateSMTPConfig get smtp config
|
||||
func (s *SiteInfoService) UpdateSMTPConfig(ctx context.Context, req *schema.UpdateSMTPConfigReq) (err error) {
|
||||
oldEmailConfig, err := s.emailService.GetEmailConfig(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_ = copier.Copy(oldEmailConfig, req)
|
||||
ec := &export.EmailConfig{}
|
||||
_ = copier.Copy(ec, req)
|
||||
|
||||
err = s.emailService.SetEmailConfig(ctx, oldEmailConfig)
|
||||
err = s.emailService.SetEmailConfig(ctx, ec)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -257,7 +252,7 @@ func (s *SiteInfoService) UpdateSMTPConfig(ctx context.Context, req *schema.Upda
|
|||
}
|
||||
go s.emailService.SendAndSaveCode(ctx, req.TestEmailRecipient, title, body, "", "")
|
||||
}
|
||||
return
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *SiteInfoService) GetSeo(ctx context.Context) (resp *schema.SiteSeoReq, err error) {
|
||||
|
|
|
@ -817,17 +817,20 @@ func (us *UserService) getUserInfoMapping(ctx context.Context, userIDs []string)
|
|||
return userInfoMapping, nil
|
||||
}
|
||||
|
||||
func (us *UserService) SearchUserListByName(ctx context.Context, name string) ([]*schema.UserBasicInfo, error) {
|
||||
func (us *UserService) SearchUserListByName(ctx context.Context, input *schema.GetOtherUserInfoByUsernameReq) ([]*schema.UserBasicInfo, error) {
|
||||
userinfolist := make([]*schema.UserBasicInfo, 0)
|
||||
list, err := us.userRepo.SearchUserListByName(ctx, name)
|
||||
list, err := us.userRepo.SearchUserListByName(ctx, input.Username)
|
||||
if err != nil {
|
||||
return userinfolist, err
|
||||
}
|
||||
avatarMapping := us.siteInfoService.FormatListAvatar(ctx, list)
|
||||
for _, user := range list {
|
||||
userinfo := us.userCommonService.FormatUserBasicInfo(ctx, user)
|
||||
userinfo.Avatar = avatarMapping[user.ID].GetURL()
|
||||
userinfolist = append(userinfolist, userinfo)
|
||||
if input.UserID != user.ID {
|
||||
userinfo := us.userCommonService.FormatUserBasicInfo(ctx, user)
|
||||
userinfo.Avatar = avatarMapping[user.ID].GetURL()
|
||||
userinfolist = append(userinfolist, userinfo)
|
||||
}
|
||||
|
||||
}
|
||||
return userinfolist, nil
|
||||
}
|
||||
|
|
|
@ -3,13 +3,14 @@
|
|||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||
<meta name="theme-color" content="#0033FF" />
|
||||
<meta name="theme-color" />
|
||||
<meta name="generator" content="Answer - https://github.com/answerdev/answer">
|
||||
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
||||
</head>
|
||||
<body>
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
<div id="root">
|
||||
|
||||
<div id="spin-mask">
|
||||
<noscript>
|
||||
<style>
|
||||
|
@ -17,7 +18,7 @@
|
|||
display: none !important;
|
||||
}
|
||||
|
||||
#protect-brower {
|
||||
#protect-browser {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
@ -54,7 +55,7 @@
|
|||
animation: 0.75s linear infinite _doc-spin;
|
||||
}
|
||||
|
||||
#protect-brower {
|
||||
#protect-browser {
|
||||
padding: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
@ -62,8 +63,9 @@
|
|||
<div id="spin-container">
|
||||
<div class="spinner"></div>
|
||||
</div>
|
||||
<div id="protect-brower"></div>
|
||||
<div id="protect-browser"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<script>
|
||||
|
@ -91,20 +93,20 @@
|
|||
name: 'IE',
|
||||
}
|
||||
];
|
||||
function getBrowerTypeAndVersion(){
|
||||
var brower = {
|
||||
function getBrowserTypeAndVersion(){
|
||||
var browser = {
|
||||
name: '',
|
||||
version: ''
|
||||
};
|
||||
var ua = navigator.userAgent.toLowerCase();
|
||||
var s;
|
||||
((ua.indexOf("compatible") > -1 && ua.indexOf("MSIE") > -1) || (ua.indexOf('Trident') > -1 && ua.indexOf("rv:11.0") > -1)) ? brower = { name: 'IE', version: '' } :
|
||||
(s = ua.match(/edge\/([\d\.]+)/)) ? brower = { name: 'Edge', version: s[1] } :
|
||||
(s = ua.match(/firefox\/([\d\.]+)/)) ? brower = { name: 'Firefox', version: s[1] } :
|
||||
(s = ua.match(/chrome\/([\d\.]+)/)) ? brower = { name: 'Chrome', version: s[1] } :
|
||||
(s = ua.match(/version\/([\d\.]+).*safari/)) ? brower = { name: 'Safari', version: s[1] } : brower = { name: 'unknown', version: '' };
|
||||
((ua.indexOf("compatible") > -1 && ua.indexOf("MSIE") > -1) || (ua.indexOf('Trident') > -1 && ua.indexOf("rv:11.0") > -1)) ? browser = { name: 'IE', version: '' } :
|
||||
(s = ua.match(/edge\/([\d\.]+)/)) ? browser = { name: 'Edge', version: s[1] } :
|
||||
(s = ua.match(/firefox\/([\d\.]+)/)) ? browser = { name: 'Firefox', version: s[1] } :
|
||||
(s = ua.match(/chrome\/([\d\.]+)/)) ? browser = { name: 'Chrome', version: s[1] } :
|
||||
(s = ua.match(/version\/([\d\.]+).*safari/)) ? browser = { name: 'Safari', version: s[1] } : browser = { name: 'unknown', version: '' };
|
||||
// 根据关系进行判断
|
||||
return brower;
|
||||
return browser;
|
||||
}
|
||||
|
||||
function compareVersion(version1, version2) {
|
||||
|
@ -129,25 +131,23 @@
|
|||
return 0;
|
||||
}
|
||||
|
||||
const browerInfo = getBrowerTypeAndVersion();
|
||||
const browserInfo = getBrowserTypeAndVersion();
|
||||
|
||||
|
||||
if (browerInfo.name === 'IE') {
|
||||
const div = document.getElementById('protect-brower');
|
||||
if (browserInfo.name === 'IE') {
|
||||
const div = document.getElementById('protect-browser');
|
||||
div.innerText = 'Sorry, this site does not support Internet Explorer. In order to avoid affecting the normal use of our features, please use a more modern browser such as Edge, Firefox, Chrome, or Safari.'
|
||||
} else {
|
||||
const notSupport = defaultList.some(item => {
|
||||
if (item.name === browerInfo.name) {
|
||||
return compareVersion(browerInfo.version, item.version) === -1;
|
||||
if (item.name === browserInfo.name) {
|
||||
return compareVersion(browserInfo.version, item.version) === -1;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
if (notSupport) {
|
||||
const div = document.getElementById('protect-brower');
|
||||
const div = document.getElementById('protect-browser');
|
||||
div.innerText = 'The current browser version is too low, in order not to affect the normal use of the function, please upgrade the browser to the latest version.'
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
</html>
|
||||
|
|
|
@ -3,3 +3,4 @@ $enable-negative-margins: true;
|
|||
$blue: #0033FF !default;
|
||||
$placeholder-opacity-max: .2;
|
||||
$placeholder-opacity-min: .1;
|
||||
$enable-smooth-scroll: false;
|
||||
|
|
|
@ -8,6 +8,8 @@ export const CAPTCHA_CODE_STORAGE_KEY = '_a_captcha_';
|
|||
export const DRAFT_QUESTION_STORAGE_KEY = '_a_dq_';
|
||||
export const DRAFT_ANSWER_STORAGE_KEY = '_a_da_';
|
||||
export const DRAFT_TIMESIGH_STORAGE_KEY = '|_a_t_s_|';
|
||||
export const QUESTIONS_ORDER_STORAGE_KEY = '_a_qok_';
|
||||
|
||||
export const USER_AGENT_NAMES = {
|
||||
SegmentFault: 'SegmentFault',
|
||||
WeChat: 'WeChat',
|
||||
|
|
|
@ -109,6 +109,15 @@ enum RoleId {
|
|||
Admin = 2,
|
||||
Moderator = 3,
|
||||
}
|
||||
|
||||
export interface User {
|
||||
username: string;
|
||||
rank: number;
|
||||
vote_count: number;
|
||||
display_name: string;
|
||||
avatar: string;
|
||||
}
|
||||
|
||||
export interface UserInfoBase {
|
||||
id?: string;
|
||||
avatar: any;
|
||||
|
@ -122,7 +131,7 @@ export interface UserInfoBase {
|
|||
*/
|
||||
status?: string;
|
||||
/** roles */
|
||||
role_id: RoleId;
|
||||
role_id?: RoleId;
|
||||
}
|
||||
|
||||
export interface UserInfoRes extends UserInfoBase {
|
||||
|
@ -161,7 +170,7 @@ export interface PasswordResetReq extends ImgCodeReq {
|
|||
}
|
||||
|
||||
export interface CheckImgReq {
|
||||
action: 'login' | 'e_mail' | 'find_pass';
|
||||
action: 'login' | 'e_mail' | 'find_pass' | 'modify_pass';
|
||||
}
|
||||
|
||||
export interface SetNoticeReq {
|
||||
|
@ -333,6 +342,7 @@ export interface AdminSettingsUsers {
|
|||
allow_update_username: boolean;
|
||||
allow_update_website: boolean;
|
||||
default_avatar: string;
|
||||
gravatar_base_url: string;
|
||||
}
|
||||
|
||||
export interface SiteSettings {
|
||||
|
@ -539,14 +549,6 @@ export interface MemberActionItem {
|
|||
type: string;
|
||||
}
|
||||
|
||||
export interface User {
|
||||
username: string;
|
||||
rank: number;
|
||||
vote_count: number;
|
||||
display_name: string;
|
||||
avatar: string;
|
||||
}
|
||||
|
||||
export interface QuestionOperationReq {
|
||||
id: string;
|
||||
operation: 'pin' | 'unpin' | 'hide' | 'show';
|
||||
|
@ -568,8 +570,3 @@ export interface UserOauthConnectorItem extends OauthConnectorItem {
|
|||
binding: boolean;
|
||||
external_id: string;
|
||||
}
|
||||
|
||||
export interface QuestionOperationReq {
|
||||
id: string;
|
||||
operation: 'pin' | 'unpin' | 'hide' | 'show';
|
||||
}
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
.page-main {
|
||||
max-width: 70%;
|
||||
}
|
||||
.page-right-side {
|
||||
flex: none;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
// lg
|
||||
@media screen and (max-width: 1199.9px) {
|
||||
.page-main {
|
||||
max-width: 100%;
|
||||
}
|
||||
.page-right-side {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
|
@ -27,12 +27,15 @@ const Index: FC<IProps> = ({ avatar, size, className, searchStr = '' }) => {
|
|||
url = `${avatar.custom}?${searchStr}`;
|
||||
}
|
||||
|
||||
const roundedCls =
|
||||
className && className.indexOf('rounded') !== -1 ? '' : 'rounded';
|
||||
|
||||
return (
|
||||
<img
|
||||
src={url || DefaultAvatar}
|
||||
width={size}
|
||||
height={size}
|
||||
className={classNames('rounded', className)}
|
||||
className={classNames(roundedCls, className)}
|
||||
alt=""
|
||||
/>
|
||||
);
|
||||
|
|
|
@ -19,7 +19,7 @@ const Index: FC<Props> = ({
|
|||
showAvatar = true,
|
||||
avatarClass = '',
|
||||
avatarSize = '20px',
|
||||
className = 'fs-14',
|
||||
className = 'small',
|
||||
avatarSearchStr = 's=48',
|
||||
showReputation = true,
|
||||
}) => {
|
||||
|
|
|
@ -22,7 +22,7 @@ const ActionBar = ({
|
|||
const { t } = useTranslation('translation', { keyPrefix: 'comment' });
|
||||
|
||||
return (
|
||||
<div className="d-flex justify-content-between fs-14">
|
||||
<div className="d-flex justify-content-between small">
|
||||
<div className="d-flex align-items-center link-secondary">
|
||||
{userStatus !== 'deleted' ? (
|
||||
<Link to={`/users/${username}`}>{nickName}</Link>
|
||||
|
|
|
@ -33,7 +33,7 @@ const Index = ({ userName, onSendReply, onCancel, mode }) => {
|
|||
|
||||
return (
|
||||
<div className="mb-2">
|
||||
<div className="fs-14 mb-2">
|
||||
<div className="small mb-2">
|
||||
{t('reply_to')} {userName}
|
||||
</div>
|
||||
<div className="d-flex mb-1 align-items-start flex-column flex-md-row">
|
||||
|
|
|
@ -258,13 +258,13 @@ const Comment = ({ objectId, mode, commentId }) => {
|
|||
) : (
|
||||
<div className="d-block">
|
||||
{item.reply_user_display_name && (
|
||||
<Link to="." className="fs-14 me-1 text-nowrap">
|
||||
<Link to="." className="small me-1 text-nowrap">
|
||||
@{item.reply_user_display_name}
|
||||
</Link>
|
||||
)}
|
||||
|
||||
<div
|
||||
className="fmt fs-14 text-break text-wrap"
|
||||
className="fmt small text-break text-wrap"
|
||||
dangerouslySetInnerHTML={{ __html: item.parsed_text }}
|
||||
/>
|
||||
</div>
|
||||
|
@ -306,7 +306,8 @@ const Comment = ({ objectId, mode, commentId }) => {
|
|||
<div className="mt-2">
|
||||
<Button
|
||||
variant="link"
|
||||
className="p-0 fs-14 btn-no-border"
|
||||
className="p-0 btn-no-border"
|
||||
size="sm"
|
||||
onClick={() => {
|
||||
if (tryNormalLogged(true)) {
|
||||
setVisibleComment(!visibleComment);
|
||||
|
@ -317,7 +318,8 @@ const Comment = ({ objectId, mode, commentId }) => {
|
|||
{data && (pageIndex || 1) < Math.ceil((data?.count || 0) / pageSize) && (
|
||||
<Button
|
||||
variant="link"
|
||||
className="p-0 fs-14 ms-3 btn-no-border"
|
||||
size="sm"
|
||||
className="p-0 ms-3 btn-no-border"
|
||||
onClick={() => {
|
||||
setPageIndex(pageIndex + 1);
|
||||
}}>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { FC } from 'react';
|
||||
import { FC, useLayoutEffect } from 'react';
|
||||
import { Helmet } from 'react-helmet-async';
|
||||
|
||||
import Color from 'color';
|
||||
|
@ -11,10 +11,17 @@ const Index: FC = () => {
|
|||
let primaryColor;
|
||||
if (theme_config?.[theme]?.primary_color) {
|
||||
primaryColor = Color(theme_config[theme].primary_color);
|
||||
document
|
||||
.querySelector('meta[name="theme-color"]')
|
||||
?.setAttribute('content', primaryColor.hex());
|
||||
}
|
||||
const setThemeColor = () => {
|
||||
const themeMetaNode = document.querySelector('meta[name="theme-color"]');
|
||||
if (themeMetaNode) {
|
||||
const themeColor = primaryColor ? primaryColor.hex() : '#0033ff';
|
||||
themeMetaNode.setAttribute('content', themeColor);
|
||||
}
|
||||
};
|
||||
useLayoutEffect(() => {
|
||||
setThemeColor();
|
||||
}, [primaryColor]);
|
||||
|
||||
return (
|
||||
<Helmet>
|
||||
|
|
|
@ -94,7 +94,7 @@ const Index: FC<Props> = ({
|
|||
{objectType === 'tag' && opts?.showTagUrlSlug && (
|
||||
<div
|
||||
className={classnames(
|
||||
'fs-14 font-monospace',
|
||||
'small font-monospace',
|
||||
newData.original_text && 'mb-4',
|
||||
)}
|
||||
dangerouslySetInnerHTML={{
|
||||
|
@ -113,7 +113,7 @@ const Index: FC<Props> = ({
|
|||
dangerouslySetInnerHTML={{
|
||||
__html: diffText(newData.original_text, oldData?.original_text),
|
||||
}}
|
||||
className="pre-line text-break font-monospace fs-14"
|
||||
className="pre-line text-break font-monospace small"
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
|
|
@ -29,7 +29,7 @@ const Heading: FC<IEditorContext> = (context) => {
|
|||
label: t('heading.options.h4'),
|
||||
},
|
||||
{
|
||||
text: `<h5 class="mb-0 fs-14">${t('heading.options.h5')}</h5>`,
|
||||
text: `<h5 class="mb-0 small">${t('heading.options.h5')}</h5>`,
|
||||
level: 5,
|
||||
label: t('heading.options.h5'),
|
||||
},
|
||||
|
|
|
@ -94,13 +94,17 @@ export function htmlRender(el: HTMLElement | null) {
|
|||
|
||||
el.querySelectorAll('.language-mermaid').forEach((pre) => {
|
||||
const flag = Date.now();
|
||||
mermaid.render(`theGraph${flag}`, pre.textContent, function (svgCode) {
|
||||
const p = document.createElement('p');
|
||||
p.className = 'text-center';
|
||||
p.innerHTML = svgCode;
|
||||
mermaid.render(
|
||||
`theGraph${flag}`,
|
||||
pre.textContent || '',
|
||||
function (svgCode) {
|
||||
const p = document.createElement('p');
|
||||
p.className = 'text-center';
|
||||
p.innerHTML = svgCode;
|
||||
|
||||
pre.parentNode?.replaceChild(p, pre);
|
||||
});
|
||||
pre.parentNode?.replaceChild(p, pre);
|
||||
},
|
||||
);
|
||||
});
|
||||
});
|
||||
import('katex/contrib/auto-render/auto-render').then(
|
||||
|
|
|
@ -13,7 +13,7 @@ const Index = () => {
|
|||
return (
|
||||
<footer className="bg-light">
|
||||
<Container className="py-3">
|
||||
<p className="text-center mb-0 fs-14 text-secondary">
|
||||
<p className="text-center mb-0 small text-secondary">
|
||||
<Trans i18nKey="footer.build_on" values={{ cc }}>
|
||||
Built on
|
||||
{/* eslint-disable-next-line react/jsx-no-target-blank */}
|
||||
|
|
|
@ -63,29 +63,16 @@ const Index: FC<Props> = ({ redDot, userInfo, logOut }) => {
|
|||
onClick={handleLinkClick}>
|
||||
{t('header.nav.profile')}
|
||||
</Dropdown.Item>
|
||||
<Dropdown.Item
|
||||
href={`/users/${userInfo.username}/bookmarks`}
|
||||
onClick={handleLinkClick}>
|
||||
{t('header.nav.bookmark')}
|
||||
</Dropdown.Item>
|
||||
<Dropdown.Item
|
||||
href="/users/settings/profile"
|
||||
onClick={handleLinkClick}>
|
||||
{t('header.nav.setting')}
|
||||
</Dropdown.Item>
|
||||
{userInfo?.role_id === 2 ? (
|
||||
<Dropdown.Item href="/admin" onClick={handleLinkClick}>
|
||||
{t('header.nav.admin')}
|
||||
</Dropdown.Item>
|
||||
) : null}
|
||||
{redDot?.can_revision ? (
|
||||
<Dropdown.Item
|
||||
href="/review"
|
||||
className="position-relative"
|
||||
onClick={handleLinkClick}>
|
||||
{t('header.nav.review')}
|
||||
{redDot?.revision > 0 && (
|
||||
<span className="position-absolute top-50 translate-middle-y end-0 me-3 p-2 bg-danger border border-light rounded-circle">
|
||||
<span className="visually-hidden">New Review</span>
|
||||
</span>
|
||||
)}
|
||||
</Dropdown.Item>
|
||||
) : null}
|
||||
<Dropdown.Divider />
|
||||
<Dropdown.Item onClick={logOut}>
|
||||
{t('header.nav.logout')}
|
||||
|
|
|
@ -52,10 +52,14 @@
|
|||
&.theme-light {
|
||||
background: linear-gradient(180deg, rgb(255, 255, 255) 0%, rgba(255, 255, 255, 0.95) 100%);
|
||||
}
|
||||
|
||||
.maxw-400 {
|
||||
max-width: 400px;;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media (max-width: 992.9px) {
|
||||
@media (max-width: 991.9px) {
|
||||
#header {
|
||||
.nav-grow {
|
||||
flex-grow: 1!important;
|
||||
|
@ -65,8 +69,8 @@
|
|||
display: flex!important;
|
||||
}
|
||||
|
||||
.w-75 {
|
||||
width: 100% !important;
|
||||
.maxw-400 {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -11,7 +11,6 @@ import {
|
|||
import { useTranslation } from 'react-i18next';
|
||||
import {
|
||||
useSearchParams,
|
||||
NavLink,
|
||||
Link,
|
||||
useNavigate,
|
||||
useLocation,
|
||||
|
@ -20,13 +19,14 @@ import {
|
|||
|
||||
import classnames from 'classnames';
|
||||
|
||||
import { userCenter } from '@/utils';
|
||||
import { userCenter, floppyNavigation } from '@/utils';
|
||||
import {
|
||||
loggedUserInfoStore,
|
||||
siteInfoStore,
|
||||
brandingStore,
|
||||
loginSettingStore,
|
||||
themeSettingStore,
|
||||
sideNavStore,
|
||||
} from '@/stores';
|
||||
import { logout, useQueryNotificationStatus } from '@/services';
|
||||
|
||||
|
@ -45,6 +45,7 @@ const Header: FC = () => {
|
|||
const siteInfo = siteInfoStore((state) => state.siteInfo);
|
||||
const brandingInfo = brandingStore((state) => state.branding);
|
||||
const loginSetting = loginSettingStore((state) => state.login);
|
||||
const { updateReiview, updateVisible } = sideNavStore();
|
||||
const { data: redDot } = useQueryNotificationStatus();
|
||||
/**
|
||||
* Automatically append `tag` information when creating a question
|
||||
|
@ -55,6 +56,13 @@ const Header: FC = () => {
|
|||
askUrl = `${askUrl}?tags=${tagMatch.params.slugName}`;
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
updateReiview({
|
||||
can_revision: Boolean(redDot?.can_revision),
|
||||
revision: Number(redDot?.revision),
|
||||
});
|
||||
}, [redDot]);
|
||||
|
||||
const handleInput = (val) => {
|
||||
setSearch(val);
|
||||
};
|
||||
|
@ -106,10 +114,13 @@ const Header: FC = () => {
|
|||
aria-controls="navBarContent"
|
||||
className="answer-navBar me-2"
|
||||
id="navBarToggle"
|
||||
onClick={() => {
|
||||
updateVisible();
|
||||
}}
|
||||
/>
|
||||
|
||||
<div className="d-flex justify-content-between align-items-center nav-grow flex-nowrap">
|
||||
<Navbar.Brand to="/" as={Link} className="lh-1 me-0 me-sm-3 p-0">
|
||||
<Navbar.Brand to="/" as={Link} className="lh-1 me-0 me-sm-5 p-0">
|
||||
{brandingInfo.logo ? (
|
||||
<>
|
||||
<img
|
||||
|
@ -141,6 +152,7 @@ const Header: FC = () => {
|
|||
'link-light': navbarStyle === 'theme-colored',
|
||||
'link-primary': navbarStyle !== 'theme-colored',
|
||||
})}
|
||||
onClick={() => floppyNavigation.storageLoginRedirect()}
|
||||
href={userCenter.getLoginUrl()}>
|
||||
{t('btns.login')}
|
||||
</Button>
|
||||
|
@ -159,26 +171,11 @@ const Header: FC = () => {
|
|||
</div>
|
||||
|
||||
<Navbar.Collapse id="navBarContent" className="me-auto">
|
||||
<hr className="hr lg-none mb-2" style={{ marginTop: '12px' }} />
|
||||
<Col md={4}>
|
||||
<Nav>
|
||||
<NavLink className="nav-link" to="/questions">
|
||||
{t('header.nav.question')}
|
||||
</NavLink>
|
||||
<NavLink className="nav-link" to="/tags">
|
||||
{t('header.nav.tag')}
|
||||
</NavLink>
|
||||
<NavLink className="nav-link" to="/users">
|
||||
{t('header.nav.user')}
|
||||
</NavLink>
|
||||
</Nav>
|
||||
</Col>
|
||||
<hr className="hr lg-none mt-2" />
|
||||
|
||||
<Col lg={4} className="d-flex justify-content-center">
|
||||
<hr className="hr lg-none mb-3" style={{ marginTop: '12px' }} />
|
||||
<Col lg={8} className="ps-0">
|
||||
<Form
|
||||
action="/search"
|
||||
className="w-75 px-0 px-lg-2"
|
||||
className="w-100 maxw-400"
|
||||
onSubmit={handleSearch}>
|
||||
<FormControl
|
||||
placeholder={t('header.search.placeholder')}
|
||||
|
@ -228,6 +225,7 @@ const Header: FC = () => {
|
|||
'link-light': navbarStyle === 'theme-colored',
|
||||
'link-primary': navbarStyle !== 'theme-colored',
|
||||
})}
|
||||
onClick={() => floppyNavigation.storageLoginRedirect()}
|
||||
href={userCenter.getLoginUrl()}>
|
||||
{t('btns.login')}
|
||||
</Button>
|
||||
|
|
|
@ -29,7 +29,7 @@ const HotQuestions: FC = () => {
|
|||
<div className="link-dark">{li.title}</div>
|
||||
{li.answer_count > 0 ? (
|
||||
<div
|
||||
className={`d-flex align-items-center fs-14 mt-1 ${
|
||||
className={`d-flex align-items-center small mt-1 ${
|
||||
li.accepted_answer_id > 0
|
||||
? 'link-success'
|
||||
: 'link-secondary'
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React from 'react';
|
||||
import { useEffect } from 'react';
|
||||
import { Modal, Form, Button, InputGroup } from 'react-bootstrap';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
|
@ -30,6 +30,13 @@ const Index: React.FC<IProps> = ({
|
|||
}) => {
|
||||
const { t } = useTranslation('translation', { keyPrefix: 'pic_auth_code' });
|
||||
const { captcha, imgCode } = data;
|
||||
|
||||
useEffect(() => {
|
||||
if (visible) {
|
||||
refreshImgCode();
|
||||
}
|
||||
}, [visible]);
|
||||
|
||||
return (
|
||||
<Modal size="sm" title="Captcha" show={visible} onHide={onClose} centered>
|
||||
<Modal.Header closeButton>
|
||||
|
|
|
@ -252,7 +252,7 @@ const Index: FC<IProps> = ({
|
|||
<Link
|
||||
key={item.action}
|
||||
to={editUrl}
|
||||
className="link-secondary p-0 fs-14 ms-3"
|
||||
className="link-secondary p-0 small ms-3"
|
||||
onClick={(evt) => handleEdit(evt, editUrl)}
|
||||
style={{ lineHeight: '23px' }}>
|
||||
{item.name}
|
||||
|
@ -263,7 +263,8 @@ const Index: FC<IProps> = ({
|
|||
<Button
|
||||
key={item.action}
|
||||
variant="link"
|
||||
className="link-secondary p-0 fs-14 ms-3"
|
||||
size="sm"
|
||||
className="link-secondary p-0 ms-3"
|
||||
onClick={() => handleAction(item.action)}>
|
||||
{item.name}
|
||||
</Button>
|
||||
|
@ -273,7 +274,8 @@ const Index: FC<IProps> = ({
|
|||
<Dropdown className="ms-3">
|
||||
<Dropdown.Toggle
|
||||
variant="link"
|
||||
className="link-secondary p-0 fs-14 no-toggle">
|
||||
size="sm"
|
||||
className="link-secondary p-0 no-toggle">
|
||||
{t('action', { keyPrefix: 'question_detail' })}
|
||||
</Dropdown.Toggle>
|
||||
<Dropdown.Menu>
|
||||
|
|
|
@ -2,6 +2,7 @@ import { FC, useEffect, useLayoutEffect } from 'react';
|
|||
import { Helmet } from 'react-helmet-async';
|
||||
|
||||
import { brandingStore, pageTagStore, siteInfoStore } from '@/stores';
|
||||
import { getCurrentLang } from '@/utils/localize';
|
||||
|
||||
const doInsertCustomCSS = !document.querySelector('link[href*="custom.css"]');
|
||||
|
||||
|
@ -32,7 +33,19 @@ const Index: FC = () => {
|
|||
// eslint-disable-next-line no-empty
|
||||
} catch (ex) {}
|
||||
};
|
||||
const currentLang = getCurrentLang();
|
||||
const setDocLang = () => {
|
||||
if (currentLang) {
|
||||
document.documentElement.setAttribute(
|
||||
'lang',
|
||||
currentLang.replace('_', '-'),
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
setDocLang();
|
||||
}, [currentLang]);
|
||||
useEffect(() => {
|
||||
setAppGenerator();
|
||||
}, [appVersion]);
|
||||
|
|
|
@ -3,8 +3,8 @@ import { ListGroup } from 'react-bootstrap';
|
|||
import { NavLink, useSearchParams } from 'react-router-dom';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import type { QuestionOrderBy } from '@/common/interface';
|
||||
import { pathFactory } from '@/router/pathFactory';
|
||||
import type * as Type from '@/common/interface';
|
||||
import {
|
||||
Tag,
|
||||
Pagination,
|
||||
|
@ -16,25 +16,32 @@ import {
|
|||
Counts,
|
||||
Icon,
|
||||
} from '@/components';
|
||||
import * as Type from '@/common/interface';
|
||||
|
||||
const QuestionOrderKeys: Type.QuestionOrderBy[] = [
|
||||
export const QUESTION_ORDER_KEYS: Type.QuestionOrderBy[] = [
|
||||
'active',
|
||||
'newest',
|
||||
'frequent',
|
||||
'score',
|
||||
'unanswered',
|
||||
];
|
||||
|
||||
interface Props {
|
||||
source: 'questions' | 'tag';
|
||||
order?: QuestionOrderBy;
|
||||
data;
|
||||
isLoading: boolean;
|
||||
}
|
||||
|
||||
const QuestionList: FC<Props> = ({ source, data, isLoading = false }) => {
|
||||
const QuestionList: FC<Props> = ({
|
||||
source,
|
||||
order,
|
||||
data,
|
||||
isLoading = false,
|
||||
}) => {
|
||||
const { t } = useTranslation('translation', { keyPrefix: 'question' });
|
||||
const [urlSearchParams] = useSearchParams();
|
||||
const curOrder = urlSearchParams.get('order') || QuestionOrderKeys[0];
|
||||
const curOrder =
|
||||
order || urlSearchParams.get('order') || QUESTION_ORDER_KEYS[0];
|
||||
const curPage = Number(urlSearchParams.get('page')) || 1;
|
||||
const pageSize = 20;
|
||||
const count = data?.count || 0;
|
||||
|
@ -47,7 +54,7 @@ const QuestionList: FC<Props> = ({ source, data, isLoading = false }) => {
|
|||
: t('x_questions', { count })}
|
||||
</h5>
|
||||
<QueryGroup
|
||||
data={QuestionOrderKeys}
|
||||
data={QUESTION_ORDER_KEYS}
|
||||
currentSort={curOrder}
|
||||
pathname={source === 'questions' ? '/questions' : ''}
|
||||
i18nKeyPrefix="question"
|
||||
|
@ -77,7 +84,7 @@ const QuestionList: FC<Props> = ({ source, data, isLoading = false }) => {
|
|||
{li.status === 2 ? ` [${t('closed')}]` : ''}
|
||||
</NavLink>
|
||||
</h5>
|
||||
<div className="d-flex flex-column flex-md-row align-items-md-center fs-14 mb-2 text-secondary">
|
||||
<div className="d-flex flex-column flex-md-row align-items-md-center small mb-2 text-secondary">
|
||||
<div className="d-flex">
|
||||
<BaseUserCard
|
||||
data={li.operator}
|
||||
|
|
|
@ -71,7 +71,7 @@ const Index: FC<IProps> = ({ type, qid, aid, title, slugTitle = '' }) => {
|
|||
<Dropdown.Toggle
|
||||
id="dropdown-share"
|
||||
as="a"
|
||||
className="no-toggle fs-14 link-secondary pointer"
|
||||
className="no-toggle small link-secondary pointer"
|
||||
onClick={() => setShow(true)}
|
||||
style={{ lineHeight: '23px' }}>
|
||||
{t('share.name')}
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
|
||||
#sideNav {
|
||||
.nav-wrap {
|
||||
position: sticky;
|
||||
width: auto;
|
||||
top: 62px;
|
||||
box-sizing: border-box;
|
||||
max-height: calc(100vh - 74px - 62px - 24px);
|
||||
overflow-y: auto;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.nav {
|
||||
max-width: calc(100% - 24px);
|
||||
}
|
||||
.nav-link {
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
}
|
||||
.nav-link:hover {
|
||||
color: rgba(0, 0, 0);
|
||||
background-color: var(--bs-gray-100);
|
||||
}
|
||||
.nav-link.active {
|
||||
color: black;
|
||||
background-color: var(--bs-gray-200);
|
||||
}
|
||||
.side-nav-right-line {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 12px;
|
||||
width: 1px;
|
||||
height: 100%;
|
||||
background-color: var(--bs-gray-300);
|
||||
min-height: calc(100vh - 62px - 74px);
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 991.9px) {
|
||||
#sideNav {
|
||||
.nav {
|
||||
max-width: 100%;
|
||||
}
|
||||
.side-nav-right-line {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
import { FC } from 'react';
|
||||
import { Col, Nav } from 'react-bootstrap';
|
||||
import { NavLink, useLocation } from 'react-router-dom';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import classnames from 'classnames';
|
||||
|
||||
import { loggedUserInfoStore, sideNavStore } from '@/stores';
|
||||
import { Icon } from '@/components';
|
||||
import './index.scss';
|
||||
|
||||
const Index: FC = () => {
|
||||
const { t } = useTranslation();
|
||||
const { pathname } = useLocation();
|
||||
const { user: userInfo } = loggedUserInfoStore();
|
||||
const { visible, can_revision, revision } = sideNavStore();
|
||||
return (
|
||||
<Col
|
||||
xl={2}
|
||||
lg={3}
|
||||
md={12}
|
||||
className={classnames(
|
||||
'position-relative',
|
||||
visible ? '' : 'd-none d-lg-block',
|
||||
)}
|
||||
id="sideNav">
|
||||
<div className="nav-wrap pt-4">
|
||||
<Nav variant="pills" className="flex-column">
|
||||
<NavLink
|
||||
to="/questions"
|
||||
className={({ isActive }) =>
|
||||
isActive || pathname === '/' ? 'nav-link active' : 'nav-link'
|
||||
}>
|
||||
<Icon name="question-circle-fill" className="me-2" />
|
||||
<span>{t('header.nav.question')}</span>
|
||||
</NavLink>
|
||||
|
||||
<NavLink to="/tags" className="nav-link">
|
||||
<Icon name="tags-fill" className="me-2" />
|
||||
<span>{t('header.nav.tag')}</span>
|
||||
</NavLink>
|
||||
|
||||
<NavLink to="/users" className="nav-link">
|
||||
<Icon name="people-fill" className="me-2" />
|
||||
<span>{t('header.nav.user')}</span>
|
||||
</NavLink>
|
||||
|
||||
{can_revision || userInfo?.role_id === 2 ? (
|
||||
<>
|
||||
<div className="py-2 px-3 mt-3 small fw-bold">
|
||||
{t('header.nav.moderation')}
|
||||
</div>
|
||||
{can_revision && (
|
||||
<NavLink to="/review" className="nav-link">
|
||||
<span>{t('header.nav.review')}</span>
|
||||
<span className="float-end">
|
||||
{revision > 99 ? '99+' : revision > 0 ? revision : ''}
|
||||
</span>
|
||||
</NavLink>
|
||||
)}
|
||||
|
||||
{userInfo?.role_id === 2 ? (
|
||||
<NavLink to="/admin" className="nav-link">
|
||||
{t('header.nav.admin')}
|
||||
</NavLink>
|
||||
) : null}
|
||||
</>
|
||||
) : null}
|
||||
</Nav>
|
||||
</div>
|
||||
<div className="side-nav-right-line" />
|
||||
</Col>
|
||||
);
|
||||
};
|
||||
|
||||
export default Index;
|
|
@ -6,9 +6,9 @@ import { useTranslation } from 'react-i18next';
|
|||
import { marked } from 'marked';
|
||||
import classNames from 'classnames';
|
||||
|
||||
import { useTagModal } from '@/hooks';
|
||||
import { useTagModal, useToast } from '@/hooks';
|
||||
import type * as Type from '@/common/interface';
|
||||
import { queryTags } from '@/services';
|
||||
import { queryTags, useUserPermission } from '@/services';
|
||||
|
||||
import './index.scss';
|
||||
|
||||
|
@ -42,7 +42,8 @@ const TagSelector: FC<IProps> = ({
|
|||
const [tags, setTags] = useState<Type.Tag[] | null>(null);
|
||||
const { t } = useTranslation('translation', { keyPrefix: 'tag_selector' });
|
||||
const [visibleMenu, setVisibleMenu] = useState(false);
|
||||
|
||||
const { data: userPermission } = useUserPermission('tag.add');
|
||||
const toast = useToast();
|
||||
const tagModal = useTagModal({
|
||||
onConfirm: (data) => {
|
||||
if (!(onChange instanceof Function)) {
|
||||
|
@ -109,6 +110,11 @@ const TagSelector: FC<IProps> = ({
|
|||
fetchTags(searchValue);
|
||||
}, [visibleMenu]);
|
||||
|
||||
const resetSearch = () => {
|
||||
setCurrentIndex(0);
|
||||
setSearchValue('');
|
||||
setTags([]);
|
||||
};
|
||||
const handleClick = (val: Type.Tag) => {
|
||||
const findIndex = initialValue.findIndex(
|
||||
(item) => item.slug_name.toLowerCase() === val.slug_name.toLowerCase(),
|
||||
|
@ -129,6 +135,7 @@ const TagSelector: FC<IProps> = ({
|
|||
setRepeatIndex(-1);
|
||||
}, 2000);
|
||||
}
|
||||
resetSearch();
|
||||
};
|
||||
|
||||
const handleRemove = (val: Type.Tag) => {
|
||||
|
@ -177,12 +184,25 @@ const TagSelector: FC<IProps> = ({
|
|||
}
|
||||
if (currentIndex <= tags.length - 1) {
|
||||
handleClick(tags[currentIndex]);
|
||||
if (currentIndex === tags.length - 1 && currentIndex > 0) {
|
||||
setCurrentIndex(currentIndex - 1);
|
||||
}
|
||||
// if (currentIndex === tags.length - 1 && currentIndex > 0) {
|
||||
// setCurrentIndex(currentIndex - 1);
|
||||
// }
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const handleCreate = () => {
|
||||
const tagAddPermission = userPermission?.['tag.add'];
|
||||
if (!tagAddPermission || tagAddPermission?.has_permission) {
|
||||
tagModal.onShow(searchValue);
|
||||
} else if (tagAddPermission?.no_permission_tip) {
|
||||
toast.onShow({
|
||||
msg: tagAddPermission.no_permission_tip,
|
||||
variant: 'danger',
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div
|
||||
className="tag-selector-wrap"
|
||||
|
@ -261,9 +281,7 @@ const TagSelector: FC<IProps> = ({
|
|||
<Button
|
||||
variant="link"
|
||||
className="px-3 btn-no-border w-100 text-start"
|
||||
onClick={() => {
|
||||
tagModal.onShow(searchValue);
|
||||
}}>
|
||||
onClick={handleCreate}>
|
||||
+ {t('create_btn')}
|
||||
</Button>
|
||||
)}
|
||||
|
|
|
@ -25,7 +25,7 @@ const Index: FC<Props> = ({ count = 20 }) => {
|
|||
/>
|
||||
|
||||
<p
|
||||
className="placeholder fs-14 text-truncate-3 w-100"
|
||||
className="placeholder small text-truncate-3 w-100"
|
||||
style={{ height: '42px' }}
|
||||
/>
|
||||
<div className="d-flex align-items-center">
|
||||
|
@ -34,7 +34,7 @@ const Index: FC<Props> = ({ count = 20 }) => {
|
|||
style={{ width: '80px', height: '31px' }}
|
||||
/>
|
||||
<span
|
||||
className="placeholder text-secondary fs-14 text-nowrap"
|
||||
className="placeholder text-secondary small text-nowrap"
|
||||
style={{ width: '100px', height: '21px' }}
|
||||
/>
|
||||
</div>
|
||||
|
|
|
@ -58,7 +58,7 @@ const Index: FC<Props> = ({
|
|||
/>
|
||||
</>
|
||||
)}
|
||||
<div className="fs-14 text-secondary d-flex flex-row flex-md-column align-items-center align-items-md-start">
|
||||
<div className="small text-secondary d-flex flex-row flex-md-column align-items-center align-items-md-start">
|
||||
<div className="me-1 me-md-0">
|
||||
{data?.status !== 'deleted' ? (
|
||||
<Link to={`/users/${data?.username}`} className="me-1 text-break">
|
||||
|
|
|
@ -40,6 +40,7 @@ import HotQuestions from './HotQuestions';
|
|||
import HttpErrorContent from './HttpErrorContent';
|
||||
import CustomSidebar from './CustomSidebar';
|
||||
import ImgViewer from './ImgViewer';
|
||||
import SideNav from './SideNav';
|
||||
|
||||
export {
|
||||
Avatar,
|
||||
|
@ -86,5 +87,6 @@ export {
|
|||
HttpErrorContent,
|
||||
CustomSidebar,
|
||||
ImgViewer,
|
||||
SideNav,
|
||||
};
|
||||
export type { EditorRef, JSONSchema, UISchema };
|
||||
|
|
|
@ -99,7 +99,7 @@ const useEditStatusModal = ({
|
|||
<FormCheck.Label htmlFor={item.type}>
|
||||
<span className="fw-bold">{item.name}</span>
|
||||
<br />
|
||||
<span className="fs-14 text-secondary">
|
||||
<span className="small text-secondary">
|
||||
{item.description}
|
||||
</span>
|
||||
</FormCheck.Label>
|
||||
|
|
|
@ -9,7 +9,7 @@ toastPortal.style.top = '90px';
|
|||
toastPortal.style.left = '0';
|
||||
toastPortal.style.right = '0';
|
||||
toastPortal.style.margin = 'auto';
|
||||
toastPortal.style.zIndex = '5';
|
||||
toastPortal.style.zIndex = '1001';
|
||||
|
||||
const setPortalPosition = () => {
|
||||
const header = document.querySelector('#header');
|
||||
|
|
|
@ -31,9 +31,6 @@ a {
|
|||
text-decoration: none;
|
||||
}
|
||||
|
||||
.fs-14 {
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
.fs-12 {
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
|
@ -202,7 +199,7 @@ a {
|
|||
margin-top: 2rem;
|
||||
}
|
||||
h5 {
|
||||
@extend .fs-14;
|
||||
@extend .small;
|
||||
margin-top: 2rem;
|
||||
}
|
||||
h6 {
|
||||
|
|
|
@ -146,7 +146,7 @@ const Answers: FC = () => {
|
|||
)}
|
||||
</Stack>
|
||||
<div
|
||||
className="text-truncate-2 fs-14"
|
||||
className="text-truncate-2 small"
|
||||
style={{ maxWidth: '30rem' }}>
|
||||
{escapeRemove(li.description)}
|
||||
</div>
|
||||
|
@ -158,7 +158,7 @@ const Answers: FC = () => {
|
|||
<BaseUserCard data={li.user_info} />
|
||||
|
||||
<FormatTime
|
||||
className="fs-14 text-secondary"
|
||||
className="small text-secondary"
|
||||
time={li.create_time}
|
||||
/>
|
||||
</Stack>
|
||||
|
|
|
@ -48,35 +48,35 @@ const Index: FC = () => {
|
|||
'ui:widget': 'textarea',
|
||||
'ui:options': {
|
||||
rows: 10,
|
||||
className: ['fs-14', 'font-monospace'],
|
||||
className: ['small', 'font-monospace'],
|
||||
},
|
||||
},
|
||||
custom_head: {
|
||||
'ui:widget': 'textarea',
|
||||
'ui:options': {
|
||||
rows: 10,
|
||||
className: ['fs-14', 'font-monospace'],
|
||||
className: ['small', 'font-monospace'],
|
||||
},
|
||||
},
|
||||
custom_header: {
|
||||
'ui:widget': 'textarea',
|
||||
'ui:options': {
|
||||
rows: 10,
|
||||
className: ['fs-14', 'font-monospace'],
|
||||
className: ['small', 'font-monospace'],
|
||||
},
|
||||
},
|
||||
custom_sidebar: {
|
||||
'ui:widget': 'textarea',
|
||||
'ui:options': {
|
||||
rows: 10,
|
||||
className: ['fs-14', 'font-monospace'],
|
||||
className: ['small', 'font-monospace'],
|
||||
},
|
||||
},
|
||||
custom_footer: {
|
||||
'ui:widget': 'textarea',
|
||||
'ui:options': {
|
||||
rows: 10,
|
||||
className: ['fs-14', 'font-monospace'],
|
||||
className: ['small', 'font-monospace'],
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
@ -102,7 +102,7 @@ const Flags: FC = () => {
|
|||
</small>
|
||||
<BaseUserCard
|
||||
data={li.reported_user}
|
||||
className="mt-2 fs-14"
|
||||
className="mt-2 small"
|
||||
/>
|
||||
<a
|
||||
href={pathFactory.questionLanding(
|
||||
|
@ -123,11 +123,11 @@ const Flags: FC = () => {
|
|||
<Stack>
|
||||
<FormatTime
|
||||
time={li.created_at}
|
||||
className="fs-14 text-secondary"
|
||||
className="small text-secondary"
|
||||
/>
|
||||
<BaseUserCard
|
||||
data={li.report_user}
|
||||
className="mt-2 mb-2 fs-14"
|
||||
className="mt-2 mb-2 small"
|
||||
/>
|
||||
{li.flagged_reason ? (
|
||||
<small>{li.flagged_content}</small>
|
||||
|
|
|
@ -96,7 +96,7 @@ const Users: FC = () => {
|
|||
plugin.name
|
||||
)}
|
||||
</div>
|
||||
<div className="fs-14">{plugin.description}</div>
|
||||
<div className="small">{plugin.description}</div>
|
||||
</td>
|
||||
<td className="text-break">{plugin.version}</td>
|
||||
<td>
|
||||
|
|
|
@ -162,7 +162,7 @@ const Questions: FC = () => {
|
|||
<Stack>
|
||||
<BaseUserCard data={li.user_info} />
|
||||
<FormatTime
|
||||
className="fs-14 text-secondary"
|
||||
className="small text-secondary"
|
||||
time={li.create_time}
|
||||
/>
|
||||
</Stack>
|
||||
|
|
|
@ -31,6 +31,11 @@ const Index: FC = () => {
|
|||
enumNames: SYSTEM_AVATAR_OPTIONS?.map((v) => v.label),
|
||||
default: 'system',
|
||||
},
|
||||
gravatar_base_url: {
|
||||
type: 'string',
|
||||
title: t('gravatar_base_url.label'),
|
||||
description: t('gravatar_base_url.text'),
|
||||
},
|
||||
profile_editable: {
|
||||
type: 'string',
|
||||
title: t('profile_editable.title'),
|
||||
|
@ -68,6 +73,9 @@ const Index: FC = () => {
|
|||
default_avatar: {
|
||||
'ui:widget': 'select',
|
||||
},
|
||||
gravatar_base_url: {
|
||||
'ui:widget': 'input',
|
||||
},
|
||||
profile_editable: {
|
||||
'ui:widget': 'legend',
|
||||
},
|
||||
|
@ -127,6 +135,7 @@ const Index: FC = () => {
|
|||
allow_update_username: formData.allow_update_username.value,
|
||||
allow_update_website: formData.allow_update_website.value,
|
||||
default_avatar: formData.default_avatar.value,
|
||||
gravatar_base_url: formData.gravatar_base_url.value,
|
||||
};
|
||||
putUsersSetting(reqParams)
|
||||
.then(() => {
|
||||
|
@ -155,6 +164,9 @@ const Index: FC = () => {
|
|||
if (k === 'default_avatar' && !v) {
|
||||
v = 'system';
|
||||
}
|
||||
if (k === 'gravatar_base_url' && !v) {
|
||||
v = 'https://www.gravatar.com/avatar/';
|
||||
}
|
||||
formMeta[k] = { ...formData[k], value: v };
|
||||
});
|
||||
setFormData({ ...formData, ...formMeta });
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.admin-container {
|
||||
padding-top: 2rem;
|
||||
padding-bottom: 2rem;
|
||||
padding-top: 1.5rem;
|
||||
padding-bottom: 1.5rem;
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ interface IProps {
|
|||
|
||||
const Index: FC<IProps> = ({ step }) => {
|
||||
return (
|
||||
<div className="d-flex align-items-center fs-14 text-secondary">
|
||||
<div className="d-flex align-items-center small text-secondary">
|
||||
<ProgressBar
|
||||
now={(step / 5) * 100}
|
||||
variant="success"
|
||||
|
|
|
@ -33,7 +33,7 @@ const Index: FC<Props> = ({ visible, errorMsg, nextCallback }) => {
|
|||
type="text"
|
||||
as="textarea"
|
||||
rows={8}
|
||||
className="fs-14"
|
||||
className="small"
|
||||
value={errorMsg?.default_config}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
|
|
@ -10,7 +10,7 @@ import {
|
|||
installBaseInfo,
|
||||
checkConfigFileExists,
|
||||
} from '@/services';
|
||||
import { Storage, handleFormError } from '@/utils';
|
||||
import { Storage, handleFormError, scrollToDocTop } from '@/utils';
|
||||
import { CURRENT_LANG_STORAGE_KEY } from '@/common/constants';
|
||||
|
||||
import {
|
||||
|
@ -109,7 +109,7 @@ const Index: FC = () => {
|
|||
};
|
||||
|
||||
const handleErr = (data) => {
|
||||
window.scrollTo(0, 0);
|
||||
scrollToDocTop();
|
||||
setErrorData(data);
|
||||
};
|
||||
|
||||
|
|
|
@ -1,31 +1,29 @@
|
|||
import { FC } from 'react';
|
||||
import { Container, Row, Col, Nav } from 'react-bootstrap';
|
||||
import { Row, Col, Nav } from 'react-bootstrap';
|
||||
import { Outlet, NavLink } from 'react-router-dom';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
const Index: FC = () => {
|
||||
const { t } = useTranslation('translation', { keyPrefix: 'nav_menus' });
|
||||
return (
|
||||
<Container className="pt-4 mt-2 mb-5">
|
||||
<Row className="justify-content-center">
|
||||
<Col xxl={10}>
|
||||
<Nav
|
||||
className="mb-4 flex-nowrap"
|
||||
variant="pills"
|
||||
style={{ overflow: 'auto' }}>
|
||||
<NavLink to="/tos" key="tos" className="nav-link">
|
||||
{t('tos')}
|
||||
</NavLink>
|
||||
<NavLink to="/privacy" key="privacy" className="nav-link">
|
||||
{t('privacy')}
|
||||
</NavLink>
|
||||
</Nav>
|
||||
</Col>
|
||||
<Col xxl={10}>
|
||||
<Outlet />
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
<Row className="pt-4 mb-5">
|
||||
<Col xxl={12}>
|
||||
<Nav
|
||||
className="mb-4 flex-nowrap"
|
||||
variant="pills"
|
||||
style={{ overflow: 'auto' }}>
|
||||
<NavLink to="/tos" key="tos" className="nav-link">
|
||||
{t('tos')}
|
||||
</NavLink>
|
||||
<NavLink to="/privacy" key="privacy" className="nav-link">
|
||||
{t('privacy')}
|
||||
</NavLink>
|
||||
</Nav>
|
||||
</Col>
|
||||
<Col xxl={12}>
|
||||
<Outlet />
|
||||
</Col>
|
||||
</Row>
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import React, { useState, useEffect, useRef } from 'react';
|
||||
import { Container, Row, Col, Form, Button, Card } from 'react-bootstrap';
|
||||
import { Row, Col, Form, Button, Card } from 'react-bootstrap';
|
||||
import { useParams, useNavigate, useSearchParams } from 'react-router-dom';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
|
@ -16,7 +16,6 @@ import {
|
|||
questionDetail,
|
||||
modifyQuestion,
|
||||
useQueryRevisions,
|
||||
// postAnswer,
|
||||
useQueryQuestionByTitle,
|
||||
getTagsBySlugName,
|
||||
saveQuestionWidthAnaser,
|
||||
|
@ -320,14 +319,10 @@ const Ask = () => {
|
|||
title: pageTitle,
|
||||
});
|
||||
return (
|
||||
<Container className="pt-4 mt-2 mb-5">
|
||||
<Row className="justify-content-center">
|
||||
<Col xxl={10} md={12}>
|
||||
<h3 className="mb-4">{isEdit ? t('edit_title') : t('title')}</h3>
|
||||
</Col>
|
||||
</Row>
|
||||
<Row className="justify-content-center">
|
||||
<Col xxl={7} lg={8} sm={12} className="mb-4 mb-md-0">
|
||||
<div className="pt-4 mb-5">
|
||||
<h3 className="mb-4">{isEdit ? t('edit_title') : t('title')}</h3>
|
||||
<Row>
|
||||
<Col className="page-main flex-auto">
|
||||
<Form noValidate onSubmit={handleSubmit}>
|
||||
{isEdit && (
|
||||
<Form.Group controlId="revision" className="mb-3">
|
||||
|
@ -491,7 +486,7 @@ const Ask = () => {
|
|||
)}
|
||||
</Form>
|
||||
</Col>
|
||||
<Col xxl={3} lg={4} sm={12} className="mt-5 mt-lg-0">
|
||||
<Col className="page-right-side mt-4 mt-xl-0">
|
||||
<Card>
|
||||
<Card.Header>
|
||||
{t('title', { keyPrefix: 'how_to_format' })}
|
||||
|
@ -505,7 +500,7 @@ const Ask = () => {
|
|||
</Card>
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ const Index: FC<Props> = ({ data }) => {
|
|||
) : (
|
||||
<p>{data.msg ? data.msg : data.description}</p>
|
||||
)}
|
||||
<div className="fs-14">
|
||||
<div className="small">
|
||||
{t('question_detail.closed_in')}{' '}
|
||||
<time
|
||||
dateTime={dayjs.unix(data.time).tz().toISOString()}
|
||||
|
|
|
@ -149,14 +149,14 @@ const Index: FC<Props> = ({
|
|||
<FormatTime
|
||||
time={Number(data.update_time)}
|
||||
preFix={t('edit')}
|
||||
className="link-secondary fs-14"
|
||||
className="link-secondary small"
|
||||
/>
|
||||
</Link>
|
||||
) : (
|
||||
<FormatTime
|
||||
time={Number(data.update_time)}
|
||||
preFix={t('edit')}
|
||||
className="text-secondary fs-14"
|
||||
className="text-secondary small"
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
.people-dropdown {
|
||||
.dropdown-menu {
|
||||
width: 15rem;
|
||||
}
|
||||
|
||||
.dropdown-item.active {
|
||||
color: #212529;
|
||||
background-color: #e9ecef;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,163 @@
|
|||
import { FC, useEffect, useState } from 'react';
|
||||
import { Dropdown, Form } from 'react-bootstrap';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import { loggedUserInfoStore } from '@/stores';
|
||||
import { userSearchByName } from '@/services';
|
||||
import { Avatar } from '@/components';
|
||||
import * as Type from '@/common/interface';
|
||||
import './PeopleDropdown.scss';
|
||||
|
||||
interface Props {
|
||||
selectedPeople: Type.UserInfoBase[] | undefined;
|
||||
onSelect: (people: Type.UserInfoBase) => void;
|
||||
visible?: boolean;
|
||||
}
|
||||
|
||||
const Index: FC<Props> = ({
|
||||
selectedPeople = [],
|
||||
visible = false,
|
||||
onSelect,
|
||||
}) => {
|
||||
const { user: currentUser } = loggedUserInfoStore();
|
||||
const { t } = useTranslation('translation', {
|
||||
keyPrefix: 'invite_to_answer',
|
||||
});
|
||||
const [toggleState, setToggleState] = useState(false);
|
||||
const [peopleList, setPeopleList] = useState<Type.UserInfoBase[]>([]);
|
||||
const [currentIndex, setCurrentIndex] = useState(0);
|
||||
const [searchValue, setSearchValue] = useState('');
|
||||
const filterAndSetPeople = (source) => {
|
||||
if (!toggleState) {
|
||||
return;
|
||||
}
|
||||
const filteredPeople: Type.UserInfoBase[] = [];
|
||||
source.forEach((p) => {
|
||||
if (currentUser && currentUser.username === p.username) {
|
||||
return;
|
||||
}
|
||||
if (selectedPeople.find((_) => _.username === p.username)) {
|
||||
return;
|
||||
}
|
||||
filteredPeople.push(p);
|
||||
});
|
||||
setPeopleList(filteredPeople);
|
||||
};
|
||||
|
||||
const searchPeople = (s) => {
|
||||
if (!s) {
|
||||
setPeopleList([]);
|
||||
return;
|
||||
}
|
||||
userSearchByName(s).then((resp) => {
|
||||
filterAndSetPeople(resp);
|
||||
});
|
||||
};
|
||||
const handleSearch = (evt) => {
|
||||
const s = evt.target.value;
|
||||
setSearchValue(s);
|
||||
searchPeople(s);
|
||||
};
|
||||
|
||||
const resetSearch = () => {
|
||||
setCurrentIndex(0);
|
||||
setSearchValue('');
|
||||
setPeopleList([]);
|
||||
};
|
||||
|
||||
const handleSelect = (idx) => {
|
||||
if (idx < 0 || idx >= peopleList.length) {
|
||||
return;
|
||||
}
|
||||
const people = peopleList[idx];
|
||||
if (people) {
|
||||
onSelect(people);
|
||||
}
|
||||
|
||||
resetSearch();
|
||||
};
|
||||
|
||||
const handleKeyDown = (evt) => {
|
||||
evt.stopPropagation();
|
||||
|
||||
if (!peopleList?.length) {
|
||||
return;
|
||||
}
|
||||
const { keyCode } = evt;
|
||||
if (keyCode === 38 && currentIndex > 0) {
|
||||
setCurrentIndex(currentIndex - 1);
|
||||
}
|
||||
if (keyCode === 40 && currentIndex < peopleList.length - 1) {
|
||||
setCurrentIndex(currentIndex + 1);
|
||||
}
|
||||
|
||||
if (keyCode === 13 && currentIndex > -1) {
|
||||
evt.preventDefault();
|
||||
handleSelect(currentIndex);
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
filterAndSetPeople(peopleList);
|
||||
}, [selectedPeople]);
|
||||
|
||||
useEffect(() => {
|
||||
searchPeople(searchValue);
|
||||
}, [toggleState]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!visible && toggleState) {
|
||||
setToggleState(false);
|
||||
}
|
||||
}, [visible]);
|
||||
|
||||
return visible ? (
|
||||
<Dropdown
|
||||
className="d-inline-flex people-dropdown"
|
||||
onSelect={handleSelect}
|
||||
onKeyDown={handleKeyDown}
|
||||
onToggle={setToggleState}>
|
||||
<Dropdown.Toggle
|
||||
className="m-1 no-toggle"
|
||||
size="sm"
|
||||
variant="outline-secondary">
|
||||
<span className="me-1">+</span>
|
||||
{t('add')}
|
||||
</Dropdown.Toggle>
|
||||
|
||||
<Dropdown.Menu show={toggleState}>
|
||||
<Dropdown.Header className="px-2 py-0">
|
||||
{toggleState ? (
|
||||
<Form.Control
|
||||
autoFocus
|
||||
placeholder={t('search')}
|
||||
value={searchValue}
|
||||
onChange={handleSearch}
|
||||
/>
|
||||
) : null}
|
||||
</Dropdown.Header>
|
||||
{peopleList.map((p, idx) => {
|
||||
return (
|
||||
<Dropdown.Item
|
||||
key={p.username}
|
||||
eventKey={idx}
|
||||
active={idx === currentIndex}
|
||||
className={idx === 0 ? 'mt-2' : ''}>
|
||||
<div className="d-flex align-items-center text-nowrap">
|
||||
<Avatar avatar={p.avatar} size="24" className="rounded-1" />
|
||||
<div className="d-flex flex-wrap text-truncate">
|
||||
<span className="ms-2 text-truncate">{p.display_name}</span>
|
||||
<small className="text-secondary text-truncate ms-2">
|
||||
@{p.username}
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</Dropdown.Item>
|
||||
);
|
||||
})}
|
||||
</Dropdown.Menu>
|
||||
</Dropdown>
|
||||
) : null;
|
||||
};
|
||||
|
||||
export default Index;
|
|
@ -0,0 +1,168 @@
|
|||
import { memo, FC, useState, useEffect } from 'react';
|
||||
import { Card, Button } from 'react-bootstrap';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
import classNames from 'classnames';
|
||||
|
||||
import { Avatar } from '@/components';
|
||||
import { getInviteUser, putInviteUser } from '@/services';
|
||||
import type * as Type from '@/common/interface';
|
||||
|
||||
import PeopleDropdown from './PeopleDropdown';
|
||||
|
||||
interface Props {
|
||||
questionId: string;
|
||||
readOnly?: boolean;
|
||||
}
|
||||
const Index: FC<Props> = ({ questionId, readOnly = false }) => {
|
||||
const { t } = useTranslation('translation', {
|
||||
keyPrefix: 'invite_to_answer',
|
||||
});
|
||||
const MAX_ASK_NUMBER = 5;
|
||||
const [editing, setEditing] = useState(false);
|
||||
const [users, setUsers] = useState<Type.UserInfoBase[]>();
|
||||
|
||||
const initInviteUsers = () => {
|
||||
if (!questionId) {
|
||||
return;
|
||||
}
|
||||
getInviteUser(questionId)
|
||||
.then((resp) => {
|
||||
setUsers(resp);
|
||||
})
|
||||
.catch(() => {
|
||||
if (!users) {
|
||||
setUsers([]);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const updateInviteUsers = (user: Type.UserInfoBase) => {
|
||||
let userList = [user];
|
||||
if (users?.length) {
|
||||
userList = [...users, user];
|
||||
}
|
||||
setUsers(userList);
|
||||
};
|
||||
|
||||
const removeInviteUser = (user: Type.UserInfoBase) => {
|
||||
const inviteUsers = users!.filter((_) => {
|
||||
return _.username !== user.username;
|
||||
});
|
||||
setUsers(inviteUsers);
|
||||
};
|
||||
|
||||
const saveInviteUsers = () => {
|
||||
if (!users) {
|
||||
return;
|
||||
}
|
||||
const names = users.map((_) => {
|
||||
return _.username;
|
||||
});
|
||||
putInviteUser(questionId, names)
|
||||
.then(() => {
|
||||
setEditing(false);
|
||||
})
|
||||
.catch((ex) => {
|
||||
console.log('ex: ', ex);
|
||||
});
|
||||
};
|
||||
useEffect(() => {
|
||||
initInviteUsers();
|
||||
}, [questionId]);
|
||||
|
||||
const showAddButton = editing && (!users || users.length < MAX_ASK_NUMBER);
|
||||
const showInviteFeat = !editing && users?.length === 0;
|
||||
const showInviteButton = showInviteFeat && !readOnly;
|
||||
const showEditButton = !readOnly && !editing && users?.length;
|
||||
const showSaveButton = !readOnly && editing;
|
||||
const showEmpty = readOnly && users?.length === 0;
|
||||
|
||||
if (showEmpty) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<Card className="mt-4">
|
||||
<Card.Header className="text-nowrap d-flex justify-content-between text-capitalize">
|
||||
{t('title')}
|
||||
{showSaveButton ? (
|
||||
<Button onClick={saveInviteUsers} variant="link" className="p-0">
|
||||
{t('save', { keyPrefix: 'btns' })}
|
||||
</Button>
|
||||
) : null}
|
||||
{showEditButton ? (
|
||||
<Button
|
||||
onClick={() => setEditing(true)}
|
||||
variant="link"
|
||||
className="p-0">
|
||||
{t('edit', { keyPrefix: 'btns' })}
|
||||
</Button>
|
||||
) : null}
|
||||
</Card.Header>
|
||||
<Card.Body>
|
||||
<div
|
||||
className={classNames(
|
||||
'd-flex align-items-center flex-wrap',
|
||||
editing ? 'm-n1' : ' mx-n2 my-n1',
|
||||
)}>
|
||||
{users?.map((user) => {
|
||||
if (editing) {
|
||||
return (
|
||||
<Button
|
||||
key={user.username}
|
||||
className="m-1 d-inline-flex flex-nowrap"
|
||||
size="sm"
|
||||
variant="outline-secondary">
|
||||
<Avatar
|
||||
avatar={user.avatar}
|
||||
size="20"
|
||||
className="rounded-1"
|
||||
/>
|
||||
<span className="text-nowrap ms-2">{user.display_name}</span>
|
||||
{/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}
|
||||
<span
|
||||
className="px-1 me-n1"
|
||||
onClick={() => removeInviteUser(user)}>
|
||||
×
|
||||
</span>
|
||||
</Button>
|
||||
);
|
||||
}
|
||||
return (
|
||||
<Link
|
||||
key={user.username}
|
||||
to={`/users/${user.username}`}
|
||||
className="mx-2 my-1 d-inline-flex flex-nowrap">
|
||||
<Avatar avatar={user.avatar} size="24" className="rounded-1" />
|
||||
<small className="text-nowrap ms-2">{user.display_name}</small>
|
||||
</Link>
|
||||
);
|
||||
})}
|
||||
<PeopleDropdown
|
||||
visible={showAddButton}
|
||||
selectedPeople={users}
|
||||
onSelect={updateInviteUsers}
|
||||
/>
|
||||
</div>
|
||||
{showInviteFeat ? (
|
||||
<>
|
||||
<div className="text-muted">{t('desc')}</div>
|
||||
{showInviteButton ? (
|
||||
<Button
|
||||
size="sm"
|
||||
variant="outline-primary"
|
||||
className="mt-3"
|
||||
onClick={() => setEditing(true)}>
|
||||
{t('invite')}
|
||||
</Button>
|
||||
) : null}
|
||||
</>
|
||||
) : null}
|
||||
</Card.Body>
|
||||
</Card>
|
||||
);
|
||||
};
|
||||
|
||||
export default memo(Index);
|
|
@ -1,7 +1,7 @@
|
|||
import { memo, FC, useState, useEffect, useRef } from 'react';
|
||||
import { Link, useSearchParams } from 'react-router-dom';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Button } from 'react-bootstrap';
|
||||
import { Button, OverlayTrigger, Tooltip } from 'react-bootstrap';
|
||||
|
||||
import {
|
||||
Tag,
|
||||
|
@ -85,7 +85,7 @@ const Index: FC<Props> = ({ data, initPage, hasAnswer, isLogged }) => {
|
|||
</Link>
|
||||
</h1>
|
||||
|
||||
<div className="d-flex flex-wrap align-items-center fs-14 mb-3 text-secondary">
|
||||
<div className="d-flex flex-wrap align-items-center small mb-3 text-secondary">
|
||||
<FormatTime
|
||||
time={data.create_time}
|
||||
preFix={t('Asked')}
|
||||
|
@ -102,13 +102,17 @@ const Index: FC<Props> = ({ data, initPage, hasAnswer, isLogged }) => {
|
|||
{t('Views')} {formatCount(data.view_count)}
|
||||
</div>
|
||||
)}
|
||||
<Button
|
||||
variant="link"
|
||||
size="sm"
|
||||
className="p-0 btn-no-border"
|
||||
onClick={(e) => handleFollow(e)}>
|
||||
{t(followed ? 'Following' : 'Follow')}
|
||||
</Button>
|
||||
<OverlayTrigger
|
||||
placement="bottom"
|
||||
overlay={<Tooltip id="followTooltip">{t('follow_tip')}</Tooltip>}>
|
||||
<Button
|
||||
variant="link"
|
||||
size="sm"
|
||||
className="p-0 btn-no-border"
|
||||
onClick={(e) => handleFollow(e)}>
|
||||
{t(followed ? 'Following' : 'Follow')}
|
||||
</Button>
|
||||
</OverlayTrigger>
|
||||
</div>
|
||||
<div className="m-n1">
|
||||
{data?.tags?.map((item: any) => {
|
||||
|
@ -165,14 +169,14 @@ const Index: FC<Props> = ({ data, initPage, hasAnswer, isLogged }) => {
|
|||
<FormatTime
|
||||
time={data.edit_time}
|
||||
preFix={t('edit')}
|
||||
className="link-secondary fs-14"
|
||||
className="link-secondary small"
|
||||
/>
|
||||
</Link>
|
||||
) : (
|
||||
<FormatTime
|
||||
time={data.edit_time}
|
||||
preFix={t('edit')}
|
||||
className="text-secondary fs-14"
|
||||
className="text-secondary small"
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
|
|
|
@ -40,7 +40,7 @@ const Index: FC<Props> = ({ id }) => {
|
|||
<div className="link-dark">{item.title}</div>
|
||||
{item.answer_count > 0 && (
|
||||
<div
|
||||
className={`mt-1 fs-14 me-2 ${
|
||||
className={`mt-1 small me-2 ${
|
||||
item.accepted_answer_id > 0
|
||||
? 'link-success'
|
||||
: 'link-secondary'
|
||||
|
|
|
@ -5,6 +5,7 @@ import RelatedQuestions from './RelatedQuestions';
|
|||
import WriteAnswer from './WriteAnswer';
|
||||
import Alert from './Alert';
|
||||
import ContentLoader from './ContentLoader';
|
||||
import InviteToAnswer from './InviteToAnswer';
|
||||
|
||||
export {
|
||||
Question,
|
||||
|
@ -14,4 +15,5 @@ export {
|
|||
WriteAnswer,
|
||||
Alert,
|
||||
ContentLoader,
|
||||
InviteToAnswer,
|
||||
};
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { useEffect, useState } from 'react';
|
||||
import { Container, Row, Col } from 'react-bootstrap';
|
||||
import { Row, Col } from 'react-bootstrap';
|
||||
import {
|
||||
useParams,
|
||||
useSearchParams,
|
||||
|
@ -10,7 +10,7 @@ import { useTranslation } from 'react-i18next';
|
|||
|
||||
import { Pagination, CustomSidebar } from '@/components';
|
||||
import { loggedUserInfoStore, toastStore } from '@/stores';
|
||||
import { scrollToElementTop } from '@/utils';
|
||||
import { scrollToElementTop, scrollToDocTop } from '@/utils';
|
||||
import { usePageTags, usePageUsers } from '@/hooks';
|
||||
import type {
|
||||
ListResult,
|
||||
|
@ -27,6 +27,7 @@ import {
|
|||
WriteAnswer,
|
||||
Alert,
|
||||
ContentLoader,
|
||||
InviteToAnswer,
|
||||
} from './components';
|
||||
|
||||
import './index.scss';
|
||||
|
@ -152,12 +153,12 @@ const Index = () => {
|
|||
const initPage = (type: string) => {
|
||||
if (type === 'delete_question') {
|
||||
setTimeout(() => {
|
||||
navigate(-1);
|
||||
navigate('/', { replace: true });
|
||||
}, 1000);
|
||||
return;
|
||||
}
|
||||
if (type === 'default') {
|
||||
window.scrollTo(0, 0);
|
||||
scrollToDocTop();
|
||||
getDetail();
|
||||
return;
|
||||
}
|
||||
|
@ -182,7 +183,7 @@ const Index = () => {
|
|||
if (!qid) {
|
||||
return;
|
||||
}
|
||||
window.scrollTo(0, 0);
|
||||
scrollToDocTop();
|
||||
getDetail();
|
||||
requestAnswers();
|
||||
}, [qid]);
|
||||
|
@ -197,70 +198,86 @@ const Index = () => {
|
|||
description: question?.description,
|
||||
keywords: question?.tags.map((_) => _.slug_name).join(','),
|
||||
});
|
||||
|
||||
const showInviteToAnswer = question?.id;
|
||||
let canInvitePeople = false;
|
||||
if (showInviteToAnswer && Array.isArray(question.extends_actions)) {
|
||||
const inviteAct = question.extends_actions.find((op) => {
|
||||
return op.action === 'invite_other_to_answer';
|
||||
});
|
||||
if (inviteAct) {
|
||||
canInvitePeople = true;
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<Container className="pt-4 mt-2 mb-5 questionDetailPage">
|
||||
<Row className="justify-content-center">
|
||||
<Col xxl={7} lg={8} sm={12} className="mb-5 mb-md-0">
|
||||
{question?.operation?.level && <Alert data={question.operation} />}
|
||||
{isLoading ? (
|
||||
<ContentLoader />
|
||||
) : (
|
||||
<Question
|
||||
data={question}
|
||||
initPage={initPage}
|
||||
hasAnswer={answers.count > 0}
|
||||
isLogged={isLogged}
|
||||
<Row className="questionDetailPage pt-4 mb-5">
|
||||
<Col className="page-main flex-auto">
|
||||
{question?.operation?.level && <Alert data={question.operation} />}
|
||||
{isLoading ? (
|
||||
<ContentLoader />
|
||||
) : (
|
||||
<Question
|
||||
data={question}
|
||||
initPage={initPage}
|
||||
hasAnswer={answers.count > 0}
|
||||
isLogged={isLogged}
|
||||
/>
|
||||
)}
|
||||
{!isLoading && answers.count > 0 && (
|
||||
<>
|
||||
<AnswerHead count={answers.count} order={order} />
|
||||
{answers?.list?.map((item) => {
|
||||
return (
|
||||
<Answer
|
||||
aid={aid}
|
||||
key={item?.id}
|
||||
data={item}
|
||||
questionTitle={question?.title || ''}
|
||||
slugTitle={question?.url_title}
|
||||
canAccept={isAuthor || isAdmin || isModerator}
|
||||
callback={initPage}
|
||||
isLogged={isLogged}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
</>
|
||||
)}
|
||||
|
||||
{!isLoading && Math.ceil(answers.count / 15) > 1 && (
|
||||
<div className="d-flex justify-content-center answer-item pt-4">
|
||||
<Pagination
|
||||
currentPage={Number(page || 1)}
|
||||
pageSize={15}
|
||||
totalSize={answers?.count || 0}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{!isLoading &&
|
||||
Number(question?.status) !== 2 &&
|
||||
!question?.operation?.type && (
|
||||
<WriteAnswer
|
||||
data={{
|
||||
qid,
|
||||
answered: question?.answered,
|
||||
loggedUserRank,
|
||||
}}
|
||||
callback={writeAnswerCallback}
|
||||
/>
|
||||
)}
|
||||
{!isLoading && answers.count > 0 && (
|
||||
<>
|
||||
<AnswerHead count={answers.count} order={order} />
|
||||
{answers?.list?.map((item) => {
|
||||
return (
|
||||
<Answer
|
||||
aid={aid}
|
||||
key={item?.id}
|
||||
data={item}
|
||||
questionTitle={question?.title || ''}
|
||||
slugTitle={question?.url_title}
|
||||
canAccept={isAuthor || isAdmin || isModerator}
|
||||
callback={initPage}
|
||||
isLogged={isLogged}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
</>
|
||||
)}
|
||||
|
||||
{!isLoading && Math.ceil(answers.count / 15) > 1 && (
|
||||
<div className="d-flex justify-content-center answer-item pt-4">
|
||||
<Pagination
|
||||
currentPage={Number(page || 1)}
|
||||
pageSize={15}
|
||||
totalSize={answers?.count || 0}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{!isLoading &&
|
||||
Number(question?.status) !== 2 &&
|
||||
!question?.operation?.type && (
|
||||
<WriteAnswer
|
||||
data={{
|
||||
qid,
|
||||
answered: question?.answered,
|
||||
loggedUserRank,
|
||||
}}
|
||||
callback={writeAnswerCallback}
|
||||
/>
|
||||
)}
|
||||
</Col>
|
||||
<Col xxl={3} lg={4} sm={12} className="mt-5 mt-lg-0">
|
||||
<CustomSidebar />
|
||||
<RelatedQuestions id={question?.id || ''} />
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
</Col>
|
||||
<Col className="page-right-side mt-4 mt-xl-0">
|
||||
<CustomSidebar />
|
||||
<RelatedQuestions id={question?.id || ''} />
|
||||
{showInviteToAnswer ? (
|
||||
<InviteToAnswer
|
||||
questionId={question.id}
|
||||
readOnly={!canInvitePeople}
|
||||
/>
|
||||
) : null}
|
||||
</Col>
|
||||
</Row>
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import React, { useState, useRef, useEffect, useLayoutEffect } from 'react';
|
||||
import { Container, Row, Col, Form, Button, Card } from 'react-bootstrap';
|
||||
import { Row, Col, Form, Button, Card } from 'react-bootstrap';
|
||||
import { useParams, useNavigate } from 'react-router-dom';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
|
@ -184,14 +184,10 @@ const Index = () => {
|
|||
title: t('edit_answer', { keyPrefix: 'page_title' }),
|
||||
});
|
||||
return (
|
||||
<Container className="pt-4 mt-2 mb-5 edit-answer-wrap">
|
||||
<Row className="justify-content-center">
|
||||
<Col xxl={10} md={12}>
|
||||
<h3 className="mb-4">{t('title')}</h3>
|
||||
</Col>
|
||||
</Row>
|
||||
<Row className="justify-content-center">
|
||||
<Col xxl={7} lg={8} sm={12} className="mb-4 mb-md-0">
|
||||
<div className="pt-4 mb-5 edit-answer-wrap">
|
||||
<h3 className="mb-4">{t('title')}</h3>
|
||||
<Row>
|
||||
<Col className="page-main flex-auto">
|
||||
<a
|
||||
href={pathFactory.questionLanding(qid, data?.question.url_title)}
|
||||
target="_blank"
|
||||
|
@ -285,7 +281,7 @@ const Index = () => {
|
|||
</div>
|
||||
</Form>
|
||||
</Col>
|
||||
<Col xxl={3} lg={4} sm={12} className="mt-5 mt-lg-0">
|
||||
<Col className="page-right-side mt-4 mt-xl-0">
|
||||
<Card>
|
||||
<Card.Header>
|
||||
{t('title', { keyPrefix: 'how_to_format' })}
|
||||
|
@ -299,7 +295,7 @@ const Index = () => {
|
|||
</Card>
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { FC } from 'react';
|
||||
import { Container, Row, Col } from 'react-bootstrap';
|
||||
import { Row, Col } from 'react-bootstrap';
|
||||
import { useMatch, Link, useSearchParams } from 'react-router-dom';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
|
@ -17,7 +17,9 @@ import {
|
|||
} from '@/stores';
|
||||
import { useQuestionList } from '@/services';
|
||||
import * as Type from '@/common/interface';
|
||||
import { userCenter, floppyNavigation } from '@/utils';
|
||||
import { userCenter, floppyNavigation, Storage } from '@/utils';
|
||||
import { QUESTIONS_ORDER_STORAGE_KEY } from '@/common/constants';
|
||||
import { QUESTION_ORDER_KEYS } from '@/components/QuestionList';
|
||||
|
||||
const Questions: FC = () => {
|
||||
const { t } = useTranslation('translation', { keyPrefix: 'question' });
|
||||
|
@ -25,7 +27,12 @@ const Questions: FC = () => {
|
|||
const { user: loggedUser } = loggedUserInfoStore((_) => _);
|
||||
const [urlSearchParams] = useSearchParams();
|
||||
const curPage = Number(urlSearchParams.get('page')) || 1;
|
||||
const curOrder = urlSearchParams.get('order') || 'active';
|
||||
const storageOrder = Storage.get(QUESTIONS_ORDER_STORAGE_KEY);
|
||||
const curOrder =
|
||||
urlSearchParams.get('order') || storageOrder || QUESTION_ORDER_KEYS[0];
|
||||
if (curOrder !== storageOrder) {
|
||||
Storage.set(QUESTIONS_ORDER_STORAGE_KEY, curOrder);
|
||||
}
|
||||
const reqParams: Type.QueryQuestionsReq = {
|
||||
page_size: 20,
|
||||
page: curPage,
|
||||
|
@ -44,48 +51,47 @@ const Questions: FC = () => {
|
|||
|
||||
usePageTags({ title: pageTitle, subtitle: slogan });
|
||||
return (
|
||||
<Container className="pt-4 mt-2 mb-5">
|
||||
<Row className="justify-content-center">
|
||||
<Col xxl={7} lg={8} sm={12}>
|
||||
<QuestionList
|
||||
source="questions"
|
||||
data={listData}
|
||||
isLoading={listLoading}
|
||||
/>
|
||||
</Col>
|
||||
<Col xxl={3} lg={4} sm={12} className="mt-5 mt-lg-0">
|
||||
<CustomSidebar />
|
||||
{!loggedUser.username && (
|
||||
<div className="card mb-4">
|
||||
<div className="card-body">
|
||||
<h5 className="card-title">
|
||||
{t2('website_welcome', {
|
||||
site_name: siteInfo.name,
|
||||
})}
|
||||
</h5>
|
||||
<p className="card-text">{siteInfo.description}</p>
|
||||
<Row className="pt-4 mb-5">
|
||||
<Col className="page-main flex-auto">
|
||||
<QuestionList
|
||||
source="questions"
|
||||
data={listData}
|
||||
order={curOrder}
|
||||
isLoading={listLoading}
|
||||
/>
|
||||
</Col>
|
||||
<Col className="page-right-side mt-4 mt-xl-0">
|
||||
<CustomSidebar />
|
||||
{!loggedUser.username && (
|
||||
<div className="card mb-4">
|
||||
<div className="card-body">
|
||||
<h5 className="card-title">
|
||||
{t2('website_welcome', {
|
||||
site_name: siteInfo.name,
|
||||
})}
|
||||
</h5>
|
||||
<p className="card-text">{siteInfo.description}</p>
|
||||
<Link
|
||||
to={userCenter.getLoginUrl()}
|
||||
className="btn btn-primary"
|
||||
onClick={floppyNavigation.handleRouteLinkClick}>
|
||||
{t('login', { keyPrefix: 'btns' })}
|
||||
</Link>
|
||||
{loginSetting.allow_new_registrations ? (
|
||||
<Link
|
||||
to={userCenter.getLoginUrl()}
|
||||
className="btn btn-primary"
|
||||
to={userCenter.getSignUpUrl()}
|
||||
className="btn btn-link ms-2"
|
||||
onClick={floppyNavigation.handleRouteLinkClick}>
|
||||
{t('login', { keyPrefix: 'btns' })}
|
||||
{t('signup', { keyPrefix: 'btns' })}
|
||||
</Link>
|
||||
{loginSetting.allow_new_registrations ? (
|
||||
<Link
|
||||
to={userCenter.getSignUpUrl()}
|
||||
className="btn btn-link ms-2"
|
||||
onClick={floppyNavigation.handleRouteLinkClick}>
|
||||
{t('signup', { keyPrefix: 'btns' })}
|
||||
</Link>
|
||||
) : null}
|
||||
</div>
|
||||
) : null}
|
||||
</div>
|
||||
)}
|
||||
{loggedUser.access_token && <FollowingTags />}
|
||||
<HotQuestions />
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
</div>
|
||||
)}
|
||||
{loggedUser.access_token && <FollowingTags />}
|
||||
<HotQuestions />
|
||||
</Col>
|
||||
</Row>
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { FC, useEffect, useState } from 'react';
|
||||
import { Container, Row, Col, Alert, Stack, Button } from 'react-bootstrap';
|
||||
import { Row, Col, Alert, Stack, Button } from 'react-bootstrap';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
|
@ -7,6 +7,7 @@ import { usePageTags } from '@/hooks';
|
|||
import { BaseUserCard, FormatTime, Empty, DiffContent } from '@/components';
|
||||
import { getReviewList, revisionAudit } from '@/services';
|
||||
import { pathFactory } from '@/router/pathFactory';
|
||||
import { scrollToDocTop } from '@/utils';
|
||||
import type * as Type from '@/common/interface';
|
||||
|
||||
const Index: FC = () => {
|
||||
|
@ -39,7 +40,7 @@ const Index: FC = () => {
|
|||
setNoTasks(true);
|
||||
}
|
||||
setTimeout(() => {
|
||||
window.scrollTo({ top: 0 });
|
||||
scrollToDocTop();
|
||||
}, 150);
|
||||
};
|
||||
const queryNextOne = (pageNumber) => {
|
||||
|
@ -123,121 +124,111 @@ const Index: FC = () => {
|
|||
title: t('review'),
|
||||
});
|
||||
return (
|
||||
<Container className="pt-2 mt-4 mb-5">
|
||||
<Row>
|
||||
<Col lg={{ span: 7, offset: 1 }}>
|
||||
<h3 className="mb-4">{t('review')}</h3>
|
||||
</Col>
|
||||
<Row className="pt-4 mb-5">
|
||||
<h3 className="mb-4">{t('review')}</h3>
|
||||
<Col className="page-main flex-auto">
|
||||
{!noTasks && ro && (
|
||||
<>
|
||||
<Col lg={{ span: 7, offset: 1 }}>
|
||||
<Alert variant="secondary">
|
||||
<Stack className="align-items-start">
|
||||
<span className="badge text-bg-secondary mb-2">
|
||||
{editBadge}
|
||||
</span>
|
||||
<Link to={itemLink} target="_blank">
|
||||
{itemTitle}
|
||||
</Link>
|
||||
<p className="mb-0">
|
||||
{t('edit_summary')}: {editSummary}
|
||||
</p>
|
||||
</Stack>
|
||||
<Stack
|
||||
direction="horizontal"
|
||||
gap={1}
|
||||
className="align-items-baseline mt-2">
|
||||
<BaseUserCard data={editor} avatarSize="24" />
|
||||
{editTime && (
|
||||
<FormatTime
|
||||
time={editTime}
|
||||
className="small text-secondary"
|
||||
preFix={t('proposed')}
|
||||
/>
|
||||
)}
|
||||
</Stack>
|
||||
</Alert>
|
||||
</Col>
|
||||
<Col lg={{ span: 7, offset: 1 }}>
|
||||
{type === 'question' &&
|
||||
info &&
|
||||
reviewInfo &&
|
||||
'content' in reviewInfo && (
|
||||
<DiffContent
|
||||
className="mt-2"
|
||||
objectType={type}
|
||||
oldData={{
|
||||
title: info.title,
|
||||
original_text: info.content,
|
||||
tags: info.tags,
|
||||
}}
|
||||
newData={{
|
||||
title: reviewInfo.title,
|
||||
original_text: reviewInfo.content,
|
||||
tags: reviewInfo.tags,
|
||||
}}
|
||||
<Alert variant="secondary">
|
||||
<Stack className="align-items-start">
|
||||
<span className="badge text-bg-secondary mb-2">
|
||||
{editBadge}
|
||||
</span>
|
||||
<Link to={itemLink} target="_blank">
|
||||
{itemTitle}
|
||||
</Link>
|
||||
<p className="mb-0">
|
||||
{t('edit_summary')}: {editSummary}
|
||||
</p>
|
||||
</Stack>
|
||||
<Stack
|
||||
direction="horizontal"
|
||||
gap={1}
|
||||
className="align-items-baseline mt-2">
|
||||
<BaseUserCard data={editor} avatarSize="24" />
|
||||
{editTime && (
|
||||
<FormatTime
|
||||
time={editTime}
|
||||
className="small text-secondary"
|
||||
preFix={t('proposed')}
|
||||
/>
|
||||
)}
|
||||
{type === 'answer' &&
|
||||
info &&
|
||||
reviewInfo &&
|
||||
'content' in reviewInfo && (
|
||||
<DiffContent
|
||||
className="mt-2"
|
||||
objectType={type}
|
||||
newData={{
|
||||
original_text: reviewInfo.content,
|
||||
}}
|
||||
oldData={{
|
||||
original_text: info.content,
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
{type === 'tag' && info && reviewInfo && (
|
||||
</Stack>
|
||||
</Alert>
|
||||
{type === 'question' &&
|
||||
info &&
|
||||
reviewInfo &&
|
||||
'content' in reviewInfo && (
|
||||
<DiffContent
|
||||
className="mt-2"
|
||||
objectType={type}
|
||||
oldData={{
|
||||
title: info.title,
|
||||
original_text: info.content,
|
||||
tags: info.tags,
|
||||
}}
|
||||
newData={{
|
||||
title: reviewInfo.title,
|
||||
original_text: reviewInfo.content,
|
||||
tags: reviewInfo.tags,
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
{type === 'answer' &&
|
||||
info &&
|
||||
reviewInfo &&
|
||||
'content' in reviewInfo && (
|
||||
<DiffContent
|
||||
className="mt-2"
|
||||
objectType={type}
|
||||
newData={{
|
||||
original_text: reviewInfo.original_text,
|
||||
original_text: reviewInfo.content,
|
||||
}}
|
||||
oldData={{
|
||||
original_text: info.content,
|
||||
}}
|
||||
opts={{ showTitle: false, showTagUrlSlug: false }}
|
||||
/>
|
||||
)}
|
||||
</Col>
|
||||
<Col lg={{ span: 7, offset: 1 }}>
|
||||
<Stack direction="horizontal" gap={2} className="mt-4">
|
||||
<Button
|
||||
variant="outline-primary"
|
||||
disabled={isLoading}
|
||||
onClick={handlingApprove}>
|
||||
{t('approve', { keyPrefix: 'btns' })}
|
||||
</Button>
|
||||
<Button
|
||||
variant="outline-primary"
|
||||
disabled={isLoading}
|
||||
onClick={handlingReject}>
|
||||
{t('reject', { keyPrefix: 'btns' })}
|
||||
</Button>
|
||||
<Button
|
||||
variant="outline-primary"
|
||||
disabled={isLoading}
|
||||
onClick={handlingSkip}>
|
||||
{t('skip', { keyPrefix: 'btns' })}
|
||||
</Button>
|
||||
</Stack>
|
||||
</Col>
|
||||
{type === 'tag' && info && reviewInfo && (
|
||||
<DiffContent
|
||||
className="mt-2"
|
||||
objectType={type}
|
||||
newData={{
|
||||
original_text: reviewInfo.original_text,
|
||||
}}
|
||||
oldData={{
|
||||
original_text: info.content,
|
||||
}}
|
||||
opts={{ showTitle: false, showTagUrlSlug: false }}
|
||||
/>
|
||||
)}
|
||||
<Stack direction="horizontal" gap={2} className="mt-4">
|
||||
<Button
|
||||
variant="outline-primary"
|
||||
disabled={isLoading}
|
||||
onClick={handlingApprove}>
|
||||
{t('approve', { keyPrefix: 'btns' })}
|
||||
</Button>
|
||||
<Button
|
||||
variant="outline-primary"
|
||||
disabled={isLoading}
|
||||
onClick={handlingReject}>
|
||||
{t('reject', { keyPrefix: 'btns' })}
|
||||
</Button>
|
||||
<Button
|
||||
variant="outline-primary"
|
||||
disabled={isLoading}
|
||||
onClick={handlingSkip}>
|
||||
{t('skip', { keyPrefix: 'btns' })}
|
||||
</Button>
|
||||
</Stack>
|
||||
</>
|
||||
)}
|
||||
{noTasks && (
|
||||
<Col lg={{ span: 7, offset: 1 }}>
|
||||
<Empty>{t('empty')}</Empty>
|
||||
</Col>
|
||||
)}
|
||||
</Row>
|
||||
</Container>
|
||||
{noTasks && <Empty>{t('empty')}</Empty>}
|
||||
</Col>
|
||||
|
||||
<Col className="page-right-side mt-4 mt-xl-0" />
|
||||
</Row>
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ const Index: FC<Props> = ({ data }) => {
|
|||
: null}
|
||||
</a>
|
||||
</div>
|
||||
<div className="d-flex flex-wrap align-items-center fs-14 text-secondary mb-2">
|
||||
<div className="d-flex flex-wrap align-items-center small text-secondary mb-2">
|
||||
<BaseUserCard data={data.object?.user_info} showAvatar={false} />
|
||||
|
||||
<span className="split-dot" />
|
||||
|
@ -65,7 +65,7 @@ const Index: FC<Props> = ({ data }) => {
|
|||
</div>
|
||||
|
||||
{data.object?.excerpt && (
|
||||
<p className="fs-14 text-truncate-2 mb-2 last-p text-break">
|
||||
<p className="small text-truncate-2 mb-2 last-p text-break">
|
||||
{escapeRemove(data.object.excerpt)}
|
||||
</p>
|
||||
)}
|
||||
|
|
|
@ -7,7 +7,7 @@ const Index: FC = () => {
|
|||
return (
|
||||
<Card>
|
||||
<Card.Header>{t('search.tips.title')}</Card.Header>
|
||||
<Card.Body className="fs-14 ext-secondary">
|
||||
<Card.Body className="small ext-secondary">
|
||||
<div className="mb-1">
|
||||
<Trans i18nKey="search.tips.tag" components={{ 1: <code /> }} />
|
||||
</div>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import React from 'react';
|
||||
import { Container, Row, Col, ListGroup } from 'react-bootstrap';
|
||||
import { Row, Col, ListGroup } from 'react-bootstrap';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useSearchParams } from 'react-router-dom';
|
||||
|
||||
|
@ -39,36 +38,34 @@ const Index = () => {
|
|||
title: pageTitle,
|
||||
});
|
||||
return (
|
||||
<Container className="pt-4 mt-2 mb-5">
|
||||
<Row className="justify-content-center">
|
||||
<Col xxl={7} lg={8} sm={12} className="mb-3">
|
||||
<Head data={extra} />
|
||||
<SearchHead sort={order} count={count} />
|
||||
<ListGroup className="rounded-0 mb-5">
|
||||
{isLoading ? (
|
||||
<ListLoader />
|
||||
) : (
|
||||
list?.map((item) => {
|
||||
return <SearchItem key={item.object.id} data={item} />;
|
||||
})
|
||||
)}
|
||||
</ListGroup>
|
||||
<Row className="pt-4 mb-5">
|
||||
<Col className="page-main flex-auto">
|
||||
<Head data={extra} />
|
||||
<SearchHead sort={order} count={count} />
|
||||
<ListGroup className="rounded-0 mb-5">
|
||||
{isLoading ? (
|
||||
<ListLoader />
|
||||
) : (
|
||||
list?.map((item) => {
|
||||
return <SearchItem key={item.object.id} data={item} />;
|
||||
})
|
||||
)}
|
||||
</ListGroup>
|
||||
|
||||
{!isLoading && !list?.length && <Empty />}
|
||||
{!isLoading && !list?.length && <Empty />}
|
||||
|
||||
<div className="d-flex justify-content-center">
|
||||
<Pagination
|
||||
currentPage={Number(page)}
|
||||
pageSize={20}
|
||||
totalSize={count}
|
||||
/>
|
||||
</div>
|
||||
</Col>
|
||||
<Col xxl={3} lg={4} sm={12} className="mt-5 mt-lg-0">
|
||||
<Tips />
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
<div className="d-flex justify-content-center">
|
||||
<Pagination
|
||||
currentPage={Number(page)}
|
||||
pageSize={20}
|
||||
totalSize={count}
|
||||
/>
|
||||
</div>
|
||||
</Col>
|
||||
<Col className="page-right-side mt-4 mt-xl-0">
|
||||
<Tips />
|
||||
</Col>
|
||||
</Row>
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
import { FC, memo } from 'react';
|
||||
import { Container, Row, Col } from 'react-bootstrap';
|
||||
import { Outlet } from 'react-router-dom';
|
||||
|
||||
import { SideNav } from '@/components';
|
||||
|
||||
import '@/common/sideNavLayout.scss';
|
||||
|
||||
const Index: FC = () => {
|
||||
return (
|
||||
<Container>
|
||||
<Row>
|
||||
<SideNav />
|
||||
<Col xl={10} lg={9} md={12}>
|
||||
<Outlet />
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
);
|
||||
};
|
||||
|
||||
export default memo(Index);
|
|
@ -1,5 +1,5 @@
|
|||
import React, { useState, useRef, useEffect } from 'react';
|
||||
import { Container, Row, Col, Form, Button, Card } from 'react-bootstrap';
|
||||
import { Row, Col, Form, Button, Card } from 'react-bootstrap';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
|
@ -17,25 +17,25 @@ interface FormDataItem {
|
|||
slugName: Type.FormValue<string>;
|
||||
description: Type.FormValue<string>;
|
||||
}
|
||||
const initFormData = {
|
||||
displayName: {
|
||||
value: '',
|
||||
isInvalid: false,
|
||||
errorMsg: '',
|
||||
},
|
||||
slugName: {
|
||||
value: '',
|
||||
isInvalid: false,
|
||||
errorMsg: '',
|
||||
},
|
||||
description: {
|
||||
value: '',
|
||||
isInvalid: false,
|
||||
errorMsg: '',
|
||||
},
|
||||
};
|
||||
|
||||
const Index = () => {
|
||||
const initFormData = {
|
||||
displayName: {
|
||||
value: '',
|
||||
isInvalid: false,
|
||||
errorMsg: '',
|
||||
},
|
||||
slugName: {
|
||||
value: '',
|
||||
isInvalid: false,
|
||||
errorMsg: '',
|
||||
},
|
||||
description: {
|
||||
value: '',
|
||||
isInvalid: false,
|
||||
errorMsg: '',
|
||||
},
|
||||
};
|
||||
const { role_id = 1 } = loggedUserInfoStore((state) => state.user);
|
||||
const navigate = useNavigate();
|
||||
const { t } = useTranslation('translation', { keyPrefix: 'tag_modal' });
|
||||
|
@ -82,7 +82,7 @@ const Index = () => {
|
|||
const handleDescriptionChange = (value: string) =>
|
||||
setFormData({
|
||||
...formData,
|
||||
description: { ...formData.description, value },
|
||||
description: { ...formData.description, value, isInvalid: false },
|
||||
});
|
||||
|
||||
const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {
|
||||
|
@ -115,29 +115,34 @@ const Index = () => {
|
|||
const handleDisplayNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
setFormData({
|
||||
...formData,
|
||||
displayName: { ...formData.displayName, value: e.currentTarget.value },
|
||||
displayName: {
|
||||
...formData.displayName,
|
||||
value: e.currentTarget.value,
|
||||
isInvalid: false,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
const handleSlugNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
setFormData({
|
||||
...formData,
|
||||
slugName: { ...formData.slugName, value: e.currentTarget.value },
|
||||
slugName: {
|
||||
...formData.slugName,
|
||||
value: e.currentTarget.value,
|
||||
isInvalid: false,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
usePageTags({
|
||||
title: t('create_tag', { keyPrefix: 'page_title' }),
|
||||
});
|
||||
|
||||
return (
|
||||
<Container className="pt-4 mt-2 mb-5 edit-answer-wrap">
|
||||
<Row className="justify-content-center">
|
||||
<Col xxl={10} md={12}>
|
||||
<h3 className="mb-4">{t('title')}</h3>
|
||||
</Col>
|
||||
</Row>
|
||||
<Row className="justify-content-center">
|
||||
<Col xxl={7} lg={8} sm={12} className="mb-4 mb-md-0">
|
||||
<div className="pt-4 mb-5">
|
||||
<h3 className="mb-4">{t('title')}</h3>
|
||||
<Row>
|
||||
<Col className="page-main flex-auto">
|
||||
<Form noValidate onSubmit={handleSubmit}>
|
||||
<Form.Group controlId="display_name" className="mb-3">
|
||||
<Form.Label>{t('form.fields.display_name.label')}</Form.Label>
|
||||
|
@ -199,7 +204,7 @@ const Index = () => {
|
|||
</div>
|
||||
</Form>
|
||||
</Col>
|
||||
<Col xxl={3} lg={4} sm={12} className="mt-5 mt-lg-0">
|
||||
<Col className="page-right-side mt-4 mt-xl-0">
|
||||
<Card>
|
||||
<Card.Header>
|
||||
{t('title', { keyPrefix: 'how_to_format' })}
|
||||
|
@ -213,7 +218,7 @@ const Index = () => {
|
|||
</Card>
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { FC, useEffect, useState } from 'react';
|
||||
import { Container, Row, Col, Button } from 'react-bootstrap';
|
||||
import { Row, Col, Button } from 'react-bootstrap';
|
||||
import {
|
||||
useParams,
|
||||
Link,
|
||||
|
@ -17,18 +17,24 @@ import {
|
|||
useQuerySynonymsTags,
|
||||
useQuestionList,
|
||||
} from '@/services';
|
||||
import QuestionList from '@/components/QuestionList';
|
||||
import QuestionList, { QUESTION_ORDER_KEYS } from '@/components/QuestionList';
|
||||
import HotQuestions from '@/components/HotQuestions';
|
||||
import { escapeRemove, guard } from '@/utils';
|
||||
import { escapeRemove, guard, Storage, scrollToDocTop } from '@/utils';
|
||||
import { pathFactory } from '@/router/pathFactory';
|
||||
import { QUESTIONS_ORDER_STORAGE_KEY } from '@/common/constants';
|
||||
|
||||
const Questions: FC = () => {
|
||||
const Index: FC = () => {
|
||||
const { t } = useTranslation('translation', { keyPrefix: 'tags' });
|
||||
const navigate = useNavigate();
|
||||
const routeParams = useParams();
|
||||
const curTagName = routeParams.tagName || '';
|
||||
const [urlSearchParams] = useSearchParams();
|
||||
const curOrder = urlSearchParams.get('order') || 'active';
|
||||
const storageOrder = Storage.get(QUESTIONS_ORDER_STORAGE_KEY);
|
||||
const curOrder =
|
||||
urlSearchParams.get('order') || storageOrder || QUESTION_ORDER_KEYS[0];
|
||||
if (curOrder !== storageOrder) {
|
||||
Storage.set(QUESTIONS_ORDER_STORAGE_KEY, curOrder);
|
||||
}
|
||||
const curPage = Number(urlSearchParams.get('page')) || 1;
|
||||
const reqParams: Type.QueryQuestionsReq = {
|
||||
page_size: 20,
|
||||
|
@ -54,7 +60,7 @@ const Questions: FC = () => {
|
|||
|
||||
useEffect(() => {
|
||||
if (!listLoading) {
|
||||
window.scrollTo(0, 0);
|
||||
scrollToDocTop();
|
||||
}
|
||||
}, [listLoading]);
|
||||
|
||||
|
@ -100,65 +106,68 @@ const Questions: FC = () => {
|
|||
keywords: keywords.join(','),
|
||||
});
|
||||
return (
|
||||
<Container className="pt-4 mt-2 mb-5">
|
||||
<Row className="justify-content-center">
|
||||
<Col xxl={7} lg={8} sm={12}>
|
||||
{isLoading || listLoading ? (
|
||||
<div className="tag-box mb-5 placeholder-glow">
|
||||
<div className="mb-3 h3 placeholder" style={{ width: '120px' }} />
|
||||
<p
|
||||
className="placeholder w-100 d-block align-top"
|
||||
style={{ height: '24px' }}
|
||||
/>
|
||||
<Row className="pt-4 mb-5">
|
||||
<Col className="page-main flex-auto">
|
||||
{isLoading || listLoading ? (
|
||||
<div className="tag-box mb-5 placeholder-glow">
|
||||
<div className="mb-3 h3 placeholder" style={{ width: '120px' }} />
|
||||
<p
|
||||
className="placeholder w-100 d-block align-top"
|
||||
style={{ height: '24px' }}
|
||||
/>
|
||||
|
||||
<div
|
||||
className="placeholder d-block align-top"
|
||||
style={{ height: '38px', width: '100px' }}
|
||||
/>
|
||||
<div
|
||||
className="placeholder d-block align-top"
|
||||
style={{ height: '38px', width: '100px' }}
|
||||
/>
|
||||
</div>
|
||||
) : (
|
||||
<div className="tag-box mb-5">
|
||||
<h3 className="mb-3">
|
||||
<Link
|
||||
to={pathFactory.tagLanding(tagInfo.slug_name)}
|
||||
replace
|
||||
className="link-dark">
|
||||
{tagInfo.display_name}
|
||||
</Link>
|
||||
</h3>
|
||||
|
||||
<p className="text-break">
|
||||
{escapeRemove(tagInfo.excerpt) || t('no_desc')}
|
||||
<Link to={pathFactory.tagInfo(curTagName)} className="ms-1">
|
||||
[{t('more')}]
|
||||
</Link>
|
||||
</p>
|
||||
|
||||
<div className="box-ft">
|
||||
{tagInfo.is_follower ? (
|
||||
<Button variant="primary" onClick={() => toggleFollow()}>
|
||||
{t('button_following')}
|
||||
</Button>
|
||||
) : (
|
||||
<Button
|
||||
variant="outline-primary"
|
||||
onClick={() => toggleFollow()}>
|
||||
{t('button_follow')}
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
) : (
|
||||
<div className="tag-box mb-5">
|
||||
<h3 className="mb-3">
|
||||
<Link
|
||||
to={pathFactory.tagLanding(tagInfo.slug_name)}
|
||||
replace
|
||||
className="link-dark">
|
||||
{tagInfo.display_name}
|
||||
</Link>
|
||||
</h3>
|
||||
|
||||
<p className="text-break">
|
||||
{escapeRemove(tagInfo.excerpt) || t('no_desc')}
|
||||
<Link to={pathFactory.tagInfo(curTagName)} className="ms-1">
|
||||
[{t('more')}]
|
||||
</Link>
|
||||
</p>
|
||||
|
||||
<div className="box-ft">
|
||||
{tagInfo.is_follower ? (
|
||||
<Button variant="primary" onClick={() => toggleFollow()}>
|
||||
{t('button_following')}
|
||||
</Button>
|
||||
) : (
|
||||
<Button
|
||||
variant="outline-primary"
|
||||
onClick={() => toggleFollow()}>
|
||||
{t('button_follow')}
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
<QuestionList source="tag" data={listData} isLoading={listLoading} />
|
||||
</Col>
|
||||
<Col xxl={3} lg={4} sm={12} className="mt-5 mt-lg-0">
|
||||
<CustomSidebar />
|
||||
<FollowingTags />
|
||||
<HotQuestions />
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
</div>
|
||||
)}
|
||||
<QuestionList
|
||||
source="tag"
|
||||
data={listData}
|
||||
order={curOrder}
|
||||
isLoading={listLoading}
|
||||
/>
|
||||
</Col>
|
||||
<Col className="page-right-side mt-4 mt-xl-0">
|
||||
<CustomSidebar />
|
||||
<FollowingTags />
|
||||
<HotQuestions />
|
||||
</Col>
|
||||
</Row>
|
||||
);
|
||||
};
|
||||
|
||||
export default Questions;
|
||||
export default Index;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import React, { useState, useRef, useEffect } from 'react';
|
||||
import { Container, Row, Col, Form, Button, Card } from 'react-bootstrap';
|
||||
import { Row, Col, Form, Button, Card } from 'react-bootstrap';
|
||||
import { useParams, useNavigate } from 'react-router-dom';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
|
@ -188,14 +188,10 @@ const Index = () => {
|
|||
title: t('edit_tag', { keyPrefix: 'page_title' }),
|
||||
});
|
||||
return (
|
||||
<Container className="pt-4 mt-2 mb-5 edit-answer-wrap">
|
||||
<Row className="justify-content-center">
|
||||
<Col xxl={10} md={12}>
|
||||
<h3 className="mb-4">{t('title')}</h3>
|
||||
</Col>
|
||||
</Row>
|
||||
<Row className="justify-content-center">
|
||||
<Col xxl={7} lg={8} sm={12} className="mb-4 mb-md-0">
|
||||
<div className="pt-4 mb-5">
|
||||
<h3 className="mb-4">{t('title')}</h3>
|
||||
<Row>
|
||||
<Col className="page-main flex-auto">
|
||||
<Form noValidate onSubmit={handleSubmit}>
|
||||
<Form.Group controlId="revision" className="mb-3">
|
||||
<Form.Label>{t('form.fields.revision.label')}</Form.Label>
|
||||
|
@ -291,7 +287,7 @@ const Index = () => {
|
|||
</div>
|
||||
</Form>
|
||||
</Col>
|
||||
<Col xxl={3} lg={4} sm={12} className="mt-5 mt-lg-0">
|
||||
<Col className="page-right-side mt-4 mt-xl-0">
|
||||
<Card>
|
||||
<Card.Header>
|
||||
{t('title', { keyPrefix: 'how_to_format' })}
|
||||
|
@ -305,7 +301,7 @@ const Index = () => {
|
|||
</Card>
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { useState, useEffect } from 'react';
|
||||
import { Container, Row, Col, Button, Card } from 'react-bootstrap';
|
||||
import { Row, Col, Button, Card } from 'react-bootstrap';
|
||||
import { useParams, useNavigate, Link, useLocation } from 'react-router-dom';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
|
@ -132,132 +132,131 @@ const TagIntroduction = () => {
|
|||
};
|
||||
|
||||
return (
|
||||
<Container className="pt-4 mt-2 mb-5">
|
||||
<Row className="justify-content-center">
|
||||
<Col xxl={7} lg={8} sm={12}>
|
||||
<h3 className="mb-3">
|
||||
<Link
|
||||
to={pathFactory.tagLanding(tagInfo.slug_name)}
|
||||
replace
|
||||
className="link-dark">
|
||||
{tagInfo.display_name}
|
||||
</Link>
|
||||
</h3>
|
||||
<Row className="pt-4 mb-5">
|
||||
<Col className="page-main flex-auto">
|
||||
<h3 className="mb-3">
|
||||
<Link
|
||||
to={pathFactory.tagLanding(tagInfo.slug_name)}
|
||||
replace
|
||||
className="link-dark">
|
||||
{tagInfo.display_name}
|
||||
</Link>
|
||||
</h3>
|
||||
|
||||
<div className="text-secondary mb-4 fs-14">
|
||||
<FormatTime preFix={t('created_at')} time={tagInfo.created_at} />
|
||||
<FormatTime
|
||||
preFix={t('edited_at')}
|
||||
className="ms-3"
|
||||
time={tagInfo.updated_at}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div
|
||||
className="content text-break fmt"
|
||||
dangerouslySetInnerHTML={{ __html: tagInfo?.parsed_text }}
|
||||
<div className="text-secondary mb-4 small">
|
||||
<FormatTime preFix={t('created_at')} time={tagInfo.created_at} />
|
||||
<FormatTime
|
||||
preFix={t('edited_at')}
|
||||
className="ms-3"
|
||||
time={tagInfo.updated_at}
|
||||
/>
|
||||
<div className="mt-4">
|
||||
{tagInfo?.member_actions.map((action, index) => {
|
||||
return (
|
||||
<Button
|
||||
key={action.name}
|
||||
variant="link"
|
||||
className={classNames(
|
||||
'link-secondary btn-no-border p-0 fs-14',
|
||||
index > 0 && 'ms-3',
|
||||
)}
|
||||
onClick={() => onAction(action)}>
|
||||
{action.name}
|
||||
</Button>
|
||||
);
|
||||
})}
|
||||
{isLogged && (
|
||||
<Link
|
||||
to={`/tags/${tagInfo?.tag_id}/timeline`}
|
||||
</div>
|
||||
|
||||
<div
|
||||
className="content text-break fmt"
|
||||
dangerouslySetInnerHTML={{ __html: tagInfo?.parsed_text }}
|
||||
/>
|
||||
<div className="mt-4">
|
||||
{tagInfo?.member_actions.map((action, index) => {
|
||||
return (
|
||||
<Button
|
||||
key={action.name}
|
||||
variant="link"
|
||||
size="sm"
|
||||
className={classNames(
|
||||
'link-secondary btn-no-border p-0 fs-14',
|
||||
tagInfo?.member_actions?.length > 0 && 'ms-3',
|
||||
)}>
|
||||
{t('history')}
|
||||
</Link>
|
||||
)}
|
||||
</div>
|
||||
</Col>
|
||||
<Col xxl={3} lg={4} sm={12} className="mt-5 mt-lg-0">
|
||||
<Card>
|
||||
<Card.Header className="d-flex justify-content-between">
|
||||
<span>{t('synonyms.title')}</span>
|
||||
{isEdit ? (
|
||||
<Button
|
||||
variant="link"
|
||||
className="p-0 btn-no-border"
|
||||
onClick={handleSave}>
|
||||
{t('synonyms.btn_save')}
|
||||
</Button>
|
||||
) : synonymsData?.member_actions?.find(
|
||||
(v) => v.action === 'edit',
|
||||
) ? (
|
||||
<Button
|
||||
variant="link"
|
||||
className="p-0 btn-no-border"
|
||||
onClick={handleEdit}>
|
||||
{t('synonyms.btn_edit')}
|
||||
</Button>
|
||||
) : null}
|
||||
</Card.Header>
|
||||
<Card.Body>
|
||||
{isEdit && (
|
||||
<>
|
||||
<div className="mb-3">
|
||||
{t('synonyms.text')}{' '}
|
||||
<Tag
|
||||
data={{
|
||||
slug_name: tagName || '',
|
||||
main_tag_slug_name: '',
|
||||
display_name:
|
||||
tagInfo?.display_name || tagInfo?.slug_name || '',
|
||||
recommend: false,
|
||||
reserved: false,
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
<TagSelector
|
||||
value={synonymsData?.synonyms}
|
||||
onChange={handleTagsChange}
|
||||
hiddenDescription
|
||||
'link-secondary btn-no-border p-0',
|
||||
index > 0 && 'ms-3',
|
||||
)}
|
||||
onClick={() => onAction(action)}>
|
||||
{action.name}
|
||||
</Button>
|
||||
);
|
||||
})}
|
||||
{isLogged && (
|
||||
<Link
|
||||
to={`/tags/${tagInfo?.tag_id}/timeline`}
|
||||
className={classNames(
|
||||
'link-secondary btn-no-border p-0 small',
|
||||
tagInfo?.member_actions?.length > 0 && 'ms-3',
|
||||
)}>
|
||||
{t('history')}
|
||||
</Link>
|
||||
)}
|
||||
</div>
|
||||
</Col>
|
||||
<Col className="page-right-side mt-4 mt-xl-0">
|
||||
<Card>
|
||||
<Card.Header className="d-flex justify-content-between">
|
||||
<span>{t('synonyms.title')}</span>
|
||||
{isEdit ? (
|
||||
<Button
|
||||
variant="link"
|
||||
className="p-0 btn-no-border"
|
||||
onClick={handleSave}>
|
||||
{t('synonyms.btn_save')}
|
||||
</Button>
|
||||
) : synonymsData?.member_actions?.find(
|
||||
(v) => v.action === 'edit',
|
||||
) ? (
|
||||
<Button
|
||||
variant="link"
|
||||
className="p-0 btn-no-border"
|
||||
onClick={handleEdit}>
|
||||
{t('synonyms.btn_edit')}
|
||||
</Button>
|
||||
) : null}
|
||||
</Card.Header>
|
||||
<Card.Body>
|
||||
{isEdit && (
|
||||
<>
|
||||
<div className="mb-3">
|
||||
{t('synonyms.text')}{' '}
|
||||
<Tag
|
||||
data={{
|
||||
slug_name: tagName || '',
|
||||
main_tag_slug_name: '',
|
||||
display_name:
|
||||
tagInfo?.display_name || tagInfo?.slug_name || '',
|
||||
recommend: false,
|
||||
reserved: false,
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
<TagSelector
|
||||
value={synonymsData?.synonyms}
|
||||
onChange={handleTagsChange}
|
||||
hiddenDescription
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
{!isEdit &&
|
||||
(synonymsData?.synonyms && synonymsData.synonyms.length > 0 ? (
|
||||
<div className="m-n1">
|
||||
{synonymsData.synonyms.map((item) => {
|
||||
return (
|
||||
<Tag key={item.tag_id} className="m-1" data={item} />
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
) : (
|
||||
<>
|
||||
<div className="text-muted mb-3">{t('synonyms.empty')}</div>
|
||||
{synonymsData?.member_actions?.find(
|
||||
(v) => v.action === 'edit',
|
||||
) && (
|
||||
<Button
|
||||
variant="outline-primary"
|
||||
size="sm"
|
||||
onClick={handleEdit}>
|
||||
{t('synonyms.btn_add')}
|
||||
</Button>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
{!isEdit &&
|
||||
(synonymsData?.synonyms && synonymsData.synonyms.length > 0 ? (
|
||||
<div className="m-n1">
|
||||
{synonymsData.synonyms.map((item) => {
|
||||
return (
|
||||
<Tag key={item.tag_id} className="m-1" data={item} />
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
) : (
|
||||
<>
|
||||
<div className="text-muted mb-3">{t('synonyms.empty')}</div>
|
||||
{synonymsData?.member_actions?.find(
|
||||
(v) => v.action === 'edit',
|
||||
) && (
|
||||
<Button
|
||||
variant="outline-primary"
|
||||
size="sm"
|
||||
onClick={handleEdit}>
|
||||
{t('synonyms.btn_add')}
|
||||
</Button>
|
||||
)}
|
||||
</>
|
||||
))}
|
||||
</Card.Body>
|
||||
</Card>
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
))}
|
||||
</Card.Body>
|
||||
</Card>
|
||||
</Col>
|
||||
</Row>
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -1,13 +1,5 @@
|
|||
import { useState } from 'react';
|
||||
import {
|
||||
Container,
|
||||
Row,
|
||||
Col,
|
||||
Card,
|
||||
Button,
|
||||
Form,
|
||||
Stack,
|
||||
} from 'react-bootstrap';
|
||||
import { Row, Col, Card, Button, Form, Stack } from 'react-bootstrap';
|
||||
import { useSearchParams, Link } from 'react-router-dom';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
|
@ -60,90 +52,89 @@ const Tags = () => {
|
|||
title: t('tags', { keyPrefix: 'page_title' }),
|
||||
});
|
||||
return (
|
||||
<Container className="py-3 my-3">
|
||||
<Row className="mb-4 d-flex justify-content-center">
|
||||
<Col xxl={10} sm={12}>
|
||||
<h3 className="mb-4">{t('title')}</h3>
|
||||
<div className="d-block d-sm-flex justify-content-between align-items-center flex-wrap">
|
||||
<Stack direction="horizontal" gap={3} className="mb-3 mb-sm-0">
|
||||
<Form>
|
||||
<Form.Group controlId="formBasicEmail">
|
||||
<Form.Control
|
||||
value={searchTag}
|
||||
placeholder={t('search_placeholder')}
|
||||
type="text"
|
||||
onChange={handleChange}
|
||||
size="sm"
|
||||
/>
|
||||
</Form.Group>
|
||||
</Form>
|
||||
{role_id === 2 || role_id === 3 ? (
|
||||
<Link
|
||||
className="btn btn-outline-primary btn-sm"
|
||||
to="/tags/create">
|
||||
{t('title', { keyPrefix: 'tag_modal' })}
|
||||
</Link>
|
||||
) : null}
|
||||
</Stack>
|
||||
<QueryGroup
|
||||
data={sortBtns}
|
||||
currentSort={sort || 'popular'}
|
||||
sortKey="sort"
|
||||
i18nKeyPrefix="tags.sort_buttons"
|
||||
/>
|
||||
</div>
|
||||
</Col>
|
||||
<Row className="py-4 mb-4">
|
||||
<Col xxl={12}>
|
||||
<h3 className="mb-4">{t('title')}</h3>
|
||||
<div className="d-block d-sm-flex justify-content-between align-items-center flex-wrap">
|
||||
<Stack direction="horizontal" gap={3} className="mb-3 mb-sm-0">
|
||||
<Form>
|
||||
<Form.Group controlId="formBasicEmail">
|
||||
<Form.Control
|
||||
value={searchTag}
|
||||
placeholder={t('search_placeholder')}
|
||||
type="text"
|
||||
onChange={handleChange}
|
||||
size="sm"
|
||||
/>
|
||||
</Form.Group>
|
||||
</Form>
|
||||
{role_id === 2 || role_id === 3 ? (
|
||||
<Link
|
||||
className="btn btn-outline-primary btn-sm"
|
||||
to="/tags/create">
|
||||
{t('title', { keyPrefix: 'tag_modal' })}
|
||||
</Link>
|
||||
) : null}
|
||||
</Stack>
|
||||
<QueryGroup
|
||||
data={sortBtns}
|
||||
currentSort={sort || 'popular'}
|
||||
sortKey="sort"
|
||||
i18nKeyPrefix="tags.sort_buttons"
|
||||
/>
|
||||
</div>
|
||||
</Col>
|
||||
|
||||
<Col className="mt-4" xxl={10} sm={12}>
|
||||
<Row>
|
||||
{isLoading ? (
|
||||
<TagsLoader />
|
||||
) : (
|
||||
tags?.list?.map((tag) => (
|
||||
<Col
|
||||
key={tag.slug_name}
|
||||
xs={12}
|
||||
lg={3}
|
||||
md={4}
|
||||
sm={6}
|
||||
className="mb-4">
|
||||
<Card className="h-100">
|
||||
<Card.Body className="d-flex flex-column align-items-start">
|
||||
<Tag className="mb-3" data={tag} />
|
||||
<Col className="mt-4" xxl={12}>
|
||||
<Row>
|
||||
{isLoading ? (
|
||||
<TagsLoader />
|
||||
) : (
|
||||
tags?.list?.map((tag) => (
|
||||
<Col
|
||||
key={tag.slug_name}
|
||||
xl={3}
|
||||
lg={4}
|
||||
md={4}
|
||||
sm={6}
|
||||
xs={12}
|
||||
className="mb-4">
|
||||
<Card className="h-100">
|
||||
<Card.Body className="d-flex flex-column align-items-start">
|
||||
<Tag className="mb-3" data={tag} />
|
||||
|
||||
<div className="fs-14 flex-fill text-break text-wrap text-truncate-3 reset-p mb-3">
|
||||
{escapeRemove(tag.excerpt)}
|
||||
</div>
|
||||
<div className="d-flex align-items-center">
|
||||
<Button
|
||||
className={`me-2 ${tag.is_follower ? 'active' : ''}`}
|
||||
variant="outline-primary"
|
||||
size="sm"
|
||||
onClick={() => handleFollow(tag)}>
|
||||
{tag.is_follower
|
||||
? t('button_following')
|
||||
: t('button_follow')}
|
||||
</Button>
|
||||
<span className="text-secondary fs-14 text-nowrap">
|
||||
{formatCount(tag.question_count)} {t('tag_label')}
|
||||
</span>
|
||||
</div>
|
||||
</Card.Body>
|
||||
</Card>
|
||||
</Col>
|
||||
))
|
||||
)}
|
||||
</Row>
|
||||
<div className="d-flex justify-content-center">
|
||||
<Pagination
|
||||
currentPage={page}
|
||||
totalSize={tags?.count || 0}
|
||||
pageSize={pageSize}
|
||||
/>
|
||||
</div>
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
<div className="small flex-fill text-break text-wrap text-truncate-3 reset-p mb-3">
|
||||
{escapeRemove(tag.excerpt)}
|
||||
</div>
|
||||
<div className="d-flex align-items-center">
|
||||
<Button
|
||||
className={`me-2 ${tag.is_follower ? 'active' : ''}`}
|
||||
variant="outline-primary"
|
||||
size="sm"
|
||||
onClick={() => handleFollow(tag)}>
|
||||
{tag.is_follower
|
||||
? t('button_following')
|
||||
: t('button_follow')}
|
||||
</Button>
|
||||
<span className="text-secondary small text-nowrap">
|
||||
{formatCount(tag.question_count)} {t('tag_label')}
|
||||
</span>
|
||||
</div>
|
||||
</Card.Body>
|
||||
</Card>
|
||||
</Col>
|
||||
))
|
||||
)}
|
||||
</Row>
|
||||
<div className="d-flex justify-content-center">
|
||||
<Pagination
|
||||
currentPage={page}
|
||||
totalSize={tags?.count || 0}
|
||||
pageSize={pageSize}
|
||||
/>
|
||||
</div>
|
||||
</Col>
|
||||
</Row>
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { FC, useState, useEffect } from 'react';
|
||||
import { Container, Row, Col, Form, Table } from 'react-bootstrap';
|
||||
import { Form, Table } from 'react-bootstrap';
|
||||
import { Link, useParams } from 'react-router-dom';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
|
@ -79,54 +79,50 @@ const Index: FC = () => {
|
|||
title: pageTitle,
|
||||
});
|
||||
return (
|
||||
<Container className="py-3">
|
||||
<Row className="py-3 justify-content-center">
|
||||
<Col xxl={10}>
|
||||
<h5 className="mb-4">
|
||||
{timelineData?.object_info.object_type === 'tag'
|
||||
? t('tag_title')
|
||||
: t('title')}{' '}
|
||||
<Link to={linkUrl}>{timelineData?.object_info?.title}</Link>
|
||||
</h5>
|
||||
{timelineData?.object_info.object_type !== 'tag' && (
|
||||
<Form.Check
|
||||
className="mb-4"
|
||||
type="switch"
|
||||
id="custom-switch"
|
||||
label={t('show_votes')}
|
||||
checked={showVotes}
|
||||
onChange={(e) => handleSwitch(e.target.checked)}
|
||||
/>
|
||||
)}
|
||||
<Table hover>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style={{ width: '20%' }}>{t('datetime')}</th>
|
||||
<th style={{ width: '15%' }}>{t('type')}</th>
|
||||
<th style={{ width: '19%' }}>{t('by')}</th>
|
||||
<th>{t('comment')}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{timelineData?.timeline?.map((item) => {
|
||||
return (
|
||||
<HistoryItem
|
||||
data={item}
|
||||
objectInfo={timelineData?.object_info}
|
||||
key={item.activity_id}
|
||||
isAdmin={role_id === 2}
|
||||
revisionList={revisionList}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
</tbody>
|
||||
</Table>
|
||||
{!isLoading && Number(timelineData?.timeline?.length) <= 0 && (
|
||||
<Empty>{t('no_data')}</Empty>
|
||||
)}
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
<div className="py-4 mb-5">
|
||||
<h5 className="mb-4">
|
||||
{timelineData?.object_info.object_type === 'tag'
|
||||
? t('tag_title')
|
||||
: t('title')}{' '}
|
||||
<Link to={linkUrl}>{timelineData?.object_info?.title}</Link>
|
||||
</h5>
|
||||
{timelineData?.object_info.object_type !== 'tag' && (
|
||||
<Form.Check
|
||||
className="mb-4"
|
||||
type="switch"
|
||||
id="custom-switch"
|
||||
label={t('show_votes')}
|
||||
checked={showVotes}
|
||||
onChange={(e) => handleSwitch(e.target.checked)}
|
||||
/>
|
||||
)}
|
||||
<Table hover>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style={{ width: '20%' }}>{t('datetime')}</th>
|
||||
<th style={{ width: '15%' }}>{t('type')}</th>
|
||||
<th style={{ width: '19%' }}>{t('by')}</th>
|
||||
<th>{t('comment')}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{timelineData?.timeline?.map((item) => {
|
||||
return (
|
||||
<HistoryItem
|
||||
data={item}
|
||||
objectInfo={timelineData?.object_info}
|
||||
key={item.activity_id}
|
||||
isAdmin={role_id === 2}
|
||||
revisionList={revisionList}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
</tbody>
|
||||
</Table>
|
||||
{!isLoading && Number(timelineData?.timeline?.length) <= 0 && (
|
||||
<Empty>{t('no_data')}</Empty>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -65,12 +65,13 @@ const Index: FC = () => {
|
|||
clearTimeout(checkTimer);
|
||||
};
|
||||
}, []);
|
||||
|
||||
if (getUaType() !== USER_AGENT_NAMES.WeCom) {
|
||||
return (
|
||||
<Card className="text-center">
|
||||
<Card.Body>
|
||||
<Card.Title as="h3" className="mb-3">
|
||||
{ucAgent?.agent_info.display_name} {t('login')}
|
||||
{ucAgent?.agent_info?.display_name} {t('login')}
|
||||
</Card.Title>
|
||||
{qrcodeDataUrl ? (
|
||||
<>
|
||||
|
@ -82,7 +83,7 @@ const Index: FC = () => {
|
|||
/>
|
||||
<div className="text-secondary mt-3">
|
||||
{t('qrcode_login_tip', {
|
||||
agentName: ucAgent?.agent_info.display_name,
|
||||
agentName: ucAgent?.agent_info?.display_name,
|
||||
})}
|
||||
</div>
|
||||
</>
|
||||
|
|
|
@ -13,7 +13,7 @@ const Index = () => {
|
|||
const { t } = useTranslation('translation');
|
||||
const [searchParam] = useSearchParams();
|
||||
const { agent: ucAgent } = userCenterStore();
|
||||
let agentName = ucAgent?.agent_info.name || '';
|
||||
let agentName = ucAgent?.agent_info?.name || '';
|
||||
if (searchParam.get('agent_name')) {
|
||||
agentName = searchParam.get('agent_name') || '';
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue