chore: run transform script to change qstr to qstrid

This commit is contained in:
Jonathan Rainville 2020-07-06 16:39:55 -04:00 committed by Iuri Matias
parent ef6cbf9d70
commit 1eb1d3d41c
55 changed files with 702 additions and 338 deletions

View File

@ -49,7 +49,8 @@ Rectangle {
leftPadding: 12
rightPadding: Style.current.padding
font.pixelSize: 14
placeholderText: qsTr("Type a message...")
//% "Type a message..."
placeholderText: qsTrId("type-a-message")
Keys.onPressed: onEnter(event)
background: Rectangle {
color: "#00000000"

View File

@ -130,7 +130,8 @@ Item {
StyledText {
id: joinChat
text: qsTr("Join chat")
//% "Join chat"
text: qsTrId("join-chat")
font.pixelSize: 20
color: Style.current.blue
anchors.horizontalCenter: parent.horizontalCenter
@ -145,7 +146,8 @@ Item {
}
StyledText {
text: qsTr("Decline invitation")
//% "Decline invitation"
text: qsTrId("group-chat-decline-invitation")
font.pixelSize: 20
color: Style.current.blue
anchors.horizontalCenter: parent.horizontalCenter
@ -332,7 +334,11 @@ Item {
StyledTextEdit {
id: sentMessage
color: Style.current.darkGrey
text: outgoingStatus == "sent" ? qsTr("Sent") : qsTr("Sending...")
text: outgoingStatus == "sent" ?
//% "Sent"
qsTrId("status-sent") :
//% "Sending..."
qsTrId("sending")
anchors.top: chatTime.top
anchors.bottomMargin: Style.current.padding
anchors.right: chatTime.left

View File

@ -42,12 +42,19 @@ Rectangle {
color: Style.current.darkGrey
text: {
switch(chatsModel.activeChannel.chatType){
case Constants.chatTypePublic: return qsTr("Public chat")
case Constants.chatTypeOneToOne: return (profileModel.isAdded(chatsModel.activeChannel.id) ? qsTr("Contact") : qsTr("Not a contact"))
//% "Public chat"
case Constants.chatTypePublic: return qsTrId("public-chat")
case Constants.chatTypeOneToOne: return (profileModel.isAdded(chatsModel.activeChannel.id) ?
//% "Contact"
qsTrId("chat-is-a-contact") :
//% "Not a contact"
qsTrId("chat-is-not-a-contact"))
case Constants.chatTypePrivateGroupChat:
let cnt = chatsModel.activeChannel.members.rowCount();
if(cnt > 1) return qsTr("%1 members").arg(cnt);
return qsTr("1 member");
//% "%1 members"
if(cnt > 1) return qsTrId("%1-members").arg(cnt);
//% "1 member"
return qsTrId("1-member");
default: return "...";
}
}
@ -94,12 +101,14 @@ Rectangle {
id: chatContextMenu
Action {
icon.source: "../../../img/close.svg"
text: qsTr("Clear history")
//% "Clear history"
text: qsTrId("clear-history")
onTriggered: chatsModel.clearChatHistory(chatsModel.activeChannel.id)
}
Action {
icon.source: "../../../img/leave_chat.svg"
text: qsTr("Leave Chat")
//% "Leave Chat"
text: qsTrId("leave-chat")
onTriggered: chatsModel.leaveActiveChat()
}
}
@ -108,17 +117,20 @@ Rectangle {
id: groupContextMenu
Action {
icon.source: "../../../img/group_chat.svg"
text: qsTr("Group Information")
//% "Group Information"
text: qsTrId("group-information")
onTriggered: groupInfoPopup.open()
}
Action {
icon.source: "../../../img/close.svg"
text: qsTr("Clear history")
//% "Clear history"
text: qsTrId("clear-history")
onTriggered: chatsModel.clearChatHistory(chatsModel.activeChannel.id)
}
Action {
icon.source: "../../../img/leave_chat.svg"
text: qsTr("Leave Group")
//% "Leave Group"
text: qsTrId("leave-group")
onTriggered: chatsModel.leaveActiveChat()
}
}

View File

@ -17,7 +17,8 @@ Item {
StyledText {
id: title
x: 772
text: qsTr("Chat")
//% "Chat"
text: qsTrId("chat")
anchors.top: parent.top
anchors.topMargin: 17
font.bold: true

View File

@ -16,17 +16,20 @@ AddButton {
PopupMenu {
id: newChatMenu
Action {
text: qsTr("Start new chat")
//% "Start new chat"
text: qsTrId("start-new-chat")
icon.source: "../../../img/new_chat.svg"
onTriggered: privateChatPopup.open()
}
Action {
text: qsTr("Start group chat")
//% "Start group chat"
text: qsTrId("start-group-chat")
icon.source: "../../../img/group_chat.svg"
onTriggered: groupChatPopup.open()
}
Action {
text: qsTr("Join public chat")
//% "Join public chat"
text: qsTrId("new-public-group-chat")
icon.source: "../../../img/public_chat.svg"
onTriggered: publicChatPopup.open()
}

View File

@ -73,7 +73,8 @@ Rectangle {
StyledText {
id: lastChatMessage
text: lastMessage ? Emoji.parse(lastMessage, "26x26").replace(/\n|\r/g, ' ') : qsTr("No messages")
//% "No messages"
text: lastMessage ? Emoji.parse(lastMessage, "26x26").replace(/\n|\r/g, ' ') : qsTrId("no-messages")
clip: true // This is needed because emojis don't ellide correctly
anchors.right: contactNumberChatsCircle.left
anchors.rightMargin: Style.current.smallPadding
@ -101,9 +102,17 @@ Rectangle {
if (now.toDateString() == messageDate.toDateString()) {
return (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes)
} else if (yesterday.toDateString() == messageDate.toDateString()) {
return qsTr("Yesterday")
//% "Yesterday"
return qsTrId("yesterday")
} else if (lastWeek.getTime() < messageDate.getTime()) {
let days = [qsTr('Sunday'), qsTr('Monday'), qsTr('Tuesday'), qsTr('Wednesday'), qsTr('Thursday'), qsTr('Friday'), qsTr('Saturday')];
//% "Sunday"
//% "Monday"
//% "Tuesday"
//% "Wednesday"
//% "Thursday"
//% "Friday"
//% "Saturday"
let days = [qsTrId("sunday"), qsTrId("monday"), qsTrId("tuesday"), qsTrId("wednesday"), qsTrId("thursday"), qsTrId("friday"), qsTrId("saturday")];
return days[messageDate.getDay()];
} else {
return messageDate.getMonth()+1+"/"+messageDate.getDay()+"/"+messageDate.getFullYear()

View File

@ -18,7 +18,8 @@ Item {
StyledText {
width: parent.width
text: qsTr("Follow your interests in one of the many Public Chats.")
//% "Follow your interests in one of the many Public Chats."
text: qsTrId("follow-your-interests-in-one-of-the-many-public-chats.")
font.pointSize: 15
wrapMode: Text.WordWrap
verticalAlignment: Text.AlignTop

View File

@ -84,7 +84,8 @@ Rectangle {
StyledText {
visible: isUser
text: qsTr("Admin")
//% "Admin"
text: qsTrId("group-chat-admin")
anchors.right: parent.right
anchors.rightMargin: Style.current.padding
font.pixelSize: 15

View File

@ -39,7 +39,8 @@ ModalPopup {
});
}
data.append({
name: profileModel.profile.username + " " + qsTr("(You)"),
//% "(You)"
name: profileModel.profile.username + " " + qsTrId("(you)"),
pubKey: profileModel.profile.pubKey,
address: "",
identicon: profileModel.profile.identicon,
@ -59,7 +60,8 @@ ModalPopup {
StyledText {
id: lblNewGroup
text: qsTr("New group chat")
//% "New group chat"
text: qsTrId("new-group-chat")
anchors.left: parent.left
font.bold: true
font.pixelSize: 17
@ -69,7 +71,8 @@ ModalPopup {
StyledText {
anchors.top: lblNewGroup.bottom
text: qsTr("%1 / 10 members").arg(memberCount)
//% "%1 / 10 members"
text: qsTrId("%1-/-10-members").arg(memberCount)
color: Style.current.darkGrey
font.pixelSize: 15
}
@ -86,7 +89,8 @@ ModalPopup {
Input {
id: groupName
placeholderText: qsTr("Group name")
//% "Group name"
placeholderText: qsTrId("group-name")
visible: !selectChatMembers
}
@ -219,7 +223,8 @@ ModalPopup {
visible: !selectChatMembers
anchors.bottom: parent.bottom
anchors.right: parent.right
label: qsTr("Create Group Chat")
//% "Create Group Chat"
label: qsTrId("create-group-chat")
disabled: groupName.text === ""
onClicked : doJoin()
}

View File

@ -74,7 +74,8 @@ ModalPopup {
StyledTextEdit {
id: groupName
text: addMembers ? qsTr("Add members") : chatsModel.activeChannel.name
//% "Add members"
text: addMembers ? qsTrId("add-members") : chatsModel.activeChannel.name
anchors.top: parent.top
anchors.topMargin: 18
anchors.left: letterIdenticon.right
@ -89,10 +90,13 @@ ModalPopup {
text: {
let cnt = memberCount;
if(addMembers){
return qsTr("%1 / 10 members").arg(cnt)
//% "%1 / 10 members"
return qsTrId("%1-/-10-members").arg(cnt)
} else {
if(cnt > 1) return qsTr("%1 members").arg(cnt);
return qsTr("1 member");
//% "%1 members"
if(cnt > 1) return qsTrId("%1-members").arg(cnt);
//% "1 member"
return qsTrId("1-member");
}
}
width: 160
@ -208,7 +212,8 @@ ModalPopup {
StyledText {
id: memberLabel
text: qsTr("Members")
//% "Members"
text: qsTrId("members-title")
anchors.left: parent.left
anchors.leftMargin: Style.current.padding
font.pixelSize: 15
@ -276,7 +281,8 @@ ModalPopup {
Column {
StyledText {
visible: model.isAdmin
text: qsTr("Admin")
//% "Admin"
text: qsTrId("group-chat-admin")
width: 100
font.pixelSize: 13
}
@ -295,13 +301,15 @@ ModalPopup {
id: contextMenu
Action {
icon.source: "../../../img/make-admin.svg"
text: qsTr("Make Admin")
//% "Make Admin"
text: qsTrId("make-admin")
onTriggered: chatsModel.makeAdmin(chatsModel.activeChannel.id, model.pubKey)
}
Action {
icon.source: "../../../img/remove-from-group.svg"
icon.color: Style.current.red
text: qsTr("Remove From Group")
//% "Remove From Group"
text: qsTrId("remove-from-group")
onTriggered: chatsModel.kickGroupMember(chatsModel.activeChannel.id, model.pubKey)
}
}
@ -319,7 +327,8 @@ ModalPopup {
StyledButton {
visible: !addMembers
anchors.right: parent.right
label: qsTr("Add members")
//% "Add members"
label: qsTrId("add-members")
anchors.bottom: parent.bottom
onClicked: {
addMembers = true;
@ -356,7 +365,8 @@ ModalPopup {
visible: addMembers
disabled: memberCount <= currMemberCount
anchors.right: parent.right
label: qsTr("Add selected")
//% "Add selected"
label: qsTrId("add-selected")
anchors.bottom: parent.bottom
onClicked: doAddMembers()
}

View File

@ -35,7 +35,8 @@ ModalPopup {
pubKey = chatsModel.resolveENS(chatKey.text)
if(pubKey == ""){
ensUsername.text = qsTr("User not found");
//% "User not found"
ensUsername.text = qsTrId("user-not-found");
} else {
ensUsername.text = chatsModel.formatENSUsername(chatKey.text) + " • " + Utils.compactAddress(pubKey, 4)
}
@ -48,7 +49,8 @@ ModalPopup {
}
id: popup
title: qsTr("New chat")
//% "New chat"
title: qsTrId("new-chat")
onOpened: {
chatKey.text = "";
@ -59,7 +61,8 @@ ModalPopup {
Input {
id: chatKey
placeholderText: qsTr("Enter ENS username or chat key")
//% "Enter ENS username or chat key"
placeholderText: qsTrId("enter-contact-code")
Keys.onEnterPressed: doJoin()
Keys.onReturnPressed: doJoin()
validationError: popup.validationError

View File

@ -127,7 +127,8 @@ ModalPopup {
id: labelEnsUsername
height: isEnsVerified ? 20 : 0
visible: isEnsVerified
text: qsTr("ENS username")
//% "ENS username"
text: qsTrId("ens-username")
font.pixelSize: 13
font.weight: Font.Medium
color: Style.current.darkGrey
@ -162,7 +163,8 @@ ModalPopup {
StyledText {
id: labelChatKey
text: qsTr("Chat key")
//% "Chat key"
text: qsTrId("chat-key")
font.pixelSize: 13
font.weight: Font.Medium
color: Style.current.darkGrey
@ -205,7 +207,8 @@ ModalPopup {
StyledText {
id: labelShareURL
text: qsTr("Share Profile URL")
//% "Share Profile URL"
text: qsTrId("share-profile-url")
font.pixelSize: 13
font.weight: Font.Medium
color: Style.current.darkGrey
@ -243,7 +246,8 @@ ModalPopup {
StyledButton {
anchors.left: parent.left
anchors.leftMargin: 20
label: qsTr("Send Message")
//% "Send Message"
label: qsTrId("send-message")
anchors.bottom: parent.bottom
onClicked: {
profilePopup.close()
@ -260,7 +264,8 @@ ModalPopup {
btnBorderWidth: 1
btnBorderColor: Style.current.grey
textColor: Style.current.red
label: qsTr("Block User")
//% "Block User"
label: qsTrId("block-user")
anchors.bottom: parent.bottom
onClicked: {
chatsModel.blockContact(fromAuthor)
@ -274,9 +279,11 @@ ModalPopup {
id: addToContactsButton
anchors.right: parent.right
anchors.rightMargin: Style.current.smallPadding
label: profileModel.isAdded(
fromAuthor) ? qsTr("Remove Contact") : qsTr(
"Add to contacts")
label: profileModel.isAdded(fromAuthor) ?
//% "Remove Contact"
qsTrId("remove-contact") :
//% "Add to contacts"
qsTrId("add-to-contacts")
anchors.bottom: parent.bottom
onClicked: {
if (profileModel.isAdded(fromAuthor)) {

View File

@ -14,7 +14,8 @@ ModalPopup {
}
id: popup
title: qsTr("Join public chat")
//% "Join public chat"
title: qsTrId("new-public-group-chat")
onOpened: {
channelName.text = "";
@ -30,7 +31,8 @@ ModalPopup {
StyledText {
width: parent.width
font.pixelSize: 15
text: qsTr("A public chat is where you get to hang out with others, make friends and talk about subjects of your interest.")
//% "A public chat is where you get to hang out with others, make friends and talk about subjects of your interest."
text: qsTrId("a-public-chat-is-where-you-get-to-hang-out-with-others,-make-friends-and-talk-about-subjects-of-your-interest.")
wrapMode: Text.WordWrap
verticalAlignment: Text.AlignTop
}
@ -40,7 +42,8 @@ ModalPopup {
id: channelName
anchors.top: description.bottom
anchors.topMargin: Style.current.padding
placeholderText: qsTr("chat-name")
//% "chat-name"
placeholderText: qsTrId("chat-name")
Keys.onEnterPressed: doJoin()
Keys.onReturnPressed: doJoin()
icon: "../../../img/hash.svg"

View File

@ -38,7 +38,8 @@ Popup {
contentItem: Item {
StyledText {
id: groupTitleLabel
text: qsTr("Group name")
//% "Group name"
text: qsTrId("group-name")
anchors.top: parent.top
anchors.left: parent.left
font.pixelSize: 13
@ -55,7 +56,8 @@ Popup {
anchors.leftMargin: Style.current.padding
anchors.right: parent.right
anchors.rightMargin: Style.current.padding
placeholderText: qsTr("Group Name")
//% "Group name"
placeholderText: qsTrId("group-name")
Keys.onEnterPressed: doRename()
Keys.onReturnPressed: doRename()
}
@ -66,7 +68,8 @@ Popup {
anchors.topMargin: 22
anchors.right: parent.right
anchors.rightMargin: Style.current.padding
label: qsTr("Save")
//% "Save"
label: qsTrId("save")
onClicked : doRename()
}
}

View File

@ -67,7 +67,8 @@ Popup {
visible: stickerPackListView.count <= 0
anchors.fill: parent
font.pixelSize: 15
text: qsTr("You don't have any stickers yet")
//% "You don't have any stickers yet"
text: qsTrId("you-don't-have-any-stickers-yet")
lineHeight: 22
horizontalAlignment: Text.AlignHCenter
}
@ -77,7 +78,8 @@ Popup {
visible: stickerPackListView.count > 0 && stickerGrid.count <= 0
anchors.fill: parent
font.pixelSize: 15
text: qsTr("Recently used stickers will appear here")
//% "Recently used stickers will appear here"
text: qsTrId("recently-used-stickers")
lineHeight: 22
horizontalAlignment: Text.AlignHCenter
}
@ -85,7 +87,8 @@ Popup {
StyledButton {
visible: stickerPackListView.count <= 0
label: qsTr("Get Stickers")
//% "Get Stickers"
label: qsTrId("get-stickers")
anchors.top: noStickersContainer.bottom
anchors.topMargin: Style.current.padding
anchors.horizontalCenter: parent.horizontalCenter

View File

@ -96,7 +96,8 @@ Item {
leftPadding: 0
padding: 0
font.pixelSize: 14
placeholderText: qsTr("Type json-rpc message... e.g {\"method\": \"eth_accounts\"}")
//% "Type json-rpc message... e.g {\"method\": \"eth_accounts\"}"
placeholderText: qsTrId("type-json-rpc-message")
anchors.right: rpcSendBtn.left
anchors.rightMargin: 16
anchors.top: parent.top

View File

@ -42,7 +42,8 @@ Rectangle {
StyledText {
id: element1
color: "#000000"
text: qsTr("ENS usernames")
//% "ENS usernames"
text: qsTrId("ens-usernames")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
@ -67,7 +68,8 @@ Rectangle {
StyledText {
id: element2
color: "#000000"
text: qsTr("Contacts")
//% "Contacts"
text: qsTrId("contacts")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
@ -92,7 +94,8 @@ Rectangle {
StyledText {
id: element3
color: "#000000"
text: qsTr("Privacy and security")
//% "Privacy and security"
text: qsTrId("privacy-and-security")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
@ -117,7 +120,8 @@ Rectangle {
StyledText {
color: "#000000"
text: qsTr("Devices")
//% "Devices"
text: qsTrId("devices")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
@ -143,7 +147,8 @@ Rectangle {
StyledText {
id: element4
color: "#000000"
text: qsTr("Sync settings")
//% "Sync settings"
text: qsTrId("sync-settings")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
@ -169,7 +174,8 @@ Rectangle {
StyledText {
id: element5
color: "#000000"
text: qsTr("Language settings")
//% "Language settings"
text: qsTrId("language-settings")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
@ -195,7 +201,8 @@ Rectangle {
StyledText {
id: element6
color: "#000000"
text: qsTr("Notifications settings")
//% "Notifications settings"
text: qsTrId("notifications-settings")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
@ -220,7 +227,8 @@ Rectangle {
StyledText {
id: element7
color: "#000000"
text: qsTr("Advanced settings")
//% "Advanced settings"
text: qsTrId("advanced-settings")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
@ -246,7 +254,8 @@ Rectangle {
StyledText {
id: element8
color: "#000000"
text: qsTr("Need help?")
//% "Need help?"
text: qsTrId("need-help")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
@ -271,7 +280,8 @@ Rectangle {
StyledText {
id: element9
color: "#000000"
text: qsTr("About")
//% "About"
text: qsTrId("about-app")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
@ -296,7 +306,8 @@ Rectangle {
StyledText {
id: element10
color: "#000000"
text: qsTr("Sign out")
//% "Sign out"
text: qsTrId("sign-out")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter

View File

@ -13,7 +13,8 @@ Item {
StyledText {
id: element9
text: qsTr("About the app")
//% "About the app"
text: qsTrId("about-the-app")
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: parent.top
@ -24,7 +25,8 @@ Item {
StyledText {
id: element10
text: qsTr("Status Desktop")
//% "Status Desktop"
text: qsTrId("status-desktop")
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: element9.top
@ -34,7 +36,8 @@ Item {
}
StyledText {
id: element11
text: qsTr("Version: alpha.0")
//% "Version: alpha.0"
text: qsTrId("version:-alpha.0")
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: element10.top
@ -44,7 +47,8 @@ Item {
}
StyledText {
id: element12
text: qsTr("Node Version: %1").arg(profileModel.nodeVersion())
//% "Node Version: %1"
text: qsTrId("node-version:-%1").arg(profileModel.nodeVersion())
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: element11.top
@ -85,7 +89,8 @@ Item {
StyledText {
id: warningMessage
x: 772
text: qsTr("Thanks for trying Status Desktop! Please note that this is an alpha release and we advise you that using this app should be done for testing purposes only and you assume the full responsibility for all risks concerning your data and funds. Status makes no claims of security or integrity of funds in these builds.")
//% "Thanks for trying Status Desktop! Please note that this is an alpha release and we advise you that using this app should be done for testing purposes only and you assume the full responsibility for all risks concerning your data and funds. Status makes no claims of security or integrity of funds in these builds."
text: qsTrId("thanks-for-trying-status-desktop!-please-note-that-this-is-an-alpha-release-and-we-advise-you-that-using-this-app-should-be-done-for-testing-purposes-only-and-you-assume-the-full-responsibility-for-all-risks-concerning-your-data-and-funds.-status-makes-no-claims-of-security-or-integrity-of-funds-in-these-builds.")
font.bold: true
anchors.top: faqLink.bottom
anchors.topMargin: 30

View File

@ -13,7 +13,8 @@ Item {
StyledText {
id: title
text: qsTr("Advanced settings")
//% "Advanced settings"
text: qsTrId("advanced-settings")
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: parent.top
@ -39,7 +40,8 @@ Item {
anchors.left: parent.left
anchors.leftMargin: 24
StyledText {
text: qsTr("Theme (Light - Dark)")
//% "Theme (Light - Dark)"
text: qsTrId("theme-(light---dark)")
}
Switch {
checked: themeSetting.isDarkTheme
@ -56,7 +58,8 @@ Item {
anchors.left: parent.left
anchors.leftMargin: 24
StyledText {
text: qsTr("Wallet Tab")
//% "Wallet Tab"
text: qsTrId("wallet-tab")
}
Switch {
checked: walletBtn.enabled
@ -65,7 +68,8 @@ Item {
}
}
StyledText {
text: qsTr("NOT RECOMMENDED - Use at your own risk")
//% "NOT RECOMMENDED - Use at your own risk"
text: qsTrId("not-recommended---use-at-your-own-risk")
}
}
@ -76,7 +80,8 @@ Item {
anchors.left: parent.left
anchors.leftMargin: 24
StyledText {
text: qsTr("Browser Tab")
//% "Browser Tab"
text: qsTrId("browser-tab")
}
Switch {
checked: browserBtn.enabled
@ -85,7 +90,8 @@ Item {
}
}
StyledText {
text: qsTr("experimental (web3 not supported yet)")
//% "experimental (web3 not supported yet)"
text: qsTrId("experimental-(web3-not-supported-yet)")
}
}
@ -95,7 +101,8 @@ Item {
anchors.left: parent.left
anchors.leftMargin: 24
StyledText {
text: qsTr("Node Management Tab")
//% "Node Management Tab"
text: qsTrId("node-management-tab")
}
Switch {
checked: nodeBtn.enabled
@ -104,7 +111,8 @@ Item {
}
}
StyledText {
text: qsTr("under development")
//% "under development"
text: qsTrId("under-development")
}
}
}

View File

@ -7,7 +7,8 @@ import "../../../../shared"
ModalPopup {
id: popup
title: qsTr("Write down your seed phrase")
//% "Write down your seed phrase"
title: qsTrId("write-down-your-seed-phrase")
Item {
@ -80,7 +81,8 @@ ModalPopup {
Text {
id: confirmationsInfo
text: qsTr("With this 12 words you can always get your key back. Write it down. Keep it safe, offline, and separate from this device.")
//% "With this 12 words you can always get your key back. Write it down. Keep it safe, offline, and separate from this device."
text: qsTrId("with-this-12-words-you-can-always-get-your-key-back.-write-it-down.-keep-it-safe,-offline,-and-separate-from-this-device.")
font.pixelSize: 14
font.weight: Font.Medium
color: Style.current.darkGrey
@ -94,7 +96,8 @@ ModalPopup {
}
footer: StyledButton {
label: qsTr("Done")
//% "Done"
label: qsTrId("done")
anchors.right: parent.right
anchors.rightMargin: Style.current.smallPadding
anchors.bottom: parent.bottom

View File

@ -14,7 +14,8 @@ Item {
StyledText {
id: element2
text: qsTr("Contacts")
//% "Contacts"
text: qsTrId("contacts")
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: parent.top

View File

@ -16,7 +16,8 @@ Item {
StyledText {
id: sectionTitle
text: qsTr("Devices")
//% "Devices"
text: qsTrId("devices")
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: parent.top
@ -37,13 +38,15 @@ Item {
StyledText {
id: deviceNameLbl
text: qsTr("Please set a name for your device.")
//% "Please set a name for your device."
text: qsTrId("pairing-please-set-a-name")
font.pixelSize: 14
}
Input {
id: deviceNameTxt
placeholderText: qsTr("Specify a name")
//% "Specify a name"
placeholderText: qsTrId("specify-name")
anchors.top: deviceNameLbl.bottom
anchors.topMargin: Style.current.padding
}
@ -53,7 +56,8 @@ Item {
anchors.top: deviceNameTxt.bottom
anchors.topMargin: 10
anchors.right: deviceNameTxt.right
label: qsTr("Continue")
//% "Continue"
label: qsTrId("continue")
disabled: deviceNameTxt.text === ""
onClicked : profileModel.setDeviceName(deviceNameTxt.text.trim())
}
@ -86,7 +90,8 @@ Item {
StyledText {
id: advertiseDeviceTitle
text: qsTr("Advertise device")
//% "Advertise device"
text: qsTrId("pair-this-device")
font.pixelSize: 18
font.weight: Font.Bold
color: Style.current.blue
@ -96,7 +101,8 @@ Item {
StyledText {
id: advertiseDeviceDesk
text: qsTr("Pair your devices to sync contacts and chats between them")
//% "Pair your devices to sync contacts and chats between them"
text: qsTrId("pair-this-device-description")
font.pixelSize: 14
anchors.top: advertiseDeviceTitle.bottom
anchors.topMargin: 6
@ -114,7 +120,8 @@ Item {
StyledText {
anchors.top: advertiseDevice.bottom
anchors.topMargin: Style.current.padding
text: qsTr("Learn more")
//% "Learn more"
text: qsTrId("learn-more")
font.pixelSize: 16
color: Style.current.blue
anchors.left: parent.left
@ -131,7 +138,11 @@ Item {
anchors.bottom: syncContainer.bottom
anchors.bottomMargin: Style.current.padding
anchors.horizontalCenter: parent.horizontalCenter
label: isSyncing ? qsTr("Syncing...") : qsTr("Sync all devices")
label: isSyncing ?
//% "Syncing..."
qsTrId("sync-in-progress") :
//% "Sync all devices"
qsTrId("sync-all-devices")
disabled: isSyncing
onClicked : {
isSyncing = true;

View File

@ -13,7 +13,8 @@ Item {
StyledText {
id: element1
text: qsTr("ENS usernames")
//% "ENS usernames"
text: qsTrId("ens-usernames")
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: parent.top

View File

@ -27,7 +27,8 @@ Item {
StyledText {
id: element8
text: qsTr("Help menus: FAQ, Glossary, etc.")
//% "Help menus: FAQ, Glossary, etc."
text: qsTrId("help-menus:-faq,-glossary,-etc.")
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: parent.top

View File

@ -13,7 +13,8 @@ Item {
StyledText {
id: element5
text: qsTr("Language settings")
//% "Language settings"
text: qsTrId("language-settings")
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: parent.top

View File

@ -13,7 +13,8 @@ Item {
StyledText {
id: element6
text: qsTr("Notifications settings")
//% "Notifications settings"
text: qsTrId("notifications-settings")
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: parent.top

View File

@ -13,7 +13,8 @@ Item {
StyledText {
id: element3
text: qsTr("Privacy and security settings")
//% "Privacy and security settings"
text: qsTrId("privacy-and-security-settings")
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: parent.top
@ -24,7 +25,8 @@ Item {
Text {
id: labelSecurity
text: qsTr("Security")
//% "Security"
text: qsTrId("security")
font.pixelSize: 13
font.weight: Font.Medium
color: Style.current.darkGrey
@ -42,7 +44,8 @@ Item {
height: children[0].height
width: children[0].width
Text {
text: qsTr("Backup Seed Phrase")
//% "Backup Seed Phrase"
text: qsTrId("backup-seed-phrase")
font.pixelSize: 14
}
MouseArea {

View File

@ -13,7 +13,8 @@ Item {
StyledText {
id: txtTitle
text: qsTr("Sign out controls")
//% "Sign out controls"
text: qsTrId("sign-out-controls")
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: parent.top
@ -26,8 +27,10 @@ Item {
id: btnLogout
anchors.top: txtTitle.bottom
anchors.topMargin: Style.current.padding
// label: qsTr("Logout")
label: qsTr("Exit")
//% "Logout"
// label: qsTrId("logout")
//% "Exit"
label: qsTrId("exit")
onClicked: {
// profileModel.logout();

View File

@ -13,7 +13,8 @@ Item {
StyledText {
id: element4
text: qsTr("Sync settings")
//% "Sync settings"
text: qsTrId("sync-settings")
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: parent.top

View File

@ -11,7 +11,8 @@ ModalPopup {
property var changeSelectedAccount
id: popup
// TODO add icon when we have that feature
title: qsTr("Status account settings")
//% "Status account settings"
title: qsTrId("status-account-settings")
height: 635
property int marginBetweenInputs: 35
@ -20,7 +21,8 @@ ModalPopup {
function validate() {
if (accountNameInput.text === "") {
accountNameValidationError = qsTr("You need to enter an account name")
//% "You need to enter an account name"
accountNameValidationError = qsTrId("you-need-to-enter-an-account-name")
} else {
accountNameValidationError = ""
}
@ -40,8 +42,10 @@ ModalPopup {
Input {
id: accountNameInput
placeholderText: qsTr("Enter an account name...")
label: qsTr("Account name")
//% "Enter an account name..."
placeholderText: qsTrId("enter-an-account-name...")
//% "Account name"
label: qsTrId("account-name")
text: currentAccount.name
validationError: popup.accountNameValidationError
}
@ -51,7 +55,8 @@ ModalPopup {
anchors.top: accountNameInput.bottom
anchors.topMargin: marginBetweenInputs
bgColor: selectedColor
label: qsTr("Account color")
//% "Account color"
label: qsTrId("account-color")
selectOptions: Constants.accountColors.map(color => {
return {
text: "",
@ -66,14 +71,18 @@ ModalPopup {
TextWithLabel {
id: typeText
label: qsTr("Type")
//% "Type"
label: qsTrId("type")
text: {
var result = ""
switch (currentAccount.walletType) {
case Constants.watchWalletType: result = qsTr("Watch-only"); break;
//% "Watch-only"
case Constants.watchWalletType: result = qsTrId("watch-only"); break;
case Constants.keyWalletType:
case Constants.seedWalletType: result = qsTr("Off Status tree"); break;
default: result = qsTr("On Status tree")
//% "Off Status tree"
case Constants.seedWalletType: result = qsTrId("off-status-tree"); break;
//% "On Status tree"
default: result = qsTrId("on-status-tree")
}
return result
}
@ -83,7 +92,8 @@ ModalPopup {
TextWithLabel {
id: addressText
label: qsTr("Wallet address")
//% "Wallet address"
label: qsTrId("wallet-address")
text: currentAccount.address
fontFamily: Style.current.fontHexRegular.name
anchors.top: typeText.bottom
@ -92,7 +102,8 @@ ModalPopup {
TextWithLabel {
id: pathText
label: qsTr("Derivation path")
//% "Derivation path"
label: qsTrId("derivation-path")
text: currentAccount.path
anchors.top: addressText.bottom
anchors.topMargin: marginBetweenInputs
@ -101,8 +112,10 @@ ModalPopup {
TextWithLabel {
id: storageText
visible: currentAccount.walletType !== Constants.watchWalletType
label: qsTr("Storage")
text: qsTr("This device")
//% "Storage"
label: qsTrId("storage")
//% "This device"
text: qsTrId("this-device")
anchors.top: pathText.bottom
anchors.topMargin: marginBetweenInputs
}
@ -113,7 +126,8 @@ ModalPopup {
anchors.top: parent.top
anchors.right: saveBtn.left
anchors.rightMargin: Style.current.padding
label: qsTr("Delete account")
//% "Delete account"
label: qsTrId("delete-account")
btnColor: Style.current.white
textColor: Style.current.red
@ -127,8 +141,10 @@ ModalPopup {
MessageDialog {
id: confirmationDialog
title: qsTr("Are you sure?")
text: qsTr("A deleted account cannot be retrieved later. Only press yes if you backed up your key/seed or don't care about this account anymore")
//% "Are you sure?"
title: qsTrId("are-you-sure?")
//% "A deleted account cannot be retrieved later. Only press yes if you backed up your key/seed or don't care about this account anymore"
text: qsTrId("a-deleted-account-cannot-be-retrieved-later.-only-press-yes-if-you-backed-up-your-key/seed-or-don't-care-about-this-account-anymore")
icon: StandardIcon.Warning
standardButtons: StandardButton.Yes | StandardButton.No
onAccepted: {
@ -155,7 +171,8 @@ ModalPopup {
anchors.top: parent.top
anchors.right: parent.right
anchors.rightMargin: Style.current.padding
label: qsTr("Save changes")
//% "Save changes"
label: qsTrId("save-changes")
disabled: accountNameInput.text === ""

View File

@ -7,7 +7,8 @@ import "../../../sounds"
ModalPopup {
id: popup
title: qsTr("add custom token")
//% "Add custom token"
title: qsTrId("add-custom-token")
height: 630
property int marginBetweenInputs: 35
@ -24,31 +25,38 @@ ModalPopup {
Input {
id: addressInput
placeholderText: qsTr("Enter contract address...")
label: qsTr("Contract address")
//% "Enter contract address..."
placeholderText: qsTrId("enter-contract-address...")
//% "Contract address"
label: qsTrId("contract-address")
}
Input {
id: nameInput
anchors.top: addressInput.bottom
anchors.topMargin: marginBetweenInputs
placeholderText: qsTr("The name of your token...")
label: qsTr("Name")
//% "The name of your token..."
placeholderText: qsTrId("the-name-of-your-token...")
//% "Name"
label: qsTrId("name")
}
Input {
id: symbolInput
anchors.top: nameInput.bottom
anchors.topMargin: marginBetweenInputs
placeholderText: qsTr("ABC")
label: qsTr("Symbol")
//% "ABC"
placeholderText: qsTrId("abc")
//% "Symbol"
label: qsTrId("symbol")
}
Input {
id: decimalsInput
anchors.top: symbolInput.bottom
anchors.topMargin: marginBetweenInputs
label: qsTr("Decimals")
//% "Decimals"
label: qsTrId("decimals")
text: "18"
}
@ -60,7 +68,8 @@ ModalPopup {
anchors.topMargin: Style.current.padding
anchors.right: parent.right
anchors.rightMargin: Style.current.padding
label: qsTr("Add")
//% "Add"
label: qsTrId("add")
disabled: addressInput.text === "" || nameInput.text === "" || symbolInput.text === "" || decimalsInput.text === ""

View File

@ -5,7 +5,8 @@ import "../../../shared"
Item {
StyledText {
visible: walletModel.collectibles.rowCount() === 0
text: qsTr("No collectibles in this account")
//% "No collectibles in this account"
text: qsTrId("no-collectibles-in-this-account")
}
Component {

View File

@ -32,7 +32,8 @@ Item {
id: title
x: 143
y: 16
text: qsTr("Wallet")
//% "Wallet"
text: qsTrId("wallet")
anchors.top: parent.top
anchors.topMargin: Style.current.padding
anchors.horizontalCenter: parent.horizontalCenter

View File

@ -9,7 +9,8 @@ import "./components"
ModalPopup {
id: popup
title: qsTr("Send")
//% "Send"
title: qsTrId("command-button-send")
height: 600
onOpened: {
@ -53,7 +54,8 @@ ModalPopup {
anchors.top: parent.top
anchors.right: parent.right
anchors.rightMargin: Style.current.padding
label: qsTr("Send")
//% "Send"
label: qsTrId("command-button-send")
onClicked: {
sendModalContent.send()

View File

@ -6,7 +6,8 @@ import "./components"
ModalPopup {
id: popup
title: qsTr("Add/Remove Tokens")
//% "Add/Remove Tokens"
title: qsTrId("add/remove-tokens")
TokenSettingsModalContent {
@ -16,7 +17,8 @@ ModalPopup {
footer: StyledButton {
anchors.right: parent.right
anchors.rightMargin: Style.current.padding
label: qsTr("Add custom token")
//% "Add custom token"
label: qsTrId("add-custom-token")
anchors.top: parent.top
onClicked: {
popup.close()

View File

@ -184,21 +184,24 @@ Item {
id: newSettingsMenu
width: 280
Action {
text: qsTr("Account Settings")
//% "Account Settings"
text: qsTrId("account-settings")
icon.source: "../../img/walletIcon.svg"
onTriggered: {
accountSettingsModal.open()
}
}
Action {
text: qsTr("Add/Remove Tokens")
//% "Add/Remove Tokens"
text: qsTrId("add/remove-tokens")
icon.source: "../../img/add_remove_token.svg"
onTriggered: {
tokenSettingsModal.open()
}
}
Action {
text: qsTr("Set Currency")
//% "Set Currency"
text: qsTrId("set-currency")
icon.source: "../../img/set_currency.svg"
onTriggered: {
setCurrencyModal.open()

View File

@ -27,28 +27,32 @@ AddButton {
id: newAccountMenu
width: 280
Action {
text: qsTr("Generate an account")
//% "Generate an account"
text: qsTrId("generate-a-new-account")
icon.source: "../../../img/generate_account.svg"
onTriggered: {
generateAccountModal.open()
}
}
Action {
text: qsTr("Add a watch-only address")
//% "Add a watch-only address"
text: qsTrId("add-a-watch-account")
icon.source: "../../../img/add_watch_only.svg"
onTriggered: {
addWatchOnlyAccountModal.open()
}
}
Action {
text: qsTr("Enter a seed phrase")
//% "Enter a seed phrase"
text: qsTrId("enter-a-seed-phrase")
icon.source: "../../../img/enter_seed_phrase.svg"
onTriggered: {
addAccountWithSeedModal.open()
}
}
Action {
text: qsTr("Enter a private key")
//% "Enter a private key"
text: qsTrId("enter-a-private-key")
icon.source: "../../../img/enter_private_key.svg"
onTriggered: {
addAccountWithPrivateKeydModal.open()

View File

@ -6,7 +6,8 @@ import "../../../../sounds"
ModalPopup {
id: popup
title: qsTr("Add account from private key")
//% "Add account from private key"
title: qsTrId("add-private-key-account")
height: 600
property int marginBetweenInputs: 38
@ -18,23 +19,28 @@ ModalPopup {
function validate() {
if (passwordInput.text === "") {
passwordValidationError = qsTr("You need to enter a password")
//% "You need to enter a password"
passwordValidationError = qsTrId("you-need-to-enter-a-password")
} else if (passwordInput.text.length < 4) {
passwordValidationError = qsTr("Password needs to be 4 characters or more")
//% "Password needs to be 4 characters or more"
passwordValidationError = qsTrId("password-needs-to-be-4-characters-or-more")
} else {
passwordValidationError = ""
}
if (accountNameInput.text === "") {
accountNameValidationError = qsTr("You need to enter an account name")
//% "You need to enter an account name"
accountNameValidationError = qsTrId("you-need-to-enter-an-account-name")
} else {
accountNameValidationError = ""
}
if (accountPKeyInput.text === "") {
privateKeyValidationError = qsTr("You need to enter a private key")
//% "You need to enter a private key"
privateKeyValidationError = qsTrId("you-need-to-enter-a-private-key")
} else if (!Utils.isPrivateKey(accountPKeyInput.text)) {
privateKeyValidationError = qsTr("Enter a valid private key (64 characters hexadecimal string)")
//% "Enter a valid private key (64 characters hexadecimal string)"
privateKeyValidationError = qsTrId("enter-a-valid-private-key-(64-characters-hexadecimal-string)")
} else {
privateKeyValidationError = ""
}
@ -55,8 +61,10 @@ ModalPopup {
Input {
id: passwordInput
placeholderText: qsTr("Enter your password…")
label: qsTr("Password")
//% "Enter your password"
placeholderText: qsTrId("enter-your-password…")
//% "Password"
label: qsTrId("password")
textField.echoMode: TextInput.Password
validationError: popup.passwordValidationError
}
@ -66,8 +74,10 @@ ModalPopup {
id: accountPKeyInput
anchors.top: passwordInput.bottom
anchors.topMargin: marginBetweenInputs
placeholderText: qsTr("Paste the contents of your private key")
label: qsTr("Private key")
//% "Paste the contents of your private key"
placeholderText: qsTrId("paste-the-contents-of-your-private-key")
//% "Private key"
label: qsTrId("private-key")
customHeight: 88
validationError: popup.privateKeyValidationError
}
@ -76,8 +86,10 @@ ModalPopup {
id: accountNameInput
anchors.top: accountPKeyInput.bottom
anchors.topMargin: marginBetweenInputs
placeholderText: qsTr("Enter an account name...")
label: qsTr("Account name")
//% "Enter an account name..."
placeholderText: qsTrId("enter-an-account-name...")
//% "Account name"
label: qsTrId("account-name")
validationError: popup.accountNameValidationError
}
@ -86,7 +98,8 @@ ModalPopup {
anchors.top: accountNameInput.bottom
anchors.topMargin: marginBetweenInputs
bgColor: selectedColor
label: qsTr("Account color")
//% "Account color"
label: qsTrId("account-color")
selectOptions: Constants.accountColors.map(color => {
return {
text: "",
@ -103,7 +116,11 @@ ModalPopup {
anchors.top: parent.top
anchors.right: parent.right
anchors.rightMargin: Style.current.padding
label: loading ? qsTr("Loading...") : qsTr("Add account >")
label: loading ?
//% "Loading..."
qsTrId("loading") :
//% "Add account >"
qsTrId("add-account")
disabled: loading || passwordInput.text === "" || accountNameInput.text === "" || accountPKeyInput.text === ""

View File

@ -17,23 +17,28 @@ ModalPopup {
function validate() {
if (passwordInput.text === "") {
passwordValidationError = qsTr("You need to enter a password")
//% "You need to enter a password"
passwordValidationError = qsTrId("you-need-to-enter-a-password")
} else if (passwordInput.text.length < 4) {
passwordValidationError = qsTr("Password needs to be 4 characters or more")
//% "Password needs to be 4 characters or more"
passwordValidationError = qsTrId("password-needs-to-be-4-characters-or-more")
} else {
passwordValidationError = ""
}
if (accountNameInput.text === "") {
accountNameValidationError = qsTr("You need to enter an account name")
//% "You need to enter an account name"
accountNameValidationError = qsTrId("you-need-to-enter-an-account-name")
} else {
accountNameValidationError = ""
}
if (accountSeedInput.text === "") {
seedValidationError = qsTr("You need to enter a seed phrase")
//% "You need to enter a seed phrase"
seedValidationError = qsTrId("you-need-to-enter-a-seed-phrase")
} else if (!Utils.isMnemonic(accountSeedInput.text)) {
seedValidationError = qsTr("Enter a valid mnemonic")
//% "Enter a valid mnemonic"
seedValidationError = qsTrId("enter-a-valid-mnemonic")
} else {
seedValidationError = ""
}
@ -46,7 +51,8 @@ ModalPopup {
passwordInput.forceActiveFocus(Qt.MouseFocusReason)
}
title: qsTr("Add account with a seed phrase")
//% "Add account with a seed phrase"
title: qsTrId("add-seed-account")
Item {
ErrorSound {
@ -56,8 +62,10 @@ ModalPopup {
Input {
id: passwordInput
placeholderText: qsTr("Enter your password…")
label: qsTr("Password")
//% "Enter your password"
placeholderText: qsTrId("enter-your-password…")
//% "Password"
label: qsTrId("password")
textField.echoMode: TextInput.Password
validationError: popup.passwordValidationError
}
@ -67,8 +75,10 @@ ModalPopup {
id: accountSeedInput
anchors.top: passwordInput.bottom
anchors.topMargin: marginBetweenInputs
placeholderText: qsTr("Enter your seed phrase, separate words with commas or spaces...")
label: qsTr("Seed phrase")
//% "Enter your seed phrase, separate words with commas or spaces..."
placeholderText: qsTrId("enter-your-seed-phrase,-separate-words-with-commas-or-spaces...")
//% "Seed phrase"
label: qsTrId("recovery-phrase")
customHeight: 88
validationError: popup.seedValidationError
}
@ -77,8 +87,10 @@ ModalPopup {
id: accountNameInput
anchors.top: accountSeedInput.bottom
anchors.topMargin: marginBetweenInputs
placeholderText: qsTr("Enter an account name...")
label: qsTr("Account name")
//% "Enter an account name..."
placeholderText: qsTrId("enter-an-account-name...")
//% "Account name"
label: qsTrId("account-name")
validationError: popup.accountNameValidationError
}
@ -87,7 +99,8 @@ ModalPopup {
anchors.top: accountNameInput.bottom
anchors.topMargin: marginBetweenInputs
bgColor: selectedColor
label: qsTr("Account color")
//% "Account color"
label: qsTrId("account-color")
selectOptions: Constants.accountColors.map(color => {
return {
text: "",
@ -104,7 +117,11 @@ ModalPopup {
anchors.top: parent.top
anchors.right: parent.right
anchors.rightMargin: Style.current.padding
label: loading ? qsTr("Loading...") : qsTr("Add account >")
label: loading ?
//% "Loading..."
qsTrId("loading") :
//% "Add account >"
qsTrId("add-account")
disabled: loading || passwordInput.text === "" || accountNameInput.text === "" || accountSeedInput.text === ""

View File

@ -6,7 +6,8 @@ import "../../../../sounds"
ModalPopup {
id: popup
title: qsTr("Add a watch-only account")
//% "Add a watch-only account"
title: qsTrId("add-watch-account")
property int marginBetweenInputs: 38
property string selectedColor: Constants.accountColors[0]
@ -16,15 +17,18 @@ ModalPopup {
function validate() {
if (addressInput.text === "") {
addressError = qsTr("You need to enter an address")
//% "You need to enter an address"
addressError = qsTrId("you-need-to-enter-an-address")
} else if (!Utils.isAddress(addressInput.text)) {
addressError = qsTr("This needs to be a valid address (starting with 0x)")
//% "This needs to be a valid address (starting with 0x)"
addressError = qsTrId("this-needs-to-be-a-valid-address-(starting-with-0x)")
} else {
addressError = ""
}
if (accountNameInput.text === "") {
accountNameValidationError = qsTr("You need to enter an account name")
//% "You need to enter an account name"
accountNameValidationError = qsTrId("you-need-to-enter-an-account-name")
} else {
accountNameValidationError = ""
}
@ -46,8 +50,10 @@ ModalPopup {
Input {
id: addressInput
// TODO add QR code reader for the address
placeholderText: qsTr("Enter address...")
label: qsTr("Account address")
//% "Enter address..."
placeholderText: qsTrId("enter-address...")
//% "Account address"
label: qsTrId("wallet-key-title")
validationError: popup.addressError
}
@ -55,8 +61,10 @@ ModalPopup {
id: accountNameInput
anchors.top: addressInput.bottom
anchors.topMargin: marginBetweenInputs
placeholderText: qsTr("Enter an account name...")
label: qsTr("Account name")
//% "Enter an account name..."
placeholderText: qsTrId("enter-an-account-name...")
//% "Account name"
label: qsTrId("account-name")
validationError: popup.accountNameValidationError
}
@ -65,7 +73,8 @@ ModalPopup {
anchors.top: accountNameInput.bottom
anchors.topMargin: marginBetweenInputs
bgColor: selectedColor
label: qsTr("Account color")
//% "Account color"
label: qsTrId("account-color")
selectOptions: Constants.accountColors.map(color => {
return {
text: "",
@ -82,7 +91,11 @@ ModalPopup {
anchors.top: parent.top
anchors.right: parent.right
anchors.rightMargin: Style.current.padding
label: loading ? qsTr("Loading...") : qsTr("Add account >")
label: loading ?
//% "Loading..."
qsTrId("loading") :
//% "Add account >"
qsTrId("add-account")
disabled: loading || addressInput.text === "" || accountNameInput.text === ""

View File

@ -6,7 +6,8 @@ import "../../../../sounds"
ModalPopup {
id: popup
title: qsTr("Generate an account")
//% "Generate an account"
title: qsTrId("generate-a-new-account")
property int marginBetweenInputs: 38
property string selectedColor: Constants.accountColors[0]
@ -16,15 +17,18 @@ ModalPopup {
function validate() {
if (passwordInput.text === "") {
passwordValidationError = qsTr("You need to enter a password")
//% "You need to enter a password"
passwordValidationError = qsTrId("you-need-to-enter-a-password")
} else if (passwordInput.text.length < 4) {
passwordValidationError = qsTr("Password needs to be 4 characters or more")
//% "Password needs to be 4 characters or more"
passwordValidationError = qsTrId("password-needs-to-be-4-characters-or-more")
} else {
passwordValidationError = ""
}
if (accountNameInput.text === "") {
accountNameValidationError = qsTr("You need to enter an account name")
//% "You need to enter an account name"
accountNameValidationError = qsTrId("you-need-to-enter-an-account-name")
} else {
accountNameValidationError = ""
}
@ -45,8 +49,10 @@ ModalPopup {
Input {
id: passwordInput
placeholderText: qsTr("Enter your password…")
label: qsTr("Password")
//% "Enter your password"
placeholderText: qsTrId("enter-your-password…")
//% "Password"
label: qsTrId("password")
textField.echoMode: TextInput.Password
validationError: popup.passwordValidationError
}
@ -55,8 +61,10 @@ ModalPopup {
id: accountNameInput
anchors.top: passwordInput.bottom
anchors.topMargin: marginBetweenInputs
placeholderText: qsTr("Enter an account name...")
label: qsTr("Account name")
//% "Enter an account name..."
placeholderText: qsTrId("enter-an-account-name...")
//% "Account name"
label: qsTrId("account-name")
validationError: popup.accountNameValidationError
}
@ -65,7 +73,8 @@ ModalPopup {
anchors.top: accountNameInput.bottom
anchors.topMargin: marginBetweenInputs
bgColor: selectedColor
label: qsTr("Account color")
//% "Account color"
label: qsTrId("account-color")
selectOptions: Constants.accountColors.map(color => {
return {
text: "",
@ -82,7 +91,11 @@ ModalPopup {
anchors.top: parent.top
anchors.right: parent.right
anchors.rightMargin: Style.current.padding
label: loading ? qsTr("Loading...") : qsTr("Add account >")
label: loading ?
//% "Loading..."
qsTrId("loading") :
//% "Add account >"
qsTrId("add-account")
disabled: loading || passwordInput.text === "" || accountNameInput.text === ""

View File

@ -43,33 +43,41 @@ Item {
return sendingError.open()
}
sendingSuccess.text = qsTr("Transaction sent to the blockchain. You can watch the progress on Etherscan: https://etherscan.io/tx/%1").arg(result)
//% "Transaction sent to the blockchain. You can watch the progress on Etherscan: https://etherscan.io/tx/%1"
sendingSuccess.text = qsTrId("transaction-sent-to-the-blockchain.-you-can-watch-the-progress-on-etherscan:-https://etherscan.io/tx/%1").arg(result)
sendingSuccess.open()
}
function validate() {
if (txtPassword.text === "") {
passwordValidationError = qsTr("You need to enter a password")
//% "You need to enter a password"
passwordValidationError = qsTrId("you-need-to-enter-a-password")
} else if (txtPassword.text.length < 4) {
passwordValidationError = qsTr("Password needs to be 4 characters or more")
//% "Password needs to be 4 characters or more"
passwordValidationError = qsTrId("password-needs-to-be-4-characters-or-more")
} else {
passwordValidationError = ""
}
if (txtTo.text === "") {
toValidationError = qsTr("You need to enter a destination address")
//% "You need to enter a destination address"
toValidationError = qsTrId("you-need-to-enter-a-destination-address")
} else if (!Utils.isAddress(txtTo.text)) {
toValidationError = qsTr("This needs to be a valid address (starting with 0x)")
//% "This needs to be a valid address (starting with 0x)"
toValidationError = qsTrId("this-needs-to-be-a-valid-address-(starting-with-0x)")
} else {
toValidationError = ""
}
if (txtAmount.text === "") {
amountValidationError = qsTr("You need to enter an amount")
//% "You need to enter an amount"
amountValidationError = qsTrId("you-need-to-enter-an-amount")
} else if (isNaN(txtAmount.text)) {
amountValidationError = qsTr("This needs to be a number")
//% "This needs to be a number"
amountValidationError = qsTrId("this-needs-to-be-a-number")
} else if (parseFloat(txtAmount.text) > parseFloat(selectedAccountValue)) {
amountValidationError = qsTr("Amount needs to be lower than your balance (%1)").arg(selectedAccountValue)
//% "Amount needs to be lower than your balance (%1)"
amountValidationError = qsTrId("amount-needs-to-be-lower-than-your-balance-(%1)").arg(selectedAccountValue)
} else {
amountValidationError = ""
}
@ -88,7 +96,8 @@ Item {
}
MessageDialog {
id: sendingSuccess
title: qsTr("Success sending the transaction")
//% "Success sending the transaction"
title: qsTrId("success-sending-the-transaction")
icon: StandardIcon.NoIcon
standardButtons: StandardButton.Ok
onAccepted: {
@ -98,9 +107,11 @@ Item {
Input {
id: txtAmount
label: qsTr("Amount")
//% "Amount"
label: qsTrId("amount")
anchors.top: parent.top
placeholderText: qsTr("Enter amount...")
//% "Enter amount..."
placeholderText: qsTrId("enter-amount...")
validationError: amountValidationError
}
@ -110,7 +121,8 @@ Item {
iconHeight: 24
iconWidth: 24
icon: "../../../img/tokens/" + selectedAssetSymbol.toUpperCase() + ".png"
label: qsTr("Select the asset")
//% "Select the asset"
label: qsTrId("select-the-asset")
anchors.top: txtAmount.bottom
anchors.topMargin: Style.current.padding
selectedText: selectedAssetName
@ -126,7 +138,8 @@ Item {
StyledText {
id: currentBalanceText
text: qsTr("Balance: %1").arg(selectedAccountValue)
//% "Balance: %1"
text: qsTrId("balance:-%1").arg(selectedAccountValue)
font.pixelSize: 13
color: Style.current.darkGrey
anchors.top: assetTypeSelect.top
@ -141,7 +154,8 @@ Item {
iconWidth: 12
icon: "../../../img/walletIcon.svg"
iconColor: selectedAccountIconColor
label: qsTr("From account")
//% "From account"
label: qsTrId("from-account")
anchors.top: assetTypeSelect.bottom
anchors.topMargin: Style.current.padding
selectedText: selectedAccountName
@ -170,8 +184,10 @@ Item {
Input {
id: txtTo
label: qsTr("Recipient")
placeholderText: qsTr("Send to")
//% "Recipient"
label: qsTrId("recipient")
//% "Send to"
placeholderText: qsTrId("send-to")
anchors.top: textSelectAccountAddress.bottom
anchors.topMargin: Style.current.padding
validationError: toValidationError
@ -179,8 +195,10 @@ Item {
Input {
id: txtPassword
label: qsTr("Password")
placeholderText: qsTr("Enter Password")
//% "Password"
label: qsTrId("password")
//% "Enter Password"
placeholderText: qsTrId("biometric-auth-login-ios-fallback-label")
anchors.top: txtTo.bottom
anchors.topMargin: Style.current.padding
textField.echoMode: TextInput.Password

View File

@ -5,7 +5,8 @@ import "./"
ModalPopup {
id: popup
title: qsTr("Transaction Details")
//% "Transaction Details"
title: qsTrId("transaction-details")
Item {
id: confirmations
@ -19,13 +20,15 @@ ModalPopup {
StyledText {
id: confirmationsCount
text: qsTr("9999 Confirmations")
//% "9999 Confirmations"
text: qsTrId("9999-confirmations")
font.pixelSize: 14
}
StyledText {
id: confirmationsInfo
text: qsTr("When the transaction has 12 confirmations you can consider it settled.")
//% "When the transaction has 12 confirmations you can consider it settled."
text: qsTrId("confirmations-helper-text")
font.pixelSize: 14
font.weight: Font.Medium
color: Style.current.darkGrey
@ -54,7 +57,8 @@ ModalPopup {
StyledText {
id: labelBlock
text: qsTr("Block")
//% "Block"
text: qsTrId("block")
font.pixelSize: 14
font.weight: Font.Medium
color: Style.current.darkGrey
@ -79,7 +83,8 @@ ModalPopup {
StyledText {
id: labelHash
text: qsTr("Hash")
//% "Hash"
text: qsTrId("hash")
font.pixelSize: 14
font.weight: Font.Medium
color: Style.current.darkGrey
@ -107,7 +112,8 @@ ModalPopup {
StyledText {
id: labelFrom
text: qsTr("From")
//% "From"
text: qsTrId("from")
font.pixelSize: 14
font.weight: Font.Medium
color: Style.current.darkGrey
@ -135,7 +141,8 @@ ModalPopup {
StyledText {
id: labelTo
text: qsTr("To")
//% "To"
text: qsTrId("to")
font.pixelSize: 14
font.weight: Font.Medium
color: Style.current.darkGrey
@ -162,7 +169,8 @@ ModalPopup {
StyledText {
id: labelGasLimit
text: qsTr("Gas limit")
//% "Gas limit"
text: qsTrId("gas-limit")
font.pixelSize: 14
font.weight: Font.Medium
color: Style.current.darkGrey
@ -187,7 +195,8 @@ ModalPopup {
StyledText {
id: labelGasPrice
text: qsTr("Gas price")
//% "Gas price"
text: qsTrId("gas-price")
font.pixelSize: 14
font.weight: Font.Medium
color: Style.current.darkGrey
@ -212,7 +221,8 @@ ModalPopup {
StyledText {
id: labelGasUsed
text: qsTr("Gas used")
//% "Gas used"
text: qsTrId("gas-used")
font.pixelSize: 14
font.weight: Font.Medium
color: Style.current.darkGrey
@ -237,7 +247,8 @@ ModalPopup {
StyledText {
id: labelNonce
text: qsTr("Nonce")
//% "Nonce"
text: qsTrId("nonce")
font.pixelSize: 14
font.weight: Font.Medium
color: Style.current.darkGrey

View File

@ -5,553 +5,632 @@ ListModel {
ListElement {
key: "usd"
code: "USD"
name: qsTr("US Dollars")
//% "US Dollars"
name: qsTrId("us-dollars")
symbol: "$"
}
ListElement {
key: "eur"
code: "EUR"
name: qsTr("Euros")
//% "Euros"
name: qsTrId("euros")
symbol: "€"
}
ListElement {
key: "aed"
code: "AED"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "د.إ"
}
ListElement {
key: "afn"
code: "AFN"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "؋"
}
ListElement {
key: "ars"
code: "ARS"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "$"
}
ListElement {
key: "aud"
code: "AUD"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "$"
}
ListElement {
key: "bbd"
code: "BBD"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "$"
}
ListElement {
key: "bdt"
code: "BDT"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: " Tk"
}
ListElement {
key: "bgn"
code: "BGN"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "лв"
}
ListElement {
key: "bhd"
code: "BHD"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "BD"
}
ListElement {
key: "bnd"
code: "BND"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "$"
}
ListElement {
key: "bob"
code: "BOB"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "$b"
}
ListElement {
key: "brl"
code: "BRL"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "R$"
}
ListElement {
key: "btn"
code: "BTN"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "Nu."
}
ListElement {
key: "cad"
code: "CAD"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "$"
}
ListElement {
key: "chf"
code: "CHF"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "CHF"
}
ListElement {
key: "clp"
code: "CLP"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "$"
}
ListElement {
key: "cny"
code: "CNY"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "¥"
}
ListElement {
key: "cop"
code: "COP"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "$"
}
ListElement {
key: "crc"
code: "CRC"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "₡"
}
ListElement {
key: "czk"
code: "CZK"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "Kč"
}
ListElement {
key: "dkk"
code: "DKK"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "kr"
}
ListElement {
key: "dop"
code: "DOP"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "RD$"
}
ListElement {
key: "egp"
code: "EGP"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "£"
}
ListElement {
key: "etb"
code: "ETB"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "Br"
}
ListElement {
key: "gbp"
code: "GBP"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "£"
}
ListElement {
key: "gel"
code: "GEL"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "₾"
}
ListElement {
key: "ghs"
code: "GHS"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "¢"
}
ListElement {
key: "hkd"
code: "HKD"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "$"
}
ListElement {
key: "hrk"
code: "HRK"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "kn"
}
ListElement {
key: "huf"
code: "HUF"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "Ft"
}
ListElement {
key: "idr"
code: "IDR"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "Rp"
}
ListElement {
key: "ils"
code: "ILS"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "₪"
}
ListElement {
key: "inr"
code: "INR"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "₹"
}
ListElement {
key: "isk"
code: "ISK"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "kr"
}
ListElement {
key: "jmd"
code: "JMD"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "J$"
}
ListElement {
key: "jpy"
code: "JPY"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "¥"
}
ListElement {
key: "kes"
code: "KES"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "KSh"
}
ListElement {
key: "krw"
code: "KRW"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "₩"
}
ListElement {
key: "kwd"
code: "KWD"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "د.ك"
}
ListElement {
key: "kzt"
code: "KZT"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "лв"
}
ListElement {
key: "lkr"
code: "LKR"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "₨"
}
ListElement {
key: "mad"
code: "MAD"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "MAD"
}
ListElement {
key: "mdl"
code: "MDL"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "MDL"
}
ListElement {
key: "mur"
code: "MUR"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "₨"
}
ListElement {
key: "mwk"
code: "MWK"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "MK"
}
ListElement {
key: "mxn"
code: "MXN"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "$"
}
ListElement {
key: "myr"
code: "MYR"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "RM"
}
ListElement {
key: "mzn"
code: "MZN"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "MT"
}
ListElement {
key: "nad"
code: "NAD"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "$"
}
ListElement {
key: "ngn"
code: "NGN"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "₦"
}
ListElement {
key: "nok"
code: "NOK"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "kr"
}
ListElement {
key: "npr"
code: "NPR"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "₨"
}
ListElement {
key: "nzd"
code: "NZD"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "$"
}
ListElement {
key: "omr"
code: "OMR"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "﷼"
}
ListElement {
key: "pen"
code: "PEN"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "S/."
}
ListElement {
key: "pgk"
code: "PGK"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "K"
}
ListElement {
key: "php"
code: "PHP"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "₱"
}
ListElement {
key: "pkr"
code: "PKR"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "₨"
}
ListElement {
key: "pln"
code: "PLN"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "zł"
}
ListElement {
key: "pyg"
code: "PYG"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "Gs"
}
ListElement {
key: "qar"
code: "QAR"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "﷼"
}
ListElement {
key: "ron"
code: "RON"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "lei"
}
ListElement {
key: "rsd"
code: "RSD"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "Дин."
}
ListElement {
key: "rub"
code: "RUB"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "₽"
}
ListElement {
key: "sar"
code: "SAR"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "﷼"
}
ListElement {
key: "sek"
code: "SEK"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "kr"
}
ListElement {
key: "sgd"
code: "SGD"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "$"
}
ListElement {
key: "thb"
code: "THB"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "฿"
}
ListElement {
key: "ttd"
code: "TTD"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "TT$"
}
ListElement {
key: "twd"
code: "TWD"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "NT$"
}
ListElement {
key: "tzs"
code: "TZS"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "TSh"
}
ListElement {
key: "try"
code: "TRY"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "₺"
}
ListElement {
key: "uah"
code: "UAH"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "₴"
}
ListElement {
key: "ugx"
code: "UGX"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "USh"
}
ListElement {
key: "uyu"
code: "UYU"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "$U"
}
ListElement {
key: "vef"
code: "VEF"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "Bs"
}
ListElement {
key: "vnd"
code: "VND"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "₫"
}
ListElement {
key: "zar"
code: "ZAR"
name: qsTr("")
//% ""
name: qsTrId("")
symbol: "R"
}

View File

@ -19,7 +19,8 @@ ApplicationWindow {
color: Style.current.white
title: {
// Set application settings
Qt.application.name = qsTr("Nim Status Client")
//% "Nim Status Client"
Qt.application.name = qsTrId("nim-status-client")
Qt.application.organization = "Status"
Qt.application.domain = "status.im"
return Qt.application.name
@ -40,7 +41,8 @@ ApplicationWindow {
icon.source: "shared/img/status-logo.png"
menu: Menu {
MenuItem {
text: qsTr("Quit")
//% "Quit"
text: qsTrId("quit")
onTriggered: Qt.quit()
}
}

View File

@ -12,17 +12,21 @@ ModalPopup {
function validate() {
if (firstPasswordField.text === "") {
passwordValidationError = qsTr("You need to enter a password")
//% "You need to enter a password"
passwordValidationError = qsTrId("you-need-to-enter-a-password")
} else if (firstPasswordField.text.length < 4) {
passwordValidationError = qsTr("Password needs to be 4 characters or more")
//% "Password needs to be 4 characters or more"
passwordValidationError = qsTrId("password-needs-to-be-4-characters-or-more")
} else {
passwordValidationError = ""
}
if (repeatPasswordField.text === "") {
repeatPasswordValidationError = qsTr("You need to repeat your password")
//% "You need to repeat your password"
repeatPasswordValidationError = qsTrId("you-need-to-repeat-your-password")
} else if (repeatPasswordField.text !== firstPasswordField.text) {
repeatPasswordValidationError = qsTr("Both passwords must match")
//% "Both passwords must match"
repeatPasswordValidationError = qsTrId("both-passwords-must-match")
} else {
repeatPasswordValidationError = ""
}
@ -31,7 +35,8 @@ ModalPopup {
}
id: popup
title: qsTr("Create a password")
//% "Create a password"
title: qsTrId("intro-wizard-title-alt4")
height: 500
onOpened: {
@ -51,7 +56,8 @@ ModalPopup {
anchors.leftMargin: 56
anchors.top: parent.top
anchors.topMargin: 88
placeholderText: qsTr("New password...")
//% "New password..."
placeholderText: qsTrId("new-password...")
textField.echoMode: TextInput.Password
validationError: popup.passwordValidationError
}
@ -64,7 +70,8 @@ ModalPopup {
anchors.left: firstPasswordField.left
anchors.top: firstPasswordField.bottom
anchors.topMargin: Style.current.xlPadding
placeholderText: qsTr("Confirm password…")
//% "Confirm password"
placeholderText: qsTrId("confirm-password…")
textField.echoMode: TextInput.Password
validationError: popup.repeatPasswordValidationError
Keys.onReturnPressed: {
@ -73,7 +80,8 @@ ModalPopup {
}
StyledText {
text: qsTr("At least 6 characters. You will use this password to unlock status on this device & sign transactions.")
//% "At least 6 characters. You will use this password to unlock status on this device & sign transactions."
text: qsTrId("at-least-6-characters.-you-will-use-this-password-to-unlock-status-on-this-device-&-sign-transactions.")
wrapMode: Text.WordWrap
anchors.right: parent.right
anchors.rightMargin: Style.current.xlPadding
@ -119,14 +127,18 @@ ModalPopup {
anchors.topMargin: Style.current.padding
anchors.right: parent.right
anchors.rightMargin: Style.current.padding
label: loading ? qsTr("Logging in...") : qsTr("Create password")
//% "Logging in..."
//% "Create password"
label: loading ? qsTrId("logging-in...") : qsTrId("create-password")
disabled: firstPasswordField.text === "" || repeatPasswordField.text === "" || loading
MessageDialog {
id: importError
title: qsTr("Error importing account")
text: qsTr("An error occurred while importing your account: ")
//% "Error importing account"
title: qsTrId("error-importing-account")
//% "An error occurred while importing your account: "
text: qsTrId("an-error-occurred-while-importing-your-account:-")
icon: StandardIcon.Critical
standardButtons: StandardButton.Ok
onVisibilityChanged: {
@ -136,8 +148,10 @@ ModalPopup {
MessageDialog {
id: importLoginError
title: qsTr("Login failed")
text: qsTr("Login failed. Please re-enter your password and try again.")
//% "Login failed"
title: qsTrId("login-failed")
//% "Login failed. Please re-enter your password and try again."
text: qsTrId("login-failed.-please-re-enter-your-password-and-try-again.")
icon: StandardIcon.Critical
standardButtons: StandardButton.Ok
onVisibilityChanged: {

View File

@ -6,7 +6,8 @@ import "../shared"
ModalPopup {
property var onConfirmSeedClick: function () {}
id: popup
title: qsTr("Add key")
//% "Add key"
title: qsTrId("add-key")
height: 400
onOpened: {
@ -33,7 +34,8 @@ ModalPopup {
}
StyledText {
text: qsTr("Enter 12, 15, 18, 21 or 24 words.\nSeperate words by a single space.")
//% "Enter 12, 15, 18, 21 or 24 words.\nSeperate words by a single space."
text: qsTrId("enter-12,-15,-18,-21-or-24-words.\nseperate-words-by-a-single-space.")
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
anchors.bottomMargin: 0

View File

@ -9,7 +9,8 @@ ModalPopup {
property var onClosed: function () {}
property var onNextClick: function () {}
id: popup
title: qsTr("Choose a chat name")
//% "Choose a chat name"
title: qsTrId("intro-wizard-title2")
AccountList {
id: accountList

View File

@ -28,19 +28,25 @@ RowLayout {
Slide {
image: "img/chat@2x.jpg"
title: qsTr("Truly private communication")
description: qsTr("Chat over a peer-to-peer, encrypted network\n where messages can't be censored or hacked")
//% "Truly private communication"
title: qsTrId("intro-title1")
//% "Chat over a peer-to-peer, encrypted network\n where messages can't be censored or hacked"
description: qsTrId("chat-over-a-peer-to-peer,-encrypted-network\n-where-messages-can't-be-censored-or-hacked")
isFirst: true
}
Slide {
image: "img/wallet@2x.jpg"
title: qsTr("Secure crypto wallet")
description: qsTr("Send and receive digital assets anywhere in the\nworld--no bank account required")
//% "Secure crypto wallet"
title: qsTrId("intro-title2")
//% "Send and receive digital assets anywhere in the\nworld--no bank account required"
description: qsTrId("send-and-receive-digital-assets-anywhere-in-the\nworld--no-bank-account-required")
}
Slide {
image: "img/browser@2x.jpg"
title: qsTr("Decentralized apps")
description: qsTr("Explore games, exchanges and social networks\nwhere you alone own your data")
//% "Decentralized apps"
title: qsTrId("intro-title3")
//% "Explore games, exchanges and social networks\nwhere you alone own your data"
description: qsTrId("explore-games,-exchanges-and-social-networks\nwhere-you-alone-own-your-data")
isLast: true
}
}
@ -73,7 +79,8 @@ RowLayout {
StyledText {
id: warningMessage
x: 772
text: qsTr("Thanks for trying Status Desktop! Please note that this is an alpha release and we advise you that using this app should be done for testing purposes only and you assume the full responsibility for all risks concerning your data and funds. Status makes no claims of security or integrity of funds in these builds.")
//% "Thanks for trying Status Desktop! Please note that this is an alpha release and we advise you that using this app should be done for testing purposes only and you assume the full responsibility for all risks concerning your data and funds. Status makes no claims of security or integrity of funds in these builds."
text: qsTrId("thanks-for-trying-status-desktop!-please-note-that-this-is-an-alpha-release-and-we-advise-you-that-using-this-app-should-be-done-for-testing-purposes-only-and-you-assume-the-full-responsibility-for-all-risks-concerning-your-data-and-funds.-status-makes-no-claims-of-security-or-integrity-of-funds-in-these-builds.")
font.bold: true
anchors.top: rctPageIndicator.bottom
anchors.topMargin: 5
@ -90,7 +97,8 @@ RowLayout {
anchors.top: warningMessage.bottom
anchors.topMargin: 0
anchors.horizontalCenter: parent.horizontalCenter
text: qsTr("I understand")
//% "I understand"
text: qsTrId("i-understand")
}
StyledButton {
@ -108,7 +116,8 @@ RowLayout {
StyledText {
id: txtPrivacyPolicy
x: 772
text: qsTr("Status does not collect, share or sell any personal data. By continuing you agree with the privacy policy.")
//% "Status does not collect, share or sell any personal data. By continuing you agree with the privacy policy."
text: qsTrId("status-does-not-collect,-share-or-sell-any-personal-data.-by-continuing-you-agree-with-the-privacy-policy.")
anchors.top: btnGetStarted.bottom
anchors.topMargin: 8
anchors.horizontalCenter: parent.horizontalCenter

View File

@ -5,12 +5,13 @@ import "../shared"
ModalPopup {
id: popup
title: qsTr("Invalid seed phrase")
//% "Invalid seed phrase"
title: qsTrId("custom-seed-phrase")
height: 200
property string error: "Invalid seed phrase."
StyledText {
text: qsTr(popup.error)
text: popup.error
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
font.pixelSize: 15
@ -19,7 +20,8 @@ ModalPopup {
footer: StyledButton {
anchors.right: parent.right
anchors.rightMargin: Style.current.smallPadding
label: qsTr("Cancel")
//% "Cancel"
label: qsTrId("browsing-cancel")
anchors.bottom: parent.bottom
onClicked: {
popup.close()

View File

@ -34,7 +34,8 @@ Page {
StyledText {
id: txtTitle1
text: qsTr("Get your keys")
//% "Get your keys"
text: qsTrId("intro-wizard-title1")
anchors.topMargin: Style.current.padding
font.bold: true
anchors.horizontalCenter: parent.horizontalCenter
@ -46,7 +47,8 @@ Page {
StyledText {
id: txtDesc1
color: Style.current.darkGrey
text: qsTr("A set of keys controls your account. Your keys live on your device, so only you can use them.")
//% "A set of keys controls your account. Your keys live on your device, so only you can use them."
text: qsTrId("a-set-of-keys-controls-your-account.-your-keys-live-on-your-device,-so-only-you-can-use-them.")
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
anchors.right: parent.right
@ -63,12 +65,14 @@ Page {
anchors.top: txtDesc1.bottom
anchors.topMargin: 40
anchors.horizontalCenter: parent.horizontalCenter
label: qsTr("I'm new, generate keys")
//% "I'm new, generate keys"
label: qsTrId("i'm-new,-generate-keys")
}
StyledButton {
id: btnExistingKey
label: qsTr("Access existing key")
//% "Access existing key"
label: qsTrId("access-existing-key")
anchors.top: btnGenKey.bottom
anchors.topMargin: Style.current.padding
anchors.horizontalCenter: parent.horizontalCenter

View File

@ -245,7 +245,8 @@ Item {
StyledText {
id: generateKeysLinkText
color: Style.current.blue
text: qsTr("Generate new keys")
//% "Generate new keys"
text: qsTrId("generate-new-keys")
font.pixelSize: 13
}
}

View File

@ -6,7 +6,8 @@ import "../../shared"
ModalPopup {
property var onOpenModalClick: function () {}
id: popup
title: qsTr("Enter seed phrase")
//% "Enter seed phrase"
title: qsTrId("enter-seed-phrase")
height: 200
StyledText {

View File

@ -7,7 +7,8 @@ ModalPopup {
property var onAccountSelect: function () {}
property var onOpenModalClick: function () {}
id: popup
title: qsTr("Your accounts")
//% "Your accounts"
title: qsTrId("your-accounts")
AccountList {
id: accountList

View File

@ -3,7 +3,8 @@ import "../imports"
Input {
id: searchBox
placeholderText: qsTr("Search")
//% "Search"
placeholderText: qsTrId("search")
icon: "../app/img/search.svg"
iconWidth: 17
iconHeight: 17