From 6298658194e4585eae8dcefd8da4e5ad3aa8fbd6 Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Fri, 9 Mar 2018 17:11:19 -0700 Subject: [PATCH 01/16] restored user creation cli --- bin/cli-users | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/bin/cli-users b/bin/cli-users index ea308ae44..950f2a538 100755 --- a/bin/cli-users +++ b/bin/cli-users @@ -312,10 +312,59 @@ async function verifyUserEmail(userID, email) { } } +/** + * createUser will prompt the user for the user information when creating a + * local user. + */ +async function createUser() { + try { + const answers = await inquirer.prompt([ + { + name: 'email', + message: 'Email', + }, + { + name: 'username', + message: 'Username', + }, + { + name: 'password', + message: 'Password', + type: 'password', + }, + { + name: 'role', + message: 'Role', + type: 'list', + choices: USER_ROLES, + }, + ]); + + const { email, username, password, role } = answers; + + // Create the user. + const user = await UsersService.createLocalUser(email, password, username); + + // Set the role. + await UsersService.setRole(user.id, role); + + console.log(`Created User[${user.id}]`); + util.shutdown(0); + } catch (err) { + console.error(err); + util.shutdown(1); + } +} + //============================================================================== // Setting up the program command line arguments. //============================================================================== +program + .command('create') + .description('creates a local user') + .action(createUser); + program .command('delete ') .description('delete a user') From 969b3dbcd5bebbc464e0b130d2b82729cb8e47db Mon Sep 17 00:00:00 2001 From: Melhem Fawaz Date: Sun, 11 Mar 2018 16:27:28 +0400 Subject: [PATCH 02/16] Registered AR locale in i18n framework service --- client/coral-framework/services/i18n.js | 5 + locales/ar.yml | 480 ++++++++++++++++++++++++ 2 files changed, 485 insertions(+) create mode 100644 locales/ar.yml diff --git a/client/coral-framework/services/i18n.js b/client/coral-framework/services/i18n.js index f467f7f53..1468f92eb 100644 --- a/client/coral-framework/services/i18n.js +++ b/client/coral-framework/services/i18n.js @@ -4,6 +4,7 @@ import get from 'lodash/get'; import merge from 'lodash/merge'; import moment from 'moment'; +import 'moment/locale/ar'; import 'moment/locale/da'; import 'moment/locale/de'; import 'moment/locale/es'; @@ -12,6 +13,7 @@ import 'moment/locale/pt-br'; import { createStorage } from 'coral-framework/services/storage'; +import arTA from 'timeago.js/locales/ar'; import daTA from 'timeago.js/locales/da'; import deTA from 'timeago.js/locales/de'; import esTA from 'timeago.js/locales/es'; @@ -21,6 +23,7 @@ import zh_CNTA from 'timeago.js/locales/zh_CN'; import zh_TWTA from 'timeago.js/locales/zh_TW'; import nl from 'timeago.js/locales/nl'; +import ar from '../../../locales/ar.yml'; import en from '../../../locales/en.yml'; import da from '../../../locales/da.yml'; import de from '../../../locales/de.yml'; @@ -33,6 +36,7 @@ import nl_NL from '../../../locales/nl_NL.yml'; const defaultLanguage = process.env.TALK_DEFAULT_LANG; const translations = { + ...ar, ...en, ...da, ...de, @@ -88,6 +92,7 @@ export function setupTranslations() { lang = defaultLanguage; } + ta.register('ar', arTA); ta.register('es', esTA); ta.register('da', daTA); ta.register('de', deTA); diff --git a/locales/ar.yml b/locales/ar.yml new file mode 100644 index 000000000..d540e8c1e --- /dev/null +++ b/locales/ar.yml @@ -0,0 +1,480 @@ +en: + your_account_has_been_suspended: Your account has been temporarily suspended. + your_account_has_been_banned: Your account has been banned. + your_username_has_been_rejected: Your account has been suspended because your username has been deemed inappropriate. To restore your account please enter a new username. + embed_comments_tab: Comments + bandialog: + are_you_sure: "Are you sure you would like to ban {0}?" + ban_user: "Ban User?" + banned_user: "Banned User" + cancel: "Cancel" + note: "Note: {0}" + note_reject_comment: "Banning this user will also place this comment in the Rejected queue." + note_ban_user: "Banning this user will not let them comment, react to, or report comments." + yes_ban_user: "Yes, Ban User" + write_a_message: "Write a message" + send: "Send" + notify_ban_headline: "Notify the user of ban" + notify_ban_description: "This will notify the user by email that they have been banned from the community" + email_message_ban: "Dear {0},\n\nSomeone with access to your account has violated our community guidelines. As a result, your account has been banned. You will no longer be able to comment, like or report comments. if you think this has been done in error, please contact our community team." + bio_offensive: "This bio is offensive" + cancel: "Cancel" + confirm_email: + click_to_confirm: "Click below to confirm your email address" + confirm: "Confirm" + password_reset: + mail_sent: 'If you have a registered account, a password reset link was sent to that email' + set_new_password: "Change Your Password" + new_password: "New Password" + new_password_help: "Password must be at least 8 characters" + confirm_new_password: "Confirm New Password" + change_password: "Change Password" + characters_remaining: "characters remaining" + comment: + anon: "Anonymous" + undo_reject: "Undo" + ban_user: "Ban User" + comment: "Post a comment" + edited: Edited + flagged: "flagged" + view_context: "View context" + comment_box: + post: "Post" + cancel: "Cancel" + reply: "Reply" + comment: "Post a comment" + name: "Name" + comment_post_notif: "Your comment has been posted." + comment_post_notif_premod: "Thank you for posting. Our moderation team will review your comment shortly." + comment_post_banned_word: "Your comment contains one or more words that are not permitted, so it will not be published. If you think this message is incorrect, please contact our moderation team." + characters_remaining: "characters remaining" + comment_offensive: "This comment is offensive" + comment_singular: Comment + comment_plural: Comments + comment_post_banned_word: "Your comment contains one or more words that are not permitted, so it will not be published. If you think this message is incorrect, please contact our moderation team." + comment_post_notif: "Your comment has been posted." + comment_post_notif_premod: "Thank you for posting. Our moderation team will review your comment shortly." + common: + copy: 'Copy' + error: 'An error has occurred.' + reply: 'reply' + replies: 'replies' + reaction: 'reaction' + reactions: 'reactions' + story: 'Story' + flagged_usernames: + notify_approved: '{0} approved username {1}' + notify_rejected: '{0} rejected username {1}' + notify_flagged: '{0} reported username {1}' + notify_changed: 'user {0} changed their username to {1}' + community: + account_creation_date: "Account Creation Date" + active: Active + admin: Administrator + ads_marketing: "This looks like an ad/marketing" + are_you_sure: "Are you sure you would like to ban {0}?" + ban_user: "Ban User?" + banned: Banned + banned_user: "Banned User" + cancel: Cancel + dont_like_username: "Dislike username" + flaggedaccounts: "Reported Usernames" + flags: Flags + impersonating: "Impersonation" + loading: "Loading results" + moderator: Moderator + newsroom_role: "Newsroom Role" + no_flagged_accounts: "The Reported Usernames queue is currently empty." + no_results: "No users found with that user name or email address. They're hiding!" + offensive: "Offensive" + other: Other + people: People + role: "Select role..." + select_status: "Select status..." + spam_ads: "Spam/Ads" + staff: "Staff" + status: Status + username_and_email: "Username and Email" + yes_ban_user: "Yes Ban User" + commenter: "Commenter" + configure: + apply: Apply + banned_word_text: "Comments which contain these words or phrases (not case-sensitive) will be automatically removed from the comment stream. Type a word and press Enter or Tab to add. Optionally paste a comma-separated list." + banned_words_title: "Banned words list" + close: "Close" + close_after: "Close comments after" + close_stream: "Close Stream" + close_stream_configuration: "This comment stream is currently closed. By opening this comment stream new comments may be submitted and displayed" + closed_comments_desc: "Write a message to be displayed when when your comment stream is closed and no longer accepting comments." + closed_comments_label: "Write a message..." + closed_stream_settings: "Closed Stream Message" + comment_count_error: "Please enter a valid number." + comment_count_header: "Limit Comment Length" + comment_count_text_post: characters + comment_count_text_pre: "Comments will be limited to" + comment_settings: Settings + comment_stream: "Comment Stream" + comment_stream_will_close: "The comment stream will close" + community: Community + configure: Configure + copy_and_paste: "Copy and paste code below into your CMS to embed your comment box in your articles" + custom_css_url: "Custom CSS URL" + custom_css_url_desc: "URL of a CSS stylesheet that will override default Embed Stream styles. Can be internal or external." + days: Days + description: "As an admin, you can customize the settings for the comment stream for this story:" + domain_list_text: "Enter the domains you would like to permit for Talk e.g. your local staging and production environments (ex. localhost:3000 staging.domain.com domain.com)." + domain_list_title: "Permitted Domains" + edit_comment_timeframe_heading: "Edit Comment Timeframe" + edit_comment_timeframe_text_pre: "Commenters will have" + edit_comment_timeframe_text_post: "seconds to edit their comments." + embed_comment_stream: "Embed Stream" + enable_premod_links_text: "Moderators must approve any comment containing a link before it is published." + enable_pre_moderation: "Enable pre-moderation" + enable_pre_moderation_text: "Moderators must approve any comment before it is published." + enable_premod_links: "Pre-Moderate Comments Containing Links" + enable_premod: "Enable Premoderation" + enable_premod_description: "Moderators must approve any comment before it is published." + enable_premod_links_description: "Moderators must approve any comment containing a link before it is published." + enable_questionbox: "Ask Readers a Question" + enable_questionbox_description: "This question will appear at the top of this comment stream. Ask readers about a certain issue in the article or pose discussion questions etc." + hours: Hours + include_comment_stream: "Include Comment Stream Description for Readers" + include_comment_stream_desc: "Write a message to be added to the top of your comment stream. Pose a topic include community guidelines etc." + include_text: "Include your text here." + include_question_here: "Write your question here:" + moderate: Moderate + moderation_settings: "Moderation Settings" + open: "Open" + open_stream: "Open Stream" + open_stream_configuration: "This comment stream is currently open. By closing this comment stream no new comments may be submitted and all previous comments will still be displayed." + require_email_verification: "Require Email Verification" + require_email_verification_text: "New Users must verify their email before commenting" + save_changes: "Save Changes" + shortcuts: Shortcuts + sign_out: "Sign Out" + stories: Stories + stream_settings: "Stream Settings" + suspect_word_title: "Suspect words list" + suspect_word_text: "Comments which contain these words or phrases (not case-sensitive) will be highlighted in the comment stream. Type a word and press Enter or Tab to add. Optionally paste a comma-separated list." + tech_settings: "Tech Settings" + title: "Configure Comment Stream" + weeks: Weeks + wordlist: "Banned Words" + continue: "Continue" + createdisplay: + check_the_form: "Invalid Form. Please check the fields" + continue: "Continue with the same Facebook username" + error_create: "Error when changing username" + fake_comment_body: "This is an example comment. Readers can share their thoughts and opinions with newsrooms in the comments section." + fake_comment_date: "1 minute ago" + if_you_dont_change_your_name: "If you don't change your username at this step your Facebook display name will appear alongside of all your comments." + required_field: "Required field" + save: Save + special_characters: "Usernames can contain letters numbers and _ only" + username: Username + write_your_username: "Edit your username" + your_username: "Your username appears on every comment you post." + done: Done + edit_comment: + body_input_label: "Edit this comment" + save_button: "Save changes" + edit_window_expired: "You can no longer edit this comment. The time window to do so has expired. Why not post another one?" + edit_window_expired_close: "Close" + edit_window_timer_prefix: "Edit Window: " + second: "second" + seconds_plural: "seconds" + minute: "minute" + minutes_plural: "minutes" + email: + suspended: + subject: "Your account has been suspended" + banned: + subject: "Your account has been banned" + body: "In accordance with The Coral Project’s community guidelines, your account has been banned. You are now longer allowed to comment, flag or engage with our community." + confirm: + has_been_requested: "A email confirmation has been requested for the following account:" + to_confirm: "To confirm the account, please visit the following link:" + confirm_email: "Confirm Email" + if_you_did_not: "If you did not request this, you can safely ignore this email." + subject: "Email Confirmation" + password_reset: + we_received_a_request: "We received a request to reset your password. If you did not request this change, you can ignore this email." + if_you_did: "If you did," + please_click: "please click here to reset password" + embedlink: + copy: "Copy to Clipboard" + error: + COMMENT_PARENT_NOT_VISIBLE: "The comment that you're replying to has been removed or doesn't exist." + EMAIL_VERIFICATION_TOKEN_INVALID: "Email verification token is invalid." + PASSWORD_RESET_TOKEN_INVALID: "Your password reset link is invalid." + COMMENT_TOO_SHORT: "Comments should be more than one character, please revise your comment and try again." + NOT_AUTHORIZED: "You are not authorized to perform this action." + NO_SPECIAL_CHARACTERS: "Usernames can contain letters numbers and _ only" + PASSWORD_LENGTH: "Password is too short" + PROFANITY_ERROR: "Usernames must not contain profanity. Please contact the administrator if you believe this to be in error." + RATE_LIMIT_EXCEEDED: "Rate limit exceeded" + USERNAME_IN_USE: "Username already in use" + USERNAME_REQUIRED: "Must input a username" + EMAIL_NOT_VERIFIED: "E-mail address not verified" + EDIT_WINDOW_ENDED: "You can no longer edit this comment. The time window to do so has expired." + EDIT_USERNAME_NOT_AUTHORIZED: "You do not have permission to update your username." + SAME_USERNAME_PROVIDED: "You must submit a different username." + EMAIL_IN_USE: "Email address already in use" + EMAIL_REQUIRED: "An email address is required" + LOGIN_MAXIMUM_EXCEEDED: "You have made too many unsuccessful password attempts. Please wait." + PASSWORD_REQUIRED: "Must input a password" + COMMENTING_CLOSED: "Commenting is already closed" + NOT_FOUND: "Resource not found" + ALREADY_EXISTS: "Resource already exists" + INVALID_ASSET_URL: "Assert URL is invalid" + CANNOT_IGNORE_STAFF: "Cannot ignore Staff members." + email: "Not a valid E-Mail" + confirm_password: "Passwords don't match. Please check again" + network_error: "Failed to connect to server. Check your internet connection and try again." + email_not_verified: "E-mail address {0} not verified." + email_password: "E-mail and/or password combination incorrect." + organization_name: "Organization name must only contain letters or numbers." + password: "Password must be at least 8 characters" + username: "Usernames can contain letters numbers and _ only" + unexpected: "Unexpected error occurred. Sorry!" + required_field: "This field is required" + temporarily_suspended: "Your account is currently suspended. It will be reactivated {0}. Please contact us if you have any questions." + flag_comment: "Report comment" + flag_reason: "Reason for reporting (Optional)" + flag_username: "Report username" + framework: + banned_account_header: "Your account is currently banned." + banned_account_body: "This means that you cannot Like, Report, or write comments." + comment: comment + comment_is_ignored: "This comment is hidden because you ignored this user." + comment_is_rejected: "You have rejected this comment." + comment_is_hidden: "This comment is not available." + comments: comments + configure_stream: "Configure" + content_not_available: "This content is not available" + edit_name: + button: Submit + error: "Usernames can contain letters numbers and _ only" + label: "New Username" + msg: "Your account is currently suspended because your username has been deemed inappropriate. To restore your account please enter a new username. Please contact us if you have any questions." + changed_name: + msg: "Your username change is under review by our moderation team." + my_comments: "My Comments" + my_profile: "My profile" + new_count: "View {0} more {1}" + profile: Profile + show_all_comments: "Show all comments" + success_bio_update: "Your biography has been updated" + success_name_update: "Your username has been updated" + success_update_settings: "The changes you have made have been applied to the comment stream on this article" + show_all_replies: Show all replies + show_more_replies: Show more replies + view_more_comments: "view more comments" + view_reply: "view reply" + from_settings_page: "From the Profile Page you can see your comment history." + like: Like + loading_results: "Loading Results" + marketing: "This looks like an ad/marketing" + moderate_this_stream: "Moderate this stream" + flags: + reasons: + user: + username_offensive: "Offensive" + username_nolike: "Dislike" + username_impersonating: "Impersonation" + username_spam: "Spam" + username_other: "Other" + comment: + comment_offensive: "Offensive" + comment_spam: "Spam" + comment_noagree: "Disagree" + comment_other: "Other" + suspect_word: "Suspect Word" + banned_word: "Banned Word" + body_count: "Body exceeds max length" + trust: "Trust" + links: "Link" + modqueue: + account: "account flags" + actions: Actions + all: all + all_streams: "All Streams" + notify_edited: '{0} edited comment "{1}"' + notify_accepted: '{0} accepted comment "{1}"' + notify_rejected: '{0} rejected comment "{1}"' + notify_flagged: '{0} flagged comment "{1}"' + notify_reset: '{0} reset status of comment "{1}"' + approve: "Approve" + approved: "Approved" + ban_user: "Ban" + billion: B + close: Close + empty_queue: "No more comments to moderate! You're all caught up. Go have some ☕️" + flagged: flagged + reported: reported + less_detail: "Less detail" + likes: likes + million: M + mod_faster: "Moderate faster with keyboard shortcuts" + moderate: "Moderate →" + more_detail: "More detail" + new: New + newest_first: "Newest First" + navigation: Navigation + next_comment: "Go to the next comment" + toggle_search: "Open search" + next_queue: "Switch queues" + oldest_first: "Oldest First" + premod: pre-mod + prev_comment: "Go to the previous comment" + reject: "Reject" + rejected: "Rejected" + reply: "Reply" + select_stream: "Select Stream" + shift_key: "⇧" + shortcuts: "Shortcuts" + sort: "Sort" + show_shortcuts: "Show Shortcuts" + singleview: "Zen mode" + thismenu: "Open this menu" + jump_to_queue: "Jump to specific queue" + thousand: k + try_these: "Try these" + view_more_shortcuts: "View more shortcuts" + my_comment_history: "My comment History" + name: Name + no_agree_comment: "I don't agree with this comment" + no_like_bio: "I don't like this bio" + no_like_username: "I don't like this username" + already_flagged_username: "You have already flagged this username." + other: Other + permalink: Share + personal_info: "This comment reveals personally identifiable information" + post: Post + profile: Profile + profile_settings: "Profile Settings" + reply: Reply + report: Report + report_notif: "Thank you for reporting this comment. Our moderation team has been notified and will review it shortly." + report_notif_remove: "Your report has been removed." + reported: Reported + comment_history_blank: + title: You have not written any comments + info: A history of your comments will appear here + settings: + from_settings_page: "From the Profile Page you can see your comment history." + my_comment_history: "My comment History" + profile: Profile + profile_settings: "Profile Settings" + sign_in: "Sign in" + to_access: "to access Profile" + user_no_comment: "You've never left a comment. Join the conversation!" + stream: + all_comments: "All Comments" + temporarily_suspended: "In accordance with {0}'s community guidelines, your account has been temporarily suspended. Please rejoin the conversation {1}." + comment_not_found: "This comment has been removed or does not exist." + no_comments: "There are no comments yet, why don’t you write one?" + no_comments_and_closed: "There were no comments on this article." + step_1_header: "Report an issue" + step_2_header: "Help us understand" + step_3_header: "Thank you for your input" + streams: + all: All + article: Story + closed: Closed + empty_result: "No assets match this search. Maybe try widening your search?" + filter_streams: "Filter Streams" + newest: Newest + oldest: Oldest + open: Open + pubdate: "Publication Date" + search: Search + sort_by: "Sort By" + status: "Stream Status" + stream_status: "Stream Status" + suspenduser: + title_suspend: "Suspend User" + description_suspend: "You are suspending {0}. This comment will go to the Rejected queue, and {0} will not be allowed to like, report, reply or post until the suspension time is complete." + select_duration: "Select suspension duration" + one_hour: "1 hour" + hours: "{0} hours" + days: "{0} days" + hour: "{0} hours" + day: "{0} days" + cancel: "Cancel" + suspend_user: "Suspend User" + email_message_suspend: "Dear {0},\n\nIn accordance with {1}’s community guidelines, your account has been temporarily suspended. During the suspension, you will be unable to comment, flag or engage with fellow commenters. Please rejoin the conversation {2}." + title_notify: "Notify the user of their temporary suspension" + notify_suspend_until: "User {0} has been temporarily suspended. This suspension will automatically end {1}." + description_notify: "Suspending this user will temporarily disable their account." + write_message: "Write a message" + send: Send + reject_username: + username: username + no_cancel: "No cancel" + description_reject: "Would you like to temporarily ban this user because of their {0}? Doing so will temporarily suspend this user until they rewrite their {0}." + title_notify: "Notify the user of their temporary suspension" + description_notify: "Suspending this user will temporarily disable their account." + title_reject: "We noticed you rejected a username" + suspend_user: "Suspend User" + yes_suspend: "Yes suspend" + email_message_reject: "Another member of the community recently flagged your username for review. Because of its content your user was rejected. This means you can no longer comment, like, or flag content until you rewrite your username. Please e-mail us if you have any questions or concerns." + write_message: "Write a message" + send: Send + thank_you: "We value your safety and feedback. A moderator will review your report." + user: + bio_flags: "flags for this bio" + user_bio: "User Bio" + username_flags: "flags for this username" + user_detail: + remove_suspension: "Remove Suspension" + suspend: "Suspend User" + remove_ban: "Remove Ban" + ban: "Ban User" + member_since: "Member Since" + email: "Email" + total_comments: "Total Comments" + reject_rate: "Reject Rate" + reports: "Reports" + all: "All" + rejected: "Rejected" + account_history: "Account History" + account_history: + user_banned: "User banned" + ban_removed: "Ban removed" + username_status: "Username {0}" + suspended: "Suspended, {0}" + suspension_removed: "Suspension removed" + system: "System" + date: "Date" + action: "Action" + taken_by: "Taken By" + user_impersonating: "This user is impersonating" + user_no_comment: "You've never left a comment. Join the conversation!" + username_offensive: "This username is offensive" + view_conversation: "View Conversation" + install: + initial: + description: "Let's set up your Talk community in just a few short steps." + submit: "Get Started" + add_organization: + description: "Please tell us the name of your organization. This will appear in emails when inviting new team members." + label: "Organization Name" + save: "Save" + create: + email: "Email address" + username: "Username" + password: "Password" + confirm_password: "Confirm Password" + save: "Save" + permitted_domains: + title: "Permitted domains" + description: "Enter the domains you would like to permit for Talk, e.g. your local, staging and production environments (ex. localhost:3000, staging.domain.com, domain.com)." + submit: "Finish install" + final: + description: "Thanks for installing Talk! We sent an email to verify your email address. While you finish setting up the account, you can start engaging with your readers now." + launch: "Launch Talk" + close: "Close this Installer" + admin_sidebar: + view_options: "View Options" + sort_comments: "Sort Comments" From 820153429f8a9852307be864d8108216ac50e79e Mon Sep 17 00:00:00 2001 From: Melhem Fawaz Date: Sun, 11 Mar 2018 16:48:08 +0400 Subject: [PATCH 03/16] Added most Arabic translations in 'ar' locale --- locales/ar.yml | 616 ++++++++++++++++++++++++------------------------- 1 file changed, 308 insertions(+), 308 deletions(-) diff --git a/locales/ar.yml b/locales/ar.yml index d540e8c1e..dccda3826 100644 --- a/locales/ar.yml +++ b/locales/ar.yml @@ -1,299 +1,299 @@ -en: - your_account_has_been_suspended: Your account has been temporarily suspended. - your_account_has_been_banned: Your account has been banned. - your_username_has_been_rejected: Your account has been suspended because your username has been deemed inappropriate. To restore your account please enter a new username. - embed_comments_tab: Comments +ar: + your_account_has_been_suspended: تم تعليق حسابك مؤقتا. + your_account_has_been_banned: تم حظر حسابك. + your_username_has_been_rejected: تم تعليق حسابك لعدم صلاحية اسم المستخدم الخاصة بك. لاستعادة حسابك رجاء أدخل اسم مستخدم جديدة. + embed_comments_tab: تعليقات bandialog: - are_you_sure: "Are you sure you would like to ban {0}?" - ban_user: "Ban User?" - banned_user: "Banned User" - cancel: "Cancel" - note: "Note: {0}" - note_reject_comment: "Banning this user will also place this comment in the Rejected queue." - note_ban_user: "Banning this user will not let them comment, react to, or report comments." - yes_ban_user: "Yes, Ban User" - write_a_message: "Write a message" - send: "Send" - notify_ban_headline: "Notify the user of ban" - notify_ban_description: "This will notify the user by email that they have been banned from the community" - email_message_ban: "Dear {0},\n\nSomeone with access to your account has violated our community guidelines. As a result, your account has been banned. You will no longer be able to comment, like or report comments. if you think this has been done in error, please contact our community team." - bio_offensive: "This bio is offensive" - cancel: "Cancel" + are_you_sure: "أنت متأكد أنك تريد حظر {0}؟" + ban_user: "حظر المستخدم؟" + banned_user: "مستخدم محظور" + cancel: "إلغاء" + note: "ملاحظة: {0}" + note_reject_comment: "حظر هذا المستخدم سيضع هذا التعليق في قائمة الرفض." + note_ban_user: "حظر هذا المستخدم لن يسمح له بالتعليق أو التفاعل أو الإبلاغ عن تعليقات." + yes_ban_user: "نعم، احظر المستخدم" + write_a_message: "أكتب رسالة" + send: "أرسل" + notify_ban_headline: "أبلغ المستخدم بالحظر" + notify_ban_description: "سيتم إبلاغ المستخدم عن طريق البريد الإلكتروني بأنه قد تم حظره من المجموعة" + email_message_ban: "العزيز {0},\n\nتم الدخول باستخدام حسابك وانتهاك قواعد المجموعة، لذا لقد تم حظر حسابك. لن تستطيع التعليق مجددا، أو الإعجاب أو الإبلاغ عن تعليقات. إذا كنت ترى أن ذلك تم بالخطأ، رجاء إبلاغ أحد أعضاء الفريق الخاص بالمجموعة." + bio_offensive: "السيرة الذاتية مسيئة" + cancel: "إلغاء" confirm_email: - click_to_confirm: "Click below to confirm your email address" - confirm: "Confirm" + click_to_confirm: "إضغط في الأسفل لتأكيد البريد الألكتروني" + confirm: "تأكيد" password_reset: - mail_sent: 'If you have a registered account, a password reset link was sent to that email' - set_new_password: "Change Your Password" - new_password: "New Password" - new_password_help: "Password must be at least 8 characters" - confirm_new_password: "Confirm New Password" - change_password: "Change Password" - characters_remaining: "characters remaining" + mail_sent: 'إذا كان لديك حساب مسجل، فقد تم إرسال رابط إعادة تعيين كلمة المرور إلى هذا البريد الإلكتروني' + set_new_password: "تغيير كلمة السر الخاصة بك" + new_password: "كلمة السر الجديدة" + new_password_help: "كلمة السر يجب أن تكون 8 أحرف على الأقل" + confirm_new_password: "تأكيد كلمة السر الجديدة" + change_password: "تغيير كلمة السر" + characters_remaining: "هناك أحرف متبقية" comment: - anon: "Anonymous" - undo_reject: "Undo" - ban_user: "Ban User" - comment: "Post a comment" - edited: Edited - flagged: "flagged" - view_context: "View context" + anon: "غير معلوم" + undo_reject: "ابطال العملية" + ban_user: "حظر المستخدم" + comment: "نشر تعليق" + edited: محرر + flagged: "إشارة" + view_context: "عرض السياق" comment_box: - post: "Post" - cancel: "Cancel" - reply: "Reply" - comment: "Post a comment" - name: "Name" - comment_post_notif: "Your comment has been posted." - comment_post_notif_premod: "Thank you for posting. Our moderation team will review your comment shortly." - comment_post_banned_word: "Your comment contains one or more words that are not permitted, so it will not be published. If you think this message is incorrect, please contact our moderation team." - characters_remaining: "characters remaining" - comment_offensive: "This comment is offensive" - comment_singular: Comment - comment_plural: Comments - comment_post_banned_word: "Your comment contains one or more words that are not permitted, so it will not be published. If you think this message is incorrect, please contact our moderation team." - comment_post_notif: "Your comment has been posted." - comment_post_notif_premod: "Thank you for posting. Our moderation team will review your comment shortly." + post: "نشر" + cancel: "إلغاء" + reply: "رد" + comment: "نشر تعليق" + name: "الاسم" + comment_post_notif: "تم نشر تعليقك." + comment_post_notif_premod: "شكرا لك على النشر. سيراجع فريق الإشراف لدينا تعليقك قريبا." + comment_post_banned_word: "تعليقك يحتوي على كلمة أو أكثر غير مسموح بها، لذا لن يتم نشره. إذا كنت تعتقد أن هذه الرسالة خطأ، رجاء الاتصال بفريق الإشراف لدينا." + characters_remaining: "أحرف متبقية" + comment_offensive: "هذا التعليق مسيء" + comment_singular: تعليق + comment_plural: تعليقات + comment_post_banned_word: "تعليقك يحتوي على كلمة أو أكثر غير مسموح بها، لذا لن يتم نشره. إذا كنت تعتقد أن هذه الرسالة خطأ، رجاء الاتصال بفريق الإشراف لدينا." + comment_post_notif: "تم نشر تعليقك." + comment_post_notif_premod: "شكرا لك على النشر. سيراجع فريق الإشراف لدينا تعليقك قريبا." common: - copy: 'Copy' - error: 'An error has occurred.' - reply: 'reply' - replies: 'replies' - reaction: 'reaction' - reactions: 'reactions' - story: 'Story' + copy: 'نسخ' + error: 'حدث خطأ.' + reply: 'رد' + replies: 'ردود' + reaction: 'رد فعل' + reactions: 'ردود أفعال' + story: 'قصة' flagged_usernames: - notify_approved: '{0} approved username {1}' - notify_rejected: '{0} rejected username {1}' - notify_flagged: '{0} reported username {1}' - notify_changed: 'user {0} changed their username to {1}' + notify_approved: '{0} وافق على اسم المستخدم {1}' + notify_rejected: '{0} رفض اسم المستخدم {1}' + notify_flagged: '{0} بلغ عن اسم المستخدم {1}' + notify_changed: 'المستخدم {0} غير اسم المستخدم الخاص به إلى {1}' community: - account_creation_date: "Account Creation Date" - active: Active - admin: Administrator - ads_marketing: "This looks like an ad/marketing" - are_you_sure: "Are you sure you would like to ban {0}?" - ban_user: "Ban User?" - banned: Banned - banned_user: "Banned User" - cancel: Cancel - dont_like_username: "Dislike username" - flaggedaccounts: "Reported Usernames" - flags: Flags - impersonating: "Impersonation" - loading: "Loading results" - moderator: Moderator - newsroom_role: "Newsroom Role" - no_flagged_accounts: "The Reported Usernames queue is currently empty." - no_results: "No users found with that user name or email address. They're hiding!" - offensive: "Offensive" - other: Other - people: People - role: "Select role..." - select_status: "Select status..." - spam_ads: "Spam/Ads" - staff: "Staff" - status: Status - username_and_email: "Username and Email" - yes_ban_user: "Yes Ban User" - commenter: "Commenter" + account_creation_date: "تاريخ إنشاء الحساب" + active: فعال + admin: إداري + ads_marketing: "هذا يبدو وكأنه إعلان/تسويق" + are_you_sure: "متأكد أنك تريد حظر {0}؟" + ban_user: "حظر المستخدم؟" + banned: محظور + banned_user: "مستخدم محظور" + cancel: إلغاء + dont_like_username: "غير معجب باسم المستخدم" + flaggedaccounts: "أسماء المستخدمين المبلغ عنها" + flags: شارات + impersonating: "انتحال شخصية" + loading: "تحميل النتائج" + moderator: مشرف + newsroom_role: "دور غرفة الأخبار" + no_flagged_accounts: "قائمة أسماء المستخدمين المبلغ عنها فارغة حاليا." + no_results: "لم يتم العثور على مستخدمين باسم المستخدم أو عنوان البريد الإلكتروني هذا. انهم يختبئون!" + offensive: "مسيء" + other: أخرى + people: أشخاص + role: "اختر الدور..." + select_status: "اختر الحالة..." + spam_ads: "بريد مؤذي/إعلانات" + staff: "فريق العمل" + status: الحالة + username_and_email: "اسم المستخدم والبريد الإلكتروني" + yes_ban_user: "نعم إحظر المستخدم" + commenter: "معلق" configure: - apply: Apply - banned_word_text: "Comments which contain these words or phrases (not case-sensitive) will be automatically removed from the comment stream. Type a word and press Enter or Tab to add. Optionally paste a comma-separated list." - banned_words_title: "Banned words list" - close: "Close" - close_after: "Close comments after" - close_stream: "Close Stream" - close_stream_configuration: "This comment stream is currently closed. By opening this comment stream new comments may be submitted and displayed" - closed_comments_desc: "Write a message to be displayed when when your comment stream is closed and no longer accepting comments." - closed_comments_label: "Write a message..." - closed_stream_settings: "Closed Stream Message" - comment_count_error: "Please enter a valid number." - comment_count_header: "Limit Comment Length" - comment_count_text_post: characters - comment_count_text_pre: "Comments will be limited to" - comment_settings: Settings - comment_stream: "Comment Stream" - comment_stream_will_close: "The comment stream will close" - community: Community - configure: Configure - copy_and_paste: "Copy and paste code below into your CMS to embed your comment box in your articles" - custom_css_url: "Custom CSS URL" - custom_css_url_desc: "URL of a CSS stylesheet that will override default Embed Stream styles. Can be internal or external." - days: Days - description: "As an admin, you can customize the settings for the comment stream for this story:" - domain_list_text: "Enter the domains you would like to permit for Talk e.g. your local staging and production environments (ex. localhost:3000 staging.domain.com domain.com)." - domain_list_title: "Permitted Domains" - edit_comment_timeframe_heading: "Edit Comment Timeframe" - edit_comment_timeframe_text_pre: "Commenters will have" - edit_comment_timeframe_text_post: "seconds to edit their comments." - embed_comment_stream: "Embed Stream" - enable_premod_links_text: "Moderators must approve any comment containing a link before it is published." - enable_pre_moderation: "Enable pre-moderation" - enable_pre_moderation_text: "Moderators must approve any comment before it is published." - enable_premod_links: "Pre-Moderate Comments Containing Links" - enable_premod: "Enable Premoderation" - enable_premod_description: "Moderators must approve any comment before it is published." - enable_premod_links_description: "Moderators must approve any comment containing a link before it is published." - enable_questionbox: "Ask Readers a Question" - enable_questionbox_description: "This question will appear at the top of this comment stream. Ask readers about a certain issue in the article or pose discussion questions etc." - hours: Hours - include_comment_stream: "Include Comment Stream Description for Readers" - include_comment_stream_desc: "Write a message to be added to the top of your comment stream. Pose a topic include community guidelines etc." - include_text: "Include your text here." - include_question_here: "Write your question here:" - moderate: Moderate - moderation_settings: "Moderation Settings" - open: "Open" - open_stream: "Open Stream" - open_stream_configuration: "This comment stream is currently open. By closing this comment stream no new comments may be submitted and all previous comments will still be displayed." - require_email_verification: "Require Email Verification" - require_email_verification_text: "New Users must verify their email before commenting" - save_changes: "Save Changes" - shortcuts: Shortcuts - sign_out: "Sign Out" - stories: Stories - stream_settings: "Stream Settings" - suspect_word_title: "Suspect words list" - suspect_word_text: "Comments which contain these words or phrases (not case-sensitive) will be highlighted in the comment stream. Type a word and press Enter or Tab to add. Optionally paste a comma-separated list." - tech_settings: "Tech Settings" - title: "Configure Comment Stream" - weeks: Weeks - wordlist: "Banned Words" - continue: "Continue" + apply: طبق + banned_word_text: "التعليقات التي تحتوي على هذه الكلمات أو العبارات سيتم حذفها آليا من جدول التعليقات. اطبع كلمة واضغط Enter أو Tab لزيادة الكلمة. اختياريا الصق قائمة مقسمة بالفصلات." + banned_words_title: "قائمة بالكلمات المحظورة" + close: "اغلق" + close_after: "اغلق التعليقات بعد" + close_stream: "اغلق الجدول" + close_stream_configuration: "تم إغلاق جدول التعليقات هذا. بفتحك لهذا الجدول سيتم قبول وعرض تعليقات جديدة" + closed_comments_desc: "اكتب رسالة ليتم عرضها عندما يتم إغلاق جدول التعليقات ولا يتم قبول أي تعليقات جديدة." + closed_comments_label: "اكتب رسالة..." + closed_stream_settings: "رسالة الجدول المغلق" + comment_count_error: "رجاء كتابة رقم صحيح." + comment_count_header: "الحد من طول التعليق" + comment_count_text_post: حروف + comment_count_text_pre: "سيتم وضع حد للتعليقات عند" + comment_settings: إعدادات + comment_stream: "جدول التعليقات" + comment_stream_will_close: "سيتم إغلاق جدول التعليق" + community: المجموعة + configure: تهيئة + copy_and_paste: "انسخ والصق التعليمات البرمجية في الأسفل بنظام إدارة المحتوى لتضمين تعليقك داخل المقالات" + custom_css_url: "رابط CSS مخصص" + custom_css_url_desc: "رابط CSS الذي سيتجاوز أنماط جدول التعليقات المضمن. يمكن أن يكون داخلي أو خارجي." + days: أيام + description: "كإداري يمكنك تعديل إعدادات جدول التعليقات لهذه القصة:" + domain_list_text: "أدخل عناوين النطاقات التي سوف تسمح فيها لTalk.. مثلا بيئات التدريج و الإنتاج (مثلا localhost:3000 staging.domain.com domain.com)." + domain_list_title: "النطاقات المسموح بها" + edit_comment_timeframe_heading: "عدل الإطار الزمني للتعليق" + edit_comment_timeframe_text_pre: "سيكون لدى المعلقين" + edit_comment_timeframe_text_post: "ثوان لتحرير تعليقاتهم." + embed_comment_stream: "تضمين الجدول" + enable_premod_links_text: "يجب على المشرفين الموافقة على أي تعليق يحتوي على رابط قبل نشره." + enable_pre_moderation: "تمكين الإشراف المسبق" + enable_pre_moderation_text: "يجب على المشرفين الموافقة على أي تعليق قبل نشره." + enable_premod_links: "إشراف مسبق على التعليقات التي تحتوي على روابط" + enable_premod: "تمكين الإشراف المسبق" + enable_premod_description: "يجب على المشرفين الموافقة على أي تعليق قبل نشره." + enable_premod_links_description: "يجب على المشرفين الموافقة على أي تعليق يحتوي على رابط قبل نشره." + enable_questionbox: "اطرح سؤال على القراء" + enable_questionbox_description: "هذا السؤال سيظهر في الجزء العلوي من جدول التعليقات هذا. اسأل القراء عن مسألة معينة في المقال او اطرح أسئلة نقاشية.. الخ." + hours: ساعات + include_comment_stream: "ادراج وصف جدول التعليقات للقراء" + include_comment_stream_desc: "اكتب رسالة ليتم إضافتها إلى الجزء العلوي من جدول التعليقات. ضع موضوعا، اشمل القواعد الإرشادية للمجموعة .. الخ" + include_text: "ادرج النص هنا." + include_question_here: "اكتب سؤالك هنا:" + moderate: اشرف + moderation_settings: "اعدادات الإشراف" + open: "مفتوح" + open_stream: "افتح الجدول" + open_stream_configuration: "جدول التعليقات هذا مفتوح. بإغلاق هذا الجدول لن يتم قبول تعليقات جديدة، وستبقى التعليقات القديمة ظاهرة." + require_email_verification: "يلزم التحقق من البريد الإلكتروني" + require_email_verification_text: "يجب على المستخدمين الجدد التحقق من بريدهم الإلكتروني قبل التعليق" + save_changes: "احفظ التعديلات" + shortcuts: اختصارات + sign_out: "خروج" + stories: قصص + stream_settings: "اعدادات الجدول" + suspect_word_title: "قائمة الكلمات المشبوهة" + suspect_word_text: "التعليقات التي تحتوي على هذه الكلمات أو العبارات سيتم تمييزها في جدول التعليقات. اطبع كلمة واضغط Enter أو Tab لزيادة الكلمة. اختياريا الصق قائمة مقسمة بالفصلات." + tech_settings: "إعدادات تقنية" + title: "تهيئة جدول التعليق" + weeks: أسابيع + wordlist: "الكلمات المحظورة" + continue: "واصل" createdisplay: - check_the_form: "Invalid Form. Please check the fields" - continue: "Continue with the same Facebook username" - error_create: "Error when changing username" - fake_comment_body: "This is an example comment. Readers can share their thoughts and opinions with newsrooms in the comments section." - fake_comment_date: "1 minute ago" - if_you_dont_change_your_name: "If you don't change your username at this step your Facebook display name will appear alongside of all your comments." - required_field: "Required field" - save: Save - special_characters: "Usernames can contain letters numbers and _ only" - username: Username - write_your_username: "Edit your username" - your_username: "Your username appears on every comment you post." - done: Done + check_the_form: "استمارة غير صالحة. يرجى التحقق من الحقول" + continue: "تابع بنفس اسم المستخدم الخاص بفيسبوك" + error_create: "حدث خطأ أثناء تغيير اسم المستخدم" + fake_comment_body: "هذا مثال للتعليق. يمكن للقراء تبادل الأفكار والآراء مع غرف الأخبار في قسم التعليقات." + fake_comment_date: "منذ دقيقة" + if_you_dont_change_your_name: "إذا لم تقم بتغيير اسم المستخدم الخاص بك في هذه الخطوة سوف يظهر اسم المستخدم الخاص بفيسبوك جنبا إلى جنب مع كل تعليقاتك." + required_field: "حقل مطلوب" + save: حفظ + special_characters: "يمكن أن تحتوي أسماء المستخدمين على أحرف وأرقام و _ فقط" + username: اسم المستخدم + write_your_username: "عدل اسم المستخدم" + your_username: "يظهر اسم المستخدم في كل تعليق تنشره." + done: تم edit_comment: - body_input_label: "Edit this comment" - save_button: "Save changes" - edit_window_expired: "You can no longer edit this comment. The time window to do so has expired. Why not post another one?" - edit_window_expired_close: "Close" - edit_window_timer_prefix: "Edit Window: " - second: "second" - seconds_plural: "seconds" - minute: "minute" - minutes_plural: "minutes" + body_input_label: "عدل هذا التعليق" + save_button: "حفظ التغييرات" + edit_window_expired: "لم يعد بإمكانك تعديل هذا التعليق. انتهت صلاحية نافذة الوقت للقيام بذلك. لماذا لا تنشر آخر؟" + edit_window_expired_close: "أغلق" + edit_window_timer_prefix: "نافذة التعديل : " + second: "ثانية" + seconds_plural: "ثوان" + minute: "دقيقة" + minutes_plural: "دقائق" email: suspended: - subject: "Your account has been suspended" + subject: "تم تعليق حسابك" banned: - subject: "Your account has been banned" - body: "In accordance with The Coral Project’s community guidelines, your account has been banned. You are now longer allowed to comment, flag or engage with our community." + subject: "تم حظر حسابك" + body: "وفقا لإرشادات مجتمع كورال بروجيكت، تم حظر حسابك. لم يعد مسموحا لك التعليق أو وضع إشارات أو التفاعل مع مجتمعنا." confirm: - has_been_requested: "A email confirmation has been requested for the following account:" - to_confirm: "To confirm the account, please visit the following link:" - confirm_email: "Confirm Email" - if_you_did_not: "If you did not request this, you can safely ignore this email." - subject: "Email Confirmation" + has_been_requested: "تم طلب تأكيد بالبريد الإلكتروني للحساب التالي:" + to_confirm: "لتأكيد الحساب، يرجى زيارة الرابط التالي:" + confirm_email: ".تأكيد عنوان البريد الإلكتروني" + if_you_did_not: "إذا لم تطلب ذلك، يمكنك تجاهل هذه الرسالة الإلكترونية." + subject: "تأكيد البريد الإلكتروني" password_reset: - we_received_a_request: "We received a request to reset your password. If you did not request this change, you can ignore this email." - if_you_did: "If you did," - please_click: "please click here to reset password" + we_received_a_request: "لقد تلقينا طلبا لإعادة تعيين كلمة المرور. إذا لم تطلب هذا التغيير، فيمكنك تجاهل هذه الرسالة الإلكترونية." + if_you_did: "اذا فعلت،" + please_click: "الرجاء النقر هنا لإعادة تعيين كلمة المرور" embedlink: - copy: "Copy to Clipboard" + copy: "نسخ إلى الحافظة" error: - COMMENT_PARENT_NOT_VISIBLE: "The comment that you're replying to has been removed or doesn't exist." - EMAIL_VERIFICATION_TOKEN_INVALID: "Email verification token is invalid." - PASSWORD_RESET_TOKEN_INVALID: "Your password reset link is invalid." - COMMENT_TOO_SHORT: "Comments should be more than one character, please revise your comment and try again." - NOT_AUTHORIZED: "You are not authorized to perform this action." - NO_SPECIAL_CHARACTERS: "Usernames can contain letters numbers and _ only" - PASSWORD_LENGTH: "Password is too short" - PROFANITY_ERROR: "Usernames must not contain profanity. Please contact the administrator if you believe this to be in error." - RATE_LIMIT_EXCEEDED: "Rate limit exceeded" - USERNAME_IN_USE: "Username already in use" - USERNAME_REQUIRED: "Must input a username" - EMAIL_NOT_VERIFIED: "E-mail address not verified" - EDIT_WINDOW_ENDED: "You can no longer edit this comment. The time window to do so has expired." - EDIT_USERNAME_NOT_AUTHORIZED: "You do not have permission to update your username." - SAME_USERNAME_PROVIDED: "You must submit a different username." - EMAIL_IN_USE: "Email address already in use" - EMAIL_REQUIRED: "An email address is required" - LOGIN_MAXIMUM_EXCEEDED: "You have made too many unsuccessful password attempts. Please wait." - PASSWORD_REQUIRED: "Must input a password" - COMMENTING_CLOSED: "Commenting is already closed" - NOT_FOUND: "Resource not found" - ALREADY_EXISTS: "Resource already exists" - INVALID_ASSET_URL: "Assert URL is invalid" - CANNOT_IGNORE_STAFF: "Cannot ignore Staff members." - email: "Not a valid E-Mail" - confirm_password: "Passwords don't match. Please check again" - network_error: "Failed to connect to server. Check your internet connection and try again." - email_not_verified: "E-mail address {0} not verified." - email_password: "E-mail and/or password combination incorrect." - organization_name: "Organization name must only contain letters or numbers." - password: "Password must be at least 8 characters" - username: "Usernames can contain letters numbers and _ only" - unexpected: "Unexpected error occurred. Sorry!" - required_field: "This field is required" - temporarily_suspended: "Your account is currently suspended. It will be reactivated {0}. Please contact us if you have any questions." - flag_comment: "Report comment" - flag_reason: "Reason for reporting (Optional)" - flag_username: "Report username" + COMMENT_PARENT_NOT_VISIBLE: "التعليق الذي ترد عليه تمت إزالته أو غير موجود." + EMAIL_VERIFICATION_TOKEN_INVALID: "رمز التحقق من البريد الإلكتروني غير صالح." + PASSWORD_RESET_TOKEN_INVALID: "رابط إعادة تعيين كلمة المرور غير صالح." + COMMENT_TOO_SHORT: "يجب أن تكون التعليقات أكثر من حرف واحد، يرجى مراجعة تعليقك وإعادة المحاولة." + NOT_AUTHORIZED: "غير مصرح لك بتنفيذ هذا الإجراء." + NO_SPECIAL_CHARACTERS: "يمكن أن تحتوي أسماء المستخدمين على أحرف, أرقام و _ فقط" + PASSWORD_LENGTH: "كلمة المرور قصيرة جدا" + PROFANITY_ERROR: "يجب ألا تحتوي أسماء المستخدمين على الألفاظ النابية. يرجى الاتصال بالإداري إذا كنت تعتقد أن هذا خطأ." + RATE_LIMIT_EXCEEDED: "تجاوز حد المعدل" + USERNAME_IN_USE: "اسم المستخدم قيد الاستخدام" + USERNAME_REQUIRED: "يجب إدخال اسم مستخدم" + EMAIL_NOT_VERIFIED: "لم يتم التحقق من عنوان البريد الإلكتروني" + EDIT_WINDOW_ENDED: "لم يعد بإمكانك تحرير هذا التعليق. نافذة الوقت للقيام بذلك قد انتهت صلاحيتها." + EDIT_USERNAME_NOT_AUTHORIZED: "ليس لديك إذن بتحديث اسم المستخدم الخاص بك." + SAME_USERNAME_PROVIDED: "يجب عليك تقديم اسم مستخدم مختلف." + EMAIL_IN_USE: "البريد الالكتروني قيد الاستخدام" + EMAIL_REQUIRED: "مطلوب عنوان البريد الإلكتروني" + LOGIN_MAXIMUM_EXCEEDED: "لقد أجريت العديد من محاولات إدخال كلمة المرور غير الناجحة. أرجو الإنتظار." + PASSWORD_REQUIRED: "يجب إدخال كلمة مرور" + COMMENTING_CLOSED: "تم إغلاق فاعلية التعليق" + NOT_FOUND: "المورد غير موجود" + ALREADY_EXISTS: "المورد موجود من قبل" + INVALID_ASSET_URL: "رابط المادة غير صالح" + CANNOT_IGNORE_STAFF: "لا يمكن تجاهل الموظفين." + email: "ليس بريدا إلكترونيا صالحا" + confirm_password: "كلمات المرور غير متطابقة. يرجى التحقق مرة أخرى" + network_error: "فشل الاتصال بالخادم. تحقق من اتصالك بالإنترنت وحاول مرة أخرى." + email_not_verified: "عنوان البريد الإلكتروني {0} لم يتم التحقق منه." + email_password: "مجموعة البريد الإلكتروني و / أو كلمة المرور غير صحيحة." + organization_name: "يجب أن يحتوي اسم المؤسسة على أحرف أو أرقام فقط." + password: "يجب أن تكون كلمة المرور 8 أحرف على الأقل" + username: "يمكن أن تحتوي أسماء المستخدمين على أرقام, أحرف و _ فقط" + unexpected: "حدث خطأ غير متوقع. آسف!" + required_field: "هذه الخانة مطلوبه" + temporarily_suspended: "حسابك معلق حاليا. سيتم إعادة تنشيطه {0}. يرجى الاتصال بنا إذا كان لديك أي أسئلة." + flag_comment: "الإبلاغ عن تعليق" + flag_reason: "سبب الإبلاغ (اختياري)" + flag_username: "بلغ عن اسم المستخدم" framework: - banned_account_header: "Your account is currently banned." - banned_account_body: "This means that you cannot Like, Report, or write comments." - comment: comment - comment_is_ignored: "This comment is hidden because you ignored this user." - comment_is_rejected: "You have rejected this comment." - comment_is_hidden: "This comment is not available." - comments: comments - configure_stream: "Configure" - content_not_available: "This content is not available" + banned_account_header: "حسابك محظور حاليا." + banned_account_body: "هذا يعني أنه لا يمكنك الإعجاب ، أو الإبلاغ ، أو كتابة التعليقات." + comment: تعليق + comment_is_ignored: "هذا التعليق مخفي لأنك تجاهلت هذا المستخدم." + comment_is_rejected: "لقد رفضت هذا التعليق." + comment_is_hidden: "هذا التعليق غير متاح." + comments: تعليقات + configure_stream: "تهيئة" + content_not_available: "هذا المحتوى غير متوفر" edit_name: - button: Submit - error: "Usernames can contain letters numbers and _ only" - label: "New Username" - msg: "Your account is currently suspended because your username has been deemed inappropriate. To restore your account please enter a new username. Please contact us if you have any questions." + button: أرسل + error: "يمكن أن تحتوي أسماء المستخدمين على أحرف, أرقام و _ فقط" + label: "اسم مستخدم جديد" + msg: "تم تعليق حسابك حاليا نظرا لأن اسم المستخدم قد اعتبر غير لائق. لاستعادة حسابك، يرجى إدخال اسم مستخدم جديد. يرجى الاتصال بنا إذا كان لديك أي أسئلة." changed_name: - msg: "Your username change is under review by our moderation team." - my_comments: "My Comments" - my_profile: "My profile" - new_count: "View {0} more {1}" - profile: Profile - show_all_comments: "Show all comments" - success_bio_update: "Your biography has been updated" - success_name_update: "Your username has been updated" - success_update_settings: "The changes you have made have been applied to the comment stream on this article" - show_all_replies: Show all replies - show_more_replies: Show more replies - view_more_comments: "view more comments" - view_reply: "view reply" - from_settings_page: "From the Profile Page you can see your comment history." - like: Like - loading_results: "Loading Results" - marketing: "This looks like an ad/marketing" - moderate_this_stream: "Moderate this stream" + msg: "يتم مراجعة تغيير اسم المستخدم من قبل فريق الإشراف لدينا." + my_comments: "تعليقاتي" + my_profile: "ملفي" + new_count: "شاهد {0} أكثر {1}" + profile: الملف الشخصي + show_all_comments: "عرض كل التعليقات" + success_bio_update: "تم تحديث السيرة الذاتية" + success_name_update: "تم تحديث اسم المستخدم" + success_update_settings: "تم تطبيق التغييرات التي أجريتها على جدول التعليقات في هذه المقالة" + show_all_replies: عرض جميع الردود + show_more_replies: عرض المزيد من الردود + view_more_comments: "عرض مزيد من التعليقات" + view_reply: "عرض الرد" + from_settings_page: "من صفحة الملف الشخصي يمكنك مشاهدة سجل التعليقات." + like: إعجاب + loading_results: "جار تحميل النتائج" + marketing: "هذا يشبه الإعلان / التسويق" + moderate_this_stream: "أشرف على هذا الجدول" flags: reasons: user: - username_offensive: "Offensive" - username_nolike: "Dislike" - username_impersonating: "Impersonation" - username_spam: "Spam" - username_other: "Other" + username_offensive: "مسيء" + username_nolike: "لم يعجبنى" + username_impersonating: "إنتحال شخصية" + username_spam: "غير مرغوب فيه" + username_other: "آخر" comment: - comment_offensive: "Offensive" - comment_spam: "Spam" - comment_noagree: "Disagree" - comment_other: "Other" - suspect_word: "Suspect Word" - banned_word: "Banned Word" - body_count: "Body exceeds max length" - trust: "Trust" - links: "Link" + comment_offensive: "مسيء" + comment_spam: "غير مرغوب فيه" + comment_noagree: "أعارض" + comment_other: "آخر" + suspect_word: "كلمة مشتبهة" + banned_word: "كلمة محظورة" + body_count: "يتجاوز النص الحد الأقصى للطول المسموح" + trust: "ثقة" + links: "رابط" modqueue: account: "account flags" actions: Actions @@ -341,43 +341,43 @@ en: thousand: k try_these: "Try these" view_more_shortcuts: "View more shortcuts" - my_comment_history: "My comment History" - name: Name - no_agree_comment: "I don't agree with this comment" - no_like_bio: "I don't like this bio" - no_like_username: "I don't like this username" - already_flagged_username: "You have already flagged this username." - other: Other - permalink: Share - personal_info: "This comment reveals personally identifiable information" - post: Post - profile: Profile - profile_settings: "Profile Settings" - reply: Reply - report: Report - report_notif: "Thank you for reporting this comment. Our moderation team has been notified and will review it shortly." - report_notif_remove: "Your report has been removed." - reported: Reported + my_comment_history: "سجل التعليقات" + name: اسم + no_agree_comment: "لا أوافق على هذا التعليق" + no_like_bio: "أنا لا أحب هذه السيرة الذاتية" + no_like_username: "أنا لا أحب اسم المستخدم هذا" + already_flagged_username: "لقد سبق لك وضع علامة باسم المستخدم هذا." + other: آخر + permalink: شارك + personal_info: "هذا التعليق يكشف عن معلومات تعريف شخصية" + post: نشر + profile: الملف الشخصي + profile_settings: "إعدادات الملف الشخصي" + reply: رد + report: أبلغ + report_notif: "شكرا على الإبلاغ عن هذا التعليق. تم إبلاغ فريق الإشراف لدينا وسيراجعه قريبًا." + report_notif_remove: "لقد تمت إزالة بلاغك." + reported: بلغ عنه comment_history_blank: title: You have not written any comments info: A history of your comments will appear here settings: - from_settings_page: "From the Profile Page you can see your comment history." - my_comment_history: "My comment History" - profile: Profile - profile_settings: "Profile Settings" - sign_in: "Sign in" - to_access: "to access Profile" - user_no_comment: "You've never left a comment. Join the conversation!" + from_settings_page: "من صفحة الملف الشخصي يمكنك مشاهدة سجل التعليقات." + my_comment_history: "سجل التعليقات" + profile: الملف الشخصي + profile_settings: "إعدادات الملف الشخصي" + sign_in: "تسجيل الدخول" + to_access: "للوصول إلى الملف الشخصي" + user_no_comment: "لم تترك تعليقا مطلقا. إنضم إلى المحادثة!" stream: - all_comments: "All Comments" - temporarily_suspended: "In accordance with {0}'s community guidelines, your account has been temporarily suspended. Please rejoin the conversation {1}." - comment_not_found: "This comment has been removed or does not exist." - no_comments: "There are no comments yet, why don’t you write one?" - no_comments_and_closed: "There were no comments on this article." - step_1_header: "Report an issue" - step_2_header: "Help us understand" - step_3_header: "Thank you for your input" + all_comments: "كل التعليقات" + temporarily_suspended: "وفقا لإرشادات المجموعة {0}، تم تعليق حسابك مؤقتا. الرجاء إعادة الانضمام إلى المحادثة {1}." + comment_not_found: "تمت إزالة هذا التعليق أو أنه غير موجود." + no_comments: "لا توجد تعليقات حتى الآن، لماذا لا تكتب واحد؟" + no_comments_and_closed: "لم تكن هناك تعليقات على هذه المقالة." + step_1_header: "بلغ عن مشكلة" + step_2_header: "ساعدنا على الفهم" + step_3_header: "شكرا لك على المساهمة الخاصة بك" streams: all: All article: Story @@ -421,7 +421,7 @@ en: email_message_reject: "Another member of the community recently flagged your username for review. Because of its content your user was rejected. This means you can no longer comment, like, or flag content until you rewrite your username. Please e-mail us if you have any questions or concerns." write_message: "Write a message" send: Send - thank_you: "We value your safety and feedback. A moderator will review your report." + thank_you: "نحن نقدر سلامتك وردود الفعل. سيراجع المشرف التقرير الخاص بك" user: bio_flags: "flags for this bio" user_bio: "User Bio" @@ -449,10 +449,10 @@ en: date: "Date" action: "Action" taken_by: "Taken By" - user_impersonating: "This user is impersonating" - user_no_comment: "You've never left a comment. Join the conversation!" - username_offensive: "This username is offensive" - view_conversation: "View Conversation" + user_impersonating: "هذا المستخدم ينتحل شخصية" + user_no_comment: "لم تترك تعليقا مطلقا. إنضم إلى المحادثة!" + username_offensive: "اسم المستخدم هذا مسيء" + view_conversation: "عرض المحادثة" install: initial: description: "Let's set up your Talk community in just a few short steps." From 5b885bfb3c8d4c157e47e8188fc990cc6361ac88 Mon Sep 17 00:00:00 2001 From: Melhem Fawaz Date: Sun, 11 Mar 2018 17:52:45 +0400 Subject: [PATCH 04/16] Added Arabic translations for most plugins --- .../client/translations.yml | 16 ++++++- .../talk-plugin-auth/client/translations.yml | 45 +++++++++++++++++++ .../client/translations.yml | 2 + .../client/translations.yml | 6 ++- .../client/translations.yml | 15 +++++++ .../client/translations.yml | 3 ++ .../client/translations.yml | 4 ++ .../client/translations.yml | 12 +++++ .../talk-plugin-like/client/translations.yml | 4 ++ .../talk-plugin-love/client/translations.yml | 4 ++ .../client/translations.yml | 3 ++ .../client/translations.yml | 12 +++++ .../client/translations.json | 4 ++ .../client/translations.yml | 3 ++ .../client/translations.yml | 4 ++ .../client/translations.yml | 3 ++ .../client/translations.yml | 3 ++ .../client/translations.yml | 3 ++ .../client/translations.yml | 3 ++ .../client/translations.yml | 3 ++ .../client/translations.yml | 3 ++ .../client/translations.yml | 3 ++ .../client/translations.yml | 16 +++++++ .../client/translations.yml | 5 +++ 24 files changed, 177 insertions(+), 2 deletions(-) diff --git a/plugins/talk-plugin-akismet/client/translations.yml b/plugins/talk-plugin-akismet/client/translations.yml index 6cc19a492..3dd13731b 100644 --- a/plugins/talk-plugin-akismet/client/translations.yml +++ b/plugins/talk-plugin-akismet/client/translations.yml @@ -1,3 +1,17 @@ +ar: + error: + COMMENT_IS_SPAM: | + تبدو اللغة في هذا التعليق مثل الرسائل غير المرغوب فيها. تستطيع تعديل التعليق أو تقديمه على أي حال لمراجعة مشرف. + talk-plugin-akismet: + spam: "بريد غير مرغوب فيه" + spam_comment: "بريد غير مرغوب فيه" + detected: "الكشف عنها من قبل Akismet" + still_spam: | + شكرا لكم. سيراجع فريق الإشراف لدينا تعليقك قريبا. + flags: + reasons: + comment: + spam_comment: "تم اكتشاف الرسائل غير المرغوب فيها" da: error: COMMENT_IS_SPAM: | @@ -61,7 +75,7 @@ fr: nl_NL: error: COMMENT_IS_SPAM: | - Deze reactie ziet er uit als spam. Je kan je reactie + Deze reactie ziet er uit als spam. Je kan je reactie wijzigen, of indienen zodat ons moderatieteam het kan beoordelen. talk-plugin-akismet: spam: "Spam" diff --git a/plugins/talk-plugin-auth/client/translations.yml b/plugins/talk-plugin-auth/client/translations.yml index 9731da90a..6d6f8a6d6 100644 --- a/plugins/talk-plugin-auth/client/translations.yml +++ b/plugins/talk-plugin-auth/client/translations.yml @@ -1,3 +1,48 @@ +ar: + talk-plugin-auth: + login: + email_verify_cta: "يرجى التحقق من عنوان البريد الإلكتروني الخاص بك." + request_new_verify_email: "طلب بريد إلكتروني آخر" + verify_email: "شكرا لك على إنشاء حساب جديد! لقد أرسلنا رسالة إلكترونية إلى البريد الإلكتروني الذي قدمته للتحقق من حسابك." + verify_email2: "يجب إثبات ملكية حسابك قبل التفاعل مع المجموعة." + not_you: "ليس انت؟" + logged_in_as: "تسجيل الدخول ك" + facebook_sign_in: "تسجيل الدخول باستخدام الفيسبوك" + facebook_sign_up: "اشترك عبر حساب فايسبوك" + logout: "خروج" + sign_in: "تسجيل الدخول" + sign_in_to_join: "سجل الدخول للانضمام إلى المحادثة" + or: "أو" + email: "البريد الإلكتروني" + password: "كلمة المرور" + forgot_your_pass: "نسيت كلمة المرور؟" + need_an_account: "تحتاج الى حساب؟" + register: "تسجيل" + sign_up: "سجل" + confirm_password: "تأكيد كلمة المرور" + username: "اسم المستخدم" + already_have_an_account: "هل لديك حساب؟" + recover_password: "إستعادة كلمة المرور" + email_in_use: "البريد الالكتروني قيد الاستخدام" + email_or_username_in_use: "البريد الإلكتروني أو اسم المستخدم قيد الاستخدام" + required_field: "هذه الخانة مطلوبه" + passwords_dont_match: "كلمات المرور غير متطابقة." + special_characters: "يمكن أن تحتوي أسماء المستخدمين على أحرف وأرقام و _ فقط" + sign_in_to_comment: "تسجيل الدخول للتعليق" + check_the_form: "استمارة غير صالحة. يرجى التحقق من الحقول" + set_username_dialog: + check_the_form: "استمارة غير صالحة. يرجى التحقق من الحقول" + continue: "تابع بنفس اسم المستخدم الخاص بفيسبوك" + error_create: "حدث خطأ أثناء تغيير اسم المستخدم" + fake_comment_body: "هذا مثال للتعليق. يمكن للقراء تبادل الأفكار والآراء مع غرف الأخبار في قسم التعليقات." + fake_comment_date: "منذ دقيقة" + if_you_dont_change_your_name: "إذا لم تقم بتغيير اسم المستخدم الخاص بك في هذه الخطوة سوف يظهر اسم المستخدم الخاص بفيسبوك جنبا إلى جنب مع كل تعليقاتك." + required_field: "حقل مطلوب" + save: حفظ + special_characters: "يمكن أن تحتوي أسماء المستخدمين على أحرف, أرقام و _ فقط" + username: اسم المستخدم + write_your_username: "عدل اسم المستخدم" + your_username: "يظهر اسم المستخدم في كل تعليق تنشره." da: talk-plugin-auth: login: diff --git a/plugins/talk-plugin-author-menu/client/translations.yml b/plugins/talk-plugin-author-menu/client/translations.yml index 34f270d50..4335b17e1 100644 --- a/plugins/talk-plugin-author-menu/client/translations.yml +++ b/plugins/talk-plugin-author-menu/client/translations.yml @@ -1,3 +1,5 @@ +ar: + talk-plugin-author-menu: da: talk-plugin-author-menu: en: diff --git a/plugins/talk-plugin-facebook-auth/client/translations.yml b/plugins/talk-plugin-facebook-auth/client/translations.yml index ab72134f4..ff2ba457d 100644 --- a/plugins/talk-plugin-facebook-auth/client/translations.yml +++ b/plugins/talk-plugin-facebook-auth/client/translations.yml @@ -1,3 +1,7 @@ +ar: + talk-plugin-facebook-auth: + sign_in: "تسجيل الدخول عبر حساب الفيسبوك" + sign_up: "اشترك عبر حساب الفيسبوك" en: talk-plugin-facebook-auth: sign_in: "Sign in with Facebook" @@ -21,4 +25,4 @@ zh_TW: de: talk-plugin-facebook-auth: sign_in: "Mit Facebook anmelden" - sign_up: "Mit Facebook registrieren" \ No newline at end of file + sign_up: "Mit Facebook registrieren" diff --git a/plugins/talk-plugin-featured-comments/client/translations.yml b/plugins/talk-plugin-featured-comments/client/translations.yml index 003372403..8b4aeefda 100644 --- a/plugins/talk-plugin-featured-comments/client/translations.yml +++ b/plugins/talk-plugin-featured-comments/client/translations.yml @@ -1,3 +1,18 @@ +ar: + talk-plugin-featured-comments: + un_feature: إلغاء التميّز + feature: ميّز + featured: متميز + featured_comments: التعليقات المميزة + go_to_conversation: انتقل إلى المحادثة + tooltip_description: تعليقات مختارة من قبل فريقنا تستحق القراءة + notify_self_featured: 'التعليق من {0} هو الآن مميّز و موافق عليه' + notify_featured: '{0} ميّز و وافق على التعليق "{1}"' + notify_unfeatured: '{0} ألغي تميّز التعليق "{1}"' + feature_comment: ميّز التعليق؟ + are_you_sure: هل أنت متأكد أنك تريد تميّز هذا التعليق؟ + cancel: إلغاء + yes_feature_comment: نعم، ميّز التعليق؟ da: talk-plugin-featured-comments: un_feature: Un-Feature diff --git a/plugins/talk-plugin-flag-details/client/translations.yml b/plugins/talk-plugin-flag-details/client/translations.yml index b0fe6ccae..163cb8a5d 100644 --- a/plugins/talk-plugin-flag-details/client/translations.yml +++ b/plugins/talk-plugin-flag-details/client/translations.yml @@ -1,3 +1,6 @@ +ar: + talk-plugin-flag-details: + flags: تقارير da: talk-plugin-flag-details: flags: Reports diff --git a/plugins/talk-plugin-google-auth/client/translations.yml b/plugins/talk-plugin-google-auth/client/translations.yml index fd926f3ee..c686230d6 100644 --- a/plugins/talk-plugin-google-auth/client/translations.yml +++ b/plugins/talk-plugin-google-auth/client/translations.yml @@ -1,3 +1,7 @@ +ar: + talk-plugin-google-auth: + sign_in: "تسجيل الدخول عبر حساب جوجل" + sign_up: "اشترك عبر حساب جوجل" en: talk-plugin-google-auth: sign_in: "Sign in with Google" diff --git a/plugins/talk-plugin-ignore-user/client/translations.yml b/plugins/talk-plugin-ignore-user/client/translations.yml index 33e5b10ed..84a4ca11c 100644 --- a/plugins/talk-plugin-ignore-user/client/translations.yml +++ b/plugins/talk-plugin-ignore-user/client/translations.yml @@ -1,3 +1,15 @@ +ar: + talk-plugin-ignore-user: + section_title: المستخدمون الذين تم تجاهلهم + section_info: لأنك تجاهلت المعلقين التاليين، يتم إخفاء تعليقاتهم. + stop_ignoring: إيقاف التجاهل + ignore_user: تجاهل المستخدم + cancel: إلغاء + confirmation: | + عند تجاهل المستخدم، سيتم إخفاء جميع التعليقات التي كتبها على الموقع منك. يمكنك التراجع عن هذا لاحقا من ملفي الشخصي. + notify_success: | + أنت الآن تتجاهل {0}. يمكنك التراجع عن هذا الإجراء من ملفي الشخصي. + confirmation_title: تجاهل {0}؟ da: talk-plugin-ignore-user: section_title: Ignored users diff --git a/plugins/talk-plugin-like/client/translations.yml b/plugins/talk-plugin-like/client/translations.yml index 5f44db4c7..f122aa024 100644 --- a/plugins/talk-plugin-like/client/translations.yml +++ b/plugins/talk-plugin-like/client/translations.yml @@ -1,3 +1,7 @@ +ar: + talk-plugin-like: + like: أعجبني + liked: إعجاب da: talk-plugin-like: like: Like diff --git a/plugins/talk-plugin-love/client/translations.yml b/plugins/talk-plugin-love/client/translations.yml index 24744c2f9..872d77460 100644 --- a/plugins/talk-plugin-love/client/translations.yml +++ b/plugins/talk-plugin-love/client/translations.yml @@ -1,3 +1,7 @@ +ar: + talk-plugin-love: + love: Love + loved: Loved da: talk-plugin-love: love: Love diff --git a/plugins/talk-plugin-member-since/client/translations.yml b/plugins/talk-plugin-member-since/client/translations.yml index f63f5a1fd..ab194c61e 100644 --- a/plugins/talk-plugin-member-since/client/translations.yml +++ b/plugins/talk-plugin-member-since/client/translations.yml @@ -1,3 +1,6 @@ +ar: + talk-plugin-member-since: + member_since: "عضو منذ" da: talk-plugin-member-since: member_since: "Member Since" diff --git a/plugins/talk-plugin-moderation-actions/client/translations.yml b/plugins/talk-plugin-moderation-actions/client/translations.yml index 9052d03f5..191df68fe 100644 --- a/plugins/talk-plugin-moderation-actions/client/translations.yml +++ b/plugins/talk-plugin-moderation-actions/client/translations.yml @@ -1,3 +1,15 @@ +ar: + talk-plugin-moderation-actions: + reject_comment: "رفض" + approve_comment: "موافقة" + approved_comment: "موافق عليه" + moderation_actions: "إجراءات الإشراف" + ban_user: "حجب المستخدم" + ban_user_dialog_sub: "هل أنت متأكد أنك تريد حجب هذا المستخدم؟" + ban_user_dialog_copy: "ملاحظة: سيؤدي حجب هذا المستخدم أيضا إلى وضع هذا التعليق في قائمة الرفض." + ban_user_dialog_cancel: "إلغاء" + ban_user_dialog_yes: "نعم، احجب المستخدم" + ban_user_dialog_headline: "احجب المستخدم؟" da: talk-plugin-moderation-actions: reject_comment: "Reject" diff --git a/plugins/talk-plugin-offtopic/client/translations.json b/plugins/talk-plugin-offtopic/client/translations.json index 826b3e15b..c923c7c17 100644 --- a/plugins/talk-plugin-offtopic/client/translations.json +++ b/plugins/talk-plugin-offtopic/client/translations.json @@ -1,4 +1,8 @@ { + "ar": { + "off_topic": "خارج الموضوع", + "hide_off_topic": "إخفاء التعليقات التي خارجة عن الموضوع" + }, "da": { "off_topic": "Off Topic", "hide_off_topic": "Hide Off-Topic Comments" diff --git a/plugins/talk-plugin-profile-settings/client/translations.yml b/plugins/talk-plugin-profile-settings/client/translations.yml index cd8edb415..33805a49b 100644 --- a/plugins/talk-plugin-profile-settings/client/translations.yml +++ b/plugins/talk-plugin-profile-settings/client/translations.yml @@ -1,3 +1,6 @@ +ar: + talk-plugin-profile-settings: + tab: إعدادات en: talk-plugin-profile-settings: tab: Settings diff --git a/plugins/talk-plugin-respect/client/translations.yml b/plugins/talk-plugin-respect/client/translations.yml index 22497ea52..f7540e545 100644 --- a/plugins/talk-plugin-respect/client/translations.yml +++ b/plugins/talk-plugin-respect/client/translations.yml @@ -1,3 +1,7 @@ +ar: + talk-plugin-respect: + respect: احترم + respected: احترام da: talk-plugin-respect: respect: Respect diff --git a/plugins/talk-plugin-sort-most-liked/client/translations.yml b/plugins/talk-plugin-sort-most-liked/client/translations.yml index f9e48d261..963561cfd 100644 --- a/plugins/talk-plugin-sort-most-liked/client/translations.yml +++ b/plugins/talk-plugin-sort-most-liked/client/translations.yml @@ -1,3 +1,6 @@ +ar: + talk-plugin-sort-most-liked: + label: الأكثر إعجاباً أولاً da: talk-plugin-sort-most-liked: label: Most liked first diff --git a/plugins/talk-plugin-sort-most-loved/client/translations.yml b/plugins/talk-plugin-sort-most-loved/client/translations.yml index c290e4a53..dfb24ff44 100644 --- a/plugins/talk-plugin-sort-most-loved/client/translations.yml +++ b/plugins/talk-plugin-sort-most-loved/client/translations.yml @@ -1,3 +1,6 @@ +ar: + talk-plugin-sort-most-loved: + label: الأكثر حبً أولاً da: talk-plugin-sort-most-loved: label: Most loved first diff --git a/plugins/talk-plugin-sort-most-replied/client/translations.yml b/plugins/talk-plugin-sort-most-replied/client/translations.yml index dacdb93fb..1325d9dd1 100644 --- a/plugins/talk-plugin-sort-most-replied/client/translations.yml +++ b/plugins/talk-plugin-sort-most-replied/client/translations.yml @@ -1,3 +1,6 @@ +ar: + talk-plugin-sort-most-replied: + label: الأكثر ردودً أولاً da: talk-plugin-sort-most-replied: label: Most replied first diff --git a/plugins/talk-plugin-sort-most-respected/client/translations.yml b/plugins/talk-plugin-sort-most-respected/client/translations.yml index 736cc63c1..782145237 100644 --- a/plugins/talk-plugin-sort-most-respected/client/translations.yml +++ b/plugins/talk-plugin-sort-most-respected/client/translations.yml @@ -1,3 +1,6 @@ +ar: + talk-plugin-sort-most-respected: + label: الأكثر احتراماً أولاً da: talk-plugin-sort-most-respected: label: Most respected first diff --git a/plugins/talk-plugin-sort-newest/client/translations.yml b/plugins/talk-plugin-sort-newest/client/translations.yml index e85eec18e..294a1a070 100644 --- a/plugins/talk-plugin-sort-newest/client/translations.yml +++ b/plugins/talk-plugin-sort-newest/client/translations.yml @@ -1,3 +1,6 @@ +ar: + talk-plugin-sort-newest: + label: الأحدث أولاً da: talk-plugin-sort-newest: label: Newest first diff --git a/plugins/talk-plugin-sort-oldest/client/translations.yml b/plugins/talk-plugin-sort-oldest/client/translations.yml index f12fe8e43..7a6cd6e96 100644 --- a/plugins/talk-plugin-sort-oldest/client/translations.yml +++ b/plugins/talk-plugin-sort-oldest/client/translations.yml @@ -1,3 +1,6 @@ +ar: + talk-plugin-sort-oldest: + label: الأقدم أولاً da: talk-plugin-sort-oldest: label: Oldest first diff --git a/plugins/talk-plugin-subscriber/client/translations.yml b/plugins/talk-plugin-subscriber/client/translations.yml index 65b438779..4cf482978 100644 --- a/plugins/talk-plugin-subscriber/client/translations.yml +++ b/plugins/talk-plugin-subscriber/client/translations.yml @@ -1,3 +1,6 @@ +ar: + talk-plugin-subscriber: + subscriber: "Subscriber" da: talk-plugin-subscriber: subscriber: "Subscriber" diff --git a/plugins/talk-plugin-toxic-comments/client/translations.yml b/plugins/talk-plugin-toxic-comments/client/translations.yml index 10fe80ec3..73c993ec5 100644 --- a/plugins/talk-plugin-toxic-comments/client/translations.yml +++ b/plugins/talk-plugin-toxic-comments/client/translations.yml @@ -1,3 +1,19 @@ +ar: + error: + COMMENT_IS_TOXIC: | + هل أنت واثق؟ قد تنتهك اللغة الواردة في هذا التعليق إرشادات المجموعة. يمكنك تعديل التعليق أو إرساله لمراجعته. + talk-plugin-toxic-comments: + unlikely: "من غير المرجح" + highly_likely: "من المرجح جدا" + possibly: "ربما" + likely: "مرجح" + toxic_comment: "تعليق سام" + still_toxic: | + قد يظل هذا التعليق المعدل منتهكاً لإرشادات المجموعة. سيراجع فريق الإشراف لدينا تعليقك قريبا. + flags: + reasons: + comment: + toxic_comment: "من المرجح جدا أن يكون ساماً" da: error: COMMENT_IS_TOXIC: | diff --git a/plugins/talk-plugin-viewing-options/client/translations.yml b/plugins/talk-plugin-viewing-options/client/translations.yml index 1e4eada60..9586263e0 100644 --- a/plugins/talk-plugin-viewing-options/client/translations.yml +++ b/plugins/talk-plugin-viewing-options/client/translations.yml @@ -1,3 +1,8 @@ +ar: + talk-plugin-viewing-options: + viewing_options: "خيارات العرض" + sort: فرز + filter: تصفية da: talk-plugin-viewing-options: viewing_options: "Viewing Options" From 05b0dc2d80fd31155b21ad45f75d8e8b5f4bb9ba Mon Sep 17 00:00:00 2001 From: "Kireev, Eugene" Date: Mon, 12 Mar 2018 13:58:35 +1100 Subject: [PATCH 05/16] do not use hjson for plugins.env.js --- plugins.js | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/plugins.js b/plugins.js index 05d245c8a..2e957d30b 100644 --- a/plugins.js +++ b/plugins.js @@ -26,17 +26,20 @@ try { if (PLUGINS_JSON && PLUGINS_JSON.length > 0) { debug('Now using TALK_PLUGINS_JSON environment variable for plugins'); pluginsPath = envPlugins; - } else if (fs.existsSync(customPlugins)) { - debug(`Now using ${customPlugins} for plugins`); - pluginsPath = customPlugins; + plugins = require(pluginsPath); } else { - debug(`Now using ${defaultPlugins} for plugins`); - pluginsPath = defaultPlugins; - } + if (fs.existsSync(customPlugins)) { + debug(`Now using ${customPlugins} for plugins`); + pluginsPath = customPlugins; + } else { + debug(`Now using ${defaultPlugins} for plugins`); + pluginsPath = defaultPlugins; + } - // Load/parse the plugin content using hjson. - const pluginContent = fs.readFileSync(pluginsPath, 'utf8'); - plugins = hjson.parse(pluginContent); + // Load/parse the plugin content using hjson. + const pluginContent = fs.readFileSync(pluginsPath, 'utf8'); + plugins = hjson.parse(pluginContent); + } } catch (err) { if (err.code === 'ENOENT') { console.error( From 77ecc5e8dfd6b79809dac9833e4cdb578757eea7 Mon Sep 17 00:00:00 2001 From: "Kireev, Eugene" Date: Mon, 12 Mar 2018 16:36:42 +1100 Subject: [PATCH 06/16] linting fixes --- plugins.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/plugins.js b/plugins.js index 2e957d30b..9280f508f 100644 --- a/plugins.js +++ b/plugins.js @@ -28,17 +28,17 @@ try { pluginsPath = envPlugins; plugins = require(pluginsPath); } else { - if (fs.existsSync(customPlugins)) { - debug(`Now using ${customPlugins} for plugins`); - pluginsPath = customPlugins; - } else { - debug(`Now using ${defaultPlugins} for plugins`); - pluginsPath = defaultPlugins; - } + if (fs.existsSync(customPlugins)) { + debug(`Now using ${customPlugins} for plugins`); + pluginsPath = customPlugins; + } else { + debug(`Now using ${defaultPlugins} for plugins`); + pluginsPath = defaultPlugins; + } - // Load/parse the plugin content using hjson. - const pluginContent = fs.readFileSync(pluginsPath, 'utf8'); - plugins = hjson.parse(pluginContent); + // Load/parse the plugin content using hjson. + const pluginContent = fs.readFileSync(pluginsPath, 'utf8'); + plugins = hjson.parse(pluginContent); } } catch (err) { if (err.code === 'ENOENT') { From 21e3e24d9fc5a469ae0dcbc894ce946b705e176f Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Mon, 12 Mar 2018 12:26:26 -0600 Subject: [PATCH 07/16] Docs updates --- docs/_config.yml | 10 +++---- docs/source/01-03-installation-from-source.md | 2 +- docs/source/{05-01-faq.md => contact.md} | 8 +++--- docs/source/integrating/translations-i18n.md | 4 +-- docs/themes/coral/layout/partial/sidebar.swig | 26 ++++++++++++------- docs/themes/coral/source/js/main.js | 2 +- test/server/services/tokens.js | 10 +++---- 7 files changed, 32 insertions(+), 30 deletions(-) rename docs/source/{05-01-faq.md => contact.md} (82%) diff --git a/docs/_config.yml b/docs/_config.yml index 1c2a7fdf6..513b27d6b 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -73,14 +73,12 @@ deploy: sidebar: top: - - title: Github + - title: GitHub url: https://github.com/coralproject/ - title: Docker url: https://hub.docker.com/r/coralproject/ - title: Roadmap url: https://www.pivotaltracker.com/n/projects/1863625 - - title: Google Group - url: https://groups.google.com/forum/#!forum/coral-talk-users side: - title: Installation children: @@ -142,10 +140,8 @@ sidebar: url: /reference/server/ - title: GraphQL url: /reference/graphql/ - - title: FAQ - children: - - title: FAQ - url: /faq/ + - title: Contact + url: /contact/ - title: Migrating children: - title: Migrating to v4.0.0 diff --git a/docs/source/01-03-installation-from-source.md b/docs/source/01-03-installation-from-source.md index 8bab26ff8..8b6f52228 100644 --- a/docs/source/01-03-installation-from-source.md +++ b/docs/source/01-03-installation-from-source.md @@ -6,7 +6,7 @@ permalink: /installation-from-source/ To install Talk from Source, ensure that you have Node version 8+. Installing via source is the recommended method when developing as it give you the best tooling. We release versions using semantic versioning, and do so to -our [Github Releases](https://github.com/coralproject/talk/releases) page. +our [GitHub Releases](https://github.com/coralproject/talk/releases) page. There you can download archives of older versions or the latest release. The examples following will download the latest code on our master branch. diff --git a/docs/source/05-01-faq.md b/docs/source/contact.md similarity index 82% rename from docs/source/05-01-faq.md rename to docs/source/contact.md index 06d0b0669..029652fea 100644 --- a/docs/source/05-01-faq.md +++ b/docs/source/contact.md @@ -1,6 +1,6 @@ --- -title: FAQ -permalink: /faq/ +title: Contact +permalink: /contact/ --- ## How can I get help integrating Talk into my newsroom? @@ -10,8 +10,8 @@ We're here to help with newsrooms of all sizes. Email our Integration Engineer ## How do I request a feature or submit a bug? -The best way is to [submit a Github issue](https://github.com/coralproject/talk/issues). Make sure you give plenty of details, our Core Team can usually respond within a few hours on weekdays. +The best way is to [submit a GitHub issue](https://github.com/coralproject/talk/issues). Make sure you give plenty of details, our Core Team can usually respond within a few hours on weekdays. ## How can our dev team contribute to Talk? -We are lucky to work with newsroom dev teams and individual contributors who span the world, and come from newsrooms of all sizes. You can read our [Contribution Guide](https://github.com/coralproject/talk/blob/master/CONTRIBUTING.md) to get started, but feel free to reach out to us via Github, or get in touch directly with Jeff via jeff@mozillafoundation.org. +We are lucky to work with newsroom dev teams and individual contributors who span the world, and come from newsrooms of all sizes. You can read our [Contribution Guide](https://github.com/coralproject/talk/blob/master/CONTRIBUTING.md) to get started, but feel free to reach out to us via GitHub, or get in touch directly with Jeff via jeff@mozillafoundation.org. diff --git a/docs/source/integrating/translations-i18n.md b/docs/source/integrating/translations-i18n.md index 2466dcdc0..e1f002008 100644 --- a/docs/source/integrating/translations-i18n.md +++ b/docs/source/integrating/translations-i18n.md @@ -23,6 +23,6 @@ That would set the language to French. To add a new Talk translation, simply translate the `en.yml` file (https://github.com/coralproject/talk/blob/master/locales/en.yml) into a new yml file with the language code of your choice. You can find supported language codes here: http://www.localeplanet.com/icu/iso639.html -If you are a developer contributing a new language, you'll need to add the required i18n support in the i18n files (or you can leave that to us if you like). If you're a non-developer, you can submit the translation via Github if you feel comfortable doing that, or feel free to email it to us via our Support: support@coralproject.net +If you are a developer contributing a new language, you'll need to add the required i18n support in the i18n files (or you can leave that to us if you like). If you're a non-developer, you can submit the translation via GitHub if you feel comfortable doing that, or feel free to email it to us via our Support: support@coralproject.net -If you want to suggest a new language or put a placeholder for a translation you’re working on, feel free to create a Github issue: https://github.com/coralproject/talk/issues/new +If you want to suggest a new language or put a placeholder for a translation you’re working on, feel free to create a GitHub issue: https://github.com/coralproject/talk/issues/new diff --git a/docs/themes/coral/layout/partial/sidebar.swig b/docs/themes/coral/layout/partial/sidebar.swig index ad453136f..d6d4fbab1 100644 --- a/docs/themes/coral/layout/partial/sidebar.swig +++ b/docs/themes/coral/layout/partial/sidebar.swig @@ -7,16 +7,22 @@ diff --git a/docs/themes/coral/source/js/main.js b/docs/themes/coral/source/js/main.js index 0ee3fe557..23e6db6a9 100644 --- a/docs/themes/coral/source/js/main.js +++ b/docs/themes/coral/source/js/main.js @@ -28,7 +28,7 @@ $(document).ready(function() { }); // Setup the menu controls. - $('a.sidebar__header').on('click', function(e) { + $('a.sidebar__header:not(.sidebar__header__link)').on('click', function(e) { e.preventDefault(); $('.sidebar__section.toggled').removeClass('toggled'); $(this) diff --git a/test/server/services/tokens.js b/test/server/services/tokens.js index 7ff598936..b62aa328a 100644 --- a/test/server/services/tokens.js +++ b/test/server/services/tokens.js @@ -19,7 +19,7 @@ describe('services.TokensService', () => { describe('#create', () => { it('can create the token without error', async () => { - let token = await TokensService.create(user.id, 'Github Token'); + let token = await TokensService.create(user.id, 'GitHub Token'); expect(token).to.be.an.object; expect(token.jwt).to.be.a.string; expect(token.pat).to.be.an.object; @@ -35,7 +35,7 @@ describe('services.TokensService', () => { describe('#revoke', () => { it('can revoke a token', async () => { - let { pat: { id } } = await TokensService.create(user.id, 'Github Token'); + let { pat: { id } } = await TokensService.create(user.id, 'GitHub Token'); let tokens = await TokensService.list(user.id); expect(tokens).to.have.length(1); @@ -54,7 +54,7 @@ describe('services.TokensService', () => { describe('#validate', () => { it('will allow a valid token', async () => { // Create a token. - let { pat: { id } } = await TokensService.create(user.id, 'Github Token'); + let { pat: { id } } = await TokensService.create(user.id, 'GitHub Token'); // Validate it. await TokensService.validate(user.id, id); @@ -62,7 +62,7 @@ describe('services.TokensService', () => { it('will not allow an invalid token', async () => { // Create a token. - let { pat: { id } } = await TokensService.create(user.id, 'Github Token'); + let { pat: { id } } = await TokensService.create(user.id, 'GitHub Token'); // Revoke it. await TokensService.revoke(user.id, id); @@ -78,7 +78,7 @@ describe('services.TokensService', () => { expect(tokens).to.have.length(0); // Create a token. - let { pat: { id } } = await TokensService.create(user.id, 'Github Token'); + let { pat: { id } } = await TokensService.create(user.id, 'GitHub Token'); tokens = await TokensService.list(user.id); expect(tokens).to.have.length(1); From 22e0aef306914ef0aaf7541426ada8300183f1bf Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Tue, 13 Mar 2018 12:13:21 -0600 Subject: [PATCH 08/16] replaced circleci image with ours temp --- .circleci/config.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e039d6d06..34faf03b5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -16,7 +16,9 @@ integration_job: &integration_job environment: <<: *integration_environment docker: - - image: circleci/node:8-browsers + # TODO: replace with node:8-browsers when build issues are resolved. + # - image: circleci/node:8-browsers + - image: coralproject/ci - image: circleci/mongo:3 - image: circleci/redis:4-alpine steps: From 1b3a74a011aab366f9f0ba672b6a959989f67e47 Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Tue, 13 Mar 2018 13:33:45 -0600 Subject: [PATCH 09/16] store test results as artifacts every time --- .circleci/config.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 34faf03b5..b264e96a4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -34,6 +34,10 @@ integration_job: &integration_job - store_test_results: when: always path: /tmp/circleci-test-results + - store_artifacts: + when: always + path: /tmp/circleci-test-results + version: 2 jobs: From 8613ced71deb6557caa6ab1161c84e731031457a Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Tue, 13 Mar 2018 14:19:23 -0600 Subject: [PATCH 10/16] applied fix to allow local run with firefox --- nightwatch.conf.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/nightwatch.conf.js b/nightwatch.conf.js index 76a5c291b..c76e3ed0f 100644 --- a/nightwatch.conf.js +++ b/nightwatch.conf.js @@ -26,7 +26,6 @@ module.exports = { selenium_host: 'localhost', silent: true, desiredCapabilities: { - browserName: 'chrome', javascriptEnabled: true, acceptSslCerts: true, webStorageEnabled: true, @@ -41,16 +40,27 @@ module.exports = { path: process.env.REPORTS_FOLDER || './test/e2e/reports', }, }, - chrome: {}, + chrome: { + desiredCapabilities: { + browserName: 'chrome', + }, + }, 'chrome-headless': { desiredCapabilities: { + browserName: 'chrome', chromeOptions: { args: ['--headless', '--disable-gpu', 'window-size=1600,1200'], }, }, }, + firefox: { + desiredCapabilities: { + browserName: 'firefox', + }, + }, 'firefox-headless': { desiredCapabilities: { + browserName: 'firefox', 'moz:firefoxOptions': { args: ['-headless'], }, From 7598784acca09ee7549cd20c68b6a446b0150161 Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Tue, 13 Mar 2018 14:33:52 -0600 Subject: [PATCH 11/16] disable headless tests, run with full browsers --- .circleci/e2e.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/e2e.sh b/.circleci/e2e.sh index 2d9fc25af..c9688c476 100755 --- a/.circleci/e2e.sh +++ b/.circleci/e2e.sh @@ -23,7 +23,7 @@ if [[ "$BROWSERSTACK" == "true" && -n "$BROWSERSTACK_KEY" ]]; then echo Testing on browserstack node scripts/e2e.js --reports-folder "$REPORTS_FOLDER" --retries "$E2E_MAX_RETRIES" --timeout "$E2E_WAIT_FOR_TIMEOUT" --browsers "$E2E_BROWSERS" --browserstack else - # When browserstack is not available test locally using chrome headless. + # When browserstack is not available test locally. echo Testing locally - node scripts/e2e.js --reports-folder "$REPORTS_FOLDER" --retries "$E2E_MAX_RETRIES" --timeout "$E2E_WAIT_FOR_TIMEOUT" --browsers "$E2E_BROWSERS" --headless + node scripts/e2e.js --reports-folder "$REPORTS_FOLDER" --retries "$E2E_MAX_RETRIES" --timeout "$E2E_WAIT_FOR_TIMEOUT" --browsers "$E2E_BROWSERS" fi From 7af9458710fef676b43dcf1592b4d255892ce0ca Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Tue, 13 Mar 2018 14:46:00 -0600 Subject: [PATCH 12/16] added logs to artifacts --- nightwatch-browserstack.conf.js | 6 ++++-- nightwatch.conf.js | 8 +++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/nightwatch-browserstack.conf.js b/nightwatch-browserstack.conf.js index 961d50b4e..1bd62574c 100644 --- a/nightwatch-browserstack.conf.js +++ b/nightwatch-browserstack.conf.js @@ -1,8 +1,10 @@ const { ROOT_URL } = require('./config'); +const REPORTS_FOLDER = process.env.REPORTS_FOLDER || './test/e2e/reports'; + const nightwatch_config = { src_folders: './test/e2e/specs/', - output_folder: process.env.REPORTS_FOLDER || './test/e2e/reports', + output_folder: REPORTS_FOLDER, page_objects_path: './test/e2e/page_objects', globals_path: './test/e2e/globals', @@ -34,7 +36,7 @@ const nightwatch_config = { enabled: true, on_failure: true, on_error: true, - path: process.env.REPORTS_FOLDER || './test/e2e/reports', + path: REPORTS_FOLDER, }, }, chrome: { diff --git a/nightwatch.conf.js b/nightwatch.conf.js index c76e3ed0f..75dfa5ef6 100644 --- a/nightwatch.conf.js +++ b/nightwatch.conf.js @@ -1,15 +1,17 @@ const { ROOT_URL } = require('./config'); +const REPORTS_FOLDER = process.env.REPORTS_FOLDER || './test/e2e/reports'; + module.exports = { src_folders: './test/e2e/specs/', - output_folder: process.env.REPORTS_FOLDER || './test/e2e/reports', + output_folder: REPORTS_FOLDER, page_objects_path: './test/e2e/page_objects', globals_path: './test/e2e/globals', selenium: { start_process: true, server_path: 'node_modules/selenium-standalone/.selenium/selenium-server/3.7.1-server.jar', - log_path: './test/e2e/', + log_path: REPORTS_FOLDER, host: '127.0.0.1', port: 6666, cli_args: { @@ -37,7 +39,7 @@ module.exports = { enabled: true, on_failure: true, on_error: true, - path: process.env.REPORTS_FOLDER || './test/e2e/reports', + path: REPORTS_FOLDER, }, }, chrome: { From b6a2d791ec7ff6494ff7430a7925d0f59395046d Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Tue, 13 Mar 2018 15:18:54 -0600 Subject: [PATCH 13/16] re-enabled headless support --- .circleci/e2e.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/e2e.sh b/.circleci/e2e.sh index c9688c476..826736bfc 100755 --- a/.circleci/e2e.sh +++ b/.circleci/e2e.sh @@ -25,5 +25,5 @@ if [[ "$BROWSERSTACK" == "true" && -n "$BROWSERSTACK_KEY" ]]; then else # When browserstack is not available test locally. echo Testing locally - node scripts/e2e.js --reports-folder "$REPORTS_FOLDER" --retries "$E2E_MAX_RETRIES" --timeout "$E2E_WAIT_FOR_TIMEOUT" --browsers "$E2E_BROWSERS" + node scripts/e2e.js --reports-folder "$REPORTS_FOLDER" --retries "$E2E_MAX_RETRIES" --timeout "$E2E_WAIT_FOR_TIMEOUT" --browsers "$E2E_BROWSERS" --headless fi From a0d2a4147c933cbccac99a127bea36b5d774a38b Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Tue, 13 Mar 2018 15:39:13 -0600 Subject: [PATCH 14/16] disabled firefox local integration tests :( --- .circleci/config.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index b264e96a4..507706803 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -245,10 +245,11 @@ workflows: <<: *filter_develop requires: - build_assets - - test_integration_firefox_local: - <<: *filter_develop - requires: - - build_assets + # TODO: uncomment when more reliable + # - test_integration_firefox_local: + # <<: *filter_develop + # requires: + # - build_assets deploy-tagged: jobs: - npm_dependencies: From 0dcb0bcaab0374b8a5071a7547bd8e0e125fdef0 Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Tue, 13 Mar 2018 16:01:38 -0600 Subject: [PATCH 15/16] Slack plugin fix --- plugins/talk-plugin-slack-notifications/server/hooks.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/talk-plugin-slack-notifications/server/hooks.js b/plugins/talk-plugin-slack-notifications/server/hooks.js index eac0c1be4..4133f795d 100644 --- a/plugins/talk-plugin-slack-notifications/server/hooks.js +++ b/plugins/talk-plugin-slack-notifications/server/hooks.js @@ -10,7 +10,7 @@ if (process.env.NODE_ENV === 'test') { module.exports = { RootMutation: { createComment: { - async post(_, _, context, info, result) { + async post(root, args, context, info, result) { debug(`Posting notification to Slack webhook: ${SLACK_WEBHOOK_URL}`); const { comment: { body: text, created_at: createdAt } } = result; const username = context.user.username; From a36960a6f03ab289de3c1c8625921ef70d66c6ab Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Tue, 13 Mar 2018 16:55:02 -0600 Subject: [PATCH 16/16] parse env json the same as the rest, with hjson --- plugins.env.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins.env.js b/plugins.env.js index 7be520cc0..ed3b2cbfd 100644 --- a/plugins.env.js +++ b/plugins.env.js @@ -1 +1,2 @@ -module.exports = JSON.parse(process.env.TALK_PLUGINS_JSON); +const hjson = require('hjson'); +module.exports = hjson.parse(process.env.TALK_PLUGINS_JSON);