Merge pull request #244 from v0l/translations-new

feat: break lang
This commit is contained in:
Kieran 2023-02-10 12:44:36 +00:00 committed by GitHub
commit 16f6b031e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 913 additions and 242 deletions

View File

@ -56,7 +56,7 @@
"build": "react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-scripts eject",
"generate-messages": "extract-messages -l=en,es,zh,ja,fr -o src/translations -d en --flat true **/messages.js",
"generate-messages": "formatjs extract **/messages.ts **/*.ts* --ignore='**/*.d.ts' --out-file src/lang.json --id-interpolation-pattern '[sha512:contenthash:base64:6]' --format transifex --flatten true",
"format": "prettier --write .",
"eslint": "eslint .",
"prepare": "husky install"
@ -79,6 +79,7 @@
]
},
"devDependencies": {
"@formatjs/cli": "^6.0.1",
"babel-plugin-react-intl-auto": "^3.3.0",
"customize-cra": "^1.0.0",
"extract-react-intl-messages": "^4.1.1",

View File

@ -1,94 +0,0 @@
import { defineMessages } from "react-intl";
export default defineMessages({
Cancel: "Cancel",
Reply: "Reply",
Send: "Send",
NotePlaceholder: "What's on your mind?",
Back: "Back",
Block: "Block",
Unblock: "Unblock",
MuteCount: "{n} muted",
Mute: "Mute",
MutedAuthor: "This author has been muted",
Others: ` & {n} {n, plural, =1 {other} other {others}}`,
Show: "Show",
Delete: "Delete",
Deleted: "Deleted",
Unmute: "Unmute",
MuteAll: "Mute all",
BlockCount: "{n} blocked",
JustNow: "Just now",
Follow: "Follow",
FollowAll: "Follow all",
Unfollow: "Unfollow",
FollowerCount: "{n} followers",
FollowingCount: "Follows {n}",
FollowsYou: "follows you",
Invoice: "Lightning Invoice",
PayInvoice: "Pay Invoice",
Expired: "Expired",
Pay: "Pay",
Paid: "Paid",
Loading: "Loading...",
Logout: "Logout",
ShowMore: "Show more",
TranslateTo: "Translate to {lang}",
TranslatedFrom: "Translated from {lang}",
TranslationFailed: "Translation failed",
UnknownEventKind: "Unknown event kind: {kind}",
ConfirmDeletion: `Are you sure you want to delete {id}`,
ConfirmRepost: `Are you sure you want to repost: {id}`,
Reactions: "Reactions",
ReactionsCount: "Reactions ({n})",
Share: "Share",
CopyID: "Copy ID",
CopyJSON: "Copy Event JSON",
Dislike: "{n} Dislike",
DislikeAction: "Dislike",
Sats: `{n} {n, plural, =1 {sat} other {sats}}`,
Zapped: "zapped",
OthersZapped: `{n, plural, =0 {} =1 {zapped} other {zapped}}`,
Likes: "Likes ({n})",
Zaps: "Zaps ({n})",
Dislikes: "Dislikes ({n})",
Reposts: "Reposts ({n})",
NoteToSelf: "Note to Self",
Read: "Read",
Write: "Write",
Seconds: "{n} secs",
Milliseconds: "{n} ms",
ShowLatest: "Show latest {n} notes",
LNURLFail: "Failed to load LNURL service",
InvoiceFail: "Failed to load invoice",
Custom: "Custom",
Confirm: "Confirm",
ZapAmount: "Zap amount in sats",
Comment: "Comment",
ZapTarget: "Zap {target} {n} sats",
ZapSats: "Zap {n} sats",
OpenWallet: "Open Wallet",
SendZap: "Send zap",
SendSats: "Send sats",
ToTarget: "{action} to {target}",
ShowReplies: "Show replies",
TooShort: "name too short",
TooLong: "name too long",
Regex: "name has disallowed characters",
Registered: "name is registered",
Disallowed: "name is blocked",
DisalledLater: "name will be available later",
BuyNow: "Buy Now",
NotAvailable: "Not available:",
Buying: "Buying {item}",
OrderPaid: "Order Paid!",
NewNip: "Your new NIP-05 handle is:",
ActivateNow: "Activate Now",
AddToProfile: "Add to Profile",
AccountPage: "account page",
AccountSupport: "Account Support",
GoTo: "Go to",
FindMore: "Find out more info about {service} at {link}",
SavePassword: "Please make sure to save the following password in order to manage your handle in the future",
Handle: "Handle",
});

96
src/Element/messages.ts Normal file
View File

@ -0,0 +1,96 @@
import { defineMessages } from "react-intl";
export default defineMessages({
Cancel: { defaultMessage: "Cancel" },
Reply: { defaultMessage: "Reply" },
Send: { defaultMessage: "Send" },
NotePlaceholder: { defaultMessage: "What's on your mind?" },
Back: { defaultMessage: "Back" },
Block: { defaultMessage: "Block" },
Unblock: { defaultMessage: "Unblock" },
MuteCount: { defaultMessage: "{n} muted" },
Mute: { defaultMessage: "Mute" },
MutedAuthor: { defaultMessage: "This author has been muted" },
Others: { defaultMessage: ` & {n} {n, plural, =1 {other} other {others}}` },
Show: { defaultMessage: "Show" },
Delete: { defaultMessage: "Delete" },
Deleted: { defaultMessage: "Deleted" },
Unmute: { defaultMessage: "Unmute" },
MuteAll: { defaultMessage: "Mute all" },
BlockCount: { defaultMessage: "{n} blocked" },
JustNow: { defaultMessage: "Just now" },
Follow: { defaultMessage: "Follow" },
FollowAll: { defaultMessage: "Follow all" },
Unfollow: { defaultMessage: "Unfollow" },
FollowerCount: { defaultMessage: "{n} followers" },
FollowingCount: { defaultMessage: "Follows {n}" },
FollowsYou: { defaultMessage: "follows you" },
Invoice: { defaultMessage: "Lightning Invoice" },
PayInvoice: { defaultMessage: "Pay Invoice" },
Expired: { defaultMessage: "Expired" },
Pay: { defaultMessage: "Pay" },
Paid: { defaultMessage: "Paid" },
Loading: { defaultMessage: "Loading..." },
Logout: { defaultMessage: "Logout" },
ShowMore: { defaultMessage: "Show more" },
TranslateTo: { defaultMessage: "Translate to {lang}" },
TranslatedFrom: { defaultMessage: "Translated from {lang}" },
TranslationFailed: { defaultMessage: "Translation failed" },
UnknownEventKind: { defaultMessage: "Unknown event kind: {kind}" },
ConfirmDeletion: { defaultMessage: `Are you sure you want to delete {id}` },
ConfirmRepost: { defaultMessage: `Are you sure you want to repost: {id}` },
Reactions: { defaultMessage: "Reactions" },
ReactionsCount: { defaultMessage: "Reactions ({n})" },
Share: { defaultMessage: "Share" },
CopyID: { defaultMessage: "Copy ID" },
CopyJSON: { defaultMessage: "Copy Event JSON" },
Dislike: { defaultMessage: "{n} Dislike" },
DislikeAction: { defaultMessage: "Dislike" },
Sats: { defaultMessage: `{n} {n, plural, =1 {sat} other {sats}}` },
Zapped: { defaultMessage: "zapped" },
OthersZapped: { defaultMessage: `{n, plural, =0 {} =1 {zapped} other {zapped}}` },
Likes: { defaultMessage: "Likes ({n})" },
Zaps: { defaultMessage: "Zaps ({n})" },
Dislikes: { defaultMessage: "Dislikes ({n})" },
Reposts: { defaultMessage: "Reposts ({n})" },
NoteToSelf: { defaultMessage: "Note to Self" },
Read: { defaultMessage: "Read" },
Write: { defaultMessage: "Write" },
Seconds: { defaultMessage: "{n} secs" },
Milliseconds: { defaultMessage: "{n} ms" },
ShowLatest: { defaultMessage: "Show latest {n} notes" },
LNURLFail: { defaultMessage: "Failed to load LNURL service" },
InvoiceFail: { defaultMessage: "Failed to load invoice" },
Custom: { defaultMessage: "Custom" },
Confirm: { defaultMessage: "Confirm" },
ZapAmount: { defaultMessage: "Zap amount in sats" },
Comment: { defaultMessage: "Comment" },
ZapTarget: { defaultMessage: "Zap {target} {n} sats" },
ZapSats: { defaultMessage: "Zap {n} sats" },
OpenWallet: { defaultMessage: "Open Wallet" },
SendZap: { defaultMessage: "Send zap" },
SendSats: { defaultMessage: "Send sats" },
ToTarget: { defaultMessage: "{action} to {target}" },
ShowReplies: { defaultMessage: "Show replies" },
TooShort: { defaultMessage: "name too short" },
TooLong: { defaultMessage: "name too long" },
Regex: { defaultMessage: "name has disallowed characters" },
Registered: { defaultMessage: "name is registered" },
Disallowed: { defaultMessage: "name is blocked" },
DisalledLater: { defaultMessage: "name will be available later" },
BuyNow: { defaultMessage: "Buy Now" },
NotAvailable: { defaultMessage: "Not available:" },
Buying: { defaultMessage: "Buying {item}" },
OrderPaid: { defaultMessage: "Order Paid!" },
NewNip: { defaultMessage: "Your new NIP-05 handle is:" },
ActivateNow: { defaultMessage: "Activate Now" },
AddToProfile: { defaultMessage: "Add to Profile" },
AccountPage: { defaultMessage: "account page" },
AccountSupport: { defaultMessage: "Account Support" },
GoTo: { defaultMessage: "Go to" },
FindMore: { defaultMessage: "Find out more info about {service} at {link}" },
SavePassword: {
defaultMessage: "Please make sure to save the following password in order to manage your handle in the future",
},
Handle: { defaultMessage: "Handle" },
});

View File

@ -1,32 +0,0 @@
import { defineMessages } from "react-intl";
export default defineMessages({
Login: "Login",
Posts: "Posts",
Conversations: "Conversations",
Global: "Global",
NewUsers: "New users page",
NoFollows: "Hmm nothing here.. Checkout {newUsersPage} to follow some recommended nostrich's!",
Notes: "Notes",
Reactions: "Reactions",
Followers: "Followers",
Follows: "Follows",
Zaps: "Zaps",
Muted: "Muted",
Blocked: "Blocked",
Sats: "{n} {n, plural, =1 {sat} other {sats}}",
Following: "Following {n}",
Settings: "Settings",
Search: "Search",
SearchPlaceholder: "Search...",
Messages: "Messages",
MarkAllRead: "Mark All Read",
GetVerified: "Get Verified",
Nip05: `NIP-05 is a DNS based verification spec which helps to validate you as a real user.`,
Nip05Pros: `Getting NIP-05 verified can help:`,
AvoidImpersonators: "Prevent fake accounts from imitating you",
EasierToFind: "Make your profile easier to find and share",
Funding: "Fund developers and platforms providing NIP-05 verification services",
SnortSocialNip: `Our very own NIP-05 verification service, help support the development of this site and get a shiny special badge on our site!`,
NostrPlebsNip: `Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices`,
});

36
src/Pages/messages.ts Normal file
View File

@ -0,0 +1,36 @@
import { defineMessages } from "react-intl";
export default defineMessages({
Login: { defaultMessage: "Login" },
Posts: { defaultMessage: "Posts" },
Conversations: { defaultMessage: "Conversations" },
Global: { defaultMessage: "Global" },
NewUsers: { defaultMessage: "New users page" },
NoFollows: { defaultMessage: "Hmm nothing here.. Checkout {newUsersPage} to follow some recommended nostrich's!" },
Notes: { defaultMessage: "Notes" },
Reactions: { defaultMessage: "Reactions" },
Followers: { defaultMessage: "Followers" },
Follows: { defaultMessage: "Follows" },
Zaps: { defaultMessage: "Zaps" },
Muted: { defaultMessage: "Muted" },
Blocked: { defaultMessage: "Blocked" },
Sats: { defaultMessage: "{n} {n, plural, =1 {sat} other {sats}}" },
Following: { defaultMessage: "Following {n}" },
Settings: { defaultMessage: "Settings" },
Search: { defaultMessage: "Search" },
SearchPlaceholder: { defaultMessage: "Search..." },
Messages: { defaultMessage: "Messages" },
MarkAllRead: { defaultMessage: "Mark All Read" },
GetVerified: { defaultMessage: "Get Verified" },
Nip05: { defaultMessage: `NIP-05 is a DNS based verification spec which helps to validate you as a real user.` },
Nip05Pros: { defaultMessage: `Getting NIP-05 verified can help:` },
AvoidImpersonators: { defaultMessage: "Prevent fake accounts from imitating you" },
EasierToFind: { defaultMessage: "Make your profile easier to find and share" },
Funding: { defaultMessage: "Fund developers and platforms providing NIP-05 verification services" },
SnortSocialNip: {
defaultMessage: `Our very own NIP-05 verification service, help support the development of this site and get a shiny special badge on our site!`,
},
NostrPlebsNip: {
defaultMessage: `Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices`,
},
});

View File

@ -1,57 +0,0 @@
import { defineMessages } from "react-intl";
export default defineMessages({
SaveKeys: "Save your keys!",
SaveKeysHelp:
"Your private key is your password. If you lose this key, you will lose access to your account! Copy it and keep it in a safe place. There is no way to reset your private key.",
YourPubkey: "Your public key",
YourPrivkey: "Your private key",
KeysSaved: "I have saved my keys, continue",
WhatIsSnort: "What is Snort and how does it work?",
WhatIsSnortIntro: `Snort is a Nostr UI, nostr is a decentralised protocol for saving and distributing "notes".`,
WhatIsSnortNotes: `Notes hold text content, the most popular usage of these notes is to store "tweet like" messages.`,
WhatIsSnortExperience: "Snort is designed to have a similar experience to Twitter.",
HowKeysWork: "How do keys work?",
DigitalSignatures: `Nostr uses digital signature technology to provide tamper proof notes which can safely be replicated to many relays to provide redundant storage of your content.`,
TamperProof: `This means that nobody can modify notes which you have created and everybody can easily verify that the notes they are reading are created by you.`,
Bitcoin: `This is the same technology which is used by Bitcoin and has been proven to be extremely secure.`,
Extensions: `It is recommended to use one of the following browser extensions if you are on a desktop computer to secure your key:`,
ExtensionsNostr: `You can also use these extensions to login to most Nostr sites.`,
ImproveSecurity: "Improve login security with browser extensions",
PickUsername: "Pick a username",
UsernameHelp:
"On Nostr, many people have the same username. User names and identity are separate things. You can get a unique identifier in the next step.",
Username: "Username",
UsernamePlaceholder: "e.g. Jack",
PopularAccounts: "Follow some popular accounts",
Skip: "Skip",
Done: "Done!",
ImportTwitter: "Import Twitter Follows (optional)",
TwitterPlaceholder: "Twitter username...",
FindYourFollows: "Find your twitter follows on nostr (Data provided by {provider})",
TwitterUsername: "Twitter username",
FollowsOnNostr: "{username}'s Follows on Nostr",
NoUsersFound: "No nostr users found for {twitterUsername}",
FailedToLoad: "Failed to load follows, please try again later",
Check: "Check",
Next: "Next",
SetupProfile: "Setup your Profile",
Identifier: "Get an identifier (optional)",
IdentifierHelp:
"Getting an identifier helps confirm the real you to people who know you. Many people can have a username @jack, but there is only one jack@cash.app.",
PreventFakes: "Prevent fake accounts from imitating you",
EasierToFind: "Make your profile easier to find and share",
Funding: "Fund developers and platforms providing NIP-05 verification services",
NameSquatting:
"Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
PreviewOnSnort: "Preview on snort",
GetSnortId: "Get a Snort identifier",
GetSnortIdHelp:
"Only Snort and our integration partner identifier gives you a colorful domain name, but you are welcome to use other services too.",
GetPartnerId: "Get a partner identifier",
GetPartnerIdHelp: "We have also partnered with nostrplebs.com to give you more options",
Ready: "You're ready!",
Share: "Share your thoughts with {link}",
World: "the world",
});

81
src/Pages/new/messages.ts Normal file
View File

@ -0,0 +1,81 @@
import { defineMessages } from "react-intl";
export default defineMessages({
SaveKeys: {
defaultMessage: "Save your keys!",
},
SaveKeysHelp: {
defaultMessage:
"Your private key is your password. If you lose this key, you will lose access to your account! Copy it and keep it in a safe place. There is no way to reset your private key.",
},
YourPubkey: { defaultMessage: "Your public key" },
YourPrivkey: { defaultMessage: "Your private key" },
KeysSaved: { defaultMessage: "I have saved my keys, continue" },
WhatIsSnort: { defaultMessage: "What is Snort and how does it work?" },
WhatIsSnortIntro: {
defaultMessage: `Snort is a Nostr UI, nostr is a decentralised protocol for saving and distributing "notes".`,
},
WhatIsSnortNotes: {
defaultMessage: `Notes hold text content, the most popular usage of these notes is to store "tweet like" messages.`,
},
WhatIsSnortExperience: { defaultMessage: "Snort is designed to have a similar experience to Twitter." },
HowKeysWork: { defaultMessage: "How do keys work?" },
DigitalSignatures: {
defaultMessage: `Nostr uses digital signature technology to provide tamper proof notes which can safely be replicated to many relays to provide redundant storage of your content.`,
},
TamperProof: {
defaultMessage: `This means that nobody can modify notes which you have created and everybody can easily verify that the notes they are reading are created by you.`,
},
Bitcoin: {
defaultMessage: `This is the same technology which is used by Bitcoin and has been proven to be extremely secure.`,
},
Extensions: {
defaultMessage: `It is recommended to use one of the following browser extensions if you are on a desktop computer to secure your key:`,
},
ExtensionsNostr: { defaultMessage: `You can also use these extensions to login to most Nostr sites.` },
ImproveSecurity: { defaultMessage: "Improve login security with browser extensions" },
PickUsername: { defaultMessage: "Pick a username" },
UsernameHelp: {
defaultMessage:
"On Nostr, many people have the same username. User names and identity are separate things. You can get a unique identifier in the next step.",
},
Username: { defaultMessage: "Username" },
UsernamePlaceholder: { defaultMessage: "e.g. Jack" },
PopularAccounts: { defaultMessage: "Follow some popular accounts" },
Skip: { defaultMessage: "Skip" },
Done: { defaultMessage: "Done!" },
ImportTwitter: { defaultMessage: "Import Twitter Follows (optional)" },
TwitterPlaceholder: { defaultMessage: "Twitter username..." },
FindYourFollows: { defaultMessage: "Find your twitter follows on nostr (Data provided by {provider})" },
TwitterUsername: { defaultMessage: "Twitter username" },
FollowsOnNostr: { defaultMessage: "{username}'s Follows on Nostr" },
NoUsersFound: { defaultMessage: "No nostr users found for {twitterUsername}" },
FailedToLoad: { defaultMessage: "Failed to load follows, please try again later" },
Check: { defaultMessage: "Check" },
Next: { defaultMessage: "Next" },
SetupProfile: { defaultMessage: "Setup your Profile" },
Identifier: { defaultMessage: "Get an identifier (optional)" },
IdentifierHelp: {
defaultMessage:
"Getting an identifier helps confirm the real you to people who know you. Many people can have a username @jack, but there is only one jack@cash.app.",
},
PreventFakes: { defaultMessage: "Prevent fake accounts from imitating you" },
EasierToFind: { defaultMessage: "Make your profile easier to find and share" },
Funding: { defaultMessage: "Fund developers and platforms providing NIP-05 verification services" },
NameSquatting: {
defaultMessage:
"Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule.",
},
PreviewOnSnort: { defaultMessage: "Preview on snort" },
GetSnortId: { defaultMessage: "Get a Snort identifier" },
GetSnortIdHelp: {
defaultMessage:
"Only Snort and our integration partner identifier gives you a colorful domain name, but you are welcome to use other services too.",
},
GetPartnerId: { defaultMessage: "Get a partner identifier" },
GetPartnerIdHelp: { defaultMessage: "We have also partnered with nostrplebs.com to give you more options" },
Ready: { defaultMessage: "You're ready!" },
Share: { defaultMessage: "Share your thoughts with {link}" },
World: { defaultMessage: "the world" },
});

View File

@ -1,55 +0,0 @@
import { defineMessages } from "react-intl";
export default defineMessages({
Profile: "Profile",
Relays: "Relays",
Owner: "Owner",
Software: "Software",
Contact: "Contact",
Supports: "Supports",
Remove: "Remove",
Preferences: "Preferences",
Donate: "Donate",
LogOut: "Log Out",
Theme: "Theme",
System: "System (Default)",
Light: "Light",
Dark: "Dark",
AutoloadMedia: "Automatically load media",
AutoloadMediaHelp:
"Media in posts will automatically be shown for selected people, otherwise only the link will show",
None: "None",
FollowsOnly: "Follows only",
All: "All",
ImgProxy: "Image proxy service",
ImgProxyHelp: "Use imgproxy to compress images",
ServiceUrl: "Service URL",
ServiceKey: "Service Key",
ServiceSalt: "Service Salt",
EnableReactions: "Enable reactions",
EnableReactionsHelp: "Reactions will be shown on every page, if disabled no reactions will be shown",
ConfirmReposts: "Confirm Reposts",
ConfirmRepostsHelp: "Reposts need to be manually confirmed",
ShowLatest: "Automatically show latest notes",
ShowLatestHelp: "Notes will stream in real time into global and posts tab",
FileUpload: "File upload service",
FileUploadHelp: "Pick which upload service you want to upload attachments to",
Default: "(Default)",
DebugMenus: "Debug Menus",
DebugMenusHelp: `Shows "Copy ID" and "Copy Event JSON" in the context menu on each message`,
EditProfile: "Edit Profile",
About: "About",
LnAddress: "LN Address",
Avatar: "Avatar",
Banner: "Banner",
Edit: "Edit",
PrivateKey: "Your Private Key Is (do not share this with anyone)",
Add: "Add",
AddRelays: "Add Relays",
Name: "Name",
Website: "Website",
Save: "Save",
DisplayName: "Display name",
Buy: "Buy",
Nip05: "NIP-05",
});

View File

@ -0,0 +1,58 @@
import { defineMessages } from "react-intl";
export default defineMessages({
Profile: { defaultMessage: "Profile" },
Relays: { defaultMessage: "Relays" },
Owner: { defaultMessage: "Owner" },
Software: { defaultMessage: "Software" },
Contact: { defaultMessage: "Contact" },
Supports: { defaultMessage: "Supports" },
Remove: { defaultMessage: "Remove" },
Preferences: { defaultMessage: "Preferences" },
Donate: { defaultMessage: "Donate" },
LogOut: { defaultMessage: "Log Out" },
Theme: { defaultMessage: "Theme" },
System: { defaultMessage: "System (Default)" },
Light: { defaultMessage: "Light" },
Dark: { defaultMessage: "Dark" },
AutoloadMedia: { defaultMessage: "Automatically load media" },
AutoloadMediaHelp: {
defaultMessage: "Media in posts will automatically be shown for selected people, otherwise only the link will show",
},
None: { defaultMessage: "None" },
FollowsOnly: { defaultMessage: "Follows only" },
All: { defaultMessage: "All" },
ImgProxy: { defaultMessage: "Image proxy service" },
ImgProxyHelp: { defaultMessage: "Use imgproxy to compress images" },
ServiceUrl: { defaultMessage: "Service URL" },
ServiceKey: { defaultMessage: "Service Key" },
ServiceSalt: { defaultMessage: "Service Salt" },
EnableReactions: { defaultMessage: "Enable reactions" },
EnableReactionsHelp: {
defaultMessage: "Reactions will be shown on every page, if disabled no reactions will be shown",
},
ConfirmReposts: { defaultMessage: "Confirm Reposts" },
ConfirmRepostsHelp: { defaultMessage: "Reposts need to be manually confirmed" },
ShowLatest: { defaultMessage: "Automatically show latest notes" },
ShowLatestHelp: { defaultMessage: "Notes will stream in real time into global and posts tab" },
FileUpload: { defaultMessage: "File upload service" },
FileUploadHelp: { defaultMessage: "Pick which upload service you want to upload attachments to" },
Default: { defaultMessage: "(Default)" },
DebugMenus: { defaultMessage: "Debug Menus" },
DebugMenusHelp: { defaultMessage: `Shows "Copy ID" and "Copy Event JSON" in the context menu on each message` },
EditProfile: { defaultMessage: "Edit Profile" },
About: { defaultMessage: "About" },
LnAddress: { defaultMessage: "LN Address" },
Avatar: { defaultMessage: "Avatar" },
Banner: { defaultMessage: "Banner" },
Edit: { defaultMessage: "Edit" },
PrivateKey: { defaultMessage: "Your Private Key Is (do not share this with anyone)" },
Add: { defaultMessage: "Add" },
AddRelays: { defaultMessage: "Add Relays" },
Name: { defaultMessage: "Name" },
Website: { defaultMessage: "Website" },
Save: { defaultMessage: "Save" },
DisplayName: { defaultMessage: "Display name" },
Buy: { defaultMessage: "Buy" },
Nip05: { defaultMessage: "NIP-05" },
});

632
src/lang.json Normal file
View File

@ -0,0 +1,632 @@
{
"+D82kt": {
"string": "Are you sure you want to repost: {id}"
},
"+vIQlC": {
"string": "Please make sure to save the following password in order to manage your handle in the future"
},
"/4tOwT": {
"string": "Skip"
},
"/JE/X+": {
"string": "Account Support"
},
"/RD0e2": {
"string": "Nostr uses digital signature technology to provide tamper proof notes which can safely be replicated to many relays to provide redundant storage of your content."
},
"/d6vEc": {
"string": "Make your profile easier to find and share"
},
"/n5KSF": {
"string": "{n} ms"
},
"0BUTMv": {
"string": "Search..."
},
"0mch2Y": {
"string": "name has disallowed characters"
},
"0yO7wF": {
"string": "{n} secs"
},
"1A7TZk": {
"string": "What is Snort and how does it work?"
},
"1udzha": {
"string": "Conversations"
},
"2/2yg+": {
"string": "Add"
},
"25V4l1": {
"string": "Banner"
},
"2IFGap": {
"string": "Donate"
},
"2eWW0m": {
"string": "Service Key"
},
"2k0Cv+": {
"string": "Dislikes ({n})"
},
"3cc4Ct": {
"string": "Light"
},
"450Fty": {
"string": "None"
},
"47FYwb": {
"string": "Cancel"
},
"4L2vUY": {
"string": "Your new NIP-05 handle is:"
},
"4OB335": {
"string": "Dislike"
},
"4Vmpt4": {
"string": "Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices"
},
"4Z3t5i": {
"string": "Use imgproxy to compress images"
},
"4rYCjn": {
"string": "Note to Self"
},
"5ykRmX": {
"string": "Send zap"
},
"6ewQqw": {
"string": "Likes ({n})"
},
"7+Domh": {
"string": "Notes"
},
"7hp70g": {
"string": "NIP-05"
},
"7xzTiH": {
"string": "{action} to {target}"
},
"8/vBbP": {
"string": "Reposts ({n})"
},
"89q5wc": {
"string": "Confirm Reposts"
},
"8E9muH": {
"string": "Import Twitter Follows (optional)"
},
"8QDesP": {
"string": "Zap {n} sats"
},
"8g2vyB": {
"string": "name too long"
},
"9+Ddtu": {
"string": "Next"
},
"9HU8vw": {
"string": "Reply"
},
"9SvQep": {
"string": "Follows {n}"
},
"9WRlF4": {
"string": "Send"
},
"9wO4wJ": {
"string": "Lightning Invoice"
},
"ASRK0S": {
"string": "This author has been muted"
},
"Adk34V": {
"string": "Setup your Profile"
},
"AyGauy": {
"string": "Login"
},
"B4C47Y": {
"string": "name too short"
},
"B6+XJy": {
"string": "zapped"
},
"BOUMjw": {
"string": "No nostr users found for {twitterUsername}"
},
"BcGMo+": {
"string": "Notes hold text content, the most popular usage of these notes is to store \"tweet like\" messages."
},
"C81/uG": {
"string": "Logout"
},
"CHTbO3": {
"string": "Failed to load invoice"
},
"Cu/K85": {
"string": "Translated from {lang}"
},
"D3idYv": {
"string": "Settings"
},
"DKnriN": {
"string": "Send sats"
},
"DZzCem": {
"string": "Show latest {n} notes"
},
"Dt/Zd5": {
"string": "Media in posts will automatically be shown for selected people, otherwise only the link will show"
},
"E8a4yq": {
"string": "Follow some popular accounts"
},
"EPYwm7": {
"string": "Your private key is your password. If you lose this key, you will lose access to your account! Copy it and keep it in a safe place. There is no way to reset your private key."
},
"EWyQH5": {
"string": "Global"
},
"Ebl/B2": {
"string": "Translate to {lang}"
},
"EnCOBJ": {
"string": "Buy"
},
"Eqjl5K": {
"string": "Only Snort and our integration partner identifier gives you a colorful domain name, but you are welcome to use other services too."
},
"F+B3x1": {
"string": "We have also partnered with nostrplebs.com to give you more options"
},
"FS3b54": {
"string": "Done!"
},
"FmXUJg": {
"string": "follows you"
},
"G/yZLu": {
"string": "Remove"
},
"GspYR7": {
"string": "{n} Dislike"
},
"H0JBH6": {
"string": "Log Out"
},
"H6/kLh": {
"string": "Order Paid!"
},
"HAlOn1": {
"string": "Name"
},
"HFls6j": {
"string": "name will be available later"
},
"HOzFdo": {
"string": "Muted"
},
"HbefNb": {
"string": "Open Wallet"
},
"IKKHqV": {
"string": "Follows"
},
"INSqIz": {
"string": "Twitter username..."
},
"IUZC+0": {
"string": "This means that nobody can modify notes which you have created and everybody can easily verify that the notes they are reading are created by you."
},
"JCIgkj": {
"string": "Username"
},
"JHEHCk": {
"string": "Zaps ({n})"
},
"JkLHGw": {
"string": "Website"
},
"K3r6DQ": {
"string": "Delete"
},
"K7AkdL": {
"string": "Show"
},
"KQvWvD": {
"string": "Deleted"
},
"KWuDfz": {
"string": "I have saved my keys, continue"
},
"KahimY": {
"string": "Unknown event kind: {kind}"
},
"LgbKvU": {
"string": "Comment"
},
"M3Oirc": {
"string": "Debug Menus"
},
"MBAYRO": {
"string": "Shows \"Copy ID\" and \"Copy Event JSON\" in the context menu on each message"
},
"MI2jkA": {
"string": "Not available:"
},
"MRp6Ly": {
"string": "Twitter username"
},
"MzRYWH": {
"string": "Buying {item}"
},
"N2IrpM": {
"string": "Confirm"
},
"NdOYJJ": {
"string": "Hmm nothing here.. Checkout {newUsersPage} to follow some recommended nostrich's!"
},
"NfNk2V": {
"string": "Your private key"
},
"NndBJE": {
"string": "New users page"
},
"OEW7yJ": {
"string": "Zaps"
},
"OKhRC6": {
"string": "Share"
},
"P61BTu": {
"string": "Copy Event JSON"
},
"P7FD0F": {
"string": "System (Default)"
},
"PCSt5T": {
"string": "Preferences"
},
"Pe0ogR": {
"string": "Theme"
},
"PrsIg7": {
"string": "Reactions will be shown on every page, if disabled no reactions will be shown"
},
"RDZVQL": {
"string": "Check"
},
"RahCRH": {
"string": "Expired"
},
"RhDAoS": {
"string": "Are you sure you want to delete {id}"
},
"RoOyAh": {
"string": "Relays"
},
"Sjo1P4": {
"string": "Custom"
},
"UQ3pOC": {
"string": "On Nostr, many people have the same username. User names and identity are separate things. You can get a unique identifier in the next step."
},
"Up5U7K": {
"string": "Block"
},
"VOjC1i": {
"string": "Pick which upload service you want to upload attachments to"
},
"VlJkSk": {
"string": "{n} muted"
},
"VnXp8Z": {
"string": "Avatar"
},
"Vx7Zm2": {
"string": "How do keys work?"
},
"W9355R": {
"string": "Unmute"
},
"WONP5O": {
"string": "Find your twitter follows on nostr (Data provided by {provider})"
},
"WxthCV": {
"string": "e.g. Jack"
},
"XgWvGA": {
"string": "Reactions"
},
"YDURw6": {
"string": "Service URL"
},
"YXA3AH": {
"string": "Enable reactions"
},
"ZKORll": {
"string": "Activate Now"
},
"a5UPxh": {
"string": "Fund developers and platforms providing NIP-05 verification services"
},
"aWpBzj": {
"string": "Show more"
},
"brAXSu": {
"string": "Pick a username"
},
"bxv59V": {
"string": "Just now"
},
"cWx9t8": {
"string": "Mute all"
},
"cuV2gK": {
"string": "name is registered"
},
"cyR7Kh": {
"string": "Back"
},
"d7d0/x": {
"string": "LN Address"
},
"dOQCL8": {
"string": "Display name"
},
"e7qqly": {
"string": "Mark All Read"
},
"eJj8HD": {
"string": "Get Verified"
},
"eR3YIn": {
"string": "Posts"
},
"filwqD": {
"string": "Read"
},
"flnGvv": {
"string": "What's on your mind?"
},
"g5pX+a": {
"string": "About"
},
"gBdUXk": {
"string": "Save your keys!"
},
"gDZkld": {
"string": "Snort is a Nostr UI, nostr is a decentralised protocol for saving and distributing \"notes\"."
},
"gjBiyj": {
"string": "Loading..."
},
"hCUivF": {
"string": "Notes will stream in real time into global and posts tab"
},
"hK5ZDk": {
"string": "the world"
},
"hLAvqx": {
"string": "Service Salt"
},
"hMzcSq": {
"string": "Messages"
},
"hY4lzx": {
"string": "Supports"
},
"hicxcO": {
"string": "Show replies"
},
"iCqGww": {
"string": "Reactions ({n})"
},
"iDGAbc": {
"string": "Get a Snort identifier"
},
"iGT1eE": {
"string": "Prevent fake accounts from imitating you"
},
"iNWbVV": {
"string": "Handle"
},
"ieGrWo": {
"string": "Follow"
},
"itPgxd": {
"string": "Profile"
},
"izWS4J": {
"string": "Unfollow"
},
"jA3OE/": {
"string": "{n,plural,=1{{n} sat} other{{n} sats}}"
},
"jCA7Cw": {
"string": "Preview on snort"
},
"juhqvW": {
"string": "Improve login security with browser extensions"
},
"jvo0vs": {
"string": "Save"
},
"k2veDA": {
"string": "Write"
},
"k7sKNy": {
"string": "Our very own NIP-05 verification service, help support the development of this site and get a shiny special badge on our site!"
},
"lCILNz": {
"string": "Buy Now"
},
"lD3+8a": {
"string": "Pay"
},
"lgg1KN": {
"string": "account page"
},
"ll3xBp": {
"string": "Image proxy service"
},
"lnaT9F": {
"string": "Following {n}"
},
"lvlPhZ": {
"string": "Pay Invoice"
},
"mKAr6h": {
"string": "Follow all"
},
"mKh2HS": {
"string": "File upload service"
},
"mKhgP9": {
"string": "{n,plural,=0{} =1{zapped} other{zapped}}"
},
"n1xHAH": {
"string": "Get an identifier (optional)"
},
"nDejmx": {
"string": "Unblock"
},
"nN9XTz": {
"string": "Share your thoughts with {link}"
},
"nwZXeh": {
"string": "{n} blocked"
},
"o7e+nJ": {
"string": "{n} followers"
},
"odFwjL": {
"string": "Follows only"
},
"osUr8O": {
"string": "You can also use these extensions to login to most Nostr sites."
},
"oxCa4R": {
"string": "Getting an identifier helps confirm the real you to people who know you. Many people can have a username @jack, but there is only one jack@cash.app."
},
"pzTOmv": {
"string": "Followers"
},
"qUJTsT": {
"string": "Blocked"
},
"qdGuQo": {
"string": "Your Private Key Is (do not share this with anyone)"
},
"qkvYUb": {
"string": "Add to Profile"
},
"qmJ8kD": {
"string": "Translation failed"
},
"r3C4x/": {
"string": "Software"
},
"rT14Ow": {
"string": "Add Relays"
},
"reJ6SM": {
"string": "It is recommended to use one of the following browser extensions if you are on a desktop computer to secure your key:"
},
"rfuMjE": {
"string": "(Default)"
},
"rrfdTe": {
"string": "This is the same technology which is used by Bitcoin and has been proven to be extremely secure."
},
"rudscU": {
"string": "Failed to load follows, please try again later"
},
"sWnYKw": {
"string": "Snort is designed to have a similar experience to Twitter."
},
"svOoEH": {
"string": "Name-squatting and impersonation is not allowed. Snort and our partners reserve the right to terminate your handle (not your account - nobody can take that away) for violating this rule."
},
"tOdNiY": {
"string": "Dark"
},
"thnRpU": {
"string": "Getting NIP-05 verified can help:"
},
"u/vOPu": {
"string": "Paid"
},
"uD/N6c": {
"string": "Zap {target} {n} sats"
},
"uSV4Ti": {
"string": "Reposts need to be manually confirmed"
},
"usAvMr": {
"string": "Edit Profile"
},
"ut+2Cd": {
"string": "Get a partner identifier"
},
"vOKedj": {
"string": "{n,plural,=1{& {n} other} other{& {n} others}}"
},
"vZ4quW": {
"string": "NIP-05 is a DNS based verification spec which helps to validate you as a real user."
},
"wEQDC6": {
"string": "Edit"
},
"wih7iJ": {
"string": "name is blocked"
},
"wqyN/i": {
"string": "Find out more info about {service} at {link}"
},
"wtLjP6": {
"string": "Copy ID"
},
"x82IOl": {
"string": "Mute"
},
"xIoGG9": {
"string": "Go to"
},
"xJ9n2N": {
"string": "Your public key"
},
"xKflGN": {
"string": "{username}''s Follows on Nostr"
},
"xbVgIm": {
"string": "Automatically load media"
},
"xmcVZ0": {
"string": "Search"
},
"zFegDD": {
"string": "Contact"
},
"zINlao": {
"string": "Owner"
},
"zQvVDJ": {
"string": "All"
},
"zcaOTs": {
"string": "Zap amount in sats"
},
"zjJZBd": {
"string": "You're ready!"
},
"zonsdq": {
"string": "Failed to load LNURL service"
},
"zvCDao": {
"string": "Automatically show latest notes"
}
}

View File

@ -1,6 +1,6 @@
git:
filters:
- filter_type: dir
file_format: KEYVALUEJSON
source_file_dir: "src/translations"
- filter_type: file
file_format: STRUCTURED_JSON
source_file: "src/lang.json"
translation_files_expression: "src/translations/<lang>.json"

View File

@ -1224,6 +1224,11 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
"@formatjs/cli@^6.0.1":
version "6.0.1"
resolved "https://registry.yarnpkg.com/@formatjs/cli/-/cli-6.0.1.tgz#dc295e4e726c984e028376759b3a3fef5eb1d933"
integrity sha512-Fezqcvn6EAGOLvq1LuBJ8C1dNKb4AKqdL3Bc61uCNQjjvfJv3fsxgLYFV4pkOlLGE/xzXY+xywEkCxN3Eo7Arw==
"@formatjs/ecma402-abstract@1.14.3":
version "1.14.3"
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.14.3.tgz#6428f243538a11126180d121ce8d4b2f17465738"