diff --git a/lang/default.json b/lang/default.json new file mode 100644 index 0000000000..738a50135a --- /dev/null +++ b/lang/default.json @@ -0,0 +1,461 @@ +{ + "+hfUcV": { + "defaultMessage": "sent a new broadcast on {circlename}", + "description": "src/components/Notice/CommentNotice/CircleNewBroadcastNotice.tsx" + }, + "/3G89K": { + "defaultMessage": "is growing", + "description": "src/components/Notice/ArticleNotice/CircleNewArticle.tsx" + }, + "/A/biR": { + "defaultMessage": "Terms and Privacy Policy", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "/asuIY": { + "defaultMessage": "Enter Community", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "/nu5ho": { + "defaultMessage": "replied to your comment on", + "description": "src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx" + }, + "2eebTb": { + "defaultMessage": "bookmarked your article", + "description": "src/components/Notice/ArticleNotice/ArticleNewSubscriberNotice.tsx" + }, + "3WKlPP": { + "defaultMessage": "commented in", + "description": "" + }, + "3uQKhx": { + "defaultMessage": "Please email", + "description": "src/views/Help/index.tsx" + }, + "4giHJT": { + "defaultMessage": "Have wallet questions on mobile device ? Click the", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "4vkwo0": { + "defaultMessage": "Your article has been republished to decentralized network", + "description": "src/components/Notice/ArticleNotice/RevisedArticlePublishedNotice.tsx" + }, + "5sAbzJ": { + "defaultMessage": "started a new topic", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "5sg7KC": { + "defaultMessage": "Password", + "description": "" + }, + "9+Ddtu": { + "defaultMessage": "Next", + "description": "" + }, + "A3LOng": { + "defaultMessage": "replied to topics", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "A41QIy": { + "defaultMessage": "Enter Password", + "description": "" + }, + "ANhCde": { + "defaultMessage": "Start creating now!", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "BHFHeY": { + "defaultMessage": "commented in {commentCircle}", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "BjzRe8": { + "defaultMessage": ". Take a look at your income", + "description": "src/components/Notice/TransactionNotice/PaymentReceivedDonationNotice.tsx" + }, + "BqXRy4": { + "defaultMessage": "Download App", + "description": "src/views/Help/index.tsx" + }, + "CwSpld": { + "defaultMessage": "Not for login", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "EfJYPI": { + "defaultMessage": "Verification Code", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "EwVnoC": { + "defaultMessage": "I have read and agree to", + "description": "" + }, + "FALWef": { + "defaultMessage": "commented in Broadcast", + "description": "src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx" + }, + "FaTb0A": { + "defaultMessage": "Install MetaMask", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "GBm/sD": { + "defaultMessage": "posted a new topic and mentioned you", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "GZ1iwf": { + "defaultMessage": "tutorial", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "H8KGyc": { + "defaultMessage": "Enter", + "description": "" + }, + "HxcjQl": { + "defaultMessage": "Matters continues to provide services that combine creativity with blockchain technology. You will be the first to experience them after completing connecting wallet.", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "IFY8r4": { + "defaultMessage": "Enter Password", + "description": "src/components/Forms/EmailLoginForm/index.tsx" + }, + "J+LXrH": { + "defaultMessage": "User registered by email can login and enable wallet login later", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, + "J3yk6u": { + "defaultMessage": "in circle", + "description": "" + }, + "JIjMWL": { + "defaultMessage": "Your article has been published to decentralized network", + "description": "src/components/Notice/ArticleNotice/ArticlePublishedNotice.tsx" + }, + "JMRVO6": { + "defaultMessage": "Matters Community", + "description": "src/views/Help/index.tsx" + }, + "Jc+W6M": { + "defaultMessage": "resigned as tag maintainer. Would you like to be the new tag maintainer?", + "description": "src/components/Notice/TagNotice/TagLeaveNotice.tsx" + }, + "JxlxVc": { + "defaultMessage": "Forget Password", + "description": "src/components/Forms/EmailLoginForm/Buttons.tsx" + }, + "KZlRde": { + "defaultMessage": "replied to", + "description": "src/components/Notice/ArticleArticleNotice/ArticleNewCollectedNotice.tsx" + }, + "KyWDUu": { + "defaultMessage": "invites you to join Circle for", + "description": "src/components/Notice/CircleNotice/CircleInvitationNotice.tsx" + }, + "LW1aX1": { + "defaultMessage": "Congrats!", + "description": "src/components/Notice/CircleNotice/CircleInvitationNotice.tsx" + }, + "LqxIEU": { + "defaultMessage": "Wallet address will be part of your digital identity and shown in your profile page.", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "N2IrpM": { + "defaultMessage": "Confirm", + "description": "" + }, + "N3K1H9": { + "defaultMessage": "Matters will never ask for your wallet mnemonic through any channel.", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "NzfL1d": { + "defaultMessage": "Enter password again", + "description": "src/components/Forms/EmailSignUpForm/Password.tsx" + }, + "O03Rkc": { + "defaultMessage": "resigned as tag collaborator. You can invite new collaborators to join", + "description": "src/components/Notice/TagNotice/TagLeaveEditorNotice.tsx" + }, + "PjT72J": { + "defaultMessage": "liked your article", + "description": "src/components/Notice/ArticleNotice/ArticleNewAppreciationNotice.tsx" + }, + "QV19cI": { + "defaultMessage": "Failed to republish article", + "description": "src/components/Notice/ArticleNotice/RevisedArticleNotPublishedNotice.tsx" + }, + "RKs1fz": { + "defaultMessage": "Open Source", + "description": "src/views/Help/index.tsx" + }, + "U/Tqmx": { + "defaultMessage": "commented on your bookmarked article", + "description": "src/components/Notice/CommentNotice/SubscribedArticleNewCommentNotice.tsx" + }, + "UOdEqi": { + "defaultMessage": "The original login via email will be kept for you. Please note that your wallet cannot be reset once it is connected because of your account security.", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "UgvfcU": { + "defaultMessage": "You have successfully completed Ethereum wallet settings. Please confirm wallet address:", + "description": "src/components/Notice/CryptoNotice/CryptoWalletConnectedNotice.tsx" + }, + "VO4Elt": { + "defaultMessage": "mentioned you in a comment on {commentArticle}", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "VjxGd7": { + "defaultMessage": "commented on", + "description": "src/components/Notice/CommentNotice/ArticleNewCommentNotice.tsx" + }, + "VrOoVf": { + "defaultMessage": "Matters will never ask your wallet key through any channel.", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "XH0Lb6": { + "defaultMessage": "Welcome to Matters!", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "XcTMMM": { + "defaultMessage": "Have an account?", + "description": "src/components/Forms/EmailSignUpForm/Buttons.tsx" + }, + "Xz/AHp": { + "defaultMessage": "broadcast and mentioned you", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "YIes/F": { + "defaultMessage": "etc. {actorsCount} users", + "description": "src/components/Notice/ArticleNotice/ArticleNewSubscriberNotice.tsx" + }, + "YjNkcK": { + "defaultMessage": "To change, switch it directly on your wallet", + "description": "" + }, + "YlxpJl": { + "defaultMessage": "Broadcast and mentioned you in comment", + "description": "src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx" + }, + "ZUPQzl": { + "defaultMessage": "comment", + "description": "src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx" + }, + "aaUBvF": { + "defaultMessage": "comment_circle", + "description": "src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx" + }, + "b+LSgI": { + "defaultMessage": "replied to your discussion on", + "description": "src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx" + }, + "bVZDVx": { + "defaultMessage": "withdrawal process has started. Please refer to your bank for payout status.", + "description": "src/components/Notice/TransactionNotice/PaymentPayoutNotice.tsx" + }, + "cfL5uk": { + "defaultMessage": "Over 200 words, current {numbers}", + "description": "src/components/UserProfile/DropdownActions/EditProfileDialog/Content.tsx" + }, + "cg1VJ2": { + "defaultMessage": "Connect Wallet", + "description": "" + }, + "deEeEI": { + "defaultMessage": "Register", + "description": "" + }, + "dnsfmR": { + "defaultMessage": "for bug reports or suggestions. We will reply to you as soon we can!", + "description": "src/views/Help/index.tsx" + }, + "dsBCfK": { + "defaultMessage": "uh-oh,", + "description": "src/components/Notice/TagNotice/TagLeaveEditorNotice.tsx" + }, + "euNJsE": { + "defaultMessage": "A new article has been added to the circle, read it now!", + "description": "src/components/Notice/ArticleNotice/CircleNewArticle.tsx" + }, + "fOgusL": { + "defaultMessage": "Choose a method to enter", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, + "ftD7Hy": { + "defaultMessage": "mentioned you", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "fw3tYQ": { + "defaultMessage": "Display Name", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "g/L3Fm": { + "defaultMessage": "posted and replied to topics", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "hWs95P": { + "defaultMessage": "Important information will be notified by email. So filling in your email address will be required.", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "hk2aiz": { + "defaultMessage": "followed your circle", + "description": "src/components/Notice/CircleNotice/CircleNewUserNotice.tsx" + }, + "hrfF+i": { + "defaultMessage": "Don't have a wallet yet? Check the", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "iCFXtS": { + "defaultMessage": "For unregistered or users enabled wallet login", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, + "ipQlDG": { + "defaultMessage": "Login with Email", + "description": "src/components/Forms/EmailSignUpForm/Buttons.tsx" + }, + "jF+Mle": { + "defaultMessage": "days for free. Try it and have fun!", + "description": "src/components/Notice/CircleNotice/CircleInvitationNotice.tsx" + }, + "jL2ZHb": { + "defaultMessage": "Code will expire after 20 minutes", + "description": "" + }, + "jgLiba": { + "defaultMessage": "Enter verification code", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "k5NnNF": { + "defaultMessage": "followed you", + "description": "src/components/Notice/UserNotice/UserNewFollowerNotice.tsx" + }, + "l5vWO8": { + "defaultMessage": "Your Matters display name, can be changed later", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "lD4FPZ": { + "defaultMessage": "Enter Email", + "description": "" + }, + "mPe6DK": { + "defaultMessage": "subscribed your circle", + "description": "src/components/Notice/CircleNotice/CircleNewUserNotice.tsx" + }, + "ml3SZN": { + "defaultMessage": "Minimum 8 characters. Uppercase/lowercase letters, numbers and symbols are allowed", + "description": "" + }, + "nYeDrI": { + "defaultMessage": "Not Registered?", + "description": "src/components/Forms/EmailLoginForm/Buttons.tsx" + }, + "nmZI+U": { + "defaultMessage": "Terms and Privacy Policy", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "nmmItN": { + "defaultMessage": "About Us", + "description": "src/views/Help/index.tsx" + }, + "nsaJRn": { + "defaultMessage": "Logged in successfully", + "description": "" + }, + "ntjlWR": { + "defaultMessage": "comment" + }, + "q7jZPx": { + "defaultMessage": "Term of Services", + "description": "src/views/Help/index.tsx" + }, + "qPPrzm": { + "defaultMessage": "supported your article", + "description": "src/components/Notice/TransactionNotice/PaymentReceivedDonationNotice.tsx" + }, + "qQmSxu": { + "defaultMessage": "Airdrop registration completed. Your NFT will be revealed on November 12. Confirm your ETH wallet address:", + "description": "src/components/Notice/CryptoNotice/CryptoWalletAirdropNotice.tsx" + }, + "qXcvBF": { + "defaultMessage": "Explore Matters", + "description": "src/views/Help/index.tsx" + }, + "qYzBk8": { + "defaultMessage": "unsubscribed your circle", + "description": "src/components/Notice/CircleNotice/CircleNewUserNotice.tsx" + }, + "qswU4E": { + "defaultMessage": "Email will not be used as a login but only as a contact channel.", + "description": "" + }, + "rXbLl7": { + "defaultMessage": "Migrate to Matters", + "description": "src/views/Help/index.tsx" + }, + "reOeq5": { + "defaultMessage": "You have created your personal creative space. Publish your first work!", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "skbUBl": { + "defaultMessage": "Log in", + "description": "src/components/Buttons/Login/index.tsx" + }, + "sncOwi": { + "defaultMessage": "mentioned you in an article", + "description": "src/components/Notice/ArticleNotice/ArticleMentionedYouNotice.tsx" + }, + "stjoBH": { + "defaultMessage": "Now, go like the authors you support! Your Likes will become their income", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "sy+pv5": { + "defaultMessage": "Email", + "description": "" + }, + "t7ah39": { + "defaultMessage": "just became the maintainer of a tag your article is in. Check out more articles under this tag", + "description": "src/components/Notice/TagNotice/TagAdoptionNotice.tsx" + }, + "t8/r8X": { + "defaultMessage": "Continue with Wallet", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, + "tQsujN": { + "defaultMessage": "replied to topics and mentioned you", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "uqmi/b": { + "defaultMessage": "pinned your comment on", + "description": "src/components/Notice/CommentNotice/CommentPinnedNotice.tsx" + }, + "uuEGON": { + "defaultMessage": "posted and replied to topics and mentioned you", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "v6YjIn": { + "defaultMessage": "Account", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "wSEOxH": { + "defaultMessage": "Contact Channel", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "wqaNK4": { + "defaultMessage": "in your circle", + "description": "" + }, + "xGh9O7": { + "defaultMessage": "As a reminder, the email address will not be used as a login but only as a contact channel.", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "xiKjd/": { + "defaultMessage": "Continue with Email", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, + "xwj01D": { + "defaultMessage": "invites you to become a collaborator", + "description": "src/components/Notice/TagNotice/TagAddEditorNotice.tsx" + }, + "yZfKI4": { + "defaultMessage": "discussion and mentioned you", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "z4NaU2": { + "defaultMessage": "Your", + "description": "src/components/Notice/TransactionNotice/PaymentPayoutNotice.tsx" + } +} diff --git a/lang/en.json b/lang/en.json index 0e81f70aa6..0749f343a9 100644 --- a/lang/en.json +++ b/lang/en.json @@ -3,6 +3,10 @@ "defaultMessage": "Please email", "description": "src/views/Help/index.tsx" }, + "k5NnNF": { + "defaultMessage": " followed you", + "description": "src/components/Notice/UserNotice/UserNewFollowerNotice.tsx" + }, "BqXRy4": { "defaultMessage": "Download App", "description": "src/views/Help/index.tsx" @@ -11,6 +15,10 @@ "defaultMessage": "Install MetaMask", "description": "src/components/Forms/WalletAuthForm/Select.tsx" }, + "J+LXrH": { + "defaultMessage": "User registered by email can login and enable wallet login later", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, "JMRVO6": { "defaultMessage": "Matters Community", "description": "src/views/Help/index.tsx" @@ -27,6 +35,14 @@ "defaultMessage": "for bug reports or suggestions. We will reply to you as soon we can!", "description": "src/views/Help/index.tsx" }, + "fOgusL": { + "defaultMessage": "Choose a method to enter", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, + "iCFXtS": { + "defaultMessage": "For unregistered or users enabled wallet login", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, "nmmItN": { "defaultMessage": "About Us", "description": "src/views/Help/index.tsx" @@ -42,5 +58,436 @@ "rXbLl7": { "defaultMessage": "Migrate to Matters", "description": "src/views/Help/index.tsx" + }, + "skbUBl": { + "defaultMessage": "Log in", + "description": "src/components/Buttons/Login/index.tsx" + }, + "t8/r8X": { + "defaultMessage": "Continue with Wallet", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, + "xiKjd/": { + "defaultMessage": "Continue with Email", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, + "z+209N": { + "defaultMessage": "Register", + "description": "" + }, + "XcTMMM": { + "defaultMessage": "Have an account?", + "description": "src/components/Forms/EmailSignUpForm/Buttons.tsx" + }, + "ipQlDG": { + "defaultMessage": "Login with Email", + "description": "src/components/Forms/EmailSignUpForm/Buttons.tsx" + }, + "fw3tYQ": { + "defaultMessage": "Display Name", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "nmZI+U": { + "defaultMessage": "Terms and Privacy Policy", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "agfumL": { + "defaultMessage": "Next", + "description": "" + }, + "l5vWO8": { + "defaultMessage": "Your Matters display name, can be changed later", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "5sg7KC": { + "defaultMessage": "Password", + "description": "" + }, + "ml3SZN": { + "defaultMessage": "Minimum 8 characters. Uppercase/lowercase letters, numbers and symbols are allowed", + "description": "" + }, + "NzfL1d": { + "defaultMessage": "Enter password again", + "description": "src/components/Forms/EmailSignUpForm/Password.tsx" + }, + "JsK5CJ": { + "defaultMessage": "Confirm", + "description": "" + }, + "XH0Lb6": { + "defaultMessage": "Welcome to Matters!", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "stjoBH": { + "defaultMessage": "Now, go like the authors you support! Your Likes will become their income", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "reOeq5": { + "defaultMessage": "You have created your personal creative space. Publish your first work!", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "ANhCde": { + "defaultMessage": "Start creating now!", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "/asuIY": { + "defaultMessage": "Enter Community", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "nsaJRn": { + "defaultMessage": "Logged in successfully", + "description": "" + }, + "lD4FPZ": { + "defaultMessage": "Enter Email", + "description": "" + }, + "IFY8r4": { + "defaultMessage": "Enter Password", + "description": "src/components/Forms/EmailLoginForm/index.tsx" + }, + "nYeDrI": { + "defaultMessage": "Not Registered?", + "description": "src/components/Forms/EmailLoginForm/Buttons.tsx" + }, + "xGh9O7": { + "defaultMessage": "As a reminder, the email address will not be used as a login but only as a contact channel.", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "N3K1H9": { + "defaultMessage": "Matters will never ask for your wallet mnemonic through any channel.", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "hWs95P": { + "defaultMessage": "Important information will be notified by email. So filling in your email address will be required.", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "cg1VJ2": { + "defaultMessage": "Connect Wallet", + "description": "" + }, + "YjNkcK": { + "defaultMessage": "To change, switch it directly on your wallet", + "description": "" + }, + "wSEOxH": { + "defaultMessage": "Contact Channel", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "CwSpld": { + "defaultMessage": "Not for login", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "qswU4E": { + "defaultMessage": "Email will not be used as a login but only as a contact channel.", + "description": "" + }, + "EfJYPI": { + "defaultMessage": "Verification Code", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "0Rw3H/": { + "defaultMessage": "I have read and agree to", + "description": "" + }, + "/A/biR": { + "defaultMessage": "Terms and Privacy Policy", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "jgLiba": { + "defaultMessage": "Enter verification code", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "jL2ZHb": { + "defaultMessage": "Code will expire after 20 minutes", + "description": "" + }, + "4giHJT": { + "defaultMessage": "Have wallet questions on mobile device ? Click the ", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "GZ1iwf": { + "defaultMessage": "tutorial", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "hrfF+i": { + "defaultMessage": "Don't have a wallet yet? Check the ", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "HxcjQl": { + "defaultMessage": "Matters continues to provide services that combine creativity with blockchain technology. You will be the first to experience them after completing connecting wallet.", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "LqxIEU": { + "defaultMessage": "Wallet address will be part of your digital identity and shown in your profile page.", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "UOdEqi": { + "defaultMessage": "The original login via email will be kept for you. Please note that your wallet cannot be reset once it is connected because of your account security.", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "VrOoVf": { + "defaultMessage": "Matters will never ask your wallet key through any channel.", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "v6YjIn": { + "defaultMessage": "Account", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "H8KGyc": { + "defaultMessage": "Enter", + "description": "" + }, + "sy+pv5": { + "defaultMessage": "Email", + "description": "" + }, + "JxlxVc": { + "defaultMessage": "Forget Password", + "description": "src/components/Forms/EmailLoginForm/Buttons.tsx" + }, + "deEeEI": { + "defaultMessage": "Register", + "description": "" + }, + "N2IrpM": { + "defaultMessage": "Confirm", + "description": "" + }, + "EwVnoC": { + "defaultMessage": "I have read and agree to", + "description": "" + }, + "9+Ddtu": { + "defaultMessage": "Next", + "description": ""}, + "KZlRde": { + "defaultMessage": " replied to ", + "description": "src/components/Notice/ArticleArticleNotice/ArticleNewCollectedNotice.tsx" + }, + "/nu5ho": { + "defaultMessage": "replied to your comment on ", + "description": "src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx" + }, + "ZUPQzl": { + "defaultMessage": "", + "description": "src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx" + }, + "b+LSgI": { + "defaultMessage": " replied to your discussion on ", + "description": "src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx" + }, + "aaUBvF": { + "defaultMessage": "", + "description": "src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx" + }, + "DIQKiC": { + "defaultMessage": " mentioned you in a comment on ", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "jqACL/": { + "defaultMessage": "", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "+8Q3Y4": { + "defaultMessage": " commented in ", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "+AdTsY": { + "defaultMessage": " discussion and mentioned you", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "ISn3eZ": { + "defaultMessage": " broadcast and mentioned you", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "uqmi/b": { + "defaultMessage": " pinned your comment on ", + "description": "src/components/Notice/CommentNotice/CommentPinnedNotice.tsx" + }, + "VjxGd7": { + "defaultMessage": " commented on ", + "description": "src/components/Notice/CommentNotice/ArticleNewCommentNotice.tsx" + }, + "U/Tqmx": { + "defaultMessage": " commented on your bookmarked article ", + "description": "src/components/Notice/CommentNotice/SubscribedArticleNewCommentNotice.tsx" + }, + "VoOZni": { + "defaultMessage": " sent a new broadcast on ", + "description": "src/components/Notice/CommentNotice/CircleNewBroadcastNotice.tsx" + }, + "oaDToH": { + "defaultMessage": "", + "description": "src/components/Notice/CommentNotice/CircleNewBroadcastNotice.tsx" + }, + "qPPrzm": { + "defaultMessage": " supported your article ", + "description": "src/components/Notice/TransactionNotice/PaymentReceivedDonationNotice.tsx" + }, + "BjzRe8": { + "defaultMessage": ". Take a look at your income", + "description": "src/components/Notice/TransactionNotice/PaymentReceivedDonationNotice.tsx" + }, + "z4NaU2": { + "defaultMessage": "Your", + "description": "src/components/Notice/TransactionNotice/PaymentPayoutNotice.tsx" + }, + "bVZDVx": { + "defaultMessage": " withdrawal process has started. Please refer to your bank for payout status.", + "description": "src/components/Notice/TransactionNotice/PaymentPayoutNotice.tsx" + }, + "nto8ly": { + "defaultMessage": " subscribed your circle", + "description": "src/components/Notice/CircleNotice/CircleNewUserNotice.tsx" + }, + "qYzBk8": { + "defaultMessage": " unsubscribed your circle", + "description": "src/components/Notice/CircleNotice/CircleNewUserNotice.tsx" + }, + "LW1aX1": { + "defaultMessage": "Congrats!", + "description": "src/components/Notice/CircleNotice/CircleInvitationNotice.tsx" + }, + "KyWDUu": { + "defaultMessage": " invites you to join Circle for ", + "description": "src/components/Notice/CircleNotice/CircleInvitationNotice.tsx" + }, + "jF+Mle": { + "defaultMessage": " days for free. Try it and have fun!", + "description": "src/components/Notice/CircleNotice/CircleInvitationNotice.tsx" + }, + "J3yk6u": { + "defaultMessage": "in circle", + "description": "" + }, + "FALWef": { + "defaultMessage": " commented in Broadcast", + "description": "src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx" + }, + "YlxpJl": { + "defaultMessage": " Broadcast and mentioned you ", + "description": "src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx" + }, + "qQmSxu": { + "defaultMessage": "Airdrop registration completed. Your NFT will be revealed on November 12. Confirm your ETH wallet address:", + "description": "src/components/Notice/CryptoNotice/CryptoWalletAirdropNotice.tsx" + }, + "UgvfcU": { + "defaultMessage": "You have successfully completed Ethereum wallet settings. Please confirm wallet address:", + "description": "src/components/Notice/CryptoNotice/CryptoWalletConnectedNotice.tsx" + }, + "+hfUcV": { + "defaultMessage": "sent a new broadcast on {circlename}", + "description": "src/components/Notice/CommentNotice/CircleNewBroadcastNotice.tsx" + }, + "An0rpe": { + "defaultMessage": "{circlename} Broadcast", + "description": "src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx" + }, + "VO4Elt": { + "defaultMessage": " mentioned you in a comment on {commentArticle}", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "BHFHeY": { + "defaultMessage": " commented in {commentCircle}", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "5sAbzJ": { + "defaultMessage": " started a new topic ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "A3LOng": { + "defaultMessage": " replied to topics ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "ftD7Hy": { + "defaultMessage": " mentioned you ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "g/L3Fm": { + "defaultMessage": " posted and replied to topics ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "GBm/sD": { + "defaultMessage": " posted a new topic and mentioned you ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "tQsujN": { + "defaultMessage": " replied to topics and mentioned you ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "uuEGON": { + "defaultMessage": " posted and replied to topics and mentioned you ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "hk2aiz": { + "defaultMessage": " followed your circle", + "description": "src/components/Notice/CircleNotice/CircleNewUserNotice.tsx" + }, + "mPe6DK": { + "defaultMessage": " subscribed your circle", + "description": "src/components/Notice/CircleNotice/CircleNewUserNotice.tsx" + }, + "JIjMWL": { + "defaultMessage": "Your article has been published to decentralized network", + "description": "src/components/Notice/ArticleNotice/ArticlePublishedNotice.tsx" + }, + "sncOwi": { + "defaultMessage": " mentioned you in an article", + "description": "src/components/Notice/ArticleNotice/ArticleMentionedYouNotice.tsx" + }, + "2eebTb": { + "defaultMessage": " bookmarked your article", + "description": "src/components/Notice/ArticleNotice/ArticleNewSubscriberNotice.tsx" + }, + "YIes/F": { + "defaultMessage": "etc. {actorsCount} users", + "description": "src/components/Notice/ArticleNotice/ArticleNewSubscriberNotice.tsx" + }, + "PjT72J": { + "defaultMessage": " liked your article", + "description": "src/components/Notice/ArticleNotice/ArticleNewAppreciationNotice.tsx" + }, + "4vkwo0": { + "defaultMessage": "Your article has been republished to decentralized network", + "description": "src/components/Notice/ArticleNotice/RevisedArticlePublishedNotice.tsx" + }, + "QV19cI": { + "defaultMessage": "Failed to republish article", + "description": "src/components/Notice/ArticleNotice/RevisedArticleNotPublishedNotice.tsx" + }, + "euNJsE": { + "defaultMessage": "A new article has been added to the circle, read it now!", + "description": "src/components/Notice/ArticleNotice/CircleNewArticle.tsx" + }, + "/3G89K": { + "defaultMessage": " is growing", + "description": "src/components/Notice/ArticleNotice/CircleNewArticle.tsx" + }, + "wqaNK4": { + "defaultMessage": " in your circle ", + "description": "src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx" + }, + "xwj01D": { + "defaultMessage": " invites you to become a collaborator", + "description": "src/components/Notice/TagNotice/TagAddEditorNotice.tsx" + }, + "t7ah39": { + "defaultMessage": " just became the maintainer of a tag your article is in. Check out more articles under this tag", + "description": "src/components/Notice/TagNotice/TagAdoptionNotice.tsx" + }, + "O03Rkc": { + "defaultMessage": " resigned as tag collaborator. You can invite new collaborators to join", + "description": "src/components/Notice/TagNotice/TagLeaveEditorNotice.tsx" + }, + "dsBCfK": { + "defaultMessage": "uh-oh,", + "description": "src/components/Notice/TagNotice/TagLeaveEditorNotice.tsx" + }, + "Jc+W6M": { + "defaultMessage": " resigned as tag maintainer. Would you like to be the new tag maintainer?", + "description": "src/components/Notice/TagNotice/TagLeaveNotice.tsx" } } diff --git a/lang/zh-Hans.json b/lang/zh-Hans.json index d05efc5d03..3c56def559 100644 --- a/lang/zh-Hans.json +++ b/lang/zh-Hans.json @@ -42,5 +42,452 @@ "rXbLl7": { "defaultMessage": "一键搬家", "description": "src/views/Help/index.tsx" + }, + "fOgusL": { + "defaultMessage": "选择进入方式", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, + "t8/r8X": { + "defaultMessage": "连接加密钱包", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, + "iCFXtS": { + "defaultMessage": "欢迎未注册或已启用钱包登入的朋友使用", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, + "xiKjd/": { + "defaultMessage": "使用电子邮箱", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, + "J+LXrH": { + "defaultMessage": "持续支持邮箱進入,未來可随时启用钱包登入", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, + "XcTMMM": { + "defaultMessage": "已有帐户?", + "description": "src/components/Forms/EmailSignUpForm/Buttons.tsx" + }, + "ipQlDG": { + "defaultMessage": "以邮箱登入", + "description": "src/components/Forms/EmailSignUpForm/Buttons.tsx" + }, + "fw3tYQ": { + "defaultMessage": "姓名", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "4mbdyI": { + "defaultMessage": "邮箱", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "0Rw3H/": { + "defaultMessage": "我已阅读并同意", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "nmZI+U": { + "defaultMessage": "Matters 用户协议和隐私政策", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "agfumL": { + "defaultMessage": "下一步", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "l5vWO8": { + "defaultMessage": "你的站内暱称,之后可以修改", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "5sg7KC": { + "defaultMessage": "密码", + "description": "" + }, + "ml3SZN": { + "defaultMessage": "至少 8 个字符,支持英文大小写字母、数字和特殊符号", + "description": "" + }, + "NzfL1d": { + "defaultMessage": "再次输入密码", + "description": "src/components/Forms/EmailSignUpForm/Password.tsx" + }, + "JsK5CJ": { + "defaultMessage": "确认", + "description": "" + }, + "XH0Lb6": { + "defaultMessage": "欢迎加入 Matters!", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "stjoBH": { + "defaultMessage": "现在,去为你喜欢的作者打赏吧!你的每一次打赏都将为作者带来收入。", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "reOeq5": { + "defaultMessage": "你已拥有个人创作空间站,期待你的第一篇作品。", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "ANhCde": { + "defaultMessage": "马上开始你的创作吧!", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "/asuIY": { + "defaultMessage": "进入社区", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "nsaJRn": { + "defaultMessage": "上站成功", + "description": "" + }, + "lD4FPZ": { + "defaultMessage": "请输入邮箱", + "description": "" + }, + "IFY8r4": { + "defaultMessage": "请输入密码", + "description": "src/components/Forms/EmailLoginForm/index.tsx" + }, + "z+209N": { + "defaultMessage": "注册", + "description": "" + }, + "nYeDrI": { + "defaultMessage": "沒有帐户?", + "description": "src/components/Forms/EmailLoginForm/Buttons.tsx" + }, + "xGh9O7": { + "defaultMessage": "提醒:信箱将不作为登入使用,仅作为联系渠道", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "N3K1H9": { + "defaultMessage": "Matters 不会透过任何渠道询问你的钱包私钥。", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "hWs95P": { + "defaultMessage": "重要讯息将透过邮件通知,请填入信箱完成设定。", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "cg1VJ2": { + "defaultMessage": "连接加密钱包", + "description": "" + }, + "YjNkcK": { + "defaultMessage": "若要变更地址,请直接操作钱包切換", + "description": "" + }, + "wSEOxH": { + "defaultMessage": "联系渠道", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "CwSpld": { + "defaultMessage": "非登入用途", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "qswU4E": { + "defaultMessage": "邮箱将不作为登入使用,仅作为联系渠道", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "EfJYPI": { + "defaultMessage": "验证码", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "0Rw3H/": { + "defaultMessage": "我已阅读并同意", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "/A/biR": { + "defaultMessage": "Matters 用户协议和隐私政策", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "jgLiba": { + "defaultMessage": "请输入验证码", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "jL2ZHb": { + "defaultMessage": "验证码有效期 20 分钟", + "description": "" + }, + "4giHJT": { + "defaultMessage": "在行动装置上使用问题,参考 ", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "GZ1iwf": { + "defaultMessage": "教学指南", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "hrfF+i": { + "defaultMessage": "刚接触加密钱包?参考 ", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "HxcjQl": { + "defaultMessage": "Matters 将提供更多创作与区块链结合的服务,接入钱包后即可在未来第一时间体验新功能。", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "LqxIEU": { + "defaultMessage": "钱包地址将作为身份识别之一在个人页公开显示。", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "UOdEqi": { + "defaultMessage": "原有透过电子信箱登入方式将为你保留。为维护你的帐户安全,加密钱包连接后无法重设。", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "VrOoVf": { + "defaultMessage": "Matters 不会透过任何渠道主动询问你的钱包私钥。", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "v6YjIn": { + "defaultMessage": "账户", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "H8KGyc": { + "defaultMessage": "进入", + "description": "" + }, + "sy+pv5": { + "defaultMessage": "邮箱", + "description": "" + }, + "JxlxVc": { + "defaultMessage": "忘记密码?", + "description": "src/components/Forms/EmailLoginForm/Buttons.tsx" + }, + "deEeEI": { + "defaultMessage": "注册", + "description": "" + }, + "N2IrpM": { + "defaultMessage": "确认", + "description": "" + }, + "EwVnoC": { + "defaultMessage": "我已阅读并同意", + "description": "" + }, + "9+Ddtu": { + "defaultMessage": "下一步", + "description": ""}, + "k5NnNF": { + "defaultMessage": "追踪了你", + "description": "src/components/Notice/UserNotice/UserNewFollowerNotice.tsx" + }, + "KZlRde": { + "defaultMessage": " 关联了你的作品 ", + "description": "src/components/Notice/ArticleArticleNotice/ArticleNewCollectedNotice.tsx" + }, + "/nu5ho": { + "defaultMessage": "回复了你在作品 ", + "description": "src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx" + }, + "ZUPQzl": { + "defaultMessage": " 的评论", + "description": "src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx" + }, + "b+LSgI": { + "defaultMessage": "回复了你在围炉 ", + "description": "src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx" + }, + "aaUBvF": { + "defaultMessage": " 中的发言", + "description": "src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx" + }, + "DIQKiC": { + "defaultMessage": " 在作品 ", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "jqACL/": { + "defaultMessage": " 的评论中提及你", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "+AdTsY": { + "defaultMessage": " 众聊提及你", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "ISn3eZ": { + "defaultMessage": " 广播提及你", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "uqmi/b": { + "defaultMessage": " 置顶了你在作品 ", + "description": "src/components/Notice/CommentNotice/CommentPinnedNotice.tsx" + }, + "VjxGd7": { + "defaultMessage": "评论了作品 ", + "description": "src/components/Notice/CommentNotice/ArticleNewCommentNotice.tsx" + }, + "U/Tqmx": { + "defaultMessage": "评论了你收藏的作品 ", + "description": "src/components/Notice/CommentNotice/SubscribedArticleNewCommentNotice.tsx" + }, + "VoOZni": { + "defaultMessage": "在围炉 ", + "description": "src/components/Notice/CommentNotice/CircleNewBroadcastNotice.tsx" + }, + "oaDToH": { + "defaultMessage": " 发布了新广播", + "description": "src/components/Notice/CommentNotice/CircleNewBroadcastNotice.tsx" + }, + "qPPrzm": { + "defaultMessage": " 支持了你的作品 ", + "description": "src/components/Notice/TransactionNotice/PaymentReceivedDonationNotice.tsx" + }, + "BjzRe8": { + "defaultMessage": ",快去查看自己的收入吧!", + "description": "src/components/Notice/TransactionNotice/PaymentReceivedDonationNotice.tsx" + }, + "z4NaU2": { + "defaultMessage": "你的 ", + "description": "src/components/Notice/TransactionNotice/PaymentPayoutNotice.tsx" + }, + "bVZDVx": { + "defaultMessage": " 提现流程已开始,到帐时间请关注银行提醒。", + "description": "src/components/Notice/TransactionNotice/PaymentPayoutNotice.tsx" + }, + "nto8ly": { + "defaultMessage": "订阅了你的围炉", + "description": "src/components/Notice/CircleNotice/CircleNewUserNotice.tsx" + }, + "qYzBk8": { + "defaultMessage": "退订了你的围炉", + "description": "src/components/Notice/CircleNotice/CircleNewUserNotice.tsx" + }, + "LW1aX1": { + "defaultMessage": "恭喜你!", + "description": "src/components/Notice/CircleNotice/CircleInvitationNotice.tsx" + }, + "KyWDUu": { + "defaultMessage": " 邀请你免费加入围炉 ", + "description": "src/components/Notice/CircleNotice/CircleInvitationNotice.tsx" + }, + "jF+Mle": { + "defaultMessage": " 天,前去免费体验,与大家谈天说地吧。", + "description": "src/components/Notice/CircleNotice/CircleInvitationNotice.tsx" + }, + "wqaNK4": { + "defaultMessage": "在你的围炉 ", + "description": "" + }, + "FALWef": { + "defaultMessage": " 广播中留言 ", + "description": "src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx" + }, + "YlxpJl": { + "defaultMessage": " 广播中留言,其中有提及你 ", + "description": "src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx" + }, + "qQmSxu": { + "defaultMessage": "你已成功登记参加空投且完成以太坊钱包设定,空投活动将在 2021/11/12 进行。你设定的空投地址:", + "description": "src/components/Notice/CryptoNotice/CryptoWalletAirdropNotice.tsx" + }, + "UgvfcU": { + "defaultMessage": "你已完成以太坊钱包设定。你设定的地址:", + "description": "src/components/Notice/CryptoNotice/CryptoWalletConnectedNotice.tsx" + }, + "+hfUcV": { + "defaultMessage": "在围炉 {circlename} 发布了新广播", + "description": "src/components/Notice/CommentNotice/CircleNewBroadcastNotice.tsx" + }, + "An0rpe": { + "defaultMessage": "{circlename} 广播中留言 ", + "description": "src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx" + }, + "VO4Elt": { + "defaultMessage": " 在作品 {commentArticle} 的评论中提及你", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "BHFHeY": { + "defaultMessage": " 在围炉 {commentCircle}", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "5sAbzJ": { + "defaultMessage": " 众聊中发表话题 ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "A3LOng": { + "defaultMessage": " 众聊中回复话题 ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "ftD7Hy": { + "defaultMessage": " 众聊提及了你 ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "g/L3Fm": { + "defaultMessage": " 众聊中发表与回复话题 ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "GBm/sD": { + "defaultMessage": " 众聊中发表话题,其中有提及你 ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "tQsujN": { + "defaultMessage": " 众聊中回复话题,其中有提及你 ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "uuEGON": { + "defaultMessage": " 众聊中发表与回复话题,其中有提及你 ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "J3yk6u": { + "defaultMessage": "在围炉 ", + "description": "" + }, + "hk2aiz": { + "defaultMessage": " 追踪了你的围炉", + "description": "src/components/Notice/CircleNotice/CircleNewUserNotice.tsx" + }, + "mPe6DK": { + "defaultMessage": " 订阅了你的围炉", + "description": "src/components/Notice/CircleNotice/CircleNewUserNotice.tsx" + }, + "JIjMWL": { + "defaultMessage": "你的作品已发布到分布式网络", + "description": "src/components/Notice/ArticleNotice/ArticlePublishedNotice.tsx" + }, + "sncOwi": { + "defaultMessage": " 在作品中提及你", + "description": "src/components/Notice/ArticleNotice/ArticleMentionedYouNotice.tsx" + }, + "2eebTb": { + "defaultMessage": " 收藏了你的作品", + "description": "src/components/Notice/ArticleNotice/ArticleNewSubscriberNotice.tsx" + }, + "YIes/F": { + "defaultMessage": "等 {actorsCount} 人", + "description": "src/components/Notice/ArticleNotice/ArticleNewSubscriberNotice.tsx" + }, + "PjT72J": { + "defaultMessage": "喜欢并赞赏了你的作品", + "description": "src/components/Notice/ArticleNotice/ArticleNewAppreciationNotice.tsx" + }, + "4vkwo0": { + "defaultMessage": "你的修订作品已发布到分布式网络", + "description": "src/components/Notice/ArticleNotice/RevisedArticlePublishedNotice.tsx" + }, + "QV19cI": { + "defaultMessage": "你的修订作品发布失败", + "description": "src/components/Notice/ArticleNotice/RevisedArticleNotPublishedNotice.tsx" + }, + "euNJsE": { + "defaultMessage": "新作品已经加入围炉,马上前往阅读吧!", + "description": "src/components/Notice/ArticleNotice/CircleNewArticle.tsx" + }, + "/3G89K": { + "defaultMessage": " 又成长了", + "description": "src/components/Notice/ArticleNotice/CircleNewArticle.tsx" + }, + "xwj01D": { + "defaultMessage": " 邀请你成为标签的协作者", + "description": "src/components/Notice/TagNotice/TagAddEditorNotice.tsx" + }, + "t7ah39": { + "defaultMessage": " 成为了标签的主理人,你的作品也在其中。快来看看其他作者的精彩创作吧", + "description": "src/components/Notice/TagNotice/TagAdoptionNotice.tsx" + }, + "O03Rkc": { + "defaultMessage": " 辞去了权限。你可以邀请新的协作者加入了", + "description": "src/components/Notice/TagNotice/TagLeaveEditorNotice.tsx" + }, + "dsBCfK": { + "defaultMessage": "哎呀,标签协作者", + "description": "src/components/Notice/TagNotice/TagLeaveEditorNotice.tsx" + }, + "Jc+W6M": { + "defaultMessage": " 辞去了标签主理人权限,你要不要试试看成为新的主理人?", + "description": "src/components/Notice/TagNotice/TagLeaveNotice.tsx" } } diff --git a/lang/zh-Hant.json b/lang/zh-Hant.json index ed8cf41ad2..2b710a5c6e 100644 --- a/lang/zh-Hant.json +++ b/lang/zh-Hant.json @@ -42,5 +42,453 @@ "rXbLl7": { "defaultMessage": "一鍵搬家", "description": "src/views/Help/index.tsx" - } + }, + "fOgusL": { + "defaultMessage": "選擇進入方式", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, + "t8/r8X": { + "defaultMessage": "連接加密錢包", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, + "iCFXtS": { + "defaultMessage": "歡迎未註冊或已啟用錢包登入的朋友使用", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, + "xiKjd/": { + "defaultMessage": "使用電子信箱", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, + "J+LXrH": { + "defaultMessage": "持續提供信箱進入,未來可隨時啟用錢包登入", + "description": "src/components/Forms/SelectAuthMethodForm/index.tsx" + }, + "XcTMMM": { + "defaultMessage": "已有帳戶?", + "description": "src/components/Forms/EmailSignUpForm/Buttons.tsx" + }, + "ipQlDG": { + "defaultMessage": "以郵箱登入", + "description": "src/components/Forms/EmailSignUpForm/Buttons.tsx" + }, + "fw3tYQ": { + "defaultMessage": "姓名", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "4mbdyI": { + "defaultMessage": "電子信箱", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "0Rw3H/": { + "defaultMessage": "我已閱讀並同意", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "nmZI+U": { + "defaultMessage": "Matters 用戶協議和隱私政策", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "agfumL": { + "defaultMessage": "下一步", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "l5vWO8": { + "defaultMessage": "你的站內暱稱,之後可以修改", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "5sg7KC": { + "defaultMessage": "密碼", + "description": "" + }, + "ml3SZN": { + "defaultMessage": "至少 8 個字元,支持英文大小寫字母、數字和特殊符號", + "description": "" + }, + "NzfL1d": { + "defaultMessage": "再次輸入密碼", + "description": "src/components/Forms/EmailSignUpForm/Password.tsx" + }, + "JsK5CJ": { + "defaultMessage": "確認", + "description": "" + }, + "XH0Lb6": { + "defaultMessage": "歡迎加入 Matters!", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "stjoBH": { + "defaultMessage": "現在,去為你喜歡的作者打賞吧!你的每一次打賞都將為作者帶來收入。", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "reOeq5": { + "defaultMessage": "你已擁有個人創作空間站,期待你的第一篇作品。", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "ANhCde": { + "defaultMessage": "馬上開始你的創作吧!", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "/asuIY": { + "defaultMessage": "進入社區", + "description": "src/components/Forms/EmailSignUpForm/Complete.tsx" + }, + "nsaJRn": { + "defaultMessage": "登入成功", + "description": "" + }, + "lD4FPZ": { + "defaultMessage": "請輸入電子信箱", + "description": "" + }, + "IFY8r4": { + "defaultMessage": "請輸入密碼", + "description": "src/components/Forms/EmailLoginForm/index.tsx" + }, + "z+209N": { + "defaultMessage": "註冊", + "description": "" + }, + "nYeDrI": { + "defaultMessage": "沒有帳戶?", + "description": "src/components/Forms/EmailLoginForm/Buttons.tsx" + }, + "xGh9O7": { + "defaultMessage": "提醒:信箱將不作為登入使用,僅作為聯繫渠道", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "N3K1H9": { + "defaultMessage": "Matters 不會透過任何渠道詢問你的錢包私鑰。", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "hWs95P": { + "defaultMessage": "重要訊息將透過郵件通知,請填入信箱完成設定。", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "cg1VJ2": { + "defaultMessage": "連接加密錢包", + "description": "" + }, + "YjNkcK": { + "defaultMessage": "若要變更地址,請直接操作錢包切換", + "description": "" + }, + "wSEOxH": { + "defaultMessage": "聯繫渠道", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "CwSpld": { + "defaultMessage": "非登入用途", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "qswU4E": { + "defaultMessage": "信箱將不作為登入使用,僅作為聯繫渠道", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "EfJYPI": { + "defaultMessage": "驗證碼", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "0Rw3H/": { + "defaultMessage": "我已閱讀並同意", + "description": "src/components/Forms/EmailSignUpForm/Init.tsx" + }, + "/A/biR": { + "defaultMessage": "Matters 用戶協議和隱私政策", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "jgLiba": { + "defaultMessage": "請輸入驗證碼", + "description": "src/components/Forms/WalletAuthForm/Connect.tsx" + }, + "jL2ZHb": { + "defaultMessage": "驗證碼有效期 20 分鐘", + "description": "" + }, + "4giHJT": { + "defaultMessage": "在行動裝置上使用問題,參考 ", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "GZ1iwf": { + "defaultMessage": "教學指南", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "hrfF+i": { + "defaultMessage": "剛接觸加密錢包?參考 ", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "HxcjQl": { + "defaultMessage": "Matters 將提供更多創作與區塊鏈結合的服務,接入錢包後即可在未來第一時間體驗新功能。", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "LqxIEU": { + "defaultMessage": "錢包地址將作為身份識別之一在個人頁公開顯示。", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "UOdEqi": { + "defaultMessage": "原有透過電子信箱登入方式將為你保留。為維護你的帳戶安全,加密錢包連接後無法重設。", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "VrOoVf": { + "defaultMessage": "Matters 不會透過任何渠道主動詢問你的錢包私鑰。", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "v6YjIn": { + "defaultMessage": "帳戶", + "description": "src/components/Forms/WalletAuthForm/Select.tsx" + }, + "H8KGyc": { + "defaultMessage": "進入", + "description": "" + }, + "sy+pv5": { + "defaultMessage": "電子郵箱", + "description": "" + }, + "JxlxVc": { + "defaultMessage": "忘記密碼?", + "description": "src/components/Forms/EmailLoginForm/Buttons.tsx" + }, + "deEeEI": { + "defaultMessage": "註冊", + "description": "" + }, + "N2IrpM": { + "defaultMessage": "確認", + "description": "" + }, + "EwVnoC": { + "defaultMessage": "我已閱讀並同意", + "description": "" + }, + "9+Ddtu": { + "defaultMessage": "下一步", + "description": ""}, + "k5NnNF": { + "defaultMessage": "追蹤了你", + "description": "src/components/Notice/UserNotice/UserNewFollowerNotice.tsx" + }, + "KZlRde": { + "defaultMessage": " 關聯了你的作品 ", + "description": "src/components/Notice/ArticleArticleNotice/ArticleNewCollectedNotice.tsx" + }, + "/nu5ho": { + "defaultMessage": "回覆了你在作品 ", + "description": "src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx" + }, + "ZUPQzl": { + "defaultMessage": " 的評論", + "description": "src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx" + }, + "b+LSgI": { + "defaultMessage": "回覆了你在圍爐 ", + "description": "src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx" + }, + "aaUBvF": { + "defaultMessage": " 中的發言", + "description": "src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx" + }, + "DIQKiC": { + "defaultMessage": " 在作品 ", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "jqACL/": { + "defaultMessage": " 的評論中提及你", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "+AdTsY": { + "defaultMessage": " 眾聊提及你", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "ISn3eZ": { + "defaultMessage": " 廣播提及你", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "uqmi/b": { + "defaultMessage": " 置頂了你在作品 ", + "description": "src/components/Notice/CommentNotice/CommentPinnedNotice.tsx" + }, + "VjxGd7": { + "defaultMessage": "評論了作品 ", + "description": "src/components/Notice/CommentNotice/ArticleNewCommentNotice.tsx" + }, + "U/Tqmx": { + "defaultMessage": "評論了你收藏的作品 ", + "description": "src/components/Notice/CommentNotice/SubscribedArticleNewCommentNotice.tsx" + }, + "VoOZni": { + "defaultMessage": "在圍爐 ", + "description": "src/components/Notice/CommentNotice/CircleNewBroadcastNotice.tsx" + }, + "oaDToH": { + "defaultMessage": " 發布了新廣播", + "description": "src/components/Notice/CommentNotice/CircleNewBroadcastNotice.tsx" + }, + "qPPrzm": { + "defaultMessage": " 支持了你的作品 ", + "description": "src/components/Notice/TransactionNotice/PaymentReceivedDonationNotice.tsx" + }, + "BjzRe8": { + "defaultMessage": ",快去查看自己的收入吧!", + "description": "src/components/Notice/TransactionNotice/PaymentReceivedDonationNotice.tsx" + }, + "z4NaU2": { + "defaultMessage": "你的 ", + "description": "src/components/Notice/TransactionNotice/PaymentPayoutNotice.tsx" + }, + "bVZDVx": { + "defaultMessage": "提現流程已開始,到帳時間請關注銀行提醒。", + "description": "src/components/Notice/TransactionNotice/PaymentPayoutNotice.tsx" + }, + "nto8ly": { + "defaultMessage": "訂閱了你的圍爐", + "description": "src/components/Notice/CircleNotice/CircleNewUserNotice.tsx" + }, + "qYzBk8": { + "defaultMessage": "退訂了你的圍爐", + "description": "src/components/Notice/CircleNotice/CircleNewUserNotice.tsx" + }, + "LW1aX1": { + "defaultMessage": "恭喜你!", + "description": "src/components/Notice/CircleNotice/CircleInvitationNotice.tsx" + }, + "KyWDUu": { + "defaultMessage": " 邀請你免費加入圍爐 ", + "description": "src/components/Notice/CircleNotice/CircleInvitationNotice.tsx" + }, + "jF+Mle": { + "defaultMessage": " 天,前去免費體驗,與大家談天說地吧。", + "description": "src/components/Notice/CircleNotice/CircleInvitationNotice.tsx" + }, + "wqaNK4": { + "defaultMessage": "在你的圍爐 ", + "description": "" + }, + "FALWef": { + "defaultMessage": " 廣播中留言 ", + "description": "src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx" + }, + "YlxpJl": { + "defaultMessage": " 廣播中留言,其中有提及你 ", + "description": "src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx" + }, + "qQmSxu": { + "defaultMessage": "你已成功登記參加空投且完成以太坊錢包設定,空投活動將在 2021/11/12 進行。你設定的空投地址:", + "description": "src/components/Notice/CryptoNotice/CryptoWalletAirdropNotice.tsx" + }, + "UgvfcU": { + "defaultMessage": "你已完成以太坊錢包設定。你設定的地址:", + "description": "src/components/Notice/CryptoNotice/CryptoWalletConnectedNotice.tsx" + }, + "+hfUcV": { + "defaultMessage": "在圍爐 {circlename} 發布了新廣播", + "description": "src/components/Notice/CommentNotice/CircleNewBroadcastNotice.tsx" + }, + "An0rpe": { + "defaultMessage": " {circlename} 廣播中留言 ", + "description": "src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx" + }, + "VO4Elt": { + "defaultMessage": " 在作品 {commentArticle} 的評論中提及你", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "BHFHeY": { + "defaultMessage": " 在圍爐 {commentCircle}", + "description": "src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx" + }, + "5sAbzJ": { + "defaultMessage": " 眾聊中發表話題 ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "A3LOng": { + "defaultMessage": " 眾聊中回覆話題 ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "ftD7Hy": { + "defaultMessage": " 眾聊提及了你 ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "g/L3Fm": { + "defaultMessage": " 眾聊中發表與回覆話題 ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "GBm/sD": { + "defaultMessage": " 眾聊中發表話題,其中有提及你 ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "tQsujN": { + "defaultMessage": " 眾聊中回覆話題,其中有提及你 ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "uuEGON": { + "defaultMessage": " 眾聊中發表與回覆話題,其中有提及你 ", + "description": "src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx" + }, + "J3yk6u": { + "defaultMessage": "在圍爐 ", + "description": "" + }, + "hk2aiz": { + "defaultMessage": " 追蹤了你的圍爐", + "description": "src/components/Notice/CircleNotice/CircleNewUserNotice.tsx" + }, + "mPe6DK": { + "defaultMessage": " 訂閱了你的圍爐", + "description": "src/components/Notice/CircleNotice/CircleNewUserNotice.tsx" + }, + "JIjMWL": { + "defaultMessage": "你的作品已發布到分佈式網絡", + "description": "src/components/Notice/ArticleNotice/ArticlePublishedNotice.tsx" + }, + "sncOwi": { + "defaultMessage": " 在作品中提及你", + "description": "src/components/Notice/ArticleNotice/ArticleMentionedYouNotice.tsx" + }, + "2eebTb": { + "defaultMessage": " 收藏了你的作品", + "description": "src/components/Notice/ArticleNotice/ArticleNewSubscriberNotice.tsx" + }, + "YIes/F": { + "defaultMessage": "等 {actorsCount} 人", + "description": "src/components/Notice/ArticleNotice/ArticleNewSubscriberNotice.tsx" + }, + "PjT72J": { + "defaultMessage": "喜歡並讚賞了你的作品", + "description": "src/components/Notice/ArticleNotice/ArticleNewAppreciationNotice.tsx" + }, + "4vkwo0": { + "defaultMessage": "你的修訂作品已發布到分佈式網絡", + "description": "src/components/Notice/ArticleNotice/RevisedArticlePublishedNotice.tsx" + }, + "QV19cI": { + "defaultMessage": "你的修訂作品發布失敗", + "description": "src/components/Notice/ArticleNotice/RevisedArticleNotPublishedNotice.tsx" + }, + "euNJsE": { + "defaultMessage": "新作品已經加入圍爐,馬上前往閱讀吧!", + "description": "src/components/Notice/ArticleNotice/CircleNewArticle.tsx" + }, + "/3G89K": { + "defaultMessage": " 又成長了", + "description": "src/components/Notice/ArticleNotice/CircleNewArticle.tsx" + }, + "xwj01D": { + "defaultMessage": " 邀請你成為標籤的協作者", + "description": "src/components/Notice/TagNotice/TagAddEditorNotice.tsx" + }, + "t7ah39": { + "defaultMessage": " 成為了標籤的主理人,你的作品也在其中。快來看看其他作者的精彩創作吧", + "description": "src/components/Notice/TagNotice/TagAdoptionNotice.tsx" + }, + "O03Rkc": { + "defaultMessage": " 辭去了權限。你可以邀請新的協作者加入了", + "description": "src/components/Notice/TagNotice/TagLeaveEditorNotice.tsx" + }, + "dsBCfK": { + "defaultMessage": "哎呀,標籤協作者", + "description": "src/components/Notice/TagNotice/TagLeaveEditorNotice.tsx" +}, +"Jc+W6M": { + "defaultMessage": " 辭去了標籤主理人權限,你要不要試試看成為新的主理人?", + "description": "src/components/Notice/TagNotice/TagLeaveNotice.tsx" +} } + diff --git a/package-lock.json b/package-lock.json index b548db8e0e..9a9be20d91 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "matters-web", - "version": "4.16.0", + "version": "4.17.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "matters-web", - "version": "4.16.0", + "version": "4.17.0", "license": "Apache-2.0", "dependencies": { "@apollo/react-common": "^3.1.3", diff --git a/package.json b/package.json index 4da5536251..5bb45daf03 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "matters-web", - "version": "4.17.0", + "version": "4.17.1", "description": "codebase of Matters' website", "sideEffects": false, "author": "Matters ", @@ -29,7 +29,7 @@ "build-storybook": "build-storybook", "prepare": "husky install", "vercel-build": "set -xe; npm run gen:type && if [[ \"$NEXT_PUBLIC_VERCEL_GIT_COMMIT_REF\" =~ release/* ]] ; then cp -va .env.prod .env.local ; echo 'NEXT_PUBLIC_SITE_DOMAIN=web-next.matters.news' | tee -a .env.local; else cp -va .env.dev .env.local ; echo 'NEXT_PUBLIC_SITE_DOMAIN=web-dev.matters.news' | tee -a .env.local ; fi && echo 'NEXT_PUBLIC_NEXT_ASSET_DOMAIN=' | tee -a .env.local && npm run build", - "i18n:extract": "formatjs extract 'src/**/*.ts*' --ignore='**/*.d.ts' --id-interpolation-pattern '[sha512:contenthash:base64:6]' --out-file lang/en.json", + "i18n:extract": "formatjs extract 'src/**/*.ts*' --ignore='**/*.d.ts' --id-interpolation-pattern '[sha512:contenthash:base64:6]' --out-file lang/default.json", "i18n:compile": "formatjs compile-folder --ast lang compiled-lang", "i18n": "npm run i18n:extract && npm run i18n:compile" }, diff --git a/src/common/enums/text.ts b/src/common/enums/text.ts index 136f30fa3d..db9df9ac84 100644 --- a/src/common/enums/text.ts +++ b/src/common/enums/text.ts @@ -344,7 +344,7 @@ export const TEXT = { analyticsNoSupporter: '尚無支持數據', TAG_EDITORS_REACH_LIMIT: '一個標籤最多僅可有 4 名協作者共同管理', TAG_NOT_FOUND: '標籤不存在', - TOO_MANY_TAGS_FOR_ARTICLE: '標籤添加最多至 8 個', + TOO_MANY_TAGS_FOR_ARTICLE: '標籤添加最多至 5 個', tag: '標籤', tags: '標籤', tagAddArticle: '添加我的作品', @@ -398,7 +398,7 @@ export const TEXT = { viewLikers: '查看讚賞', viewSupporters: '查看支持者', waitingForPublish: '正在等待發布,星際通道有點擁擠', - waitingForHash: '等待写入完成...', + waitingForHash: '等候寫入完成...', walletAddress: '加密錢包地址', walletBalance: '錢包餘額', walletBalanceInsufficient: '錢包餘額不足', @@ -749,7 +749,7 @@ export const TEXT = { analyticsNoSupporter: '尚无支持数据', TAG_EDITORS_REACH_LIMIT: '一个标签最多仅可有 4 名协作者共同管理', TAG_NOT_FOUND: '标签不存在', - TOO_MANY_TAGS_FOR_ARTICLE: '标签添加最多至 8 个', + TOO_MANY_TAGS_FOR_ARTICLE: '标签添加最多至 5 个', tag: '标签', tags: '标签', tagAddArticle: '添加我的作品', @@ -803,7 +803,7 @@ export const TEXT = { viewLikers: '查看赞赏', viewSupporters: '查看支持者', waitingForPublish: '正在等待发布,星际通道有点拥挤', - waitingForHash: '等候寫入完成...', + waitingForHash: '等待写入完成...', walletAddress: '加密钱包地址', walletBalance: '钱包余额', walletBalanceInsufficient: '钱包余额不足', @@ -1180,7 +1180,7 @@ export const TEXT = { analyticsNoSupporter: 'No data yet.', TAG_EDITORS_REACH_LIMIT: 'Maximum 4 editors allowed for each tag', TAG_NOT_FOUND: 'Tag not found', - TOO_MANY_TAGS_FOR_ARTICLE: 'Add up to 8 tags', + TOO_MANY_TAGS_FOR_ARTICLE: 'Add up to 5 tags', tag: 'Tag', tags: 'Tags', tagAddArticle: 'Add Article', diff --git a/src/components/Buttons/Login/index.tsx b/src/components/Buttons/Login/index.tsx index b23fc6edc4..1dbf753568 100644 --- a/src/components/Buttons/Login/index.tsx +++ b/src/components/Buttons/Login/index.tsx @@ -1,17 +1,12 @@ +import { FormattedMessage } from 'react-intl' + import { CLOSE_ACTIVE_DIALOG, OPEN_UNIVERSAL_AUTH_DIALOG, PATHS, } from '~/common/enums' import { appendTarget } from '~/common/utils' -import { - Button, - ButtonProps, - IconSize, - Media, - TextIcon, - Translate, -} from '~/components' +import { Button, ButtonProps, IconSize, Media, TextIcon } from '~/components' interface LoginButtonBaseProps { iconSize?: Extract @@ -43,12 +38,18 @@ export const LoginButton: React.FC = ({ <> @@ -69,7 +70,10 @@ export const LoginButton: React.FC = ({ } const ButtonText = () => ( - + ) diff --git a/src/components/Buttons/SignUp/index.tsx b/src/components/Buttons/SignUp/index.tsx index ac57e52b66..fc3bfc6bd5 100644 --- a/src/components/Buttons/SignUp/index.tsx +++ b/src/components/Buttons/SignUp/index.tsx @@ -1,10 +1,12 @@ +import { FormattedMessage } from 'react-intl' + import { CLOSE_ACTIVE_DIALOG, OPEN_UNIVERSAL_AUTH_DIALOG, PATHS, } from '~/common/enums' import { analytics, appendTarget } from '~/common/utils' -import { Button, ButtonProps, Media, TextIcon, Translate } from '~/components' +import { Button, ButtonProps, Media, TextIcon } from '~/components' type SignUpButtonProps = { isPlain?: boolean @@ -53,7 +55,7 @@ export const SignUpButton: React.FC< } const ButtonText = () => ( - + ) diff --git a/src/components/Comment/Content/index.tsx b/src/components/Comment/Content/index.tsx index 8e31e3794e..6323bd2b8a 100644 --- a/src/components/Comment/Content/index.tsx +++ b/src/components/Comment/Content/index.tsx @@ -4,7 +4,7 @@ import gql from 'graphql-tag' import { COMMENT_TYPE_TEXT, TEST_ID } from '~/common/enums' import contentCommentStyles from '~/common/styles/utils/content.comment.css' import { captureClicks } from '~/common/utils' -import { CommentFormType, Expandable, Translate, useRoute } from '~/components' +import { CommentFormType, Expandable, Translate } from '~/components' import { ContentCommentPrivateFragment, ContentCommentPublicFragment, @@ -17,6 +17,11 @@ interface ContentProps { comment: ContentCommentPublicFragment & Partial type: CommentFormType size?: 'sm' | 'md-s' + bgColor?: 'grey-lighter' | 'white' + bgActiveColor?: 'grey-lighter' | 'white' + limit?: number + textIndent?: boolean + isRichShow?: boolean } const fragments = { @@ -40,14 +45,19 @@ const fragments = { }, } -const Content = ({ comment, type, size }: ContentProps) => { +const Content = ({ + comment, + type, + size, + bgColor, + bgActiveColor, + limit = 8, + textIndent = false, + isRichShow = true, +}: ContentProps) => { const { content, state } = comment const isBlocked = comment.author?.isBlocked - // TODO: Will be removed, just for dev - const { getQuery } = useRoute() - const limit = parseInt(getQuery('limit')) || 8 - const contentClasses = classNames({ content: true, [`size-${size}`]: !!size, @@ -75,7 +85,14 @@ const Content = ({ comment, type, size }: ContentProps) => { if (state === 'active') { return ( <> - +
= ({ @@ -44,6 +46,8 @@ export const Expandable: React.FC = ({ spacingTop, textIndent = false, isRichShow = false, + bgColor = 'white', + bgActiveColor, }) => { const [expandable, setExpandable] = useState(false) const [lineHeight, setLineHeight] = useState(24) @@ -62,6 +66,12 @@ export const Expandable: React.FC = ({ [`textIndent`]: textIndent, }) + const richWrapperClasses = classNames({ + richWrapper: true, + [`${bgColor}`]: !!bgColor, + [`${bgActiveColor}-active`]: !!bgActiveColor, + }) + useEffect(() => { setExpandable(false) setExpand(true) @@ -147,7 +157,7 @@ export const Expandable: React.FC = ({ {isRichShow && ( <>
{children} diff --git a/src/components/Expandable/styles.css b/src/components/Expandable/styles.css index 6a5d82da19..04704c5e9c 100644 --- a/src/components/Expandable/styles.css +++ b/src/components/Expandable/styles.css @@ -16,6 +16,40 @@ & .richWrapper { overflow-y: hidden; overflow-y: clip; + + &::after { + position: absolute; + right: 0; + bottom: 2rem; + left: 0; + height: 80%; + pointer-events: none; + content: ''; + } + + &.white::after { + background: linear-gradient( + 180deg, + rgb(255 255 255 / 0%) 0%, + var(--color-white) 100% + ); + } + + &.grey-lighter::after { + background: linear-gradient( + 180deg, + rgb(247 247 247 / 0%) 0%, + var(--color-grey-lighter) 100% + ); + } + + &.grey-lighter-active::after { + background: linear-gradient( + 180deg, + rgb(247 247 247 / 0%) 0%, + var(--color-grey-lighter-active) 100% + ); + } } } diff --git a/src/components/Forms/EmailLoginForm/Buttons.tsx b/src/components/Forms/EmailLoginForm/Buttons.tsx index 31f8e0a5ad..76f704dd78 100644 --- a/src/components/Forms/EmailLoginForm/Buttons.tsx +++ b/src/components/Forms/EmailLoginForm/Buttons.tsx @@ -1,6 +1,8 @@ +import { FormattedMessage } from 'react-intl' + import { PATHS } from '~/common/enums' import { appendTarget } from '~/common/utils' -import { Button, Form, TextIcon, Translate } from '~/components' +import { Button, Form, TextIcon } from '~/components' export const PasswordResetDialogButton = ({ gotoResetPassword, @@ -14,7 +16,11 @@ export const PasswordResetDialogButton = ({ tabIndex={-1} > - ? + {' '} + ) @@ -22,7 +28,10 @@ export const PasswordResetDialogButton = ({ export const PasswordResetRedirectButton = () => ( ) @@ -35,13 +44,12 @@ export const EmailSignUpDialogButton = ({ } - rightText={} + rightText={} rightTextColor="green" onClick={gotoEmailSignUp} role="button" diff --git a/src/components/Forms/EmailLoginForm/index.tsx b/src/components/Forms/EmailLoginForm/index.tsx index 67c69e9016..7122f4e758 100644 --- a/src/components/Forms/EmailLoginForm/index.tsx +++ b/src/components/Forms/EmailLoginForm/index.tsx @@ -2,6 +2,7 @@ import { useFormik } from 'formik' import gql from 'graphql-tag' import _pickBy from 'lodash/pickBy' import { useContext } from 'react' +import { FormattedMessage, useIntl } from 'react-intl' import { ADD_TOAST, @@ -14,7 +15,6 @@ import { parseFormSubmitErrors, redirectToTarget, setCookies, - translate, validateEmail, validatePassword, } from '~/common/utils' @@ -24,7 +24,6 @@ import { LanguageContext, LanguageSwitch, Layout, - Translate, useMutation, } from '~/components' import { UserLoginMutation } from '~/gql/graphql' @@ -87,6 +86,7 @@ export const EmailLoginForm: React.FC = ({ const isInPage = purpose === 'page' const formId = 'email-login-form' + const intl = useIntl() const { values, errors, @@ -129,7 +129,12 @@ export const EmailLoginForm: React.FC = ({ new CustomEvent(ADD_TOAST, { detail: { color: 'green', - content: , + content: ( + + ), }, }) ) @@ -158,11 +163,14 @@ export const EmailLoginForm: React.FC = ({ const InnerForm = (
} + label={} type="email" name="email" required - placeholder={translate({ id: 'enterEmail', lang })} + placeholder={intl.formatMessage({ + defaultMessage: 'Enter Email', + description: '', + })} value={values.email} error={touched.email && errors.email} onBlur={handleBlur} @@ -170,11 +178,14 @@ export const EmailLoginForm: React.FC = ({ /> } + label={} type="password" name="password" required - placeholder={translate({ id: 'enterPassword', lang })} + placeholder={intl.formatMessage({ + defaultMessage: 'Enter Password', + description: 'src/components/Forms/EmailLoginForm/index.tsx', + })} value={values.password} error={touched.password && errors.password} onBlur={handleBlur} @@ -202,7 +213,7 @@ export const EmailLoginForm: React.FC = ({ type="submit" form={formId} disabled={!isValid || isSubmitting} - text={} + text={} loading={isSubmitting} /> ) diff --git a/src/components/Forms/EmailSignUpForm/Buttons.tsx b/src/components/Forms/EmailSignUpForm/Buttons.tsx index 4cb13a7855..30a2d21de9 100644 --- a/src/components/Forms/EmailSignUpForm/Buttons.tsx +++ b/src/components/Forms/EmailSignUpForm/Buttons.tsx @@ -1,4 +1,6 @@ -import { Form, Translate } from '~/components' +import { FormattedMessage } from 'react-intl' + +import { Form } from '~/components' export const EmailLoginButton = ({ gotoEmailLogin, @@ -8,17 +10,15 @@ export const EmailLoginButton = ({ } rightText={ - } rightTextColor="green" diff --git a/src/components/Forms/EmailSignUpForm/Complete.tsx b/src/components/Forms/EmailSignUpForm/Complete.tsx index a28dc667ea..f137b3ea51 100644 --- a/src/components/Forms/EmailSignUpForm/Complete.tsx +++ b/src/components/Forms/EmailSignUpForm/Complete.tsx @@ -1,5 +1,7 @@ +import { FormattedMessage } from 'react-intl' + import { redirectToTarget } from '~/common/utils' -import { Dialog, Layout, Translate } from '~/components' +import { Dialog, Layout } from '~/components' const Complete = ({ purpose, @@ -27,34 +29,30 @@ const Complete = ({

-

-

-

-

@@ -67,10 +65,9 @@ const Complete = ({ }) }} > - diff --git a/src/components/Forms/EmailSignUpForm/Init.tsx b/src/components/Forms/EmailSignUpForm/Init.tsx index 568b4b4ca0..a025e1dea9 100644 --- a/src/components/Forms/EmailSignUpForm/Init.tsx +++ b/src/components/Forms/EmailSignUpForm/Init.tsx @@ -2,11 +2,11 @@ import { useFormik } from 'formik' import _pickBy from 'lodash/pickBy' import Link from 'next/link' import { useContext } from 'react' +import { FormattedMessage, useIntl } from 'react-intl' import { PATHS } from '~/common/enums' import { parseFormSubmitErrors, - translate, validateDisplayName, validateEmail, validateToS, @@ -18,7 +18,6 @@ import { LanguageSwitch, Layout, ReCaptchaContext, - Translate, useMutation, } from '~/components' import SEND_CODE from '~/components/GQL/mutations/sendCode' @@ -60,7 +59,7 @@ const Init: React.FC = ({ showToast: false, } ) - + const intl = useIntl() const { values, errors, @@ -115,15 +114,18 @@ const Init: React.FC = ({ const InnerForm = ( } + label={ + + } type="text" name="displayName" required - placeholder={translate({ - zh_hant: '你的站內暱稱,之後可以修改', - zh_hans: '你的站内暱称,之后可以修改', - en: 'Your Matters display name, can be changed later', - lang, + placeholder={intl.formatMessage({ + defaultMessage: 'Your Matters display name, can be changed later', + description: 'src/components/Forms/EmailSignUpForm/Init.tsx', })} value={values.displayName} error={touched.displayName && errors.displayName} @@ -132,13 +134,13 @@ const Init: React.FC = ({ /> } + label={} type="email" name="email" required - placeholder={translate({ - id: 'enterEmail', - lang, + placeholder={intl.formatMessage({ + defaultMessage: 'Email', + description: '', })} value={values.email} error={touched.email && errors.email} @@ -153,19 +155,16 @@ const Init: React.FC = ({ onChange={handleChange} hint={ <> - -   - @@ -183,7 +182,7 @@ const Init: React.FC = ({ type="submit" form={formId} disabled={!isValid || isSubmitting} - text={} + text={} loading={isSubmitting} /> ) diff --git a/src/components/Forms/EmailSignUpForm/Password.tsx b/src/components/Forms/EmailSignUpForm/Password.tsx index f0ab0cc75a..be96f6df1c 100644 --- a/src/components/Forms/EmailSignUpForm/Password.tsx +++ b/src/components/Forms/EmailSignUpForm/Password.tsx @@ -2,6 +2,7 @@ import { useFormik } from 'formik' import gql from 'graphql-tag' import _pickBy from 'lodash/pickBy' import { useContext } from 'react' +import { FormattedMessage, useIntl } from 'react-intl' import { COOKIE_LANGUAGE, @@ -12,7 +13,6 @@ import { analytics, parseFormSubmitErrors, setCookies, - translate, validateComparedPassword, validatePassword, } from '~/common/utils' @@ -21,7 +21,6 @@ import { Form, LanguageContext, Layout, - Translate, useMutation, } from '~/components' import { CONFIRM_CODE } from '~/components/GQL/mutations/verificationCode' @@ -88,6 +87,7 @@ const Password: React.FC = ({ const isInPage = purpose === 'page' const formId = 'email-sign-up-password-form' + const intl = useIntl() const { values, errors, @@ -153,30 +153,48 @@ const Password: React.FC = ({ const InnerForm = ( } + label={} type="password" name="password" required - placeholder={translate({ - id: 'enterPassword', - lang, + placeholder={intl.formatMessage({ + defaultMessage: 'Enter Password', + description: '', })} value={values.password} error={touched.password && errors.password} onBlur={handleBlur} onChange={handleChange} - hint={} + hint={ + + } /> } + label={ + + } type="password" name="comparedPassword" required - placeholder={translate({ id: 'enterPasswordAgain', lang })} + placeholder={intl.formatMessage({ + defaultMessage: 'Enter password again', + description: 'src/components/Forms/EmailSignUpForm/Password.tsx', + })} value={values.comparedPassword} error={touched.comparedPassword && errors.comparedPassword} - hint={} + hint={ + + } onBlur={handleBlur} onChange={handleChange} /> @@ -188,7 +206,7 @@ const Password: React.FC = ({ type="submit" form={formId} disabled={!isValid || isSubmitting} - text={} + text={} loading={isSubmitting} /> ) diff --git a/src/components/Forms/SelectAuthMethodForm/index.tsx b/src/components/Forms/SelectAuthMethodForm/index.tsx index 50ef61dcdc..a40d0809c3 100644 --- a/src/components/Forms/SelectAuthMethodForm/index.tsx +++ b/src/components/Forms/SelectAuthMethodForm/index.tsx @@ -1,3 +1,5 @@ +import { FormattedMessage } from 'react-intl' + import { UNIVERSAL_AUTH_SOURCE } from '~/common/enums' import { Dialog, @@ -8,7 +10,6 @@ import { Layout, Spacer, TextIcon, - Translate, } from '~/components' import SourceHeader from './SourceHeader' @@ -32,7 +33,16 @@ export const SelectAuthMethodForm: React.FC = ({ const isInPage = purpose === 'page' const InnerForm = ( - : null}> + + ) : null + } + > = ({ size="md" spacing="xtight" > - + } subtitle={ - } onClick={gotoWalletAuth} @@ -62,14 +74,16 @@ export const SelectAuthMethodForm: React.FC = ({ size="md" spacing="xtight" > - + } subtitle={ - } onClick={gotoEmailLogin} diff --git a/src/components/Forms/WalletAuthForm/Connect.tsx b/src/components/Forms/WalletAuthForm/Connect.tsx index 90e6777fa1..8b200cfa35 100644 --- a/src/components/Forms/WalletAuthForm/Connect.tsx +++ b/src/components/Forms/WalletAuthForm/Connect.tsx @@ -3,6 +3,7 @@ import { useFormik } from 'formik' import _pickBy from 'lodash/pickBy' import Link from 'next/link' import { useContext, useEffect } from 'react' +import { FormattedMessage, useIntl } from 'react-intl' import { useAccount, useDisconnect, useSignMessage } from 'wagmi' import { @@ -18,7 +19,6 @@ import { parseFormSubmitErrors, redirectToTarget, setCookies, - translate, validateCode, validateEmail, validateToS, @@ -31,7 +31,6 @@ import { LanguageContext, Layout, TextIcon, - Translate, useMutation, VerificationSendCodeButton, ViewerContext, @@ -68,25 +67,22 @@ const ImportantNotice = () => { return (

-

- -

@@ -129,6 +125,7 @@ const Connect: React.FC = ({ const { address: account } = useAccount() const { signMessageAsync } = useSignMessage() + const intl = useIntl() // sign up if eth address didn't bind with a user const isSignUp = !!(data && account && !data?.user?.id && !viewer.isAuthed) @@ -252,7 +249,12 @@ const Connect: React.FC = ({ new CustomEvent(ADD_TOAST, { detail: { color: 'green', - content: , + content: ( + + ), }, }) ) @@ -279,7 +281,11 @@ const Connect: React.FC = ({ const InnerForm = ( - }> + + } + > @@ -288,10 +294,9 @@ const Connect: React.FC = ({ fieldMsgId={fieldMsgId} hint={ !errors.address ? ( - ) : undefined } @@ -307,23 +312,22 @@ const Connect: React.FC = ({ {isSignUp && (

-

)} {isSignUp && ( } + label={} type="email" name="email" required - placeholder={translate({ - id: 'enterEmail', - lang, + placeholder={intl.formatMessage({ + defaultMessage: 'Enter Email', + description: '', })} extraButton={ = ({ weight="md" spacing="xxtight" > - } @@ -345,10 +348,9 @@ const Connect: React.FC = ({ onBlur={handleBlur} onChange={handleChange} hint={ - } /> @@ -356,12 +358,23 @@ const Connect: React.FC = ({ {isSignUp && ( } + label={ + + } type="text" name="code" required - placeholder={translate({ id: 'enterVerificationCode', lang })} - hint={translate({ id: 'hintVerificationCode', lang })} + placeholder={intl.formatMessage({ + defaultMessage: 'Enter verification code', + description: 'src/components/Forms/WalletAuthForm/Connect.tsx', + })} + hint={intl.formatMessage({ + defaultMessage: 'Code will expire after 20 minutes', + description: '', + })} value={values.code} error={touched.code && errors.code} onBlur={handleBlur} @@ -384,19 +397,16 @@ const Connect: React.FC = ({ onChange={handleChange} hint={ <> - -   - @@ -417,7 +427,7 @@ const Connect: React.FC = ({ type="submit" form={formId} disabled={isSubmitting || loading || !account} - text={} + text={} loading={isSubmitting || loading} /> ) diff --git a/src/components/Forms/WalletAuthForm/Select.tsx b/src/components/Forms/WalletAuthForm/Select.tsx index e8ea3c62e0..d3f6fd2546 100644 --- a/src/components/Forms/WalletAuthForm/Select.tsx +++ b/src/components/Forms/WalletAuthForm/Select.tsx @@ -14,7 +14,6 @@ import { Layout, Media, TextIcon, - Translate, ViewerContext, } from '~/components' @@ -28,37 +27,6 @@ export interface FormProps { back?: () => void } -const Desc = { - section1: { - zh_hant: - 'Matters 將提供更多創作與區塊鏈結合的服務,接入錢包後即可在未來第一時間體驗新功能。', - zh_hans: - 'Matters 将提供更多创作与区块链结合的服务,接入钱包后即可在未来第一时间体验新功能。', - en: - 'Matters continues to provide services that combine creativity with blockchain ' + - 'technology. You will be the first to experience them after completing connecting wallet.', - }, - section2: { - zh_hant: '錢包地址將作為身份識別之一在個人頁公開顯示。', - zh_hans: '钱包地址将作为身份识别之一在个人页公开显示。', - en: 'Wallet address will be part of your digital identity and shown in your profile page.', - }, - section3: { - zh_hant: - '原有透過電子信箱登入方式將為你保留。為維護你的帳戶安全,加密錢包連接後無法重設。', - zh_hans: - '原有透过电子信箱登入方式将为你保留。为维护你的帐户安全,加密钱包连接后无法重设。', - en: - 'The original login via email will be kept for you. Please note that your wallet ' + - 'cannot be reset once it is connected because of your account security.', - }, - section4: { - zh_hant: 'Matters 不會透過任何渠道主動詢問你的錢包私鑰。', - zh_hans: 'Matters 不会透过任何渠道主动询问你的钱包私钥。', - en: 'Matters will never ask your wallet key through any channel.', - }, -} - const Hint = () => { const { lang } = useContext(LanguageContext) @@ -66,10 +34,9 @@ const Hint = () => { <>

- { target="_blank" rel="noreferrer" > - + -

- { target="_blank" rel="noreferrer" > - + -

@@ -160,19 +130,31 @@ const Select: React.FC = ({
  • - +
  • - +
  • - +
  • - +
@@ -184,13 +166,22 @@ const Select: React.FC = ({ {isConnect && ( } + groupName={ + + } > )} - }> + + } + > {injectedConnector?.ready ? ( = ({ back ? : null } title={ - + isConnect ? ( + + ) : ( + + ) } closeDialog={closeDialog} /> diff --git a/src/components/Hook/index.ts b/src/components/Hook/index.ts index e41c1feaf6..e5e7858f20 100644 --- a/src/components/Hook/index.ts +++ b/src/components/Hook/index.ts @@ -6,6 +6,7 @@ export * from './useDialogSwitch' export * from './useERC20' export * from './useEventListener' export * from './useFeatures' +export * from './useHover' export * from './useImmersiveMode' export * from './useInterval' export * from './useNativeEventListener' diff --git a/src/components/Hook/useHover.tsx b/src/components/Hook/useHover.tsx new file mode 100644 index 0000000000..17fcdd8475 --- /dev/null +++ b/src/components/Hook/useHover.tsx @@ -0,0 +1,23 @@ +import { MutableRefObject, useEffect, useRef, useState } from 'react' + +export const useHover = (): [MutableRefObject, boolean] => { + const [value, setValue] = useState(false) + const ref: any = useRef(null) + const handleMouseOver = (): void => setValue(true) + const handleMouseOut = (): void => setValue(false) + useEffect( + () => { + const node: any = ref.current + if (node) { + node.addEventListener('mouseover', handleMouseOver) + node.addEventListener('mouseout', handleMouseOut) + return () => { + node.removeEventListener('mouseover', handleMouseOver) + node.removeEventListener('mouseout', handleMouseOut) + } + } + }, + [ref.current] // Recall only if ref changes + ) + return [ref, value] +} diff --git a/src/components/Notice/ArticleArticleNotice/ArticleNewCollectedNotice.tsx b/src/components/Notice/ArticleArticleNotice/ArticleNewCollectedNotice.tsx index 20709ca817..c621ca90c4 100644 --- a/src/components/Notice/ArticleArticleNotice/ArticleNewCollectedNotice.tsx +++ b/src/components/Notice/ArticleArticleNotice/ArticleNewCollectedNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { ArticleNewCollectedNoticeFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -35,11 +35,11 @@ const ArticleNewCollectedNotice = ({
- + diff --git a/src/components/Notice/ArticleNotice/ArticleMentionedYouNotice.tsx b/src/components/Notice/ArticleNotice/ArticleMentionedYouNotice.tsx index 9f5c530dd6..5924867a26 100644 --- a/src/components/Notice/ArticleNotice/ArticleMentionedYouNotice.tsx +++ b/src/components/Notice/ArticleNotice/ArticleMentionedYouNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { ArticleMentionedYouNoticeFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -34,10 +34,9 @@ const ArticleMentionedYouNotice = ({
- diff --git a/src/components/Notice/ArticleNotice/ArticleNewAppreciationNotice.tsx b/src/components/Notice/ArticleNotice/ArticleNewAppreciationNotice.tsx index ceb18a5cf5..4a39631c7c 100644 --- a/src/components/Notice/ArticleNotice/ArticleNewAppreciationNotice.tsx +++ b/src/components/Notice/ArticleNotice/ArticleNewAppreciationNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { ArticleNewAppreciationNoticeFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -40,11 +40,9 @@ const ArticleNewAppreciationNotice = ({
- - diff --git a/src/components/Notice/ArticleNotice/ArticleNewSubscriberNotice.tsx b/src/components/Notice/ArticleNotice/ArticleNewSubscriberNotice.tsx index 00978243c0..d96acfde62 100644 --- a/src/components/Notice/ArticleNotice/ArticleNewSubscriberNotice.tsx +++ b/src/components/Notice/ArticleNotice/ArticleNewSubscriberNotice.tsx @@ -1,9 +1,9 @@ import gql from 'graphql-tag' import { Fragment } from 'react' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' import { numAbbr } from '~/common/utils' -import { Translate } from '~/components' import { ArticleNewSubscriberNoticeFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -48,16 +48,17 @@ const ArticleNewSubscriberNotice = ({ ))}{' '} {isMultiActors && ( - )} - diff --git a/src/components/Notice/ArticleNotice/ArticlePublishedNotice.tsx b/src/components/Notice/ArticleNotice/ArticlePublishedNotice.tsx index 6ff5d3c35b..a4e5121da6 100644 --- a/src/components/Notice/ArticleNotice/ArticlePublishedNotice.tsx +++ b/src/components/Notice/ArticleNotice/ArticlePublishedNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { ArticlePublishedNoticeFragment } from '~/gql/graphql' import NoticeArticleCard from '../NoticeArticleCard' @@ -26,10 +26,9 @@ const ArticlePublishedNotice = ({
- diff --git a/src/components/Notice/ArticleNotice/CircleNewArticle.tsx b/src/components/Notice/ArticleNotice/CircleNewArticle.tsx index 7f409b6aa4..f2acb53084 100644 --- a/src/components/Notice/ArticleNotice/CircleNewArticle.tsx +++ b/src/components/Notice/ArticleNotice/CircleNewArticle.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { CircleNewArticleNoticeFragment } from '~/gql/graphql' import NoticeArticleCard from '../NoticeArticleCard' @@ -31,15 +31,17 @@ const CircleNewArticle = ({
} > - + diff --git a/src/components/Notice/ArticleNotice/RevisedArticleNotPublishedNotice.tsx b/src/components/Notice/ArticleNotice/RevisedArticleNotPublishedNotice.tsx index 9bc400b959..8bb748d541 100644 --- a/src/components/Notice/ArticleNotice/RevisedArticleNotPublishedNotice.tsx +++ b/src/components/Notice/ArticleNotice/RevisedArticleNotPublishedNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { RevisedArticleNotPublishedNoticeFragment } from '~/gql/graphql' import NoticeArticleCard from '../NoticeArticleCard' @@ -26,10 +26,9 @@ const RevisedArticleNotPublishedNotice = ({
- diff --git a/src/components/Notice/ArticleNotice/RevisedArticlePublishedNotice.tsx b/src/components/Notice/ArticleNotice/RevisedArticlePublishedNotice.tsx index 5903ff0c23..13839d0b36 100644 --- a/src/components/Notice/ArticleNotice/RevisedArticlePublishedNotice.tsx +++ b/src/components/Notice/ArticleNotice/RevisedArticlePublishedNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { RevisedArticlePublishedNoticeFragment } from '~/gql/graphql' import NoticeArticleCard from '../NoticeArticleCard' @@ -26,10 +26,9 @@ const RevisedArticlePublishedNotice = ({
- diff --git a/src/components/Notice/CircleNotice/CircleInvitationNotice.tsx b/src/components/Notice/CircleNotice/CircleInvitationNotice.tsx index 683b2df1ab..c81b267626 100644 --- a/src/components/Notice/CircleNotice/CircleInvitationNotice.tsx +++ b/src/components/Notice/CircleNotice/CircleInvitationNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { CircleInvitationNoticeFragment } from '~/gql/graphql' import NoticeActorName from '../NoticeActorName' @@ -31,18 +31,19 @@ const CircleInvitationNotice = ({
- + - {circle?.invitedBy?.freePeriod} - diff --git a/src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx b/src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx index abe35229e6..dd700a348f 100644 --- a/src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx +++ b/src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx @@ -1,9 +1,10 @@ import gql from 'graphql-tag' import { useContext } from 'react' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' import { toPath } from '~/common/utils' -import { Translate, ViewerContext } from '~/components' +import { ViewerContext } from '~/components' import { CircleNewBroadcastCommentsFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -70,38 +71,30 @@ const CircleNewBroadcastComments = ({ <> {isCircleOwner ? ( - ) : ( - + )} {replyCount && !mentionCount && ( - )} {!replyCount && mentionCount && ( - )} {replyCount && mentionCount && ( - )} diff --git a/src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx b/src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx index dee609f305..7502d5b72b 100644 --- a/src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx +++ b/src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx @@ -1,9 +1,10 @@ import gql from 'graphql-tag' import { useContext } from 'react' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' import { toPath } from '~/common/utils' -import { LanguageContext, Translate, ViewerContext } from '~/components' +import { LanguageContext, ViewerContext } from '~/components' import { CircleNewDiscussionCommentsFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -80,13 +81,15 @@ const CircleNewDiscussionComments = ({ {!isEn ? ( <> {isCircleOwner ? ( - ) : ( - + )} )} {!newDiscussionCount && replyCount && !mentionCount && ( - )} {!newDiscussionCount && !replyCount && mentionCount && ( - )} {newDiscussionCount && replyCount && !mentionCount && ( - )} {newDiscussionCount && !replyCount && mentionCount && ( - )} {!newDiscussionCount && replyCount && mentionCount && ( - )} {newDiscussionCount && replyCount && mentionCount && ( - )} {isEn ? ( diff --git a/src/components/Notice/CircleNotice/CircleNewUserNotice.tsx b/src/components/Notice/CircleNotice/CircleNewUserNotice.tsx index 0c347e893a..d423ab03b0 100644 --- a/src/components/Notice/CircleNotice/CircleNewUserNotice.tsx +++ b/src/components/Notice/CircleNotice/CircleNewUserNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { CircleNewUserNoticeFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -48,24 +48,21 @@ const CircleNewUserNotice = ({ notice, userType }: CircleNewUserNotice) => { {isNewFollower && ( - )} {isNewSubscriber && ( - )} {isNewUnsubscriber && ( - )} diff --git a/src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx b/src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx index 8b156e4636..08613f8a21 100644 --- a/src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx +++ b/src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { CommentNewReplyNoticeFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -47,24 +47,28 @@ const CommentNewReplyNotice = ({ {replyCommentArticle && ( <> - - + )} {replyCommentCircle && ( <> - - + )} diff --git a/src/components/Notice/CommentNotice/ArticleNewCommentNotice.tsx b/src/components/Notice/CommentNotice/ArticleNewCommentNotice.tsx index dc4c00b7e3..cac3059e37 100644 --- a/src/components/Notice/CommentNotice/ArticleNewCommentNotice.tsx +++ b/src/components/Notice/CommentNotice/ArticleNewCommentNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { ArticleNewCommentNoticeFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -42,11 +42,9 @@ const ArticleNewCommentNotice = ({
- - {commentArticle && } diff --git a/src/components/Notice/CommentNotice/CircleNewBroadcastNotice.tsx b/src/components/Notice/CommentNotice/CircleNewBroadcastNotice.tsx index ca2c09622b..2cba030fa6 100644 --- a/src/components/Notice/CommentNotice/CircleNewBroadcastNotice.tsx +++ b/src/components/Notice/CommentNotice/CircleNewBroadcastNotice.tsx @@ -1,8 +1,8 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' import { toPath } from '~/common/utils' -import { Translate } from '~/components' import { CircleNewBroadcastNoticeFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -55,19 +55,17 @@ const CircleNewBroadcastNotice = ({
- - - {commentCircle && ( - - )} - + ), + }} + description="src/components/Notice/CommentNotice/CircleNewBroadcastNotice.tsx" /> diff --git a/src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx b/src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx index c9cc860733..42d4626489 100644 --- a/src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx +++ b/src/components/Notice/CommentNotice/CommentMentionedYouNotice.tsx @@ -1,8 +1,8 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' import { toPath } from '~/common/utils' -import { Translate } from '~/components' import { CommentMentionedYouNoticeFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -66,42 +66,41 @@ const CommentMentionedYouNotice = ({ {commentArticle && ( <> - - - + ), + }} /> )} {commentCircle && ( <> - - + ), + }} /> {commentCircleDiscussion && ( - )} {commentCircleBroadcast && ( - )} diff --git a/src/components/Notice/CommentNotice/CommentPinnedNotice.tsx b/src/components/Notice/CommentNotice/CommentPinnedNotice.tsx index 91e408ac54..44be73eac8 100644 --- a/src/components/Notice/CommentNotice/CommentPinnedNotice.tsx +++ b/src/components/Notice/CommentNotice/CommentPinnedNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { CommentPinnedNoticeFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -36,13 +36,12 @@ const CommentPinnedNotice = ({
- {commentArticle && } - + diff --git a/src/components/Notice/CommentNotice/SubscribedArticleNewCommentNotice.tsx b/src/components/Notice/CommentNotice/SubscribedArticleNewCommentNotice.tsx index d6cbd90d67..9449f3d3ae 100644 --- a/src/components/Notice/CommentNotice/SubscribedArticleNewCommentNotice.tsx +++ b/src/components/Notice/CommentNotice/SubscribedArticleNewCommentNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { SubscribedArticleNewCommentNoticeFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -45,11 +45,9 @@ const SubscribedArticleNewCommentNotice = ({
- - {commentArticle && } diff --git a/src/components/Notice/CryptoNotice/CryptoWalletAirdropNotice.tsx b/src/components/Notice/CryptoNotice/CryptoWalletAirdropNotice.tsx index b726c318ab..22e9aaaf3a 100644 --- a/src/components/Notice/CryptoNotice/CryptoWalletAirdropNotice.tsx +++ b/src/components/Notice/CryptoNotice/CryptoWalletAirdropNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { CryptoWalletAirdropNoticeFragment } from '~/gql/graphql' import NoticeDate from '../NoticeDate' @@ -21,10 +21,9 @@ const CryptoWalletAirdropNotice = ({

-

{notice.target.address}

diff --git a/src/components/Notice/CryptoNotice/CryptoWalletConnectedNotice.tsx b/src/components/Notice/CryptoNotice/CryptoWalletConnectedNotice.tsx index 16a21b9c04..c1f89e6a60 100644 --- a/src/components/Notice/CryptoNotice/CryptoWalletConnectedNotice.tsx +++ b/src/components/Notice/CryptoNotice/CryptoWalletConnectedNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { CryptoWalletConnectedNoticeFragment } from '~/gql/graphql' import NoticeDate from '../NoticeDate' @@ -24,10 +24,9 @@ const CryptoWalletConnectedNotice = ({

-

{notice.target.address}

diff --git a/src/components/Notice/NoticeComment.tsx b/src/components/Notice/NoticeComment.tsx index 2688c071b2..5dcc2196b5 100644 --- a/src/components/Notice/NoticeComment.tsx +++ b/src/components/Notice/NoticeComment.tsx @@ -2,7 +2,7 @@ import gql from 'graphql-tag' import { TEST_ID } from '~/common/enums' import { toPath } from '~/common/utils' -import { Card } from '~/components' +import { Card, useHover } from '~/components' import CommentContent from '~/components/Comment/Content' import { NoticeCommentFragment } from '~/gql/graphql' @@ -51,6 +51,8 @@ const NoticeComment = ({ const circle = comment?.node.__typename === 'Circle' ? comment.node : undefined + const [hoverRef, isHovered] = useHover() + if (!comment) { return null } @@ -66,7 +68,7 @@ const NoticeComment = ({ : {} return ( -
+
- + diff --git a/src/components/Notice/TagNotice/TagAddEditorNotice.tsx b/src/components/Notice/TagNotice/TagAddEditorNotice.tsx index 41ecec5782..a78725fc98 100644 --- a/src/components/Notice/TagNotice/TagAddEditorNotice.tsx +++ b/src/components/Notice/TagNotice/TagAddEditorNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { TagAddEditorNoticeFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -31,11 +31,7 @@ const TagAddEditorNotice = ({
- + diff --git a/src/components/Notice/TagNotice/TagAdoptionNotice.tsx b/src/components/Notice/TagNotice/TagAdoptionNotice.tsx index f004d79dd5..65ec723c5e 100644 --- a/src/components/Notice/TagNotice/TagAdoptionNotice.tsx +++ b/src/components/Notice/TagNotice/TagAdoptionNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { TagAdoptionNoticeFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -31,11 +31,7 @@ const TagAdoptionNotice = ({
- + diff --git a/src/components/Notice/TagNotice/TagLeaveEditorNotice.tsx b/src/components/Notice/TagNotice/TagLeaveEditorNotice.tsx index 8f3e37a4dc..ceb5c50b09 100644 --- a/src/components/Notice/TagNotice/TagLeaveEditorNotice.tsx +++ b/src/components/Notice/TagNotice/TagLeaveEditorNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { TagLeaveEditorNoticeFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -30,17 +30,9 @@ const TagLeaveEditorNotice = ({
- {' '} + - + diff --git a/src/components/Notice/TagNotice/TagLeaveNotice.tsx b/src/components/Notice/TagNotice/TagLeaveNotice.tsx index f49967c932..c5a1c7112a 100644 --- a/src/components/Notice/TagNotice/TagLeaveNotice.tsx +++ b/src/components/Notice/TagNotice/TagLeaveNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { TagLeaveNoticeFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -27,11 +27,7 @@ const TagLeaveNotice = ({ notice }: { notice: TagLeaveNoticeFragment }) => {
- + diff --git a/src/components/Notice/TransactionNotice/PaymentPayoutNotice.tsx b/src/components/Notice/TransactionNotice/PaymentPayoutNotice.tsx index 2b5722c5d7..92a943f625 100644 --- a/src/components/Notice/TransactionNotice/PaymentPayoutNotice.tsx +++ b/src/components/Notice/TransactionNotice/PaymentPayoutNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { PaymentPayoutNoticeFragment } from '~/gql/graphql' import NoticeDate from '../NoticeDate' @@ -23,18 +23,18 @@ const PaymentPayoutNotice = ({

- + {tx && ( {tx.amount} {tx.currency} )} -

diff --git a/src/components/Notice/TransactionNotice/PaymentReceivedDonationNotice.tsx b/src/components/Notice/TransactionNotice/PaymentReceivedDonationNotice.tsx index dbea4aac9e..850c6e866f 100644 --- a/src/components/Notice/TransactionNotice/PaymentReceivedDonationNotice.tsx +++ b/src/components/Notice/TransactionNotice/PaymentReceivedDonationNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { PaymentReceivedDonationNoticeFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -34,11 +34,10 @@ const PaymentReceivedDonationNotice = ({
- {' '} - + {tx && ( )} - diff --git a/src/components/Notice/UserNotice/UserNewFollowerNotice.tsx b/src/components/Notice/UserNotice/UserNewFollowerNotice.tsx index 0d6bb5f951..aaf0cd68be 100644 --- a/src/components/Notice/UserNotice/UserNewFollowerNotice.tsx +++ b/src/components/Notice/UserNotice/UserNewFollowerNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' +import { FormattedMessage } from 'react-intl' import { TEST_ID } from '~/common/enums' -import { Translate } from '~/components' import { UserNewFollowerNoticeFragment } from '~/gql/graphql' import NoticeActorAvatar from '../NoticeActorAvatar' @@ -36,8 +36,10 @@ const UserNewFollowerNotice = ({
- - + {isMultiActors ? ( diff --git a/src/views/ArticleDetail/Responses/LatestResponses/index.tsx b/src/views/ArticleDetail/Responses/LatestResponses/index.tsx index 77ae82c6c0..245d037da9 100644 --- a/src/views/ArticleDetail/Responses/LatestResponses/index.tsx +++ b/src/views/ArticleDetail/Responses/LatestResponses/index.tsx @@ -63,9 +63,8 @@ const LatestResponses = ({ id, lock }: { id: string; lock: boolean }) => { * Fragment Patterns * * 0. `` - * 1. `#comment` - * 2. `#parentCommentId` - * 3. `#parentComemntId-childCommentId` + * 1. `#parentCommentId` + * 2. `#parentComemntId-childCommentId` */ let fragment = '' let parentId = '' diff --git a/src/views/ArticleDetail/Responses/index.tsx b/src/views/ArticleDetail/Responses/index.tsx index cbf4352905..2d4a23981e 100644 --- a/src/views/ArticleDetail/Responses/index.tsx +++ b/src/views/ArticleDetail/Responses/index.tsx @@ -41,7 +41,7 @@ const Responses = ({ id, lock }: { id: string; lock: boolean }) => { const { article } = data return ( -
+
<Translate id="responses" /> diff --git a/src/views/ArticleDetail/index.tsx b/src/views/ArticleDetail/index.tsx index 0d0dee9e59..0f2cec185d 100644 --- a/src/views/ArticleDetail/index.tsx +++ b/src/views/ArticleDetail/index.tsx @@ -1,6 +1,5 @@ import { useLazyQuery, useQuery } from '@apollo/react-hooks' import formatISO from 'date-fns/formatISO' -import jump from 'jump.js' import dynamic from 'next/dynamic' import { useContext, useEffect, useState } from 'react' import { Waypoint } from 'react-waypoint' @@ -335,12 +334,7 @@ const BaseArticleDetail = ({ lock={!canReadFullContent} /> - {shouldShowWall && ( - <> - <span id="comments" /> - <DynamicVisitorWall show={fixedWall} /> - </> - )} + {shouldShowWall && <DynamicVisitorWall show={fixedWall} />} {article.access.circle && ( <DynamicSubscribeCircleDialog circle={article.access.circle} /> @@ -508,13 +502,6 @@ const ArticleDetail = ({ setEditMode(mode === URL_QS.MODE_EDIT.value) }, [mode, article]) - // jump to comment area - useEffect(() => { - if (window.location.hash && article) { - jump('#comments', { offset: -10 }) - } - }, [mediaHash]) - /** * Render:Loading */ diff --git a/src/views/Circle/Broadcast/Broadcast.tsx b/src/views/Circle/Broadcast/Broadcast.tsx index 8aaed242ff..66c0a64358 100644 --- a/src/views/Circle/Broadcast/Broadcast.tsx +++ b/src/views/Circle/Broadcast/Broadcast.tsx @@ -134,9 +134,8 @@ const CricleBroadcast = () => { * Fragment Patterns * * 0. `` - * 1. `#comment` - * 2. `#parentCommentId` - * 3. `#parentComemntId-childCommentId` + * 1. `#parentCommentId` + * 2. `#parentComemntId-childCommentId` */ let fragment = '' let parentId = '' @@ -148,10 +147,6 @@ const CricleBroadcast = () => { // jump to comment area useEffect(() => { - if (window.location.hash && circle) { - jump('#comments', { offset: -10 }) - } - if (!fragment || !circle?.id) { return } @@ -226,7 +221,7 @@ const CricleBroadcast = () => { <> <CircleDetailTabs /> - <section className="broadcast" id="comments"> + <section className="broadcast"> {isOwner && ( <header> <CommentForm diff --git a/src/views/Circle/Discussion/Discussion.tsx b/src/views/Circle/Discussion/Discussion.tsx index 47b01e69a5..4a80d75cc1 100644 --- a/src/views/Circle/Discussion/Discussion.tsx +++ b/src/views/Circle/Discussion/Discussion.tsx @@ -92,9 +92,8 @@ const CricleDiscussion = () => { * Fragment Patterns * * 0. `` - * 1. `#comments` - * 2. `#parentCommentId` - * 3. `#parentComemntId-childCommentId` + * 1. `#parentCommentId` + * 2. `#parentComemntId-childCommentId` */ let fragment = '' let parentId = '' @@ -251,7 +250,7 @@ const CricleDiscussion = () => { <> <CircleDetailTabs /> - <section className="discussion" id="comments"> + <section className="discussion"> {!circle.owner.isBlocking && ( <header> <CommentForm diff --git a/src/views/Circle/Profile/AuthorWidget/index.tsx b/src/views/Circle/Profile/AuthorWidget/index.tsx index bd0d3d493e..7f79805edb 100644 --- a/src/views/Circle/Profile/AuthorWidget/index.tsx +++ b/src/views/Circle/Profile/AuthorWidget/index.tsx @@ -1,5 +1,5 @@ import { toPath } from '~/common/utils' -import { Card, Expandable, IconBroadcast24, UserDigest } from '~/components' +import { Card, IconBroadcast24, UserDigest } from '~/components' import CommentContent from '~/components/Comment/Content' import { AuthorWidgetCircleFragment } from '~/gql/graphql' @@ -38,16 +38,13 @@ const AuthorWidget = ({ circle }: AuthorWidgetProps) => { <IconBroadcast24 size="md" /> </span> - <Expandable - content={pinnedBroadcast.content} + <CommentContent + comment={pinnedBroadcast} + type="circleBroadcast" limit={2} textIndent={true} - > - <CommentContent - comment={pinnedBroadcast} - type="circleBroadcast" - /> - </Expandable> + isRichShow={false} + /> </section> )} </Card> diff --git a/tests/authentication.spec.ts b/tests/authentication.spec.ts index 268560ade4..2561c9e8ab 100644 --- a/tests/authentication.spec.ts +++ b/tests/authentication.spec.ts @@ -2,11 +2,11 @@ import { expect, test } from '@playwright/test' import { TEST_ID } from '~/common/enums' -import { authedTest, login, logout } from './helpers' +import { authedTest, login, logout, pageGoto } from './helpers' test.describe('Authentication', () => { test('can login in homepage dialog', async ({ page, isMobile }) => { - await page.goto('/') + await pageGoto(page, '/') // Expect homepage has "Enter" button let enterButton @@ -48,7 +48,7 @@ test.describe('Authentication', () => { authedTest( 'can login and logout with worker-scoped fixtures', async ({ alicePage: page, isMobile }) => { - await page.goto('/') + await pageGoto(page, '/') // [Logged-in] Expect homepage has "Notification" button on the left side await expect( diff --git a/tests/commentArticle.spec.ts b/tests/commentArticle.spec.ts index 9334cbeed1..4e27fc2ca3 100644 --- a/tests/commentArticle.spec.ts +++ b/tests/commentArticle.spec.ts @@ -7,6 +7,7 @@ import { ArticleDetailPage, authedTest, NotificationsPage, + pageGoto, UserProfilePage, } from './helpers' @@ -26,14 +27,14 @@ test.describe('Comment to article', () => { expect(aliceArticleLink).toBeTruthy() // [Bob] Go to Alice's article page - await bobPage.goto(aliceArticleLink) + await pageGoto(bobPage, aliceArticleLink) const aliceArticleDetail = new ArticleDetailPage(bobPage, isMobile) // [Bob] Send a comment const commentContent = await aliceArticleDetail.sendComment() // [Bob] Expect article detail shows this comment - await expect(bobPage.getByText(commentContent)).toBeVisible() + await expect(bobPage.getByText(commentContent).first()).toBeVisible() // [Alice] Go to notifications page const aliceNotifications = new NotificationsPage(alicePage) diff --git a/tests/helpers/auth.ts b/tests/helpers/auth.ts index 8390dcc557..1883d9a770 100644 --- a/tests/helpers/auth.ts +++ b/tests/helpers/auth.ts @@ -40,7 +40,7 @@ export const login = async ({ target = encodeURIComponent( `${process.env.PLAYWRIGHT_TEST_BASE_URL}${target}` ) - await page.goto(`/login?target=${target}`) + await page.goto(`/login?target=${target}`, { waitUntil: 'networkidle' }) } // Login with email & password diff --git a/tests/helpers/index.ts b/tests/helpers/index.ts index b45a69c46f..c6161804e0 100644 --- a/tests/helpers/index.ts +++ b/tests/helpers/index.ts @@ -4,3 +4,4 @@ export * from './fixtures' export * from './fuzz' export * from './poms' export * from './text' +export * from './utils' diff --git a/tests/helpers/poms/articleDetail.ts b/tests/helpers/poms/articleDetail.ts index 2f1bcd7bfc..033389979a 100644 --- a/tests/helpers/poms/articleDetail.ts +++ b/tests/helpers/poms/articleDetail.ts @@ -189,12 +189,15 @@ export class ArticleDetailPage { async supportHKD(password: string, amount: number) { // Open support dialog await this.supportButton.click() + await this.page.waitForLoadState('networkidle') // select fiat currency await this.dialog.getByRole('button', { name: 'Fiat Currency' }).click() + await this.page.waitForLoadState('networkidle') // top-up await this.dialog.getByRole('button', { name: 'Top Up' }).click() + await this.page.waitForLoadState('networkidle') await this.dialog .getByLabel('Enter amount') .fill(Math.max(20, amount).toString()) diff --git a/tests/helpers/poms/draftDetail.ts b/tests/helpers/poms/draftDetail.ts index 5e82f40357..d1fdd985a4 100644 --- a/tests/helpers/poms/draftDetail.ts +++ b/tests/helpers/poms/draftDetail.ts @@ -12,6 +12,7 @@ import { generateTags, generateTitle, } from '../text' +import { pageGoto } from '../utils' type License = 'CC BY-NC-ND 2.0 License' | 'CC0 License' | 'All Rights Reserved' @@ -103,7 +104,7 @@ export class DraftDetailPage { } async createDraft() { - await this.page.goto('/') + await pageGoto(this.page, '/') // Promise.all prevents a race condition between clicking and waiting. await Promise.all([ diff --git a/tests/helpers/poms/home.ts b/tests/helpers/poms/home.ts index 2508de2c51..98186d0526 100644 --- a/tests/helpers/poms/home.ts +++ b/tests/helpers/poms/home.ts @@ -3,6 +3,7 @@ import { Locator, Page } from '@playwright/test' import { TEST_ID } from '~/common/enums' import { waitForAPIResponse } from '../api' +import { pageGoto } from '../utils' export class HomePage { readonly page: Page @@ -26,7 +27,7 @@ export class HomePage { } async goto() { - await this.page.goto('/') + await pageGoto(this.page, '/') } async shuffleSidebarTags() { diff --git a/tests/helpers/poms/notifications.ts b/tests/helpers/poms/notifications.ts index 822c164df3..9be0659af6 100644 --- a/tests/helpers/poms/notifications.ts +++ b/tests/helpers/poms/notifications.ts @@ -1,5 +1,7 @@ import { Page } from '@playwright/test' +import { pageGoto } from '../utils' + export class NotificationsPage { readonly page: Page @@ -8,6 +10,6 @@ export class NotificationsPage { } async goto() { - await this.page.goto('/me/notifications') + await pageGoto(this.page, '/me/notifications') } } diff --git a/tests/helpers/poms/userProfile.ts b/tests/helpers/poms/userProfile.ts index 2e03f6ec22..8fecf11765 100644 --- a/tests/helpers/poms/userProfile.ts +++ b/tests/helpers/poms/userProfile.ts @@ -4,6 +4,7 @@ import { TEST_ID } from '~/common/enums' import { waitForAPIResponse } from '../api' import { generateBio, generateDisplayName } from '../text' +import { pageGoto } from '../utils' export class UserProfilePage { readonly page: Page @@ -66,7 +67,7 @@ export class UserProfilePage { async gotoMeProfile() { // go to homepage - await this.page.goto('/') + await pageGoto(this.page, '/') // click "My Page" button await this.page.getByRole('button', { name: 'My Page' }).click() @@ -80,7 +81,7 @@ export class UserProfilePage { } async goto(userName: string) { - await this.page.goto(`/@${userName}`) + await pageGoto(this.page, `/@${userName}`) } async setCover() { diff --git a/tests/helpers/utils.ts b/tests/helpers/utils.ts new file mode 100644 index 0000000000..670a3341be --- /dev/null +++ b/tests/helpers/utils.ts @@ -0,0 +1,4 @@ +import { Page } from '@playwright/test' + +export const pageGoto = async (page: Page, path: string) => + await page.goto(path, { waitUntil: 'networkidle' }) diff --git a/tests/mutateUser.spec.ts b/tests/mutateUser.spec.ts index 020b7bf78c..dd0b528d9e 100644 --- a/tests/mutateUser.spec.ts +++ b/tests/mutateUser.spec.ts @@ -6,6 +6,7 @@ import { stripSpaces } from '~/common/utils/text' import { authedTest, NotificationsPage, + pageGoto, UserProfilePage, waitForAPIResponse, } from './helpers' @@ -58,7 +59,7 @@ test.describe('User Mutation', () => { const bobDisplayName = await bobProfile.displayName.innerText() // [Bob] Go to Alice's User Profile - await bobPage.goto(alicePage.url()) + await pageGoto(bobPage, alicePage.url()) if ( await bobPage @@ -102,7 +103,7 @@ test.describe('User Mutation', () => { await bobProfile.gotoMeProfile() // [Bob] Go to Alice's User Profile - await bobPage.goto(alicePage.url()) + await pageGoto(bobPage, alicePage.url()) if ( await bobPage @@ -119,6 +120,7 @@ test.describe('User Mutation', () => { await unfollow(bobPage) await bobPage.reload() + await bobPage.waitForLoadState('networkidle') const unfollowCount = await bobPage .getByTestId(TEST_ID.USER_PROFILE_FOLLOWERS_COUNT) @@ -141,7 +143,7 @@ test.describe('User Mutation', () => { await bobProfile.gotoMeProfile() // [Bob] Go to Alice's User Profile - await bobPage.goto(alicePage.url()) + await pageGoto(bobPage, alicePage.url()) await bobPage .getByTestId(TEST_ID.LAYOUT_HEADER) @@ -183,7 +185,7 @@ test.describe('User Mutation', () => { bobPage.getByRole('button', { name: 'Block' }).click(), ]) - await bobPage.goto('/me/settings/blocked') + await pageGoto(bobPage, '/me/settings/blocked') const blockDisplayName = await bobPage .getByTestId(TEST_ID.DIGEST_USER_RICH) @@ -208,7 +210,7 @@ test.describe('User Mutation', () => { ]) // [Bob] Go to Alice's User Profile and Check Block state - await bobPage.goto(alicePage.url()) + await bobPage.goto(alicePage.url(), { waitUntil: 'networkidle' }) await bobPage .getByTestId(TEST_ID.LAYOUT_HEADER) .getByRole('button', { name: 'More Actions' }) @@ -253,11 +255,11 @@ test.describe('User Mutation', () => { expect(stripSpaces(aliceBio)).toBe(stripSpaces(bio)) }) - authedTest( + authedTest.skip( 'Alice switch display language', async ({ alicePage, isMobile }) => { // [Alice] Go to setting page - await alicePage.goto('/') + await pageGoto(alicePage, '/') await alicePage.getByRole('button', { name: 'My Page' }).click() await alicePage .getByRole('link', { name: 'Settings', exact: true }) @@ -277,6 +279,7 @@ test.describe('User Mutation', () => { ]) await alicePage.reload() + await alicePage.waitForLoadState('networkidle') await alicePage.getByRole('button', { name: '介面語言 繁體中文' }).click() await Promise.all([ @@ -292,6 +295,7 @@ test.describe('User Mutation', () => { ]) await alicePage.reload() + await alicePage.waitForLoadState('networkidle') await alicePage.getByRole('button', { name: '界面语言 简体中文' }).click() await Promise.all([ diff --git a/tests/supportArticle.spec.ts b/tests/supportArticle.spec.ts index a5fd458319..c1ba15d3e6 100644 --- a/tests/supportArticle.spec.ts +++ b/tests/supportArticle.spec.ts @@ -8,6 +8,7 @@ import { ArticleDetailPage, authedTest, NotificationsPage, + pageGoto, UserProfilePage, } from './helpers' import { users } from './helpers/auth' @@ -28,7 +29,7 @@ test.describe('Support article', () => { expect(aliceArticleLink).toBeTruthy() // [Bob] Go to Alice's article page - await bobPage.goto(aliceArticleLink) + await pageGoto(bobPage, aliceArticleLink) const aliceArticleDetail = new ArticleDetailPage(bobPage, isMobile) const amount = _random(1, 50, false) @@ -72,7 +73,7 @@ test.describe('Support article', () => { ) // [Alice] Check Transactions History - await alicePage.goto('/me/wallet/transactions') + await pageGoto(alicePage, '/me/wallet/transactions') const aliceTransactionItemAmount = await alicePage .getByTestId(TEST_ID.ME_WALLET_TRANSACTIONS_ITEM) .first()