Skip to content

Commit

Permalink
Merge pull request #1907 from compdemocracy/te-translations-vi
Browse files Browse the repository at this point in the history
add vietnamese
  • Loading branch information
tevko authored Feb 7, 2025
2 parents 2d058ab + 8472c2c commit 5125da7
Show file tree
Hide file tree
Showing 4 changed files with 209 additions and 0 deletions.
4 changes: 4 additions & 0 deletions client-participation/js/strings.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ var translations = {
tdt: require("./strings/tdt.js"),
// Ukrainian
uk: require("./strings/uk.js"),
// Vietnamese
vi: require("./strings/vi.js"),
// Chinese
// zh-Hans is Simplified Chinese. (CN, SG and MY can use the same file.)
zh_Hans: require("./strings/zh_Hans.js"),
Expand Down Expand Up @@ -133,6 +135,8 @@ preloadHelper.acceptLanguagePromise.then(function() {
_.extend(strings, translations.ta);
} else if (languageCode.match(/^tdt/)) {
_.extend(strings, translations.tdt);
} else if (languageCode.match(/^vi/)) {
_.extend(strings, translations.vi);
}
});
});
Expand Down
200 changes: 200 additions & 0 deletions client-participation/js/strings/vi.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
var s = {};

// Text on the card

s.participantHelpWelcomeText =
"Xin giới thiệu một hình thức thảo luận mới: <em>bình chọn</em> cho ý kiến của người khác – càng nhiều càng tốt!";

s.agree = "Đồng ý";
s.disagree = "Không đồng ý";
s.pass = "Bỏ qua / Không rõ";

s.writePrompt ="Chia sẻ quan điểm của bạn (phần này không phải để phản hồi ý kiến của người khác — hãy gửi ý kiến độc lập)";
s.anonPerson = "Ẩn danh";
s.importantCheckbox = "Quan trọng / Có ý nghĩa";
s.importantCheckboxDesc =
"Đánh dấu vào ô này nếu bạn cho rằng ý kiến này đặc biệt quan trọng đối với bạn hoặc có ý nghĩa đáng kể với nội dung thảo luận, bất kể bạn bình chọn ra sao. Khi phân tích nội dung thảo luận, ý kiến này sẽ được ưu tiên hơn so với các ý kiến khác bạn bình chọn.";

s.howImportantPrompt = "Ý kiến này có quan trọng không?";
s.howImportantLow = "Không quan trọng lắm";
s.howImportantMedium = "Bình thường";
s.howImportantHigh = "Rất quan trọng";

s.modSpam = "Vô bổ";
s.modOffTopic = "Lạc đề";
s.modImportant = "Quan trọng";
s.modSubmitInitialState = "Bỏ qua (không chọn phương án nào ở trên), chuyển sang ý kiến tiếp theo";
s.modSubmit = "Đã xong, chuyển sang ý kiến tiếp theo";

s.x_wrote = "đã viết:";
s.x_tweeted = "đã đăng trên Twitter:";
s.comments_remaining = "Còn lại {{num_comments}}";
s.comments_remaining2 = "Số ý kiến còn lại: {{num_comments}}";

// Text about phasing

s.noCommentsYet = "Chưa có ý kiến nào.";
s.noCommentsYetSoWrite = "Để bắt đầu thảo luận, hãy phát biểu ý kiến.";
s.noCommentsYetSoInvite =
"Để bắt đầu thảo luận, hãy phát biểu ý kiến hoặc mời thêm người tham gia.";
s.noCommentsYouVotedOnAll = "Bạn đã bình chọn cho tất cả ý kiến.";
s.noCommentsTryWritingOne =
"Nếu có gì muốn bổ sung, hãy thử viết ý kiến của riêng bạn.";
s.convIsClosed = "Cuộc thảo luận này đã kết thúc.";
s.noMoreVotingAllowed = "Bạn không bình chọn được nữa.";

// For the visualization below

s.group_123 = "Nhóm:";
s.comment_123 = "Ý kiến:";
s.majorityOpinion = "Quan điểm đa số";
s.majorityOpinionShort = "Đa số";
s.info = "Thông tin";


s.helpWhatAmISeeingTitle = "Hình ảnh này có ý nghĩa gì?";
s.helpWhatAmISeeing =
"Vòng tròn màu xanh dương đại diện cho bạn. Bạn ở chung nhóm với những người khác có cùng quan điểm.";
s.heresHowGroupVoted = "Nhóm {{GROUP_NUMBER}} đã bình chọn như sau:";
s.one_person = "{{x}} người";
s.x_people = "{{x}} người";
s.acrossAllPtpts = "Tính trên tất cả người tham gia:";
s.xPtptsSawThisComment = " người tham gia đã nhìn thấy ý kiến này";
s.xOfThoseAgreed = "trong số đó đồng ý";
s.xOfthoseDisagreed = "trong số đó không đồng ý";
s.opinionGroups = "Các nhóm quan điểm";
s.topComments = "Ý kiến hàng đầu";
s.divisiveComments = "Ý kiến gây chia rẽ quan điểm";
s.pctAgreed = "{{pct}}% đồng ý";
s.pctDisagreed = "{{pct}}% không đồng ý";
s.pctAgreedLong =
"{{pct}}% số người bình chọn cho ý kiến {{comment_id}} đồng ý.";
s.pctAgreedOfGroup = "{{pct}}% số người thuộc nhóm {{group}} đồng ý";
s.pctDisagreedOfGroup = "{{pct}}% số người thuộc nhóm {{group}} không đồng ý";
s.pctDisagreedLong =
"{{pct}}% số người bình chọn cho ý kiến {{comment_id}} không đồng ý.";
s.pctAgreedOfGroupLong =
"{{pct}}% số người thuộc nhóm {{group}} và bình chọn cho ý kiến {{comment_id}} đồng ý.";
s.pctDisagreedOfGroupLong =
"{{pct}}% số người thuộc nhóm {{group}} và bình chọn cho ý kiến {{comment_id}} không đồng ý.";
s.participantHelpGroupsText =
"Vòng tròn màu xanh dương đại diện cho bạn. Bạn ở chung nhóm với những người khác có cùng quan điểm.";
s.participantHelpGroupsNotYetText =
"Hình ảnh trực quan sẽ xuất hiện sau khi có 7 người tham gia bắt đầu bình chọn";
s.helpWhatAreGroupsDetail =
"<p>Nhấp vào nhóm của bạn hoặc các nhóm khác để tìm hiểu quan điểm của từng nhóm.</p><p>Quan điểm đa số là quan điểm mà các nhóm đồng tình rộng rãi nhất.</p>";

// Text about writing your own statement

s.helpWhatDoIDoTitle = " Tôi cần làm gì?";
s.helpWhatDoIDo =
`Bạn có thể bình chọn cho ý kiến của người khác bằng cách nhấp vào "đồng ý" hoặc "không đồng ý". Bạn cũng có thể viết ý kiến (mỗi câu chỉ nêu một ý). Nhớ mời bạn bè cùng tham gia thảo luận nhé!`;
s.writeCommentHelpText =
"Có phải quan điểm hoặc trải nghiệm của bạn chưa có trong nội dung thảo luận? Nếu đúng vậy, </b>hãy thêm ý kiến </b> vào ô bên dưới – </b>mỗi lần một câu</b>.";
s.helpWriteListIntro = "Thế nào là một ý kiến phù hợp?";
s.helpWriteListStandalone = "Một ý tưởng độc lập";
s.helpWriteListRaisNew = "Một quan điểm, trải nghiệm hoặc vấn đề mới";
s.helpWriteListShort = "Cách viết ngắn gọn và rõ ràng (tối đa 140 ký tự)";
s.tip = "Lưu ý:";
s.commentWritingTipsHintsHeader = "Lưu ý khi viết ý kiến";
s.tipCharLimit = "Ý kiến chỉ được dài tối đa {{char_limit}} ký tự.";
s.tipCommentsRandom =
"Ý kiến sẽ xuất hiện ngẫu nhiên. Bạn không trực tiếp phản hồi ý kiến của người khác, <b> mà cần phát biểu ý kiến độc lập.<b>";
s.tipOneIdea =
"Hãy chia nhỏ những câu dài chứa nhiều ý để giúp mọi người bình chọn cho ý kiến của bạn dễ dàng hơn.";
s.tipNoQuestions =
"Đừng viết ý kiến dưới dạng câu hỏi. Người tham gia sẽ đồng ý hoặc không đồng ý với ý kiến của bạn.";
s.commentTooLongByChars =
"Ý kiến vượt quá {{CHARACTERS_COUNT}} ký tự so với giới hạn.";
s.submitComment = "Gửi";
s.commentSent =
"Đã gửi ý kiến! Chỉ những người tham gia khác mới có thể nhìn thấy và đồng ý hoặc không đồng ý với ý kiến của bạn.";

// Error notices

s.commentSendFailed = "Đã xảy ra lỗi khi gửi ý kiến của bạn.";
s.commentSendFailedEmpty =
"Đã xảy ra lỗi khi gửi ý kiến của bạn – Ý kiến phải có nội dung.";
s.commentSendFailedTooLong =
"Đã xảy ra lỗi khi gửi ý kiến của bạn – Ý kiến quá dài.";
s.commentSendFailedDuplicate =
"Đã xảy ra lỗi khi gửi ý kiến của bạn – Đã có một ý kiến giống hệt như vậy.";
s.commentErrorDuplicate = "Trùng lặp! Ý kiến đó đã có từ trước.";
s.commentErrorConversationClosed =
"Cuộc thảo luận này đã kết thúc. Bạn không gửi thêm ý kiến được nữa.";
s.commentIsEmpty = "Ý kiến không có nội dung";
s.commentIsTooLong = "Ý kiến quá dài";
s.hereIsNextStatement = "Đã bình chọn xong. Hãy di chuyển lên để xem ý kiến tiếp theo.";

// Text about connecting identity

s.connectFacebook = "Kết nối với Facebook";
s.connectTwitter = "Kết nối với Twitter";
s.connectToPostPrompt =
"Kết nối một tài khoản để gửi ý kiến. Chúng tôi sẽ không đăng lên dòng thời gian của bạn.";
s.connectToVotePrompt =
"Kết nối một tài khoản để bình chọn. Chúng tôi sẽ không đăng lên dòng thời gian của bạn.";
s.socialConnectPrompt =
"Bạn có thể kết nối để nhìn thấy bạn bè và những người mình theo dõi trong hình ảnh trực quan.";
s.connectFbButton = "Kết nối với Facebook";
s.connectTwButton = "Kết nối với Twitter";
s.polis_err_reg_fb_verification_email_sent =
"Vui lòng kiểm tra email để tìm đường liên kết xác minh, rồi quay lại đây để tiếp tục.";
s.polis_err_reg_fb_verification_noemail_unverified =
"Tài khoản Facebook của bạn chưa được xác minh. Vui lòng xác minh địa chỉ email của bạn với Facebook, rồi quay lại đây để tiếp tục.";

// Text for the third party translation that appears on the cards

s.showTranslationButton = "Bật bản dịch của bên thứ ba";
s.hideTranslationButton = "Tắt bản dịch";
s.thirdPartyTranslationDisclaimer = "Bản dịch do bên thứ ba cung cấp";

// Text about notifications and subscriptions and embedding

s.notificationsAlreadySubscribed =
"Bạn đã đăng ký nhận tin cập nhật về cuộc thảo luận này.";
s.notificationsGetNotified = "Nhận thông báo khi có thêm ý kiến:";
s.notificationsEnterEmail =
"Nhập địa chỉ email của bạn để nhận thông báo khi có thêm ý kiến:";
s.labelEmail = "Email";
s.notificationsSubscribeButton = "Đăng ký";
s.notificationsSubscribeErrorAlert = "Đã xảy ra lỗi khi đăng ký";

s.addPolisToYourSite =
"<img style='height: 20px; margin: 0px 4px;' src='{{URL}}'/>";

// Footer

s.privacy = "Quyền riêng tư";
s.TOS = "Điều khoản dịch vụ";

// Experimental features

s.importantCheckbox = "Bình luận này quan trọng";
s.howImportantPrompt = "Ý kiến này có quan trọng không?";
s.howImportantLow = "Không quan trọng lắm";
s.howImportantMedium = "Bình thường";
s.howImportantHigh = "Rất quan trọng";
s.tipStarred = "Đã đánh dấu là quan trọng.";

s.modSpam = "Vô bổ";
s.modOffTopic = "Lạc đề";
s.modImportant = "Quan trọng";
s.modSubmitInitialState = "Bỏ qua (không chọn phương án nào ở trên), chuyển sang ý kiến tiếp theo";
s.modSubmit = "Đã xong, chuyển sang ý kiến tiếp theo";

s.topic_good_01 = "Chúng ta nên làm gì với phòng chơi bóng bàn?";
s.topic_good_01_reason =
"Đây là câu hỏi mở, nên ai cũng có thể có quan điểm riêng về câu trả lời cho câu hỏi này";
s.topic_good_02 = "Bạn thấy đề xuất mới như thế nào?";
s.topic_good_02_reason =
"Đây là câu hỏi mở, nên ai cũng có thể có quan điểm riêng về câu trả lời cho câu hỏi này";
s.topic_good_03 = "Bạn nghĩ nguyên nhân nào khiến năng suất suy giảm?";

s.topic_bad_01 = "Mọi người báo cáo tình hình chuẩn bị cho đợt phát hành đi";
s.topic_bad_01_reason =
"Thành viên của nhiều nhóm sẽ bình chọn cho các câu phản hồi, nhưng họ có thể không đủ hiểu biết để tự tin bình chọn.";
s.topic_bad_02 = "Đợt phát hành đang gặp những khó khăn gì?";
s.topic_bad_02_reason = "";

module.exports = s;
4 changes: 4 additions & 0 deletions e2e/cypress/e2e/client-participation/i18n.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,4 +109,8 @@ describe('Interface internationalization', function () {
it('translates into Chinese (Traditional)', function () {
checkTranslation('zh-TW', this.convoId)
})

it('translates into Vietnamese', function () {
checkTranslation('vi', this.convoId)
})
})
1 change: 1 addition & 0 deletions e2e/cypress/support/helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ const locales = {
ta: 'ta',
tdt: 'tdt',
uk: 'uk',
vi: 'vi',
'zh-CN': 'zh_Hans',
'zh-TW': 'zh_Hant',
}

0 comments on commit 5125da7

Please sign in to comment.