Use sentence case for all card titles

This commit is contained in:
Sean Yesmunt 2020-08-26 16:28:33 -04:00
parent 7f6ab894d1
commit 1f2fabe81b
67 changed files with 313 additions and 275 deletions

View file

@ -73,7 +73,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Pause the "autoplay next" timer when performing long operations such as Tipping, Supporting or commenting _community pr!_ ([4419](https://github.com/lbryio/lbry-desktop/pull/4419))
- Email notification management page ([#4409](https://github.com/lbryio/lbry-desktop/pull/4409))
- Publish Page improvements to prevent accidental overwrites of existing claims _community pr!_ ([#4416](https://github.com/lbryio/lbry-desktop/pull/4416))
- Option to remove abandoned claims from Blocked Channels page _community pr!_ ([#4433](https://github.com/lbryio/lbry-desktop/pull/4433))
- Option to remove abandoned claims from Blocked channels page _community pr!_ ([#4433](https://github.com/lbryio/lbry-desktop/pull/4433))
- New channel create/edit page ([#4445](https://github.com/lbryio/lbry-desktop/pull/4445))
- Add dialog to copy various types of links for a claim _community pr!_ ([#4474](https://github.com/lbryio/lbry-desktop/pull/4474))
- Add password reset link to settings page for logged in users _community pr!_ ([#4473](https://github.com/lbryio/lbry-desktop/pull/4473))
@ -1399,7 +1399,7 @@ This release includes a breaking change that will reset many of your settings. T
### Removed
- Removed the label "Max Purchase Price" from settings page. It was redundant.
- Removed the label "Max purchase price" from settings page. It was redundant.
- Unused old files from previous commit(9c3d633)
### Fixed

View file

@ -77,7 +77,7 @@
"Copyrighted...": "Copyrighted...",
"Other...": "Other...",
"Email": "Email",
"Your Email": "Your Email",
"Your email": "Your email",
"Change": "Change",
"Rewards": "Rewards",
"You have": "You have",
@ -104,7 +104,7 @@
"Balance": "Balance",
"Full History": "Full History",
"Refresh": "Refresh",
"Send Credits": "Send Credits",
"Send credits": "Send credits",
"Send LBC to your friends or favorite creators": "Send LBC to your friends or favorite creators",
"Amount": "Amount",
"Recipient address": "Recipient address",
@ -129,31 +129,31 @@
"Site": "Site",
"History": "History",
"Pending": "Pending",
"Download Directory": "Download Directory",
"Download directory": "Download directory",
"LBRY downloads will be saved here.": "LBRY downloads will be saved here.",
"Max Purchase Price": "Max Purchase Price",
"Max purchase price": "Max purchase price",
"No Limit": "No Limit",
"Choose limit": "Choose limit",
"This will prevent you from purchasing any content over a certain cost, as a safety measure.": "This will prevent you from purchasing any content over a certain cost, as a safety measure.",
"Purchase and Tip Confirmations": "Purchase and Tip Confirmations",
"Purchase and tip confirmations": "Purchase and tip confirmations",
"Always confirm before purchasing content or tipping": "Always confirm before purchasing content or tipping",
"Only confirm purchases or tips over a certain amount": "Only confirm purchases or tips over a certain amount",
"When this option is chosen, LBRY won't ask you to confirm downloads or tips below your chosen amount.": "When this option is chosen, LBRY won't ask you to confirm downloads or tips below your chosen amount.",
"Content Settings": "Content Settings",
"Content settings": "Content settings",
"Notifications": "Notifications",
"Show Desktop Notifications": "Show Desktop Notifications",
"Appearance": "Appearance",
"Theme": "Theme",
"Wallet Security": "Wallet Security",
"Wallet security": "Wallet security",
"Encrypt my wallet with a custom password.": "Encrypt my wallet with a custom password.",
"Secure your local wallet data with a custom password.": "Secure your local wallet data with a custom password.",
"Lost passwords cannot be recovered.": "Lost passwords cannot be recovered.",
"Experimental Settings": "Experimental Settings",
"Experimental settings": "Experimental settings",
"Automatically download new content from my subscriptions": "Automatically download new content from my subscriptions",
"The latest file from each of your subscriptions will be downloaded for quick access as soon as it's published.": "The latest file from each of your subscriptions will be downloaded for quick access as soon as it's published.",
"Autoplay media files": "Autoplay media files",
"Autoplay video and audio files when navigating to a file, as well as the next related item when a file finishes playing.": "Autoplay video and audio files when navigating to a file, as well as the next related item when a file finishes playing.",
"Application Cache": "Application Cache",
"Application cache": "Application cache",
"Clear Cache": "Clear Cache",
"Currency": "Currency",
"LBRY Credits (LBC)": "LBRY Credits (LBC)",
@ -201,7 +201,7 @@
"Comment": "Comment",
"Your comment": "Your comment",
"Post": "Post",
"Incompatible Daemon": "Incompatible Daemon",
"Incompatible daemon": "Incompatible daemon",
"Incompatible daemon running": "Incompatible daemon running",
"Close App and LBRY Processes": "Close App and LBRY Processes",
"Continue Anyway": "Continue Anyway",
@ -222,7 +222,7 @@
"Join Our Chat": "Join Our Chat",
"Report a Bug or Suggest a New Feature": "Report a Bug or Suggest a New Feature",
"Find something wrong? Think LBRY could add something useful and cool?": "Find something wrong? Think LBRY could add something useful and cool?",
"View your Log": "View your Log",
"View your log": "View your log",
"support": "support",
"Open Log": "Open Log",
"Open Log Folder": "Open Log Folder",
@ -236,7 +236,7 @@
"Platform": "Platform",
"Installation ID": "Installation ID",
"Access Token": "Access Token",
"Backup Your LBRY Wallet": "Backup Your LBRY Wallet",
"Backup your LBRY wallet": "Backup your LBRY wallet",
"Your LBRY credits, channels, and publishes are controllable by you and only you, via wallet file(s) stored locally on your computer.": "Your LBRY credits, channels, and publishes are controllable by you and only you, via wallet file(s) stored locally on your computer.",
"Currently, there is no automatic wallet backup. If you lose access to these files, you will lose your credits permanently, as well as control of your channels and publishes.": "Currently, there is no automatic wallet backup. If you lose access to these files, you will lose your credits permanently, as well as control of your channels and publishes.",
"However, it is fairly easy to back up manually. To backup your wallet, make a copy of the folder listed below:": "However, it is fairly easy to back up manually. To backup your wallet, make a copy of the folder listed below:",
@ -257,7 +257,7 @@
"Support": "Support",
"Update": "Update",
"Abandon": "Abandon",
"Unlock Tip": "Unlock Tip",
"Unlock tip": "Unlock tip",
"Confirm Purchase": "Confirm Purchase",
"Purchasing...": "Purchasing...",
"Purchased!": "Purchased!",
@ -293,7 +293,7 @@
"Deposit cannot be 0": "Deposit cannot be 0",
"Your deposit cannot be 0": "Your deposit cannot be 0",
"Please decrease your deposit to account for transaction fees": "Please decrease your deposit to account for transaction fees",
"Upload Thumbnail": "Upload Thumbnail",
"Upload thumbnail": "Upload thumbnail",
"Confirm Thumbnail Upload": "Confirm Thumbnail Upload",
"Upload": "Upload",
"Uploading thumbnail": "Uploading thumbnail",
@ -356,12 +356,12 @@
"This process will likely involve providing proof of a stable and established online or real-life identity.": "This process will likely involve providing proof of a stable and established online or real-life identity.",
"Join LBRY Chat": "Join LBRY Chat",
"Blockchain Sync": "Blockchain Sync",
"No Rewards Available": "No Rewards Available",
"No rewards available": "No rewards available",
"You have claimed all available rewards! We're regularly adding more so be sure to check back later.": "You have claimed all available rewards! We're regularly adding more so be sure to check back later.",
"There are no rewards available at this time, please check back later.": "There are no rewards available at this time, please check back later.",
"Confirm Identity": "Confirm Identity",
"Got it": "Got it",
"View Your Channels": "View Your Channels",
"View your channels": "View your channels",
"Unfollow": "Unfollow",
"This LBC remains yours. It is a deposit to reserve the name and can be undone at any time.": "This LBC remains yours. It is a deposit to reserve the name and can be undone at any time.",
"Create channel": "Create channel",
@ -395,7 +395,7 @@
"Your Address": "Your Address",
"Support this claim": "Support this claim",
"content viewing preferences": "content viewing preferences",
"Encrypt Wallet": "Encrypt Wallet",
"Encrypt wallet": "Encrypt wallet",
"Encrypting your wallet will require a password to access your local wallet data when LBRY starts. Please enter a new password for your wallet.": "Encrypting your wallet will require a password to access your local wallet data when LBRY starts. Please enter a new password for your wallet.",
"Password": "Password",
"Shh...": "Shh...",
@ -403,7 +403,7 @@
"Your eyes only": "Your eyes only",
"If your password is lost, it cannot be recovered. You will not be able to access your wallet without a password.": "If your password is lost, it cannot be recovered. You will not be able to access your wallet without a password.",
"Enter \"I understand\"": "Enter \"I understand\"",
"Unlock Wallet": "Unlock Wallet",
"Unlock wallet": "Unlock wallet",
"Unlock": "Unlock",
"Exit": "Exit",
"Your wallet has been encrypted with a local password. Please enter your wallet password to proceed.": "Your wallet has been encrypted with a local password. Please enter your wallet password to proceed.",
@ -415,7 +415,7 @@
"Reward": "Reward",
"Not Accepted": "Not Accepted",
"Unclaimable": "Unclaimable",
"Enter Reward Code": "Enter Reward Code",
"Enter reward code": "Enter reward code",
"Redeem a custom reward code for LBC": "Redeem a custom reward code for LBC",
"Redeem": "Redeem",
"Code": "Code",
@ -459,14 +459,14 @@
"You have blocked this channel content.": "You have blocked this channel content.",
"Blocked %channelUrl%": "Blocked %channelUrl%",
"This channel hasn't published anything yet": "This channel hasn't published anything yet",
"Network and Data Settings": "Network and Data Settings",
"Neetwork and data settings": "Neetwork and data settings",
"Save all viewed content to your downloads directory": "Save all viewed content to your downloads directory",
"Paid content and some file types are saved by default. Changing this setting will not affect previously downloaded content.": "Paid content and some file types are saved by default. Changing this setting will not affect previously downloaded content.",
"Save hosting data to help the LBRY network": "Save hosting data to help the LBRY network",
"If disabled, LBRY will be very sad and you won't be helping improve the network.": "If disabled, LBRY will be very sad and you won't be helping improve the network.",
"Floating video player": "Floating video player",
"Keep content playing in the corner when navigating to a different page.": "Keep content playing in the corner when navigating to a different page.",
"Blocked Channels": "Blocked Channels",
"Blocked channels": "Blocked channels",
"Manage": "Manage",
"Automatic dark mode": "Automatic dark mode",
"Hide wallet balance in header": "Hide wallet balance in header",
@ -495,7 +495,7 @@
"Your LBRY credits, channels, and publishes are controllable by you and only you, via a wallet file stored locally on your computer.": "Your LBRY credits, channels, and publishes are controllable by you and only you, via a wallet file stored locally on your computer.",
"However, it is easy to back up manually. To backup your wallet, make a copy of the folder listed below:": "However, it is easy to back up manually. To backup your wallet, make a copy of the folder listed below:",
"Access to these files are equivalent to having access to your credits, channels, and publishes. Keep any copies you make of your wallet in a secure place. For more details on backing up and best practices %helpLink%.": "Access to these files are equivalent to having access to your credits, channels, and publishes. Keep any copies you make of your wallet in a secure place. For more details on backing up and best practices %helpLink%.",
"Your Channels": "Your Channels",
"Your channels": "Your channels",
"Add Tags": "Add Tags",
"Available Balance": "Available Balance",
"Earned and bound in tips": "Earned and bound in tips",
@ -504,8 +504,8 @@
"... in your supports": "... in your supports",
"Add a tag": "Add a tag",
"Upload something totally wacky and wild.": "Upload something totally wacky and wild.",
"Available Rewards": "Available Rewards",
"Follow New Tags": "Follow New Tags",
"Available rewards": "Available rewards",
"Follow new tags": "Follow new tags",
"Log In": "Log In",
"Go Back": "Go Back",
"Create a new account or sign in.": "Create a new account or sign in.",
@ -529,7 +529,7 @@
"Remember My Password": "Remember My Password",
"Extra Verification Needed": "Extra Verification Needed",
"We weren't able to auto-approve you for rewards. Please complete one of the steps below to unlock them.": "We weren't able to auto-approve you for rewards. Please complete one of the steps below to unlock them.",
"Proof via Text": "Proof via Text",
"Verify phone number": "Verify phone number",
"Verify Phone Number": "Verify Phone Number",
"OR": "OR",
"Proof via Credit": "Proof via Credit",
@ -538,11 +538,11 @@
"Proof via Chat": "Proof via Chat",
"A moderator capable of approving you is typically available in the discord server. Check out the #rewards-approval channel for more information. This process will likely involve providing proof of a stable and established online or real-life identity.": "A moderator capable of approving you is typically available in the discord server. Check out the #rewards-approval channel for more information. This process will likely involve providing proof of a stable and established online or real-life identity.",
"We're friendly. We promise.": "We're friendly. We promise.",
"No Channels Created Yet": "No Channels Created Yet",
"No channels created yet": "No channels created yet",
"Create a Channel": "Create a Channel",
"Wallet encryption is currently unavailable until it's supported for synced accounts. It will be added back soon. %learn_more%.": "Wallet encryption is currently unavailable until it's supported for synced accounts. It will be added back soon. %learn_more%.",
"Unsave Password": "Unsave Password",
"Clear Saved Password": "Clear Saved Password",
"Clear saved password": "Clear saved password",
"Forget": "Forget",
"Nevermind": "Nevermind",
"You are about to delete your saved password.": "You are about to delete your saved password.",
@ -559,7 +559,7 @@
"Enter \"%acknowledgement_text%\"": "Enter \"%acknowledgement_text%\"",
"Type \"%acknowledgement_text%\"": "Type \"%acknowledgement_text%\"",
"You must enter \"%acknowledgement_text%\"": "You must enter \"%acknowledgement_text%\"",
"Decrypt Wallet": "Decrypt Wallet",
"Decrypt wallet": "Decrypt wallet",
"Your wallet has been encrypted with a local password, performing this action will remove this password.": "Your wallet has been encrypted with a local password, performing this action will remove this password.",
"This app will automatically download new free content from channels you are subscribed to. You may configure this in Settings or on the Subscriptions page.": "This app will automatically download new free content from channels you are subscribed to. You may configure this in Settings or on the Subscriptions page.",
"(Only available on the desktop app.)": "(Only available on the desktop app.)",
@ -594,14 +594,15 @@
"Claiming...": "Claiming...",
"An email address is required to sync your account.": "An email address is required to sync your account.",
"Sign Out": "Sign Out",
"Sign out": "Sign out",
"Portuguese": "Portuguese",
"Follow more tags": "Follow more tags",
"Check Your Email": "Check Your Email",
"Check Your email": "Check Your email",
"Resend link": "Resend link",
"Sync your balance and preferences across devices.": "Sync your balance and preferences across devices.",
"Add Email": "Add Email",
"New email sent.": "New email sent.",
"Enter Your Wallet Password": "Enter Your Wallet Password",
"Enter your wallet password": "Enter your wallet password",
"You set your wallet password when you previously installed LBRY. This may have been on different device.": "You set your wallet password when you previously installed LBRY. This may have been on different device.",
"Password for %email%": "Password for %email%",
"help guide": "help guide",
@ -646,7 +647,7 @@
"Your email preferences": "Your email preferences",
"Invalid claim ID %claimId%.": "Invalid claim ID %claimId%.",
"Suggested": "Suggested",
"Startup Preferences": "Startup Preferences",
"Startup preferences": "Startup preferences",
"This will clear the application cache, and might fix issues you are having. Your wallet will not be affected. ": "This will clear the application cache, and might fix issues you are having. Your wallet will not be affected. ",
"Start minimized": "Start minimized",
"Improve view speed and help the LBRY network by allowing the app to cuddle up in your system tray.": "Improve view speed and help the LBRY network by allowing the app to cuddle up in your system tray.",
@ -654,7 +655,7 @@
"Submit Feedback": "Submit Feedback",
"Checking your uploads": "Checking your uploads",
"Checking for channels": "Checking for channels",
"Error Starting Up": "Error Starting Up",
"Error starting up": "Error starting up",
"Reach out to hello@lbry.com for help, or check out %help_link%.": "Reach out to hello@lbry.com for help, or check out %help_link%.",
"An upgrade is available.": "An upgrade is available.",
"New Channel": "New Channel",
@ -689,7 +690,7 @@
"Add": "Add",
"In response to a complaint we received under the US Digital Millennium Copyright Act, we have blocked access to this content from our applications.": "In response to a complaint we received under the US Digital Millennium Copyright Act, we have blocked access to this content from our applications.",
"lbry.tv": "lbry.tv",
"Your Blocked Channels": "Your Blocked Channels",
"Your blocked channels": "Your blocked channels",
"Bid position must be a number.": "Bid position must be a number.",
"Copy": "Copy",
"Text copied": "Text copied",
@ -725,7 +726,7 @@
"Are you sure you'd like to remove %title% from LBRY?": "Are you sure you'd like to remove %title% from LBRY?",
"This will increase the overall bid amount for this content, which will boost its ability to be discovered while active.": "This will increase the overall bid amount for this content, which will boost its ability to be discovered while active.",
"LBRY Link": "LBRY Link",
"Comment Acknowledgement": "Comment Acknowledgement",
"Comment acknowledgement": "Comment acknowledgement",
"A few things to know before making your comment:": "A few things to know before making your comment:",
"Commenting is in alpha. During the alpha, all comments are sent to a LBRY, Inc. server, not the LBRY network itself.": "Commenting is in alpha. During the alpha, all comments are sent to a LBRY, Inc. server, not the LBRY network itself.",
"When the alpha ends, we will attempt to transition comments, but do not promise to do so.": "When the alpha ends, we will attempt to transition comments, but do not promise to do so.",
@ -772,11 +773,11 @@
"You already have a claim with this name.": "You already have a claim with this name.",
"There was an error. Try %refreshing_the_app_link% to fix it. If that doesn't work, try pressing Ctrl+R/Cmd+R.": "There was an error. Try %refreshing_the_app_link% to fix it. If that doesn't work, try pressing Ctrl+R/Cmd+R.",
"You are not currently sharing diagnostic data so this error was not reported.": "You are not currently sharing diagnostic data so this error was not reported.",
"Find Channels to Follow": "Find Channels to Follow",
"Find channels to follow": "Find channels to follow",
"Find new channels to follow": "Find new channels to follow",
"%SITE_NAME% is more fun if you're following channels": "%SITE_NAME% is more fun if you're following channels",
"Saved zip archive to %outputPath%": "Saved zip archive to %outputPath%",
"Share Usage and Diagnostic Data": "Share Usage and Diagnostic Data",
"Share usage and diagnostic data": "Share usage and diagnostic data",
"This is information like error logging, performance tracking, and usage statistics. It includes your IP address and basic system details, but no other identifying information (unless you sign in to lbry.tv)": "This is information like error logging, performance tracking, and usage statistics. It includes your IP address and basic system details, but no other identifying information (unless you sign in to lbry.tv)",
"Allow the app to share data to LBRY.inc": "Allow the app to share data to LBRY.inc",
"Internal sharing is required to participate in rewards programs.": "Internal sharing is required to participate in rewards programs.",
@ -841,10 +842,10 @@
"You will receive notifications related to new content.": "You will receive notifications related to new content.",
"Get Validated": "Get Validated",
"other rewards": "other rewards",
"This step is not required to use LBRY, and not all users or regions may qualify.": "This step is not required to use LBRY, and not all users or regions may qualify.",
"A moderator capable of approving you is typically available in the discord server. See the #rewards-approval instructions carefully and do not message any moderators directly. This process will likely involve providing proof of a stable and established online or real-life identity.": "A moderator capable of approving you is typically available in the discord server. See the #rewards-approval instructions carefully and do not message any moderators directly. This process will likely involve providing proof of a stable and established online or real-life identity.",
"Rewards validation is optional.": "Rewards validation is optional.",
"Continue Without Rewards": "Continue Without Rewards",
"This step is not mandatory and not required in order for you to use %SITE_NAME%.": "This step is not mandatory and not required in order for you to use %SITE_NAME%.",
"A moderator can approve you within our discord server. Please review the instructions within #rewards-approval carefully.": "A moderator can approve you within our discord server. Please review the instructions within #rewards-approval carefully.",
"Verifying is optional. If you skip this, it just means you can't earn LBC.": "Verifying is optional. If you skip this, it just means you can't earn LBC.",
"Continue Without Verifying": "Continue Without Verifying",
"Validated accounts can earn for views and are eligible for %rewards_program%. Please complete one of the steps below. %Refresh% or %Skip%.": "Validated accounts can earn for views and are eligible for %rewards_program%. Please complete one of the steps below. %Refresh% or %Skip%.",
"verify your account": "verify your account",
"rename your existing wallet in the lbry/wallets directory": "rename your existing wallet in the lbry/wallets directory",
@ -859,7 +860,7 @@
"Channel profile picture": "Channel profile picture",
"Reposts of %uri%": "Reposts of %uri%",
"A backup of your wallet is synced with lbry.tv.": "A backup of your wallet is synced with lbry.tv.",
"Tag Selection": "Tag Selection",
"Tag selection": "Tag selection",
"Select some tags to help us show you interesting things.": "Select some tags to help us show you interesting things.",
"You are currently following %followingCount% tags": "You are currently following %followingCount% tags",
"You are currently following %followingCount% tag": "You are currently following %followingCount% tag",
@ -884,7 +885,7 @@
"Amount cannot be blank": "Amount cannot be blank",
"Amount cannot be more than available": "Amount cannot be more than available",
"Amount to unlock": "Amount to unlock",
"Unlock Tips": "Unlock Tips",
"Unlock tips": "Unlock tips",
"Support This Claim": "Support This Claim",
"view other claims at lbry://%name%": "view other claims at lbry://%name%",
"Original Publish Amount": "Original Publish Amount",
@ -907,7 +908,7 @@
"Sign in with a password (optional)": "Sign in with a password (optional)",
"Don't have an account? %sign_up%": "Don't have an account? %sign_up%",
"Preparing your content": "Preparing your content",
"File Details": "File Details",
"File details": "File details",
"You can unlock all or some of this LBC at any time.": "You can unlock all or some of this LBC at any time.",
"Keeping it locked improves the trust and discoverability of your content.": "Keeping it locked improves the trust and discoverability of your content.",
"It's usually only worth unlocking what you intend to use immediately. %learn_more%": "It's usually only worth unlocking what you intend to use immediately. %learn_more%",
@ -944,7 +945,7 @@
"Successfully unlocked your tip!": "Successfully unlocked your tip!",
"Successfully abandoned your claim.": "Successfully abandoned your claim.",
"You have %count% blocked %channels%.": "You have %count% blocked %channels%.",
"Account Password": "Account Password",
"Account password": "Account password",
"You do not currently have a password set.": "You do not currently have a password set.",
"Enter Your lbry.tv Password": "Enter Your lbry.tv Password",
"Logging in in as %email%": "Logging in in as %email%",
@ -952,13 +953,13 @@
"Use Magic Link": "Use Magic Link",
"Password updated successfully.": "Password updated successfully.",
"No recent publishes": "No recent publishes",
"Error Fetching Stats": "Error Fetching Stats",
"Error fetching stats": "Error fetching stats",
"%follower_count_weekly_change% this week": "%follower_count_weekly_change% this week",
"%all_content_views% views": "%all_content_views% views",
"+ %all_content_views_weekly_change% this week": "+ %all_content_views_weekly_change% this week",
"%lbc_received_changed% this week": "%lbc_received_changed% this week",
"Earnings may also include any LBC you've sent yourself or added as support. We are working on making this more accurate. Check your wallet page for the correct total balance.": "Earnings may also include any LBC you've sent yourself or added as support. We are working on making this more accurate. Check your wallet page for the correct total balance.",
"Your Recent Content": "Your Recent Content",
"Your recent content": "Your recent content",
"No recent uploads found for this channel. Upload something new and track how it's performing here.": "No recent uploads found for this channel. Upload something new and track how it's performing here.",
"Most Viewed Content": "Most Viewed Content",
"%all_time_top_views% views - %all_time_views_weekly_change% this week": "%all_time_top_views% views - %all_time_views_weekly_change% this week",
@ -1004,7 +1005,7 @@
"%duration% second ago": "%duration% second ago",
"%duration% ago": "%duration% ago",
"Message received! Thanks for helping.": "Message received! Thanks for helping.",
"Report an Issue/Request a Feature": "Report an Issue/Request a Feature",
"Report an issue or request a feature": "Report an issue or request a feature",
"Please describe the problem you experienced or the feature you want to see and any information you think might be useful to us. Links to screenshots are great!": "Please describe the problem you experienced or the feature you want to see and any information you think might be useful to us. Links to screenshots are great!",
"Description of your issue or feature request": "Description of your issue or feature request",
"Submitting...": "Submitting...",
@ -1012,8 +1013,8 @@
"Developer?": "Developer?",
"You can also:": "You can also:",
"Submit an issue on GitHub": "Submit an issue on GitHub",
"Most Viewed Recent Content": "Most Viewed Recent Content",
"Most Viewed Content All Time": "Most Viewed Content All Time",
"Most viewed recent content": "Most viewed recent content",
"Most viewed content all time": "Most viewed content all time",
"There are no stats for this channel yet, it will take a few views. Make sure you are signed in with the correct email and have data sharing turned on.": "There are no stats for this channel yet, it will take a few views. Make sure you are signed in with the correct email and have data sharing turned on.",
"Join our %tech_forum%": "Join our %tech_forum%",
"tech forum": "tech forum",
@ -1048,7 +1049,7 @@
"Replying as %reply_channel%": "Replying as %reply_channel%",
"Error ID: %sentryEventId%": "Error ID: %sentryEventId%",
"This error was reported and will be fixed.": "This error was reported and will be fixed.",
"Content freedom and a present from %channel_name% are waiting for you. %signup_link% to claim it.": "Content freedom and a present from %channel_name% are waiting for you. %signup_link% to claim it.",
"%channel_name% is waiting for you on %SITE_NAME%. Create your account now.": "%channel_name% is waiting for you on %SITE_NAME%. Create your account now.",
"Content freedom and a present are waiting for you. %signup_link% to claim it.": "Content freedom and a present are waiting for you. %signup_link% to claim it.",
"Finish Account": "Finish Account",
"Create Account": "Create Account",
@ -1095,7 +1096,7 @@
"Confirm": "Confirm",
"This file will be removed from your Library and Downloads folder.": "This file will be removed from your Library and Downloads folder.",
"This file will be removed from your Library but will remain in your Downloads folder.": "This file will be removed from your Library but will remain in your Downloads folder.",
"Reward Validation Pending": "Reward Validation Pending",
"Reward validation pending": "Reward validation pending",
"Checkout": "Checkout",
"Your cart contains 1 item.": "Your cart contains 1 item.",
"lbry.tv Premium - 1 month": "lbry.tv Premium - 1 month",
@ -1147,7 +1148,7 @@
"You already have a claim at %existing_uri%. Publishing will update (overwrite) your existing claim.": "You already have a claim at %existing_uri%. Publishing will update (overwrite) your existing claim.",
"Save": "Save",
"Saving...": "Saving...",
"Downloading Update": "Downloading Update",
"Downloading update": "Downloading update",
"complete": "complete",
"Click \"Begin Upgrade\" to start the upgrade process.": "Click \"Begin Upgrade\" to start the upgrade process.",
"The app will close (if not, quit with CTRL-Q), and you will be prompted to install the latest version of LBRY.": "The app will close (if not, quit with CTRL-Q), and you will be prompted to install the latest version of LBRY.",
@ -1159,19 +1160,19 @@
"Thanks for the feedback! You help make the app better for everyone.": "Thanks for the feedback! You help make the app better for everyone.",
"Thanks for the feedback. Mark has been notified and is currently walking over to his computer to work on this.": "Thanks for the feedback. Mark has been notified and is currently walking over to his computer to work on this.",
"Changelog": "Changelog",
"Supporting Content Requires LBC": "Supporting Content Requires LBC",
"Supporting content requires credits": "Supporting content requires credits",
"With LBC, you can send tips to your favorite creators, or help boost their content for more people to see.": "With LBC, you can send tips to your favorite creators, or help boost their content for more people to see.",
"Boost Your Content": "Boost Your Content",
"Boost your content": "Boost your content",
"Send Revocable Support": "Send Revocable Support",
"Send a %amount% Tip": "Send a %amount% Tip",
"Channel to show support as": "Channel to show support as",
"Buy More LBC": "Buy More LBC",
"Support This Content": "Support This Content",
"Buy more LBC": "Buy more LBC",
"Support this content": "Support this content",
"Make this a tip": "Make this a tip",
"Custom support amount": "Custom support amount",
"(%lbc_balance% available)": "(%lbc_balance% available)",
"Loading your channels...": "Loading your channels...",
"Try Out the App!": "Try Out the App!",
"Try out the app!": "Try out the app!",
"Download the app to track files you've viewed and downloaded.": "Download the app to track files you've viewed and downloaded.",
"Create a New Channel": "Create a New Channel",
"Thumbnail source": "Thumbnail source",
@ -1183,23 +1184,23 @@
"Old Password": "Old Password",
"New Password": "New Password",
"Set Password": "Set Password",
"Reset Your Password": "Reset Your Password",
"Reset your password": "Reset your password",
"Reset Password": "Reset Password",
"Check your email for a link to reset your password.": "Check your email for a link to reset your password.",
"Email sent!": "Email sent!",
"Choose A New Password": "Choose A New Password",
"Choose a new password": "Choose a new password",
"Setting a new password for %email%": "Setting a new password for %email%",
"Update Password": "Update Password",
"We can't find that email. Did you mean to sign up?": "We can't find that email. Did you mean to sign up?",
"App Notifications": "App Notifications",
"App notifications": "App notifications",
"Notification settings for the desktop app.": "Notification settings for the desktop app.",
"Get notified when an upload or channel is confirmed.": "Get notified when an upload or channel is confirmed.",
"Email Preferences": "Email Preferences",
"Email preferences": "Email preferences",
"Opt out of any topics you don't want to receive email about.": "Opt out of any topics you don't want to receive email about.",
"Uncheck your email below if you want to stop receiving messages.": "Uncheck your email below if you want to stop receiving messages.",
"Remove from Blocked List": "Remove from Blocked List",
"Remove from blocked list": "Remove from blocked list",
"Are you sure you want to remove this from the list?": "Are you sure you want to remove this from the list?",
"Send A Tip": "Send A Tip",
"Send a tip": "Send a tip",
"Send a chunk of change to this creator to let them know you appreciate their content.": "Send a chunk of change to this creator to let them know you appreciate their content.",
"CableTube Escape Artists": "CableTube Escape Artists",
"Unlink YouTube Channel": "Unlink YouTube Channel",
@ -1216,7 +1217,7 @@
"This field cannot be changed.": "This field cannot be changed.",
"Delete Channel": "Delete Channel",
"Edit Thumbnail Image": "Edit Thumbnail Image",
"Choose Image": "Choose Image",
"Choose image": "Choose image",
"File to upload": "File to upload",
"Uploading...": "Uploading...",
"Use a URL": "Use a URL",
@ -1250,11 +1251,11 @@
"View thumbnail": "View thumbnail",
"These changes will appear shortly.": "These changes will appear shortly.",
"Block Channel": "Block Channel",
"Manage Notifications": "Manage Notifications",
"Manage notifications": "Manage notifications",
"Uploads": "Uploads",
"Advanced Settings": "Advanced Settings",
"Advanced settings": "Advanced settings",
"Browse": "Browse",
"Automatic Transcoding": "Automatic Transcoding",
"Automatic transcoding": "Automatic transcoding",
"Add tags that are relevant to your content so those who're looking for it can find it more easily. If mature content, ensure it is tagged mature. Tag abuse and missing mature tags will not be tolerated.": "Add tags that are relevant to your content so those who're looking for it can find it more easily. If mature content, ensure it is tagged mature. Tag abuse and missing mature tags will not be tolerated.",
"%site_name% Terms of Service": "%site_name% Terms of Service",
"Descriptive titles work best": "Descriptive titles work best",
@ -1278,13 +1279,13 @@
"You are currently editing your upload.": "You are currently editing your upload.",
"You are currently editing this claim.": "You are currently editing this claim.",
"My content for this post...": "My content for this post...",
"Closing Preferences": "Closing Preferences",
"Closing preferences": "Closing preferences",
"Leave app running in notification area when the window is closed": "Leave app running in notification area when the window is closed",
"You are now signed in.": "You are now signed in.",
"Welcome back! You are automatically being signed in.": "Welcome back! You are automatically being signed in.",
"Join %SITE_NAME%": "Join %SITE_NAME%",
"terms": "terms",
"Enter Your Phone Number": "Enter Your Phone Number",
"Enter your phone number": "Enter your phone number",
"Not Now": "Not Now",
"Enter your phone number and we will send you a verification code. We will not share your phone number with third parties.": "Enter your phone number and we will send you a verification code. We will not share your phone number with third parties.",
"Number": "Number",

View file

@ -30,7 +30,11 @@ function ClaimPreviewSubtitle(props: Props) {
<UriIndicator uri={uri} link />{' '}
{!pending &&
claim &&
(isChannel ? type !== 'inline' && `${claimsInChannel} ${__('publishes')}` : <DateTime timeAgo uri={uri} />)}
(isChannel ? (
type !== 'inline' && `${claimsInChannel} ${claimsInChannel === 1 ? __('upload') : __('uploads')}`
) : (
<DateTime timeAgo uri={uri} />
))}
</React.Fragment>
) : (
<React.Fragment>

View file

@ -68,7 +68,7 @@ export default function CreatorAnalytics(props: Props) {
{error && (
<Yrbl
type="sad"
title={error === GENERIC_ERROR ? __('No Stats Found') : __('Error Fetching Stats')}
title={error === GENERIC_ERROR ? __('No stats found') : __('Error fetching stats')}
subtitle={
error === GENERIC_ERROR
? __(
@ -170,7 +170,7 @@ export default function CreatorAnalytics(props: Props) {
{stats.VideoURITopNew ? (
<Card
className="section"
title={__('Most Viewed Recent Content')}
title={__('Most viewed recent content')}
body={
<React.Fragment>
<div className="card--inline">
@ -193,7 +193,7 @@ export default function CreatorAnalytics(props: Props) {
) : (
<Card
className="section"
title={__('Your Recent Content')}
title={__('Your recent content')}
subtitle={
!stats.VideoURITopNew &&
__("No recent uploads found for this channel. Upload something new and track how it's performing here.")
@ -245,7 +245,7 @@ export default function CreatorAnalytics(props: Props) {
<Card
className="section"
title={__('Most Viewed Content All Time')}
title={__('Most viewed content all time')}
body={
<React.Fragment>
<div className="card--inline">

View file

@ -41,7 +41,7 @@ class FileDetails extends PureComponent<Props> {
return (
<Fragment>
<Card
title={__('File Details')}
title={__('File details')}
defaultExpand={false}
actions={
<table className="table table--condensed table--fixed table--file-details">

View file

@ -17,7 +17,7 @@ export default function FileRenderDownload(props: Props) {
if (RENDER_MODES.UNSUPPORTED_IN_THIS_APP.includes(renderMode)) {
return (
<Card
title={__('Download or Get the App')}
title={__('Download or get the app')}
subtitle={
<p>
{__(

View file

@ -34,7 +34,7 @@ class FileValues extends PureComponent<Props> {
return (
<Fragment>
<Card
title={__('LBC Details')}
title={__('LBC details')}
defaultExpand={false}
actions={
<table className="table table--condensed table--fixed table--lbc-details">

View file

@ -115,6 +115,8 @@ const Header = (props: Props) => {
if (syncError) {
signOut();
}
history.push('/');
},
};

View file

@ -1,4 +1,5 @@
// @flow
import { SITE_NAME } from 'config';
import * as PAGES from 'constants/pages';
import React, { useEffect } from 'react';
import Button from 'component/button';
@ -140,7 +141,11 @@ function Invited(props: Props) {
return (
<Card
title={__(`You're invited!`)}
title={
referrerIsChannel
? __('%channel_name% invites you to the party!', { channel_name: referrerChannelName })
: __(`You're invited!`)
}
subtitle={
<p>
{referrerIsChannel ? (
@ -148,9 +153,10 @@ function Invited(props: Props) {
tokens={{
channel_name: referrerChannelName,
signup_link: signUpButton,
SITE_NAME,
}}
>
Content freedom and a present from %channel_name% are waiting for you. %signup_link% to claim it.
%channel_name% is waiting for you on %SITE_NAME%. Create your account now.
</I18nMessage>
) : (
<I18nMessage

View file

@ -16,7 +16,7 @@ class RewardSummary extends React.Component<Props> {
const hasRewards = unclaimedRewardAmount > 0;
return (
<Card
title={__('Available Rewards')}
title={__('Available rewards')}
subtitle={
<React.Fragment>
{fetching && __('You have...')}

View file

@ -72,7 +72,7 @@ function SelectAsset(props: Props) {
return (
<Card
title={title || __('Choose Image')}
title={title || __('Choose image')}
actions={
<Form onSubmit={onDone}>
{error && <div className="error__text">{error}</div>}

View file

@ -40,7 +40,7 @@ export default function SettingAccountPassword(props: Props) {
return (
<Card
title={__('Account Password')}
title={__('Account password')}
subtitle={hasPassword ? '' : __('You do not currently have a password set.')}
actions={
isAddingPassword ? (

View file

@ -295,7 +295,7 @@ export default class SplashScreen extends React.PureComponent<Props, State> {
)}
{error && (
<Card
title={__('Error Starting Up')}
title={__('Error starting up')}
subtitle={
<React.Fragment>
<p>

View file

@ -89,7 +89,7 @@ const SupportsLiquidate = (props: Props) => {
return (
<Card
icon={ICONS.UNLOCK}
title={__('Unlock Tips')}
title={__('Unlock tips')}
subtitle={
<>
<p>

View file

@ -42,7 +42,7 @@ function SyncPassword(props: Props) {
return (
<Form onSubmit={handleSubmit}>
<Card
title={__('Enter Your Wallet Password')}
title={__('Enter your wallet password')}
subtitle={__(
'You set your wallet password when you previously installed LBRY. This may have been on different device.'
)}

View file

@ -42,7 +42,7 @@ class TxoListItem extends React.PureComponent<Props, State> {
button="secondary"
icon={ICONS.UNLOCK}
onClick={this.abandonClaim}
title={__('Unlock Tip')}
title={__('Unlock tip')}
/>
);
}

View file

@ -35,7 +35,7 @@ function UserChannelFollowIntro(props: Props) {
return (
<Card
title={__('Find Channels to Follow')}
title={__('Find channels to follow')}
subtitle={__(
'LBRY works better if you find and follow at least 5 creators you like. You can also block channels you never want to see.'
)}

View file

@ -51,7 +51,7 @@ function UserEmail(props: Props) {
readOnly
label={
<React.Fragment>
{__('Your Email')}{' '}
{__('Your email')}{' '}
<Button
button="link"
label={__('Update mailing preferences')}

View file

@ -63,7 +63,7 @@ class UserEmailVerify extends React.PureComponent<Props> {
return (
<div className="main__sign-up">
<Card
title={isReturningUser ? __('Check Your Email') : __('Confirm your account')}
title={isReturningUser ? __('Check Your email') : __('Confirm your account')}
subtitle={
<p>
{__('We just sent an email to %email% with a link for you to %verify_text%.', {

View file

@ -66,7 +66,7 @@ function UserPasswordReset(props: Props) {
return (
<section className="main__sign-in">
<Card
title={__('Reset Your Password')}
title={__('Reset your password')}
actions={
<div>
<Form onSubmit={handleSubmit} className="section">

View file

@ -72,7 +72,7 @@ function UserPasswordReset(props: Props) {
return (
<section className="main__sign-in">
<Card
title={__('Choose A New Password')}
title={__('Choose a new password')}
subtitle={__('Setting a new password for %email%', { email })}
actions={
<div>

View file

@ -1,6 +1,7 @@
// @flow
import * as React from 'react';
import { Form, FormField, Submit } from 'component/common/form';
import Card from 'component/common/card';
const os = require('os').type();
const countryCodes = require('country-data')
@ -82,13 +83,12 @@ class UserPhoneNew extends React.PureComponent<Props, State> {
const { cancelButton, phoneErrorMessage, isPending } = this.props;
return (
<React.Fragment>
<p className="section__subtitle">
{__(
<Card
title={__('Enter your phone number')}
subtitle={__(
'Enter your phone number and we will send you a verification code. We will not share your phone number with third parties.'
)}
</p>
actions={
<Form onSubmit={this.handleSubmit}>
<fieldset-group class="fieldset-group--smushed">
<FormField label={__('Country')} type="select" name="country-codes" onChange={this.handleSelect}>
@ -115,7 +115,8 @@ class UserPhoneNew extends React.PureComponent<Props, State> {
{cancelButton}
</div>
</Form>
</React.Fragment>
}
/>
);
}
}

View file

@ -3,11 +3,11 @@ import * as React from 'react';
import Button from 'component/button';
import { Form, FormField, Submit } from 'component/common/form';
import I18nMessage from 'component/i18nMessage';
import Card from 'component/common/card';
type Props = {
verifyUserPhone: string => void,
resetPhone: () => void,
cancelButton: React.Node,
phoneErrorMessage: string,
phone: string,
countryCode: string,
@ -43,14 +43,18 @@ class UserPhoneVerify extends React.PureComponent<Props, State> {
}
render() {
const { cancelButton, phoneErrorMessage, phone, countryCode } = this.props;
const { phoneErrorMessage, phone, countryCode } = this.props;
return (
<React.Fragment>
<p>
{' '}
<Card
title={__('Enter the verification code')}
subtitle={
<>
{__(`Please enter the verification code sent to +${countryCode}${phone}. Didn't receive it? `)}
<Button button="link" onClick={this.reset.bind(this)} label={__("Go back.")} />
</p>
<Button button="link" onClick={this.reset.bind(this)} label={__('Go back.')} />
</>
}
actions={
<>
<Form onSubmit={this.handleSubmit.bind(this)}>
<FormField
type="text"
@ -64,21 +68,20 @@ class UserPhoneVerify extends React.PureComponent<Props, State> {
error={phoneErrorMessage}
inputButton={<Submit label={__('Verify')} />}
/>
<div className="card__actions">{cancelButton}</div>
</Form>
<p className="help">
<I18nMessage
tokens={{
help_link: <Button button="link" href="mailto:help@lbry.com" label="help@lbry.com" />,
chat_link: <Button button="link" href="https://chat.lbry.com" label={__("chat")} />,
chat_link: <Button button="link" href="https://chat.lbry.com" label={__('chat')} />,
}}
>
Email %help_link% or join our %chat_link% if you encounter any trouble with your code.
</I18nMessage>
</p>
</React.Fragment>
</>
}
/>
);
}
}

View file

@ -1,6 +1,7 @@
// @flow
import * as PAGES from 'constants/pages';
import React from 'react';
import classnames from 'classnames';
import { withRouter } from 'react-router';
import UserEmailNew from 'component/userEmailNew';
import UserEmailVerify from 'component/userEmailVerify';
@ -103,7 +104,8 @@ function UserSignIn(props: Props) {
const showYoutubeTransfer = hasVerifiedEmail && hasYoutubeChannels && !isYoutubeTransferComplete;
const showFollowIntro = step === 'channels' || (hasVerifiedEmail && !followingAcknowledged);
const showTagsIntro = step === 'tags' || (hasVerifiedEmail && !tagsAcknowledged);
const canHijackSignInFlowWithSpinner = hasVerifiedEmail && !getSyncError && !showFollowIntro;
const canHijackSignInFlowWithSpinner =
hasVerifiedEmail && !getSyncError && !showFollowIntro && !showTagsIntro && !rewardsAcknowledged;
const isCurrentlyFetchingSomething = fetchingChannels || claimingReward || syncingWallet || creatingChannel;
const isWaitingForSomethingToFinish =
// If the user has claimed the email award, we need to wait until the balance updates sometime in the future
@ -199,6 +201,7 @@ function UserSignIn(props: Props) {
),
];
// $FlowFixMe
function getSignInStep() {
for (var i = SIGN_IN_FLOW.length - 1; i > -1; i--) {
const Component = SIGN_IN_FLOW[i];
@ -214,18 +217,22 @@ function UserSignIn(props: Props) {
}
}
return Component;
const scrollableSteps = [2, 4, 5];
const isScrollable = scrollableSteps.includes(i);
return [Component, isScrollable];
}
}
}
const componentToRender = getSignInStep();
const [componentToRender, isScrollable] = getSignInStep();
if (!componentToRender) {
history.replace(redirect || '/');
}
return <section className="main--contained">{componentToRender}</section>;
return (
<section className={classnames('main--contained', { 'main--hoisted': isScrollable })}>{componentToRender}</section>
);
}
export default withRouter(UserSignIn);

View file

@ -18,7 +18,7 @@ function UserTagFollowIntro(props: Props) {
return (
<Card
title={__('Tag Selection')}
title={__('Tag selection')}
subtitle={__('Select some tags to help us show you interesting things.')}
actions={
<React.Fragment>
@ -35,7 +35,7 @@ function UserTagFollowIntro(props: Props) {
</div>
</Form>
<div className="section__body">
<TagsSelect hideHeader limitShow={300} help={false} showClose={false} title={__('Follow New Tags')} />
<TagsSelect hideHeader limitShow={300} help={false} showClose={false} title={__('Follow new tags')} />
{followingCount > 0 && (
<Nag
type="helpful"

View file

@ -1,4 +1,5 @@
// @flow
import { SITE_NAME } from 'config';
import * as ICONS from 'constants/icons';
import React, { Fragment } from 'react';
import Button from 'component/button';
@ -37,7 +38,7 @@ class UserVerify extends React.PureComponent<Props> {
return (
<div className="main__auth-content">
<section className="section__header">
<h1 className="section__title--large">{__('Get Validated')}</h1>
<h1 className="section__title--large">{__('Verify to earn LBC')}</h1>
<p>
<I18nMessage
tokens={{
@ -46,20 +47,24 @@ class UserVerify extends React.PureComponent<Props> {
),
Refresh: <Button onClick={() => fetchUser()} button="link" label={__('Refresh')} />,
Skip: <Button {...skipButtonProps} button="link" label={__('Skip')} />,
SITE_NAME,
}}
>
Validated accounts can earn for views and are eligible for %rewards_program%. Please complete one of the steps below. %Refresh% or %Skip%.
Verified accounts are eligible to earn LBC for views, watching and reposting content, sharing invite links
etc. Verifying also helps us keep the %SITE_NAME% community safe too! %Refresh% or %Skip%.
</I18nMessage>
</p>
<p>{__('This step is not required to use LBRY, and not all users or regions may qualify.')}</p>
<p className="help">
{__('This step is not mandatory and not required in order for you to use %SITE_NAME%.', { SITE_NAME })}
</p>
</section>
<div className="section">
<Card
icon={ICONS.PHONE}
title={__('Proof via Text')}
title={__('Verify phone number')}
subtitle={__(
'You will receive an SMS text message confirming that your phone number is correct. Does not work for Canada and possibly other regions'
'You will receive an SMS text message confirming your phone number is valid. Does not work for Canada and possibly other regions.'
)}
actions={
<Fragment>
@ -68,10 +73,10 @@ class UserVerify extends React.PureComponent<Props> {
verifyPhone();
}}
button="primary"
label={__('Verify Phone Number')}
label={__('Verify Via Text')}
/>
<p className="help">
{__('Standard messaging rates apply. LBRY will not text or call you otherwise. Having trouble?')}{' '}
{__('Standard messaging rates apply. Having trouble?')}{' '}
<Button button="link" href="https://lbry.com/faq/phone" label={__('Read more')} />.
</p>
</Fragment>
@ -85,7 +90,7 @@ class UserVerify extends React.PureComponent<Props> {
<Card
icon={ICONS.WALLET}
title={__('Proof via Credit')}
title={__('Verify via credit card')}
subtitle={__(
'If you have a valid credit or debit card, you can use it to instantly prove your humanity. LBRY does not store your credit card information. There is no charge at all for this, now or in the future.'
)}
@ -113,16 +118,18 @@ class UserVerify extends React.PureComponent<Props> {
<Card
icon={ICONS.CHAT}
title={__('Proof via Chat')}
subtitle={__(
'A moderator capable of approving you is typically available in the discord server. See the #rewards-approval instructions carefully and do not message any moderators directly. This process will likely involve providing proof of a stable and established online or real-life identity.'
title={__('Verify via chat')}
subtitle={
<>
<p>
{__(
'A moderator can approve you within our discord server. Please review the instructions within #rewards-approval carefully.'
)}
actions={
<Fragment>
<Button href="https://chat.lbry.com" button="primary" label={__('Join LBRY Chat')} />
<p className="help">{__("We're friendly. We promise.")}</p>
</Fragment>
</p>
<p>{__('You will be asked to provide proof of identity.')}</p>
</>
}
actions={<Button href="https://chat.lbry.com" button="primary" label={__('Join LBRY Chat')} />}
/>
<div className="section__divider">
@ -133,10 +140,10 @@ class UserVerify extends React.PureComponent<Props> {
<Card
icon={ICONS.REMOVE}
title={__('Skip')}
subtitle={__('Rewards validation is optional.')}
subtitle={__("Verifying is optional. If you skip this, it just means you can't earn LBC.")}
actions={
<Fragment>
<Button {...skipButtonProps} button="primary" label={__('Continue Without Rewards')} />
<Button {...skipButtonProps} button="primary" label={__('Continue Without Verifying')} />
</Fragment>
}
/>

View file

@ -15,7 +15,7 @@ function ImageViewer(props: Props) {
<React.Fragment>
{loadingError && (
<Card
title={__('Error Displaying Image')}
title={__('Error displaying image')}
actions={<ErrorText>There was an error displaying the image. You may still download it.</ErrorText>}
/>
)}

View file

@ -92,7 +92,7 @@ class WalletBackup extends React.PureComponent<Props, State> {
return (
<Card
title={__('Backup Your LBRY Wallet')}
title={__('Backup your LBRY wallet')}
subtitle={
<ul>
<li>
@ -127,8 +127,9 @@ class WalletBackup extends React.PureComponent<Props, State> {
),
}}
>
Access to these files are equivalent to having access to your credits, channels, and publishes. Keep any copies you make of your
wallet in a secure place. For more details on backing up and best practices %helpLink%.
Access to these files are equivalent to having access to your credits, channels, and publishes. Keep any
copies you make of your wallet in a secure place. For more details on backing up and best practices
%helpLink%.
</I18nMessage>
</p>
<p className={'card__message card__message--error' + (this.state.errorMessage ? '' : ' hidden')}>

View file

@ -38,7 +38,7 @@ class WalletSend extends React.PureComponent<Props> {
return (
<Card
title={__('Send Credits')}
title={__('Send credits')}
subtitle={__('Send LBC to your friends or favorite creators.')}
actions={
<Formik

View file

@ -58,6 +58,7 @@ function WalletSendTip(props: Props) {
const [selectedChannel, setSelectedChannel] = usePersistedState('comment-support:channel');
const { claim_id: claimId } = claim;
const { channelName } = parseURI(uri);
const noBalance = balance === 0;
const channelStrings = channels && channels.map(channel => channel.permanent_url).join(',');
React.useEffect(() => {
@ -149,22 +150,28 @@ function WalletSendTip(props: Props) {
return (
<Form onSubmit={handleSubmit}>
{balance === 0 ? (
{noBalance ? (
<Card
title={__('Supporting Content Requires LBC')}
title={__('Supporting content requires credits')}
subtitle={__(
'With LBC, you can send tips to your favorite creators, or help boost their content for more people to see.'
)}
actions={
<div className="section__actions">
<Button icon={ICONS.BUY} button="primary" label={__('Buy LBC')} navigate={`/$/${PAGES.BUY}`} />
<Button
icon={ICONS.REWARDS}
button="primary"
label={__('Earn Rewards')}
navigate={`/$/${PAGES.REWARDS}`}
/>
<Button icon={ICONS.BUY} button="secondary" label={__('Buy Credits')} navigate={`/$/${PAGES.BUY}`} />
<Button button="link" label={__('Nevermind')} onClick={closeModal} />
</div>
}
/>
) : (
<Card
title={claimIsMine ? __('Boost Your Content') : isSupport ? __('Support This Content') : __('Send A Tip')}
title={claimIsMine ? __('Boost your content') : isSupport ? __('Support this content') : __('Send a tip')}
subtitle={
<React.Fragment>
{isSupport
@ -239,7 +246,7 @@ function WalletSendTip(props: Props) {
button="secondary"
className="button-toggle-group-action"
icon={ICONS.BUY}
title={__('Buy More LBC')}
title={__('Buy more LBC')}
navigate={`/$/${PAGES.BUY}`}
/>
)}

View file

@ -20,7 +20,7 @@ export default function WebUploadList(props: Props) {
return (
!!uploadCount && (
<Card
title={__('Currently Uploading')}
title={__('Currently uploading')}
subtitle={uploadCount > 1 ? __('You files are currently uploading.') : __('Your file is currently uploading.')}
body={
<section>

View file

@ -149,7 +149,7 @@ export default function YoutubeTransferStatus(props: Props) {
</div>
) : !hideChannelLink ? (
<div className="card__actions">
<Button button="primary" navigate={`/$/${PAGES.CHANNELS}`} label={__('View Your Channels')} />
<Button button="primary" navigate={`/$/${PAGES.CHANNELS}`} label={__('View your channels')} />
</div>
) : (
false

View file

@ -265,7 +265,7 @@ export const COMMENT_HIDE_STARTED = 'COMMENT_HIDE_STARTED';
export const COMMENT_HIDE_COMPLETED = 'COMMENT_HIDE_COMPLETED';
export const COMMENT_HIDE_FAILED = 'COMMENT_HIDE_FAILED';
// Blocked Channels
// Blocked channels
export const TOGGLE_BLOCK_CHANNEL = 'TOGGLE_BLOCK_CHANNEL';
// Notifications

View file

@ -71,7 +71,7 @@ function ModalAutoGenerateThumbnail(props: Props) {
return (
<Modal
isOpen
title={__('Upload Thumbnail')}
title={__('Upload thumbnail')}
contentLabel={__('Confirm Thumbnail Upload')}
type="confirm"
confirmButtonLabel={__('Upload')}

View file

@ -33,7 +33,7 @@ class ModalAutoUpdateDownloaded extends React.PureComponent<Props, State> {
isOpen
type="confirm"
contentLabel={__('Upgrade Downloaded')}
title={__('LBRY Leveled Up')}
title={__('LBRY leveled up')}
confirmButtonLabel={__('Upgrade Now')}
abortButtonLabel={__('Not now')}
confirmButtonDisabled={this.state.disabled}

View file

@ -20,7 +20,7 @@ class ModalCommentAcknowledgement extends React.PureComponent<Props> {
<Modal
isOpen
onAborted={onAbortedOrConfirmed}
title={__('Comment Acknowledgement')}
title={__('Comment acknowledgement')}
onConfirmed={onAbortedOrConfirmed}
>
<p>{__('A few things to know before making your comment:')}</p>
@ -30,9 +30,7 @@ class ModalCommentAcknowledgement extends React.PureComponent<Props> {
'Commenting is in alpha. During the alpha, all comments are sent to a LBRY, Inc. server, not the LBRY network itself.'
)}
</li>
<li>
{__('All comments are viewable by anyone, keep this in mind before writing a comment.')}
</li>
<li>{__('All comments are viewable by anyone, keep this in mind before writing a comment.')}</li>
<li>{__('When the alpha ends, we will attempt to transition comments, but do not promise to do so.')}</li>
</ul>
</Modal>

View file

@ -24,7 +24,7 @@ class ModalConfirmThumbnailUpload extends React.PureComponent<Props> {
return (
<Modal
isOpen
title={__('Upload Thumbnail')}
title={__('Upload thumbnail')}
contentLabel={__('Confirm Thumbnail Upload')}
type="confirm"
confirmButtonLabel={__('Upload')}

View file

@ -17,7 +17,7 @@ class ModalDownloading extends React.PureComponent<Props> {
const { downloadProgress, downloadComplete, downloadItem, startUpgrade, cancelUpgrade } = this.props;
return (
<Modal title={__('Downloading Update')} isOpen contentLabel={__('Downloading Update')} type="custom">
<Modal title={__('Downloading update')} isOpen contentLabel={__('Downloading update')} type="custom">
{downloadProgress ? `${downloadProgress}% ${__('complete')}` : null}
<Line percent={downloadProgress || 0} strokeWidth="4" />
{downloadComplete ? (

View file

@ -17,7 +17,7 @@ class ModalFileTimeout extends React.PureComponent<Props> {
} = this.props;
return (
<Modal isOpen title={__('Unable to Download')} contentLabel={__('Download failed')} onConfirmed={closeModal}>
<Modal isOpen title={__('Unable to download')} contentLabel={__('Download failed')} onConfirmed={closeModal}>
<p className="error-modal__error-list">
{__('LBRY was unable to download the stream')}:
<div>

View file

@ -13,9 +13,9 @@ class ModalFirstReward extends React.PureComponent<Props> {
const { closeModal } = this.props;
return (
<Modal type="card" isOpen contentLabel={__('Your First Reward')}>
<Modal type="card" isOpen contentLabel={__('Your first reward')}>
<Card
title={__('Your First Reward')}
title={__('Your first reward')}
subtitle={__('You just earned your first reward!')}
body={
<React.Fragment>

View file

@ -15,7 +15,7 @@ class ModalIncompatibleDaemon extends React.PureComponent<Props> {
return (
<Modal
isOpen
title={__('Incompatible Daemon')}
title={__('Incompatible daemon')}
contentLabel={__('Incompatible daemon running')}
type="confirm"
confirmButtonLabel={__('Close App and LBRY Processes')}

View file

@ -14,7 +14,7 @@ class ModalPasswordUnsave extends React.PureComponent<Props> {
<Modal
isOpen
contentLabel={__('Unsave Password')}
title={__('Clear Saved Password')}
title={__('Clear saved password')}
type="confirm"
confirmButtonLabel={__('Forget')}
abortButtonLabel={__('Nevermind')}

View file

@ -1,5 +1,5 @@
// @flow
import React, { Suspense } from 'react';
import React from 'react';
import { Modal } from 'modal/modal';
import Button from 'component/button';
import UserPhoneVerify from 'component/userPhoneVerify';
@ -16,16 +16,6 @@ type Props = {
};
class ModalPhoneCollection extends React.PureComponent<Props> {
getTitle() {
const { user, phone } = this.props;
if (!user.is_identity_verified && !phone) {
return __('Enter Your Phone Number');
}
return __('Enter The Verification Code');
}
renderInner() {
const { closeModal, phone, user } = this.props;
@ -42,7 +32,7 @@ class ModalPhoneCollection extends React.PureComponent<Props> {
}
render() {
const { user } = this.props;
const { user, closeModal } = this.props;
// this shouldn't happen
if (!user) {
@ -50,7 +40,7 @@ class ModalPhoneCollection extends React.PureComponent<Props> {
}
return (
<Modal type="custom" isOpen contentLabel="Phone" title={this.getTitle()}>
<Modal type="card" isOpen contentLabel="Phone" onAborted={closeModal}>
{this.renderInner()}
</Modal>
);

View file

@ -29,7 +29,7 @@ function ModalRemoveBlocked(props: Props) {
<Modal
isOpen
type="confirm"
title={__('Remove from Blocked List')}
title={__('Remove from blocked list')}
confirmButtonLabel={__('Remove')}
onConfirmed={handleConfirm}
onAborted={() => closeModal()}

View file

@ -39,8 +39,8 @@ class ModalRewardCode extends React.PureComponent<Props, State> {
return (
<Modal
isOpen
title={__('Enter Reward Code')}
contentLabel={__('Enter Reward Code')}
title={__('Enter reward code')}
contentLabel={__('Enter reward code')}
type="custom"
onAborted={closeModal}
>

View file

@ -61,9 +61,9 @@ class ModalSetReferrer extends React.PureComponent<Props, State> {
const { referrer } = this.state;
return (
<Modal isOpen contentLabel={__('Enter Inviter')} type="card" onAborted={closeModal}>
<Modal isOpen contentLabel={__('Enter inviter')} type="card" onAborted={closeModal}>
<Card
title={__('Enter Inviter')}
title={__('Enter inviter')}
subtitle={
<React.Fragment>
{__('Did someone invite you to use lbry.tv? Tell us who and you both get a reward!')}

View file

@ -16,7 +16,7 @@ function ModalRepost(props: Props) {
return (
<Modal isOpen type="card">
<Card
title={__('Sign Out')}
title={__('Sign out')}
subtitle={
<I18nMessage
tokens={{

View file

@ -12,7 +12,7 @@ export default function ModalSupportsLiquidate(props: Props) {
const { closeModal, uri } = props;
return (
<Modal isOpen contentLabel={'Unlock Tips'} type="card" confirmButtonLabel="done" onAborted={closeModal}>
<Modal isOpen contentLabel={'Unlock tips'} type="card" confirmButtonLabel="done" onAborted={closeModal}>
<SupportsLiquidate uri={uri} handleClose={closeModal} />
</Modal>
);

View file

@ -11,7 +11,7 @@ class ModalTransactionFailed extends React.PureComponent<Props> {
const { closeModal } = this.props;
return (
<Modal isOpen contentLabel={__('Transaction failed')} title={__('Transaction Failed')} onConfirmed={closeModal}>
<Modal isOpen contentLabel={__('Transaction failed')} title={__('Transaction failed')} onConfirmed={closeModal}>
<p>{__('Sorry about that. Contact help@lbry.com if you continue to have issues.')}</p>
</Modal>
);

View file

@ -17,7 +17,7 @@ class ModalUpgrade extends React.PureComponent<Props> {
<Modal
isOpen
contentLabel={__('Upgrade available')}
title={__('LBRY Leveled Up')}
title={__('LBRY leveled up')}
type="confirm"
confirmButtonLabel={__('Upgrade')}
abortButtonLabel={__('Skip')}

View file

@ -41,10 +41,10 @@ class ModalWalletDecrypt extends React.PureComponent<Props, State> {
return (
<Modal
isOpen
title={__('Decrypt Wallet')}
contentLabel={__('Decrypt Wallet')}
title={__('Decrypt wallet')}
contentLabel={__('Decrypt wallet')}
type="confirm"
confirmButtonLabel={__('Decrypt Wallet')}
confirmButtonLabel={__('Decrypt wallet')}
abortButtonLabel={__('Cancel')}
onConfirmed={() => this.submitDecryptForm()}
onAborted={closeModal}

View file

@ -106,8 +106,8 @@ class ModalWalletEncrypt extends React.PureComponent<Props, State> {
return (
<Modal
isOpen
title={__('Encrypt Wallet')}
contentLabel={__('Encrypt Wallet')}
title={__('Encrypt wallet')}
contentLabel={__('Encrypt wallet')}
type="custom"
onConfirmed={() => this.submitEncryptForm()}
onAborted={closeModal}
@ -156,7 +156,7 @@ class ModalWalletEncrypt extends React.PureComponent<Props, State> {
)}
</div>
<FormField
inputButton={<Submit label={failMessage ? __('Encrypting Wallet') : __('Encrypt Wallet')} />}
inputButton={<Submit label={failMessage ? __('Encrypting Wallet') : __('Encrypt wallet')} />}
error={
understandError === true
? __('You must enter "%acknowledgement_text%"', { acknowledgement_text: acknowledgementText })

View file

@ -60,8 +60,8 @@ class ModalWalletUnlock extends React.PureComponent<Props, State> {
return (
<Modal
isOpen
title={__('Unlock Wallet')}
contentLabel={__('Unlock Wallet')}
title={__('Unlock wallet')}
contentLabel={__('Unlock wallet')}
type="confirm"
shouldCloseOnOverlayClick={false}
confirmButtonLabel={__('Unlock')}

View file

@ -15,7 +15,7 @@ const YoutubeWelcome = (props: Props) => {
<Modal isOpen type="card" onAborted={doHideModal}>
<Confetti recycle={false} style={{ position: 'fixed' }} numberOfPieces={100} />
<Card
title={__("You're Free!")}
title={__("You're free!")}
subtitle={
<React.Fragment>
<p>

View file

@ -33,7 +33,7 @@ export default function ChannelsPage(props: Props) {
{channelUrls && Boolean(channelUrls.length) && (
<Card
title={__('Your Channels')}
title={__('Your channels')}
titleActions={
<>
<Button
@ -55,7 +55,7 @@ export default function ChannelsPage(props: Props) {
{!fetchingChannels ? (
<section className="main--empty">
<div className=" section--small">
<h2 className="section__title--large">{__('No Channels Created Yet')}</h2>
<h2 className="section__title--large">{__('No channels created yet')}</h2>
<div className="section__actions">
<Button button="primary" label={__('New Channel')} navigate={`/$/${PAGES.CHANNEL_NEW}`} />

View file

@ -94,7 +94,7 @@ function FileListDownloaded(props: Props) {
{IS_WEB && viewMode === VIEW_DOWNLOADS ? (
<div className="main--empty">
<Yrbl
title={__('Try Out the App!')}
title={__('Try out the app!')}
subtitle={
<>
<p className="section__subtitle">

View file

@ -180,7 +180,7 @@ class HelpPage extends React.PureComponent<Props, State> {
{/* @if TARGET='app' */}
<Card
title={__('View your Log')}
title={__('View your log')}
subtitle={
<I18nMessage
tokens={{

View file

@ -16,7 +16,7 @@ function ListBlocked(props: Props) {
{uris && uris.length ? (
<Card
isBodyList
title={__('Your Blocked Channels')}
title={__('Your blocked channels')}
body={<ClaimList uris={uris} showUnresolvedClaims showHiddenByUser />}
/>
) : (

View file

@ -75,7 +75,7 @@ export default function NotificationsPage(props: Props) {
) : (
<div className="main--empty">
<Yrbl
title={__('No Notifications')}
title={__('No notifications')}
subtitle={
<div>
<p>{__("You don't have any notifications yet, but they will be here when you do!")}</p>

View file

@ -50,7 +50,7 @@ class ReportPage extends React.Component {
<Page>
<div className="card-stack">
<Card
title={__('Report an Issue/Request a Feature')}
title={__('Report an issue or request a feature')}
subtitle={__(
'Please describe the problem you experienced or the feature you want to see and any information you think might be useful to us. Links to screenshots are great!'
)}

View file

@ -57,7 +57,7 @@ class RewardsPage extends PureComponent<Props> {
return (
<Card
className="section"
title={__('Reward Validation Pending')}
title={__('Reward validation pending')}
body={
<React.Fragment>
<p>
@ -135,7 +135,7 @@ class RewardsPage extends PureComponent<Props> {
} else if (!rewards || rewards.length <= 0) {
return (
<Card
title={__('No Rewards Available')}
title={__('No rewards available')}
subtitle={
claimed && claimed.length
? __(

View file

@ -200,7 +200,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
{isAuthenticated && <SettingAccountPassword />}
{/* @if TARGET='app' */}
<Card
title={__('Download Directory')}
title={__('Download directory')}
actions={
<React.Fragment>
<FileSelector
@ -226,7 +226,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
{/* @endif */}
<Card
title={__('Content Settings')}
title={__('Content settings')}
actions={
<React.Fragment>
<FormField
@ -360,7 +360,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
{/* @if TARGET='app' */}
<Card
title={__('Share Usage and Diagnostic Data')}
title={__('Share usage and diagnostic data')}
subtitle={
<React.Fragment>
{__(
@ -414,7 +414,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
/>
<Card
title={__('Blocked Channels')}
title={__('Blocked channels')}
subtitle={
userBlockedChannelsCount === 0
? __("You don't have blocked channels.")
@ -435,7 +435,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
/>
<Card
title={__('Advanced Settings')}
title={__('Advanced settings')}
actions={
<div className="section__actions">
<Button
@ -451,7 +451,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
)}
<Card
title={__('Application Cache')}
title={__('Application cache')}
subtitle={
<p className="section__subtitle">
{__(

View file

@ -210,7 +210,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
noFooter
noSideNavigation
backout={{
title: __('Advanced Settings'),
title: __('Advanced settings'),
backLabel: __('Done'),
}}
className="card-stack"
@ -223,7 +223,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
<div>
{/* @if TARGET='app' */}
<Card
title={__('Network and Data Settings')}
title={__('Neetwork and data settings')}
actions={
<React.Fragment>
<FormField
@ -255,7 +255,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
/>
<Card
title={__('Max Purchase Price')}
title={__('Max purchase price')}
actions={
<React.Fragment>
<FormField
@ -297,7 +297,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
{/* @endif */}
<Card
title={__('Purchase and Tip Confirmations')}
title={__('Purchase and tip confirmations')}
actions={
<React.Fragment>
<FormField
@ -339,7 +339,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
{(isAuthenticated || !IS_WEB) && (
<Card
title={__('Wallet Security')}
title={__('Wallet security')}
actions={
<React.Fragment>
{/* @if TARGET='app' */}
@ -401,7 +401,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
<Card
title={
<span>
{__('Automatic Transcoding')}
{__('Automatic transcoding')}
{findingFFmpeg && <Spinner type="small" />}
</span>
}
@ -462,7 +462,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
{/* @endif */}
{!IS_WEB && (
<Card
title={__('Experimental Settings')}
title={__('Experimental settings')}
actions={
<React.Fragment>
{/* @if TARGET='app' */}
@ -507,8 +507,8 @@ class SettingsPage extends React.PureComponent<Props, State> {
{/* @if TARGET='app' */}
{/* Auto launch in a hidden state doesn't work on mac https://github.com/Teamwork/node-auto-launch/issues/81 */}
{!IS_MAC && <Card title={__('Startup Preferences')} actions={<SettingAutoLaunch />} />}
<Card title={__('Closing Preferences')} actions={<SettingClosingBehavior />} />
{!IS_MAC && <Card title={__('Startup preferences')} actions={<SettingAutoLaunch />} />}
<Card title={__('Closing preferences')} actions={<SettingClosingBehavior />} />
{/* @endif */}
</div>
)}

View file

@ -94,11 +94,11 @@ export default function NotificationSettingsPage(props: Props) {
}
return (
<Page backout={{ title: __('Manage Notifications'), backLabel: __('Done') }} noFooter noSideNavigation>
<Page backout={{ title: __('Manage notifications'), backLabel: __('Done') }} noFooter noSideNavigation>
{error ? (
<Yrbl
type="sad"
title={__('Uh Oh')}
title={__('Uh oh')}
subtitle={
<>
<div>{__('There was an error displaying this page.')}</div>
@ -118,7 +118,7 @@ export default function NotificationSettingsPage(props: Props) {
<div className="card-stack">
{/* @if TARGET='app' */}
<Card
title={__('App Notifications')}
title={__('App notifications')}
subtitle={__('Notification settings for the desktop app.')}
actions={
<FormField
@ -136,7 +136,7 @@ export default function NotificationSettingsPage(props: Props) {
{enabledEmails && enabledEmails.length > 0 && (
<Card
title={enabledEmails.length === 1 ? __('Your Email') : __('Receiving Addresses')}
title={enabledEmails.length === 1 ? __('Your email') : __('Receiving addresses')}
subtitle={__('Uncheck your email below if you want to stop receiving messages.')}
actions={
<>
@ -157,7 +157,7 @@ export default function NotificationSettingsPage(props: Props) {
{tags && tags.length > 0 && (
<Card
title={__('Email Preferences')}
title={__('Email preferences')}
subtitle={__("Opt out of any topics you don't want to receive email about.")}
actions={
<>

View file

@ -6,7 +6,7 @@ import TagsSelect from 'component/tagsSelect';
function FollowingPage() {
return (
<Page>
<TagsSelect limitShow={300} showClose={false} title={__('Follow New Tags')} />
<TagsSelect limitShow={300} showClose={false} title={__('Follow new tags')} />
</Page>
);
}

View file

@ -108,6 +108,10 @@
}
}
.header__navigation-item--balance {
@extend .button--link;
}
.header__navigation-item--forward {
margin-right: 0;
}

View file

@ -214,6 +214,13 @@
}
}
.main--hoisted {
margin-top: calc(var(--spacing-s) * -1);
@media (min-width: $breakpoint-small) {
margin-top: calc(var(--spacing-l) * -1);
}
}
.main__sign-in,
.main__sign-up {
max-width: 27rem;