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 leftPadding: 12
rightPadding: Style.current.padding rightPadding: Style.current.padding
font.pixelSize: 14 font.pixelSize: 14
placeholderText: qsTr("Type a message...") //% "Type a message..."
placeholderText: qsTrId("type-a-message")
Keys.onPressed: onEnter(event) Keys.onPressed: onEnter(event)
background: Rectangle { background: Rectangle {
color: "#00000000" color: "#00000000"

View File

@ -130,7 +130,8 @@ Item {
StyledText { StyledText {
id: joinChat id: joinChat
text: qsTr("Join chat") //% "Join chat"
text: qsTrId("join-chat")
font.pixelSize: 20 font.pixelSize: 20
color: Style.current.blue color: Style.current.blue
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
@ -145,7 +146,8 @@ Item {
} }
StyledText { StyledText {
text: qsTr("Decline invitation") //% "Decline invitation"
text: qsTrId("group-chat-decline-invitation")
font.pixelSize: 20 font.pixelSize: 20
color: Style.current.blue color: Style.current.blue
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
@ -332,7 +334,11 @@ Item {
StyledTextEdit { StyledTextEdit {
id: sentMessage id: sentMessage
color: Style.current.darkGrey 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.top: chatTime.top
anchors.bottomMargin: Style.current.padding anchors.bottomMargin: Style.current.padding
anchors.right: chatTime.left anchors.right: chatTime.left

View File

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

View File

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

View File

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

View File

@ -73,7 +73,8 @@ Rectangle {
StyledText { StyledText {
id: lastChatMessage 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 clip: true // This is needed because emojis don't ellide correctly
anchors.right: contactNumberChatsCircle.left anchors.right: contactNumberChatsCircle.left
anchors.rightMargin: Style.current.smallPadding anchors.rightMargin: Style.current.smallPadding
@ -101,9 +102,17 @@ Rectangle {
if (now.toDateString() == messageDate.toDateString()) { if (now.toDateString() == messageDate.toDateString()) {
return (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) return (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes)
} else if (yesterday.toDateString() == messageDate.toDateString()) { } else if (yesterday.toDateString() == messageDate.toDateString()) {
return qsTr("Yesterday") //% "Yesterday"
return qsTrId("yesterday")
} else if (lastWeek.getTime() < messageDate.getTime()) { } 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()]; return days[messageDate.getDay()];
} else { } else {
return messageDate.getMonth()+1+"/"+messageDate.getDay()+"/"+messageDate.getFullYear() return messageDate.getMonth()+1+"/"+messageDate.getDay()+"/"+messageDate.getFullYear()

View File

@ -18,7 +18,8 @@ Item {
StyledText { StyledText {
width: parent.width 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 font.pointSize: 15
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
verticalAlignment: Text.AlignTop verticalAlignment: Text.AlignTop

View File

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

View File

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

View File

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

View File

@ -35,7 +35,8 @@ ModalPopup {
pubKey = chatsModel.resolveENS(chatKey.text) pubKey = chatsModel.resolveENS(chatKey.text)
if(pubKey == ""){ if(pubKey == ""){
ensUsername.text = qsTr("User not found"); //% "User not found"
ensUsername.text = qsTrId("user-not-found");
} else { } else {
ensUsername.text = chatsModel.formatENSUsername(chatKey.text) + " • " + Utils.compactAddress(pubKey, 4) ensUsername.text = chatsModel.formatENSUsername(chatKey.text) + " • " + Utils.compactAddress(pubKey, 4)
} }
@ -48,7 +49,8 @@ ModalPopup {
} }
id: popup id: popup
title: qsTr("New chat") //% "New chat"
title: qsTrId("new-chat")
onOpened: { onOpened: {
chatKey.text = ""; chatKey.text = "";
@ -59,7 +61,8 @@ ModalPopup {
Input { Input {
id: chatKey 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.onEnterPressed: doJoin()
Keys.onReturnPressed: doJoin() Keys.onReturnPressed: doJoin()
validationError: popup.validationError validationError: popup.validationError

View File

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

View File

@ -14,7 +14,8 @@ ModalPopup {
} }
id: popup id: popup
title: qsTr("Join public chat") //% "Join public chat"
title: qsTrId("new-public-group-chat")
onOpened: { onOpened: {
channelName.text = ""; channelName.text = "";
@ -30,7 +31,8 @@ ModalPopup {
StyledText { StyledText {
width: parent.width width: parent.width
font.pixelSize: 15 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 wrapMode: Text.WordWrap
verticalAlignment: Text.AlignTop verticalAlignment: Text.AlignTop
} }
@ -40,7 +42,8 @@ ModalPopup {
id: channelName id: channelName
anchors.top: description.bottom anchors.top: description.bottom
anchors.topMargin: Style.current.padding anchors.topMargin: Style.current.padding
placeholderText: qsTr("chat-name") //% "chat-name"
placeholderText: qsTrId("chat-name")
Keys.onEnterPressed: doJoin() Keys.onEnterPressed: doJoin()
Keys.onReturnPressed: doJoin() Keys.onReturnPressed: doJoin()
icon: "../../../img/hash.svg" icon: "../../../img/hash.svg"

View File

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

View File

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

View File

@ -96,7 +96,8 @@ Item {
leftPadding: 0 leftPadding: 0
padding: 0 padding: 0
font.pixelSize: 14 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.right: rpcSendBtn.left
anchors.rightMargin: 16 anchors.rightMargin: 16
anchors.top: parent.top anchors.top: parent.top

View File

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

View File

@ -13,7 +13,8 @@ Item {
StyledText { StyledText {
id: element9 id: element9
text: qsTr("About the app") //% "About the app"
text: qsTrId("about-the-app")
anchors.left: parent.left anchors.left: parent.left
anchors.leftMargin: 24 anchors.leftMargin: 24
anchors.top: parent.top anchors.top: parent.top
@ -24,7 +25,8 @@ Item {
StyledText { StyledText {
id: element10 id: element10
text: qsTr("Status Desktop") //% "Status Desktop"
text: qsTrId("status-desktop")
anchors.left: parent.left anchors.left: parent.left
anchors.leftMargin: 24 anchors.leftMargin: 24
anchors.top: element9.top anchors.top: element9.top
@ -34,7 +36,8 @@ Item {
} }
StyledText { StyledText {
id: element11 id: element11
text: qsTr("Version: alpha.0") //% "Version: alpha.0"
text: qsTrId("version:-alpha.0")
anchors.left: parent.left anchors.left: parent.left
anchors.leftMargin: 24 anchors.leftMargin: 24
anchors.top: element10.top anchors.top: element10.top
@ -44,7 +47,8 @@ Item {
} }
StyledText { StyledText {
id: element12 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.left: parent.left
anchors.leftMargin: 24 anchors.leftMargin: 24
anchors.top: element11.top anchors.top: element11.top
@ -85,7 +89,8 @@ Item {
StyledText { StyledText {
id: warningMessage id: warningMessage
x: 772 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 font.bold: true
anchors.top: faqLink.bottom anchors.top: faqLink.bottom
anchors.topMargin: 30 anchors.topMargin: 30

View File

@ -13,7 +13,8 @@ Item {
StyledText { StyledText {
id: title id: title
text: qsTr("Advanced settings") //% "Advanced settings"
text: qsTrId("advanced-settings")
anchors.left: parent.left anchors.left: parent.left
anchors.leftMargin: 24 anchors.leftMargin: 24
anchors.top: parent.top anchors.top: parent.top
@ -39,7 +40,8 @@ Item {
anchors.left: parent.left anchors.left: parent.left
anchors.leftMargin: 24 anchors.leftMargin: 24
StyledText { StyledText {
text: qsTr("Theme (Light - Dark)") //% "Theme (Light - Dark)"
text: qsTrId("theme-(light---dark)")
} }
Switch { Switch {
checked: themeSetting.isDarkTheme checked: themeSetting.isDarkTheme
@ -56,7 +58,8 @@ Item {
anchors.left: parent.left anchors.left: parent.left
anchors.leftMargin: 24 anchors.leftMargin: 24
StyledText { StyledText {
text: qsTr("Wallet Tab") //% "Wallet Tab"
text: qsTrId("wallet-tab")
} }
Switch { Switch {
checked: walletBtn.enabled checked: walletBtn.enabled
@ -65,7 +68,8 @@ Item {
} }
} }
StyledText { 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.left: parent.left
anchors.leftMargin: 24 anchors.leftMargin: 24
StyledText { StyledText {
text: qsTr("Browser Tab") //% "Browser Tab"
text: qsTrId("browser-tab")
} }
Switch { Switch {
checked: browserBtn.enabled checked: browserBtn.enabled
@ -85,7 +90,8 @@ Item {
} }
} }
StyledText { 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.left: parent.left
anchors.leftMargin: 24 anchors.leftMargin: 24
StyledText { StyledText {
text: qsTr("Node Management Tab") //% "Node Management Tab"
text: qsTrId("node-management-tab")
} }
Switch { Switch {
checked: nodeBtn.enabled checked: nodeBtn.enabled
@ -104,7 +111,8 @@ Item {
} }
} }
StyledText { StyledText {
text: qsTr("under development") //% "under development"
text: qsTrId("under-development")
} }
} }
} }

View File

@ -7,7 +7,8 @@ import "../../../../shared"
ModalPopup { ModalPopup {
id: popup id: popup
title: qsTr("Write down your seed phrase") //% "Write down your seed phrase"
title: qsTrId("write-down-your-seed-phrase")
Item { Item {
@ -80,7 +81,8 @@ ModalPopup {
Text { Text {
id: confirmationsInfo 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.pixelSize: 14
font.weight: Font.Medium font.weight: Font.Medium
color: Style.current.darkGrey color: Style.current.darkGrey
@ -94,7 +96,8 @@ ModalPopup {
} }
footer: StyledButton { footer: StyledButton {
label: qsTr("Done") //% "Done"
label: qsTrId("done")
anchors.right: parent.right anchors.right: parent.right
anchors.rightMargin: Style.current.smallPadding anchors.rightMargin: Style.current.smallPadding
anchors.bottom: parent.bottom anchors.bottom: parent.bottom

View File

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

View File

@ -16,7 +16,8 @@ Item {
StyledText { StyledText {
id: sectionTitle id: sectionTitle
text: qsTr("Devices") //% "Devices"
text: qsTrId("devices")
anchors.left: parent.left anchors.left: parent.left
anchors.leftMargin: 24 anchors.leftMargin: 24
anchors.top: parent.top anchors.top: parent.top
@ -37,13 +38,15 @@ Item {
StyledText { StyledText {
id: deviceNameLbl 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 font.pixelSize: 14
} }
Input { Input {
id: deviceNameTxt id: deviceNameTxt
placeholderText: qsTr("Specify a name") //% "Specify a name"
placeholderText: qsTrId("specify-name")
anchors.top: deviceNameLbl.bottom anchors.top: deviceNameLbl.bottom
anchors.topMargin: Style.current.padding anchors.topMargin: Style.current.padding
} }
@ -53,7 +56,8 @@ Item {
anchors.top: deviceNameTxt.bottom anchors.top: deviceNameTxt.bottom
anchors.topMargin: 10 anchors.topMargin: 10
anchors.right: deviceNameTxt.right anchors.right: deviceNameTxt.right
label: qsTr("Continue") //% "Continue"
label: qsTrId("continue")
disabled: deviceNameTxt.text === "" disabled: deviceNameTxt.text === ""
onClicked : profileModel.setDeviceName(deviceNameTxt.text.trim()) onClicked : profileModel.setDeviceName(deviceNameTxt.text.trim())
} }
@ -86,7 +90,8 @@ Item {
StyledText { StyledText {
id: advertiseDeviceTitle id: advertiseDeviceTitle
text: qsTr("Advertise device") //% "Advertise device"
text: qsTrId("pair-this-device")
font.pixelSize: 18 font.pixelSize: 18
font.weight: Font.Bold font.weight: Font.Bold
color: Style.current.blue color: Style.current.blue
@ -96,7 +101,8 @@ Item {
StyledText { StyledText {
id: advertiseDeviceDesk 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 font.pixelSize: 14
anchors.top: advertiseDeviceTitle.bottom anchors.top: advertiseDeviceTitle.bottom
anchors.topMargin: 6 anchors.topMargin: 6
@ -114,7 +120,8 @@ Item {
StyledText { StyledText {
anchors.top: advertiseDevice.bottom anchors.top: advertiseDevice.bottom
anchors.topMargin: Style.current.padding anchors.topMargin: Style.current.padding
text: qsTr("Learn more") //% "Learn more"
text: qsTrId("learn-more")
font.pixelSize: 16 font.pixelSize: 16
color: Style.current.blue color: Style.current.blue
anchors.left: parent.left anchors.left: parent.left
@ -131,7 +138,11 @@ Item {
anchors.bottom: syncContainer.bottom anchors.bottom: syncContainer.bottom
anchors.bottomMargin: Style.current.padding anchors.bottomMargin: Style.current.padding
anchors.horizontalCenter: parent.horizontalCenter 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 disabled: isSyncing
onClicked : { onClicked : {
isSyncing = true; isSyncing = true;

View File

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

View File

@ -27,7 +27,8 @@ Item {
StyledText { StyledText {
id: element8 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.left: parent.left
anchors.leftMargin: 24 anchors.leftMargin: 24
anchors.top: parent.top anchors.top: parent.top

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -5,7 +5,8 @@ import "../../../shared"
Item { Item {
StyledText { StyledText {
visible: walletModel.collectibles.rowCount() === 0 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 { Component {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -43,33 +43,41 @@ Item {
return sendingError.open() 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() sendingSuccess.open()
} }
function validate() { function validate() {
if (txtPassword.text === "") { 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) { } 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 { } else {
passwordValidationError = "" passwordValidationError = ""
} }
if (txtTo.text === "") { 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)) { } 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 { } else {
toValidationError = "" toValidationError = ""
} }
if (txtAmount.text === "") { 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)) { } 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)) { } 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 { } else {
amountValidationError = "" amountValidationError = ""
} }
@ -88,7 +96,8 @@ Item {
} }
MessageDialog { MessageDialog {
id: sendingSuccess id: sendingSuccess
title: qsTr("Success sending the transaction") //% "Success sending the transaction"
title: qsTrId("success-sending-the-transaction")
icon: StandardIcon.NoIcon icon: StandardIcon.NoIcon
standardButtons: StandardButton.Ok standardButtons: StandardButton.Ok
onAccepted: { onAccepted: {
@ -98,9 +107,11 @@ Item {
Input { Input {
id: txtAmount id: txtAmount
label: qsTr("Amount") //% "Amount"
label: qsTrId("amount")
anchors.top: parent.top anchors.top: parent.top
placeholderText: qsTr("Enter amount...") //% "Enter amount..."
placeholderText: qsTrId("enter-amount...")
validationError: amountValidationError validationError: amountValidationError
} }
@ -110,7 +121,8 @@ Item {
iconHeight: 24 iconHeight: 24
iconWidth: 24 iconWidth: 24
icon: "../../../img/tokens/" + selectedAssetSymbol.toUpperCase() + ".png" icon: "../../../img/tokens/" + selectedAssetSymbol.toUpperCase() + ".png"
label: qsTr("Select the asset") //% "Select the asset"
label: qsTrId("select-the-asset")
anchors.top: txtAmount.bottom anchors.top: txtAmount.bottom
anchors.topMargin: Style.current.padding anchors.topMargin: Style.current.padding
selectedText: selectedAssetName selectedText: selectedAssetName
@ -126,7 +138,8 @@ Item {
StyledText { StyledText {
id: currentBalanceText id: currentBalanceText
text: qsTr("Balance: %1").arg(selectedAccountValue) //% "Balance: %1"
text: qsTrId("balance:-%1").arg(selectedAccountValue)
font.pixelSize: 13 font.pixelSize: 13
color: Style.current.darkGrey color: Style.current.darkGrey
anchors.top: assetTypeSelect.top anchors.top: assetTypeSelect.top
@ -141,7 +154,8 @@ Item {
iconWidth: 12 iconWidth: 12
icon: "../../../img/walletIcon.svg" icon: "../../../img/walletIcon.svg"
iconColor: selectedAccountIconColor iconColor: selectedAccountIconColor
label: qsTr("From account") //% "From account"
label: qsTrId("from-account")
anchors.top: assetTypeSelect.bottom anchors.top: assetTypeSelect.bottom
anchors.topMargin: Style.current.padding anchors.topMargin: Style.current.padding
selectedText: selectedAccountName selectedText: selectedAccountName
@ -170,8 +184,10 @@ Item {
Input { Input {
id: txtTo id: txtTo
label: qsTr("Recipient") //% "Recipient"
placeholderText: qsTr("Send to") label: qsTrId("recipient")
//% "Send to"
placeholderText: qsTrId("send-to")
anchors.top: textSelectAccountAddress.bottom anchors.top: textSelectAccountAddress.bottom
anchors.topMargin: Style.current.padding anchors.topMargin: Style.current.padding
validationError: toValidationError validationError: toValidationError
@ -179,8 +195,10 @@ Item {
Input { Input {
id: txtPassword id: txtPassword
label: qsTr("Password") //% "Password"
placeholderText: qsTr("Enter Password") label: qsTrId("password")
//% "Enter Password"
placeholderText: qsTrId("biometric-auth-login-ios-fallback-label")
anchors.top: txtTo.bottom anchors.top: txtTo.bottom
anchors.topMargin: Style.current.padding anchors.topMargin: Style.current.padding
textField.echoMode: TextInput.Password textField.echoMode: TextInput.Password

View File

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

View File

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

View File

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

View File

@ -12,17 +12,21 @@ ModalPopup {
function validate() { function validate() {
if (firstPasswordField.text === "") { 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) { } 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 { } else {
passwordValidationError = "" passwordValidationError = ""
} }
if (repeatPasswordField.text === "") { 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) { } else if (repeatPasswordField.text !== firstPasswordField.text) {
repeatPasswordValidationError = qsTr("Both passwords must match") //% "Both passwords must match"
repeatPasswordValidationError = qsTrId("both-passwords-must-match")
} else { } else {
repeatPasswordValidationError = "" repeatPasswordValidationError = ""
} }
@ -31,7 +35,8 @@ ModalPopup {
} }
id: popup id: popup
title: qsTr("Create a password") //% "Create a password"
title: qsTrId("intro-wizard-title-alt4")
height: 500 height: 500
onOpened: { onOpened: {
@ -51,7 +56,8 @@ ModalPopup {
anchors.leftMargin: 56 anchors.leftMargin: 56
anchors.top: parent.top anchors.top: parent.top
anchors.topMargin: 88 anchors.topMargin: 88
placeholderText: qsTr("New password...") //% "New password..."
placeholderText: qsTrId("new-password...")
textField.echoMode: TextInput.Password textField.echoMode: TextInput.Password
validationError: popup.passwordValidationError validationError: popup.passwordValidationError
} }
@ -64,7 +70,8 @@ ModalPopup {
anchors.left: firstPasswordField.left anchors.left: firstPasswordField.left
anchors.top: firstPasswordField.bottom anchors.top: firstPasswordField.bottom
anchors.topMargin: Style.current.xlPadding anchors.topMargin: Style.current.xlPadding
placeholderText: qsTr("Confirm password…") //% "Confirm password"
placeholderText: qsTrId("confirm-password…")
textField.echoMode: TextInput.Password textField.echoMode: TextInput.Password
validationError: popup.repeatPasswordValidationError validationError: popup.repeatPasswordValidationError
Keys.onReturnPressed: { Keys.onReturnPressed: {
@ -73,7 +80,8 @@ ModalPopup {
} }
StyledText { 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 wrapMode: Text.WordWrap
anchors.right: parent.right anchors.right: parent.right
anchors.rightMargin: Style.current.xlPadding anchors.rightMargin: Style.current.xlPadding
@ -119,14 +127,18 @@ ModalPopup {
anchors.topMargin: Style.current.padding anchors.topMargin: Style.current.padding
anchors.right: parent.right anchors.right: parent.right
anchors.rightMargin: Style.current.padding 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 disabled: firstPasswordField.text === "" || repeatPasswordField.text === "" || loading
MessageDialog { MessageDialog {
id: importError id: importError
title: qsTr("Error importing account") //% "Error importing account"
text: qsTr("An error occurred while importing your 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 icon: StandardIcon.Critical
standardButtons: StandardButton.Ok standardButtons: StandardButton.Ok
onVisibilityChanged: { onVisibilityChanged: {
@ -136,8 +148,10 @@ ModalPopup {
MessageDialog { MessageDialog {
id: importLoginError id: importLoginError
title: qsTr("Login failed") //% "Login failed"
text: qsTr("Login failed. Please re-enter your password and try again.") 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 icon: StandardIcon.Critical
standardButtons: StandardButton.Ok standardButtons: StandardButton.Ok
onVisibilityChanged: { onVisibilityChanged: {

View File

@ -6,7 +6,8 @@ import "../shared"
ModalPopup { ModalPopup {
property var onConfirmSeedClick: function () {} property var onConfirmSeedClick: function () {}
id: popup id: popup
title: qsTr("Add key") //% "Add key"
title: qsTrId("add-key")
height: 400 height: 400
onOpened: { onOpened: {
@ -33,7 +34,8 @@ ModalPopup {
} }
StyledText { 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.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
anchors.bottomMargin: 0 anchors.bottomMargin: 0

View File

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

View File

@ -28,19 +28,25 @@ RowLayout {
Slide { Slide {
image: "img/chat@2x.jpg" image: "img/chat@2x.jpg"
title: qsTr("Truly private communication") //% "Truly private communication"
description: qsTr("Chat over a peer-to-peer, encrypted network\n where messages can't be censored or hacked") 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 isFirst: true
} }
Slide { Slide {
image: "img/wallet@2x.jpg" image: "img/wallet@2x.jpg"
title: qsTr("Secure crypto wallet") //% "Secure crypto wallet"
description: qsTr("Send and receive digital assets anywhere in the\nworld--no bank account required") 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 { Slide {
image: "img/browser@2x.jpg" image: "img/browser@2x.jpg"
title: qsTr("Decentralized apps") //% "Decentralized apps"
description: qsTr("Explore games, exchanges and social networks\nwhere you alone own your data") 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 isLast: true
} }
} }
@ -73,7 +79,8 @@ RowLayout {
StyledText { StyledText {
id: warningMessage id: warningMessage
x: 772 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 font.bold: true
anchors.top: rctPageIndicator.bottom anchors.top: rctPageIndicator.bottom
anchors.topMargin: 5 anchors.topMargin: 5
@ -90,7 +97,8 @@ RowLayout {
anchors.top: warningMessage.bottom anchors.top: warningMessage.bottom
anchors.topMargin: 0 anchors.topMargin: 0
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
text: qsTr("I understand") //% "I understand"
text: qsTrId("i-understand")
} }
StyledButton { StyledButton {
@ -108,7 +116,8 @@ RowLayout {
StyledText { StyledText {
id: txtPrivacyPolicy id: txtPrivacyPolicy
x: 772 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.top: btnGetStarted.bottom
anchors.topMargin: 8 anchors.topMargin: 8
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter

View File

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

View File

@ -34,7 +34,8 @@ Page {
StyledText { StyledText {
id: txtTitle1 id: txtTitle1
text: qsTr("Get your keys") //% "Get your keys"
text: qsTrId("intro-wizard-title1")
anchors.topMargin: Style.current.padding anchors.topMargin: Style.current.padding
font.bold: true font.bold: true
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
@ -46,7 +47,8 @@ Page {
StyledText { StyledText {
id: txtDesc1 id: txtDesc1
color: Style.current.darkGrey 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 horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
anchors.right: parent.right anchors.right: parent.right
@ -63,12 +65,14 @@ Page {
anchors.top: txtDesc1.bottom anchors.top: txtDesc1.bottom
anchors.topMargin: 40 anchors.topMargin: 40
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
label: qsTr("I'm new, generate keys") //% "I'm new, generate keys"
label: qsTrId("i'm-new,-generate-keys")
} }
StyledButton { StyledButton {
id: btnExistingKey id: btnExistingKey
label: qsTr("Access existing key") //% "Access existing key"
label: qsTrId("access-existing-key")
anchors.top: btnGenKey.bottom anchors.top: btnGenKey.bottom
anchors.topMargin: Style.current.padding anchors.topMargin: Style.current.padding
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter

View File

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

View File

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

View File

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

View File

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