From 244599398b8fa457a160077513456b4b274d386d Mon Sep 17 00:00:00 2001 From: Jaakko Keränen Date: Tue, 23 Mar 2021 06:23:13 +0200 Subject: Lang: Applied more string IDs IssueID #192 --- src/ui/certimportwidget.c | 2 +- src/ui/documentwidget.c | 251 ++++++++++++++++++++++++---------------------- src/ui/labelwidget.c | 2 + src/ui/sidebarwidget.c | 177 ++++++++++++++++---------------- src/ui/translation.c | 2 +- src/ui/util.c | 20 ++-- src/ui/window.c | 6 +- 7 files changed, 240 insertions(+), 220 deletions(-) (limited to 'src/ui') diff --git a/src/ui/certimportwidget.c b/src/ui/certimportwidget.c index 0c1cf674..d47851f5 100644 --- a/src/ui/certimportwidget.c +++ b/src/ui/certimportwidget.c @@ -154,7 +154,7 @@ void init_CertImportWidget(iCertImportWidget *d) { addChild_Widget(w, iClob(makePadding_Widget(gap_UI))); iWidget *buttons = makeDialogButtons_Widget( (iMenuItem[]){ - { "Cancel", 0, 0, NULL }, + { "${cancel}", 0, 0, NULL }, { uiTextAction_ColorEscape "Import", SDLK_RETURN, KMOD_PRIMARY, "certimport.accept" } }, 2); addChild_Widget(w, iClob(buttons)); diff --git a/src/ui/documentwidget.c b/src/ui/documentwidget.c index 685bafd6..6ce53e44 100644 --- a/src/ui/documentwidget.c +++ b/src/ui/documentwidget.c @@ -824,9 +824,7 @@ static void showErrorPage_DocumentWidget_(iDocumentWidget *d, enum iGmStatusCode iString *key = collectNew_String(); toString_Sym(SDLK_s, KMOD_PRIMARY, key); appendFormat_String(src, - "\n```\n%s\n```\n" - "You can save it as a file to your Downloads folder, though. " - "Press %s or select \"%s\" from the menu.", + cstr_Lang("error.unsupported.suggestsave"), cstr_String(meta), cstr_String(key), saveToDownloads_Label); @@ -1045,7 +1043,7 @@ static iBool updateFromHistory_DocumentWidget_(iDocumentWidget *d) { updateTrust_DocumentWidget_(d, resp); d->sourceTime = resp->when; d->sourceStatus = success_GmStatusCode; - format_String(&d->sourceHeader, "(cached content)"); + format_String(&d->sourceHeader, cstr_Lang("pageinfo.header.cached")); updateTimestampBuf_DocumentWidget_(d); set_Block(&d->sourceContent, &resp->body); updateDocument_DocumentWidget_(d, resp, iTrue); @@ -1220,9 +1218,9 @@ static void checkResponse_DocumentWidget_(iDocumentWidget *d) { NULL, format_CStr(uiHeading_ColorEscape "%s", cstr_Rangecc(parts.host)), isEmpty_String(&resp->meta) - ? format_CStr("Please enter input for %s:", cstr_Rangecc(parts.path)) + ? format_CStr(cstr_Lang("dlg.input.prompt"), cstr_Rangecc(parts.path)) : cstr_String(&resp->meta), - uiTextCaution_ColorEscape "Send \u21d2", + uiTextCaution_ColorEscape "${dlg.input.send} \u21d2", format_CStr("!document.input.submit doc:%p", d)); setSensitiveContent_InputWidget(findChild_Widget(dlg, "input"), statusCode == sensitiveInput_GmStatusCode); @@ -1469,14 +1467,14 @@ static void saveToDownloads_(const iString *url, const iString *mime, const iBlo #if defined (iPlatformAppleMobile) exportDownloadedFile_iOS(savePath); #else - makeMessage_Widget(uiHeading_ColorEscape "FILE SAVED", - format_CStr("%s\nSize: %.3f %s", cstr_String(path_File(f)), + makeMessage_Widget(uiHeading_ColorEscape "${heading.save}", + format_CStr("%s\n${dlg.save.size} %.3f %s", cstr_String(path_File(f)), isMega ? size / 1.0e6f : (size / 1.0e3f), - isMega ? "MB" : "KB")); + isMega ? "${mb}" : "${kb}")); #endif } else { - makeMessage_Widget(uiTextCaution_ColorEscape "ERROR SAVING FILE", + makeMessage_Widget(uiTextCaution_ColorEscape "${heading.save.error}", strerror(errno)); } iRelease(f); @@ -1625,57 +1623,62 @@ static iBool handleCommand_DocumentWidget_(iDocumentWidget *d, const char *cmd) } iString *msg = collectNew_String(); if (isEmpty_String(&d->sourceHeader)) { - appendFormat_String(msg, "%s\n%zu bytes\n", cstr_String(meta), size_Block(&d->sourceContent)); + appendFormat_String(msg, "%s\n%zu ${bytes}\n", cstr_String(meta), size_Block(&d->sourceContent)); } else { appendFormat_String(msg, "%s\n", cstr_String(&d->sourceHeader)); if (size_Block(&d->sourceContent)) { - appendFormat_String(msg, "%zu bytes\n", size_Block(&d->sourceContent)); - } - } - appendFormat_String(msg, - "\n%sCertificate Status:\n" - "%s%s %s by CA\n" - "%s%s Domain name %s%s\n" - "%s%s %s (%04d-%02d-%02d %02d:%02d:%02d)\n" - "%s%s %s", - uiHeading_ColorEscape, - d->certFlags & authorityVerified_GmCertFlag ? - checked : uiTextAction_ColorEscape "\u2610", - uiText_ColorEscape, - d->certFlags & authorityVerified_GmCertFlag ? "Verified" : "Not verified", - d->certFlags & domainVerified_GmCertFlag ? checked : unchecked, - uiText_ColorEscape, - d->certFlags & domainVerified_GmCertFlag ? "matches" : "mismatch", - ~d->certFlags & domainVerified_GmCertFlag - ? format_CStr(" (%s)", cstr_String(d->certSubject)) - : "", - d->certFlags & timeVerified_GmCertFlag ? checked : unchecked, - uiText_ColorEscape, - d->certFlags & timeVerified_GmCertFlag ? "Not expired" : "Expired", - d->certExpiry.year, - d->certExpiry.month, - d->certExpiry.day, - d->certExpiry.hour, - d->certExpiry.minute, - d->certExpiry.second, - d->certFlags & trusted_GmCertFlag ? checked : unchecked, - uiText_ColorEscape, - d->certFlags & trusted_GmCertFlag ? "Trusted" : "Not trusted"); + appendFormat_String(msg, "%zu ${bytes}\n", size_Block(&d->sourceContent)); + } + } + appendFormat_String( + msg, + "\n%s${pageinfo.cert.status}\n" + "%s%s %s\n" + "%s%s %s%s\n" + "%s%s %s (%04d-%02d-%02d %02d:%02d:%02d)\n" + "%s%s %s", + uiHeading_ColorEscape, + d->certFlags & authorityVerified_GmCertFlag ? checked + : uiTextAction_ColorEscape "\u2610", + uiText_ColorEscape, + d->certFlags & authorityVerified_GmCertFlag ? "${pageinfo.cert.ca.verified}" + : "${pageinfo.cert.ca.unverified}", + d->certFlags & domainVerified_GmCertFlag ? checked : unchecked, + uiText_ColorEscape, + d->certFlags & domainVerified_GmCertFlag ? "${pageinfo.domain.match}" + : "${pageinfo.domain.mismatch}", + ~d->certFlags & domainVerified_GmCertFlag + ? format_CStr(" (%s)", cstr_String(d->certSubject)) + : "", + d->certFlags & timeVerified_GmCertFlag ? checked : unchecked, + uiText_ColorEscape, + d->certFlags & timeVerified_GmCertFlag ? "${pageinfo.cert.notexpired}" + : "${pageinfo.cert.expired}", + d->certExpiry.year, + d->certExpiry.month, + d->certExpiry.day, + d->certExpiry.hour, + d->certExpiry.minute, + d->certExpiry.second, + d->certFlags & trusted_GmCertFlag ? checked : unchecked, + uiText_ColorEscape, + d->certFlags & trusted_GmCertFlag ? "${pageinfo.cert.trusted}" + : "${pageinfo.cert.untrusted}"); setFocus_Widget(NULL); iArray *items = new_Array(sizeof(iMenuItem)); if (canTrust) { pushBack_Array( - items, &(iMenuItem){ uiTextCaution_ColorEscape "Trust", 0, 0, "server.trustcert" }); + items, &(iMenuItem){ uiTextCaution_ColorEscape "${dlg.cert.trust}", 0, 0, "server.trustcert" }); } if (haveFingerprint) { - pushBack_Array(items, &(iMenuItem){ "Copy Fingerprint", 0, 0, "server.copycert" }); + pushBack_Array(items, &(iMenuItem){ "${dlg.cert.fingerprint}", 0, 0, "server.copycert" }); } if (!isEmpty_Array(items)) { pushBack_Array(items, &(iMenuItem){ "---", 0, 0, 0 }); } - pushBack_Array(items, &(iMenuItem){ "Dismiss", 0, 0, "message.ok" }); - iWidget *dlg = makeQuestion_Widget(uiHeading_ColorEscape "PAGE INFORMATION", + pushBack_Array(items, &(iMenuItem){ "${dismiss}", 0, 0, "message.ok" }); + iWidget *dlg = makeQuestion_Widget(uiHeading_ColorEscape "${heading.pageinfo}", cstr_String(msg), data_Array(items), size_Array(items)); @@ -1871,8 +1874,8 @@ static iBool handleCommand_DocumentWidget_(iDocumentWidget *d, const char *cmd) } else if (equal_Command(cmd, "document.save") && document_App() == d) { if (d->request) { - makeMessage_Widget(uiTextCaution_ColorEscape "PAGE INCOMPLETE", - "The page contents are still being downloaded."); + makeMessage_Widget(uiTextCaution_ColorEscape "${heading.save.incomplete}", + "${dlg.save.incomplete}"); } else if (!isEmpty_Block(&d->sourceContent)) { saveToDownloads_(d->mod.url, &d->sourceMime, &d->sourceContent); @@ -2077,14 +2080,20 @@ static iBool handleCommand_DocumentWidget_(iDocumentWidget *d, const char *cmd) } if (!isEmpty_PtrArray(links)) { if (argLabel_Command(cmd, "confirm")) { - const char *plural = size_PtrArray(links) != 1 ? "s" : ""; + //const char *plural = size_PtrArray(links) != 1 ? "s" : ""; + const iBool isPlural = size_PtrArray(links) != 1; makeQuestion_Widget( - uiHeading_ColorEscape "IMPORT BOOKMARKS", - format_CStr("Found %d new link%s on the page.", size_PtrArray(links), plural), - (iMenuItem[]){ { "Cancel", 0, 0, NULL }, - { format_CStr(uiTextAction_ColorEscape "Add %d Bookmark%s", - size_PtrArray(links), - plural), 0, 0, "bookmark.links" } }, + uiHeading_ColorEscape "${heading.import.bookmarks}", + format_CStr(cstr_Lang(isPlural ? "dlg.import.found.many" : "dlg.import.found"), + size_PtrArray(links)), + (iMenuItem[]){ + { "${cancel}", 0, 0, NULL }, + { format_CStr(isPlural ? "dlg.import.add.many" : "dlg.import.add", + uiTextAction_ColorEscape, + size_PtrArray(links)), + 0, + 0, + "bookmark.links" } }, 2); } else { @@ -2100,8 +2109,8 @@ static iBool handleCommand_DocumentWidget_(iDocumentWidget *d, const char *cmd) } } else { - makeMessage_Widget(uiHeading_ColorEscape "IMPORT BOOKMARKS", - "All links on this page are already bookmarked."); + makeMessage_Widget(uiHeading_ColorEscape "${heading.import.bookmarks}", + "${dlg.import.notnew}"); } return iTrue; } @@ -2117,9 +2126,9 @@ static iBool handleCommand_DocumentWidget_(iDocumentWidget *d, const char *cmd) } } else if (equal_Command(cmd, "document.autoreload.menu") && document_App() == d) { - iWidget *dlg = makeQuestion_Widget(uiTextAction_ColorEscape "AUTO-RELOAD", - "Select the auto-reload interval for this tab.", - (iMenuItem[]){ { "Cancel", 0, 0, NULL } }, + iWidget *dlg = makeQuestion_Widget(uiTextAction_ColorEscape "${heading.autoreload}", + "${dlg.autoreload}", + (iMenuItem[]){ { "${cancel}", 0, 0, NULL } }, 1); for (int i = 0; i < max_ReloadInterval; ++i) { insertChildAfterFlags_Widget( @@ -2454,7 +2463,7 @@ static iBool processEvent_DocumentWidget_(iDocumentWidget *d, const SDL_Event *e init_Array(&items, sizeof(iMenuItem)); if (d->contextLink) { const iString *linkUrl = linkUrl_GmDocument(d->doc, d->contextLink->linkId); - const int linkFlags = linkFlags_GmDocument(d->doc, d->contextLink->linkId); +// const int linkFlags = linkFlags_GmDocument(d->doc, d->contextLink->linkId); const iRangecc scheme = urlScheme_String(linkUrl); const iBool isGemini = equalCase_Rangecc(scheme, "gemini"); iBool isNative = iFalse; @@ -2466,11 +2475,11 @@ static iBool processEvent_DocumentWidget_(iDocumentWidget *d, const SDL_Event *e pushBackN_Array( &items, (iMenuItem[]){ - { openTab_Icon " Open Link in New Tab", + { openTab_Icon " ${link.newtab}", 0, 0, format_CStr("!open newtab:1 url:%s", cstr_String(linkUrl)) }, - { openTabBg_Icon " Open Link in Background Tab", + { openTabBg_Icon " ${link.newtab.background}", 0, 0, format_CStr("!open newtab:2 url:%s", cstr_String(linkUrl)) } }, @@ -2479,7 +2488,7 @@ static iBool processEvent_DocumentWidget_(iDocumentWidget *d, const SDL_Event *e else if (!willUseProxy_App(scheme)) { pushBack_Array( &items, - &(iMenuItem){ openExt_Icon " Open Link in Default Browser", + &(iMenuItem){ openExt_Icon " ${link.browser}", 0, 0, format_CStr("!open default:1 url:%s", cstr_String(linkUrl)) }); @@ -2489,7 +2498,7 @@ static iBool processEvent_DocumentWidget_(iDocumentWidget *d, const SDL_Event *e &items, (iMenuItem[]){ { "---", 0, 0, NULL }, - { isGemini ? "Open without Proxy" : openExt_Icon " Open Link in Default Browser", + { isGemini ? "${link.noproxy}" : openExt_Icon " ${link.browser}", 0, 0, format_CStr("!open noproxy:1 url:%s", cstr_String(linkUrl)) } }, @@ -2500,8 +2509,8 @@ static iBool processEvent_DocumentWidget_(iDocumentWidget *d, const SDL_Event *e urlEncodeSpaces_String(linkLabel); pushBackN_Array(&items, (iMenuItem[]){ { "---", 0, 0, NULL }, - { "Copy Link", 0, 0, "document.copylink" }, - { pin_Icon " Bookmark Link...", + { "${link.copy}", 0, 0, "document.copylink" }, + { pin_Icon " ${link.bookmark}", 0, 0, format_CStr("!bookmark.add title:%s url:%s", @@ -2512,7 +2521,7 @@ static iBool processEvent_DocumentWidget_(iDocumentWidget *d, const SDL_Event *e if (isNative && d->contextLink->mediaType != download_GmRunMediaType) { pushBackN_Array(&items, (iMenuItem[]){ { "---", 0, 0, NULL }, - { download_Icon " Download Linked File", 0, 0, "document.downloadlink" }, + { download_Icon " ${link.download}", 0, 0, "document.downloadlink" }, }, 2); } iMediaRequest *mediaReq; @@ -2532,39 +2541,39 @@ static iBool processEvent_DocumentWidget_(iDocumentWidget *d, const SDL_Event *e if (!isEmpty_Range(&d->selectMark)) { pushBackN_Array( &items, - (iMenuItem[]){ { "Copy", 0, 0, "copy" }, { "---", 0, 0, NULL } }, + (iMenuItem[]){ { "${menu.copy}", 0, 0, "copy" }, { "---", 0, 0, NULL } }, 2); } if (deviceType_App() == desktop_AppDeviceType) { pushBackN_Array( &items, (iMenuItem[]){ - { "Go Back", navigateBack_KeyShortcut, "navigate.back" }, - { "Go Forward", navigateForward_KeyShortcut, "navigate.forward" } }, + { "${menu.back}", navigateBack_KeyShortcut, "navigate.back" }, + { "${menu.forward}", navigateForward_KeyShortcut, "navigate.forward" } }, 2); } pushBackN_Array( &items, (iMenuItem[]){ - { upArrow_Icon " Go to Parent", navigateParent_KeyShortcut, "navigate.parent" }, - { upArrowBar_Icon " Go to Root", navigateRoot_KeyShortcut, "navigate.root" }, + { upArrow_Icon " ${menu.parent}", navigateParent_KeyShortcut, "navigate.parent" }, + { upArrowBar_Icon " ${menu.root}", navigateRoot_KeyShortcut, "navigate.root" }, { "---", 0, 0, NULL }, - { reload_Icon " Reload Page", reload_KeyShortcut, "navigate.reload" }, - { timer_Icon " Set Auto-Reload...", 0, 0, "document.autoreload.menu" }, + { reload_Icon " ${menu.reload}", reload_KeyShortcut, "navigate.reload" }, + { timer_Icon " ${menu.autoreload}", 0, 0, "document.autoreload.menu" }, { "---", 0, 0, NULL }, - { pin_Icon " Bookmark Page...", SDLK_d, KMOD_PRIMARY, "bookmark.add" }, - { star_Icon " Subscribe to Page...", subscribeToPage_KeyModifier, "feeds.subscribe" }, + { pin_Icon " ${menu.page.bookmark}", SDLK_d, KMOD_PRIMARY, "bookmark.add" }, + { star_Icon " ${menu.page.subscribe}", subscribeToPage_KeyModifier, "feeds.subscribe" }, { "---", 0, 0, NULL }, - { book_Icon " Import Links as Bookmarks...", 0, 0, "bookmark.links confirm:1" }, - { globe_Icon " Translate...", 0, 0, "document.translate" }, + { book_Icon " ${menu.page.import}", 0, 0, "bookmark.links confirm:1" }, + { globe_Icon " ${menu.page.translate}", 0, 0, "document.translate" }, { "---", 0, 0, NULL }, - { "Copy Page URL", 0, 0, "document.copylink" } }, + { "${menu.page.copyurl}", 0, 0, "document.copylink" } }, 12); if (isEmpty_Range(&d->selectMark)) { pushBackN_Array( &items, (iMenuItem[]){ - { "Copy Page Source", 'c', KMOD_PRIMARY, "copy" }, + { "${menu.page.copysource}", 'c', KMOD_PRIMARY, "copy" }, { download_Icon " " saveToDownloads_Label, SDLK_s, KMOD_PRIMARY, "document.save" } }, 2); } @@ -2692,14 +2701,14 @@ static iBool processEvent_DocumentWidget_(iDocumentWidget *d, const SDL_Event *e const iString *url = absoluteUrl_String( d->mod.url, linkUrl_GmDocument(d->doc, linkId)); makeQuestion_Widget( - uiTextCaution_ColorEscape "OPEN LINK", + uiTextCaution_ColorEscape "${heading.openlink}", format_CStr( - "Open this link in the default browser?\n" uiTextAction_ColorEscape - "%s", + cstr_Lang("dlg.openlink.confirm"), + uiTextAction_ColorEscape, cstr_String(url)), (iMenuItem[]){ - { "Cancel", 0, 0, NULL }, - { uiTextCaution_ColorEscape "Open Link", + { "${cancel}", 0, 0, NULL }, + { uiTextCaution_ColorEscape "${dlg.openlink}", 0, 0, format_CStr("!open default:1 url:%s", cstr_String(url)) } }, 2); } @@ -2823,7 +2832,7 @@ static void drawBannerRun_DrawContext_(iDrawContext *d, const iGmRun *run, iInt2 const int domainHeight = lineHeight_Text(banner_FontId) * 2; iRect rect = { add_I2(visPos, init_I2(0, domainHeight)), addY_I2(run->visBounds.size, -domainHeight - lineHeight_Text(uiContent_FontId)) }; - format_String(&str, "UNTRUSTED CERTIFICATE"); + format_String(&str, "${heading.certwarn}"); const int certFlags = d->widget->certFlags; if (certFlags & timeVerified_GmCertFlag && certFlags & domainVerified_GmCertFlag) { iUrl parts; @@ -2834,32 +2843,30 @@ static void drawBannerRun_DrawContext_(iDrawContext *d, const iGmRun *run, iInt2 iTime now; initCurrent_Time(&now); const int days = secondsSince_Time(&oldUntil, &now) / 3600 / 24; + appendCStr_String(&str, "\n"); if (days <= 30) { appendFormat_String(&str, - "\nThe received certificate may have been recently renewed " - "\u2014 it is for the correct domain and has not expired. " - "The currently trusted certificate will expire on %s, " - "in %d days.", + cstr_Lang("dlg.certwarn.mayberenewed"), cstrCollect_String(format_Date(&exp, "%Y-%m-%d")), days); } else { - appendFormat_String(&str, "\nThe received certificate is valid but different than " - "the one we trust."); + appendCStr_String(&str, cstr_Lang("dlg.certwarn.different")); } } else if (certFlags & domainVerified_GmCertFlag) { - appendFormat_String(&str, "\nThe received certificate has expired on %s.", + appendCStr_String(&str, "\n"); + appendFormat_String(&str, cstr_Lang("dlg.certwarn.expired"), cstrCollect_String(format_Date(&d->widget->certExpiry, "%Y-%m-%d"))); } else if (certFlags & timeVerified_GmCertFlag) { - appendFormat_String(&str, "\nThe received certificate is for the wrong domain (%s). " - "This may be a server configuration problem.", + appendCStr_String(&str, "\n"); + appendFormat_String(&str, cstr_Lang("dlg.certwarn.domain"), cstr_String(d->widget->certSubject)); } else { - appendFormat_String(&str, "\nThe received certificate is expired AND for the " - "wrong domain."); + appendCStr_String(&str, "\n"); + appendCStr_String(&str, cstr_Lang("dlg.certwarn.domain.expired")); } const iInt2 dims = advanceWrapRange_Text( uiContent_FontId, width_Rect(rect) - 16 * gap_UI, range_String(&str)); @@ -2880,6 +2887,7 @@ static void drawBannerRun_DrawContext_(iDrawContext *d, const iGmRun *run, iInt2 bpos = topLeft_Rect(rect); draw_Text(uiLabelLarge_FontId, bpos, fg, "\u26a0"); adjustEdges_Rect(&rect, 0, -8 * gap_UI, 0, 8 * gap_UI); + translate_Lang(&str); drawWrapRange_Text(uiContent_FontId, addY_I2(topLeft_Rect(rect), yOff), width_Rect(rect), @@ -2990,8 +2998,9 @@ static void drawRun_DrawContext_(void *context, const iGmRun *run) { iGmMediaInfo info; imageInfo_Media(constMedia_GmDocument(doc), imageId, &info); const iInt2 imgSize = imageSize_Media(constMedia_GmDocument(doc), imageId); - format_String(&text, "%s \u2014 %d x %d \u2014 %.1fMB", - info.type, imgSize.x, imgSize.y, info.numBytes / 1.0e6f); + format_String(&text, "%s \u2014 %d x %d \u2014 %.1f%s", + info.type, imgSize.x, imgSize.y, info.numBytes / 1.0e6f, + cstr_Lang("mb")); } else if (audioId) { iGmMediaInfo info; @@ -3047,24 +3056,26 @@ static void drawRun_DrawContext_(void *context, const iGmRun *run) { if (run->flags & endOfLine_GmRunFlag && (flags & (imageFileExtension_GmLinkFlag | audioFileExtension_GmLinkFlag) || showHost)) { - format_String(&str, - " \u2014%s%s%s\r%c%s", - showHost ? " " : "", - showHost ? (flags & mailto_GmLinkFlag - ? cstr_String(url) - : ~flags & gemini_GmLinkFlag - ? format_CStr("%s://%s", - cstr_Rangecc(parts.scheme), - cstr_Rangecc(parts.host)) - : cstr_Rangecc(parts.host)) - : "", - showHost && (showImage || showAudio) ? " \u2014" : "", - showImage || showAudio - ? asciiBase_ColorEscape + fg - : (asciiBase_ColorEscape + - linkColor_GmDocument(doc, run->linkId, domain_GmLinkPart)), - showImage ? " View Image \U0001f5bb" - : showAudio ? " Play Audio \U0001f3b5" : ""); + format_String( + &str, + " \u2014%s%s%s\r%c%s", + showHost ? " " : "", + showHost + ? (flags & mailto_GmLinkFlag ? cstr_String(url) + : ~flags & gemini_GmLinkFlag ? format_CStr("%s://%s", + cstr_Rangecc(parts.scheme), + cstr_Rangecc(parts.host)) + : cstr_Rangecc(parts.host)) + : "", + showHost && (showImage || showAudio) ? " \u2014" : "", + showImage || showAudio + ? asciiBase_ColorEscape + fg + : (asciiBase_ColorEscape + + linkColor_GmDocument(doc, run->linkId, domain_GmLinkPart)), + showImage || showAudio + ? format_CStr(showImage ? " %s \U0001f5bb" : " %s \U0001f3b5", + cstr_Lang(showImage ? "link.hint.image" : "link.hint.audio")) + : ""); } if (run->flags & endOfLine_GmRunFlag && flags & visited_GmLinkFlag) { iDate date; @@ -3398,7 +3409,7 @@ const iString *bookmarkTitle_DocumentWidget(const iDocumentWidget *d) { } } if (isEmpty_StringArray(title)) { - pushBackCStr_StringArray(title, "Blank Page"); + pushBackCStr_StringArray(title, cstr_Lang("bookmark.title.blank")); } return collect_String(joinCStr_StringArray(title, " \u2014 ")); } diff --git a/src/ui/labelwidget.c b/src/ui/labelwidget.c index 0becd419..2a1eb06a 100644 --- a/src/ui/labelwidget.c +++ b/src/ui/labelwidget.c @@ -429,6 +429,8 @@ void updateTextCStr_LabelWidget(iLabelWidget *d, const char *text) { void setTextCStr_LabelWidget(iLabelWidget *d, const char *text) { setCStr_String(&d->label, text); + set_String(&d->srcLabel, &d->label); + replaceVariables_LabelWidget_(d); updateSize_LabelWidget(d); } diff --git a/src/ui/sidebarwidget.c b/src/ui/sidebarwidget.c index 2cc1d899..7a704de7 100644 --- a/src/ui/sidebarwidget.c +++ b/src/ui/sidebarwidget.c @@ -168,11 +168,14 @@ static void updateItems_SidebarWidget_(iSidebarWidget *d) { on = entryDate; iSidebarItem *sep = new_SidebarItem(); sep->listItem.isSeparator = iTrue; - iString *text = format_Date(&on, on.year == today.year ? "%b. %d" : "%b. %d, %Y"); + iString *text = format_Date(&on, + cstr_Lang(on.year == today.year + ? "sidebar.date.thisyear" + : "sidebar.date.otheryear")); if (today.year == on.year && today.month == on.month && today.day == on.day) { - appendCStr_String(text, " \u2014 Today"); + appendCStr_String(text, " \u2014 ${feeds.today}"); } set_String(&sep->meta, text); delete_String(text); @@ -203,16 +206,16 @@ static void updateItems_SidebarWidget_(iSidebarWidget *d) { } d->menu = makeMenu_Widget( as_Widget(d), - (iMenuItem[]){ { openTab_Icon " Open Entry in New Tab", 0, 0, "feed.entry.opentab" }, - { circle_Icon " Mark as Read", 0, 0, "feed.entry.toggleread" }, - { pin_Icon " Add Bookmark...", 0, 0, "feed.entry.bookmark" }, + (iMenuItem[]){ { openTab_Icon " ${feeds.entry.newtab}", 0, 0, "feed.entry.opentab" }, + { circle_Icon " ${feeds.entry.markread}", 0, 0, "feed.entry.toggleread" }, + { pin_Icon " ${feeds.entry.bookmark}", 0, 0, "feed.entry.bookmark" }, { "---", 0, 0, NULL }, - { page_Icon " Open Feed Page", 0, 0, "feed.entry.openfeed" }, - { edit_Icon " Edit Feed...", 0, 0, "feed.entry.edit" }, - { whiteStar_Icon " " uiTextCaution_ColorEscape "Unsubscribe...", 0, 0, "feed.entry.unsubscribe" }, + { page_Icon " ${feeds.entry.openfeed}", 0, 0, "feed.entry.openfeed" }, + { edit_Icon " ${feeds.edit}", 0, 0, "feed.entry.edit" }, + { whiteStar_Icon " " uiTextCaution_ColorEscape "${feeds.unsubscribe}", 0, 0, "feed.entry.unsubscribe" }, { "---", 0, 0, NULL }, - { check_Icon " Mark All as Read", SDLK_a, KMOD_SHIFT, "feeds.markallread" }, - { reload_Icon " Refresh Feeds", SDLK_r, KMOD_PRIMARY | KMOD_SHIFT, "feeds.refresh" } }, + { check_Icon " ${feeds.markallread}", SDLK_a, KMOD_SHIFT, "feeds.markallread" }, + { reload_Icon " ${feeds.refresh}", SDLK_r, KMOD_PRIMARY | KMOD_SHIFT, "feeds.refresh" } }, 10); break; } @@ -262,20 +265,20 @@ static void updateItems_SidebarWidget_(iSidebarWidget *d) { } d->menu = makeMenu_Widget( as_Widget(d), - (iMenuItem[]){ { openTab_Icon " Open in New Tab", 0, 0, "bookmark.open newtab:1" }, - { openTabBg_Icon " Open in Background Tab", 0, 0, "bookmark.open newtab:2" }, + (iMenuItem[]){ { openTab_Icon " ${menu.opentab}", 0, 0, "bookmark.open newtab:1" }, + { openTabBg_Icon " ${menu.opentab.background}", 0, 0, "bookmark.open newtab:2" }, { "---", 0, 0, NULL }, - { edit_Icon " Edit...", 0, 0, "bookmark.edit" }, - { copy_Icon " Duplicate...", 0, 0, "bookmark.dup" }, - { "Copy URL", 0, 0, "bookmark.copy" }, + { edit_Icon " ${menu.edit}", 0, 0, "bookmark.edit" }, + { copy_Icon " ${menu.dup}", 0, 0, "bookmark.dup" }, + { "${menu.copyurl}", 0, 0, "bookmark.copy" }, { "---", 0, 0, NULL }, { "?", 0, 0, "bookmark.tag tag:subscribed" }, { "?", 0, 0, "bookmark.tag tag:homepage" }, { "?", 0, 0, "bookmark.tag tag:remotesource" }, { "---", 0, 0, NULL }, - { delete_Icon " " uiTextCaution_ColorEscape "Delete Bookmark", 0, 0, "bookmark.delete" }, + { delete_Icon " " uiTextCaution_ColorEscape "${bookmark.delete}", 0, 0, "bookmark.delete" }, { "---", 0, 0, NULL }, - { reload_Icon " Refresh Remote Sources", 0, 0, "bookmarks.reload.remote" } }, + { reload_Icon " ${bookmarks.reload}", 0, 0, "bookmarks.reload.remote" } }, 14); break; } @@ -301,8 +304,10 @@ static void updateItems_SidebarWidget_(iSidebarWidget *d) { /* Date separator. */ iSidebarItem *sep = new_SidebarItem(); sep->listItem.isSeparator = iTrue; - const iString *text = collect_String(format_Date( - &date, date.year != thisYear ? "%b. %d, %Y" : "%b. %d")); + const iString *text = collect_String( + format_Date(&date, + cstr_Lang(date.year != thisYear ? "sidebar.date.otheryear" + : "sidebar.date.thisyear"))); set_String(&sep->meta, text); const int yOffset = itemHeight_ListWidget(d->list) * 2 / 3; sep->id = yOffset; @@ -322,12 +327,12 @@ static void updateItems_SidebarWidget_(iSidebarWidget *d) { d->menu = makeMenu_Widget( as_Widget(d), (iMenuItem[]){ - { "Copy URL", 0, 0, "history.copy" }, - { pin_Icon " Add Bookmark...", 0, 0, "history.addbookmark" }, + { "${menu.copyurl}", 0, 0, "history.copy" }, + { pin_Icon " ${sidebar.entry.bookmark}", 0, 0, "history.addbookmark" }, { "---", 0, 0, NULL }, - { close_Icon " Forget URL", 0, 0, "history.delete" }, + { close_Icon " ${menu.forgeturl}", 0, 0, "history.delete" }, { "---", 0, 0, NULL }, - { delete_Icon " " uiTextCaution_ColorEscape "Clear History...", 0, 0, "history.clear confirm:1" }, + { delete_Icon " " uiTextCaution_ColorEscape "${history.clear}", 0, 0, "history.clear confirm:1" }, }, 6); break; } @@ -342,17 +347,16 @@ static void updateItems_SidebarWidget_(iSidebarWidget *d) { iDate until; validUntil_TlsCertificate(ident->cert, &until); const iBool isActive = isUsedOn_GmIdentity(ident, tabUrl); - format_String( - &item->meta, - "%s", - isActive ? "Using on this page" - : isUsed_GmIdentity(ident) - ? format_CStr("Used on %zu URLs", size_StringSet(ident->useUrls)) - : "Not used"); + format_String(&item->meta, + "%s", + isActive ? cstr_Lang("ident.using") + : isUsed_GmIdentity(ident) + ? format_CStr(cstr_Lang("ident.usedonurls"), size_StringSet(ident->useUrls)) + : cstr_Lang("ident.notused")); const char *expiry = ident->flags & temporary_GmIdentityFlag - ? "Temporary" - : cstrCollect_String(format_Date(&until, "Expires %b %d, %Y")); + ? cstr_Lang("ident.temporary") + : cstrCollect_String(format_Date(&until, cstr_Lang("ident.expiry"))); if (isEmpty_String(&ident->notes)) { appendFormat_String(&item->meta, "\n%s", expiry); } @@ -368,17 +372,17 @@ static void updateItems_SidebarWidget_(iSidebarWidget *d) { iRelease(item); } const iMenuItem menuItems[] = { - { person_Icon " Use on This Page", 0, 0, "ident.use arg:1" }, - { close_Icon " Stop Using on This Page", 0, 0, "ident.use arg:0" }, - { close_Icon " Stop Using Everywhere", 0, 0, "ident.use arg:0 clear:1" }, - { "Show Usage", 0, 0, "ident.showuse" }, + { person_Icon " ${ident.use}", 0, 0, "ident.use arg:1" }, + { close_Icon " ${ident.stopuse}", 0, 0, "ident.use arg:0" }, + { close_Icon " ${ident.stopuse.all}", 0, 0, "ident.use arg:0 clear:1" }, + { "${ident.showuse}", 0, 0, "ident.showuse" }, { "---", 0, 0, NULL }, - { edit_Icon " Edit Notes...", 0, 0, "ident.edit" }, - { "Copy Fingerprint", 0, 0, "ident.fingerprint" }, + { edit_Icon " ${menu.edit.notes}", 0, 0, "ident.edit" }, + { "${ident.fingerprint}", 0, 0, "ident.fingerprint" }, // { "Pick Icon...", 0, 0, "ident.pickicon" }, { "---", 0, 0, NULL }, //{ "Reveal Files", 0, 0, "ident.reveal" }, - { delete_Icon " " uiTextCaution_ColorEscape "Delete Identity...", 0, 0, "ident.delete confirm:1" }, + { delete_Icon " " uiTextCaution_ColorEscape "${ident.delete}", 0, 0, "ident.delete confirm:1" }, }; d->menu = makeMenu_Widget(as_Widget(d), menuItems, iElemCount(menuItems)); break; @@ -394,7 +398,7 @@ static void updateItems_SidebarWidget_(iSidebarWidget *d) { iWidget *div = makeVDiv_Widget(); setPadding_Widget(div, 3 * gap_UI, 0, 3 * gap_UI, 2 * gap_UI); addChildFlags_Widget(div, iClob(new_Widget()), expand_WidgetFlag); /* pad */ - addChild_Widget(div, iClob(new_LabelWidget("Refresh Feeds", "feeds.refresh"))); + addChild_Widget(div, iClob(new_LabelWidget("${menu.feeds.refresh}", "feeds.refresh"))); addChildFlags_Widget(div, iClob(new_Widget()), expand_WidgetFlag); /* pad */ addChild_Widget(d->blank, iClob(div)); } @@ -402,20 +406,22 @@ static void updateItems_SidebarWidget_(iSidebarWidget *d) { iWidget *div = makeVDiv_Widget(); setPadding_Widget(div, 3 * gap_UI, 0, 3 * gap_UI, 2 * gap_UI); addChildFlags_Widget(div, iClob(new_Widget()), expand_WidgetFlag); /* pad */ - iLabelWidget *msg = new_LabelWidget("No Identities", NULL); + iLabelWidget *msg = new_LabelWidget("${sidebar.empty.idents}", NULL); setFont_LabelWidget(msg, uiLabelLarge_FontId); addChildFlags_Widget(div, iClob(msg), frameless_WidgetFlag); addChild_Widget(div, iClob(makePadding_Widget(3 * gap_UI))); - addChild_Widget(div, iClob(new_LabelWidget("New Identity...", "ident.new"))); + addChild_Widget(div, iClob(new_LabelWidget("${menu.identity.new}", "ident.new"))); addChild_Widget(div, iClob(makePadding_Widget(gap_UI))); - addChild_Widget(div, iClob(new_LabelWidget("Import...", "ident.import"))); + addChild_Widget(div, iClob(new_LabelWidget("${menu.identity.import}", "ident.import"))); addChildFlags_Widget(div, iClob(new_Widget()), expand_WidgetFlag); /* pad */ - setBackgroundColor_Widget(addChildFlags_Widget( - div, - iClob(new_LabelWidget("See " uiTextStrong_ColorEscape "Help" restore_ColorEscape - " for more information about TLS client certificates.", - "!open newtab:1 gotoheading:1.6 url:about:help")), - frameless_WidgetFlag | fixedHeight_WidgetFlag | wrapText_WidgetFlag), + setBackgroundColor_Widget( + addChildFlags_Widget( + div, + iClob(new_LabelWidget(format_CStr(cstr_Lang("ident.gotohelp"), + uiTextStrong_ColorEscape, + restore_ColorEscape), + "!open newtab:1 gotoheading:1.6 url:about:help")), + frameless_WidgetFlag | fixedHeight_WidgetFlag | wrapText_WidgetFlag), uiBackgroundSidebar_ColorId); addChild_Widget(d->blank, iClob(div)); } @@ -459,11 +465,11 @@ int width_SidebarWidget(const iSidebarWidget *d) { } static const char *normalModeLabels_[max_SidebarMode] = { - pin_Icon " Bookmarks", - star_Icon " Feeds", - clock_Icon " History", - person_Icon " Identities", - page_Icon " Outline", + pin_Icon " ${sidebar.bookmarks}", + star_Icon " ${sidebar.feeds}", + clock_Icon " ${sidebar.history}", + person_Icon " ${sidebar.identities}", + page_Icon " ${sidebar.outline}", }; static const char *tightModeLabels_[max_SidebarMode] = { @@ -554,7 +560,7 @@ void init_SidebarWidget(iSidebarWidget *d, enum iSidebarSide side) { // } } else { - iLabelWidget *heading = new_LabelWidget(person_Icon " Identities", NULL); + iLabelWidget *heading = new_LabelWidget(person_Icon " ${sidebar.identities}", NULL); checkIcon_LabelWidget(heading); setBackgroundColor_Widget(as_Widget(heading), uiBackgroundSidebar_ColorId); setTextColor_LabelWidget(heading, uiTextSelected_ColorId); @@ -699,7 +705,7 @@ static void checkModeButtonLayout_SidebarWidget_(iSidebarWidget *d) { collectNewFormat_String("%s " uiTextAction_ColorEscape "%zu%s", tightModeLabels_[i], d->numUnreadEntries, - !isTight ? " Unread" : "")); + !isTight ? " ${sidebar.unread}" : "")); } else { updateTextCStr_LabelWidget(button, @@ -1008,7 +1014,7 @@ static iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev) postCommand_App("visited.changed"); return iTrue; } - if (isCommand_Widget(w, ev, "feed.entry.bookmark")) { + if (isCommand_Widget(w, ev, "sidebar.entry.bookmark")) { makeBookmarkCreation_Widget(&item->url, &item->label, item->icon); postCommand_App("focus.set id:bmed.title"); return iTrue; @@ -1032,12 +1038,12 @@ static iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev) } else { makeQuestion_Widget( - uiTextCaution_ColorEscape "UNSUBSCRIBE", - format_CStr("Really unsubscribe from feed\n\"%s\"?", + uiTextCaution_ColorEscape "${heading.unsub}", + format_CStr(cstr_Lang("dlg.confirm.unsub"), cstr_String(&feedBookmark->title)), (iMenuItem[]){ - { "Cancel", 0, 0, NULL }, - { uiTextCaution_ColorEscape "Unsubscribe", + { "${cancel}", 0, 0, NULL }, + { uiTextCaution_ColorEscape "${dlg.unsub}", 0, 0, format_CStr("!feed.entry.unsubscribe arg:1 ptr:%p", d) } }, @@ -1069,7 +1075,7 @@ static iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev) else if (isCommand_Widget(w, ev, "ident.showuse")) { const iGmIdentity *ident = menuIdentity_SidebarWidget_(d); if (ident) { - makeMessage_Widget(uiHeading_ColorEscape "IDENTITY USAGE", + makeMessage_Widget(uiHeading_ColorEscape "${heading.ident.use}", cstrCollect_String(joinCStr_StringSet(ident->useUrls, "\n"))); } return iTrue; @@ -1079,8 +1085,8 @@ static iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev) if (ident) { makeValueInput_Widget(get_Window()->root, &ident->notes, - uiHeading_ColorEscape "IDENTITY NOTES", - format_CStr("Notes about %s:", cstr_String(name_GmIdentity(ident))), + uiHeading_ColorEscape "${heading.ident.notes}", + format_CStr(cstr_Lang("dlg.ident.notes"), cstr_String(name_GmIdentity(ident))), uiTextAction_ColorEscape "OK", format_CStr("!ident.setnotes ident:%p ptr:%p", ident, d)); } @@ -1120,15 +1126,16 @@ static iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev) iSidebarItem *item = d->contextItem; if (argLabel_Command(cmd, "confirm")) { makeQuestion_Widget( - uiTextCaution_ColorEscape "DELETE IDENTITY", - format_CStr( - "Do you really want to delete the identity\n" uiTextAction_ColorEscape - "%s\n" uiText_ColorEscape - "including its certificate and private key files?", - cstr_String(&item->label)), - (iMenuItem[]){ { "Cancel", 0, 0, NULL }, - { uiTextCaution_ColorEscape "Delete Identity and Files", - 0, 0, format_CStr("!ident.delete confirm:0 ptr:%p", d) } }, + uiTextCaution_ColorEscape "${heading.ident.delete}", + format_CStr(cstr_Lang("dlg.confirm.ident.delete"), + uiTextAction_ColorEscape, + cstr_String(&item->label), + uiText_ColorEscape), + (iMenuItem[]){ { "${cancel}", 0, 0, NULL }, + { uiTextCaution_ColorEscape "${dlg.ident.delete}", + 0, + 0, + format_CStr("!ident.delete confirm:0 ptr:%p", d) } }, 2); return iTrue; } @@ -1163,10 +1170,10 @@ static iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev) } else if (equal_Command(cmd, "history.clear")) { if (argLabel_Command(cmd, "confirm")) { - makeQuestion_Widget(uiTextCaution_ColorEscape "CLEAR HISTORY", - "Do you really want to erase the history of all visited pages?", - (iMenuItem[]){ { "Cancel", 0, 0, NULL }, - { uiTextCaution_ColorEscape "Clear History", + makeQuestion_Widget(uiTextCaution_ColorEscape "${heading.history.clear}", + "${dlg.confirm.history.clear}", + (iMenuItem[]){ { "${cancel}", 0, 0, NULL }, + { uiTextCaution_ColorEscape "${dlg.history.clear}", 0, 0, "history.clear confirm:0" } }, 2); } @@ -1215,24 +1222,24 @@ static iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev) if (menuItem) { setTextCStr_LabelWidget(menuItem, hasTag_Bookmark(bm, "homepage") - ? home_Icon " Remove Homepage" - : home_Icon " Use as Homepage"); + ? home_Icon " ${bookmark.untag.home}" + : home_Icon " ${bookmark.tag.home}"); checkIcon_LabelWidget(menuItem); } menuItem = findMenuItem_Widget(d->menu, "bookmark.tag tag:subscribed"); if (menuItem) { setTextCStr_LabelWidget(menuItem, hasTag_Bookmark(bm, "subscribed") - ? star_Icon " Unsubscribe from Feed" - : star_Icon " Subscribe to Feed"); + ? star_Icon " ${bookmark.untag.sub}" + : star_Icon " ${bookmark.tag.sub}"); checkIcon_LabelWidget(menuItem); } menuItem = findMenuItem_Widget(d->menu, "bookmark.tag tag:remotesource"); if (menuItem) { setTextCStr_LabelWidget(menuItem, hasTag_Bookmark(bm, "remotesource") - ? downArrowBar_Icon " Remove Bookmark Source" - : downArrowBar_Icon " Use as Bookmark Source"); + ? downArrowBar_Icon " ${bookmark.untag.remote}" + : downArrowBar_Icon " ${bookmark.tag.remote}"); checkIcon_LabelWidget(menuItem); } } @@ -1241,8 +1248,8 @@ static iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev) iLabelWidget *menuItem = findMenuItem_Widget(d->menu, "feed.entry.toggleread"); const iBool isRead = d->contextItem->indent == 0; setTextCStr_LabelWidget(menuItem, - isRead ? circle_Icon " Mark as Unread" - : circleWhite_Icon " Mark as Read"); + isRead ? circle_Icon " ${feeds.entry.markunread}" + : circleWhite_Icon " ${feeds.entry.markread}"); checkIcon_LabelWidget(menuItem); } else if (d->mode == identities_SidebarMode) { diff --git a/src/ui/translation.c b/src/ui/translation.c index d3ac5bba..aaedfa4f 100644 --- a/src/ui/translation.c +++ b/src/ui/translation.c @@ -471,7 +471,7 @@ iBool handleCommand_Translation(iTranslation *d, const char *cmd) { updateTextCStr_LabelWidget( findMenuItem_Widget(findChild_Widget(d->dlg, "dialogbuttons"), "translation.cancel"), - "Dismiss"); + "${dismiss}"); cancel_TlsRequest(d->request); } else { diff --git a/src/ui/util.c b/src/ui/util.c index d68ae738..5a08ec20 100644 --- a/src/ui/util.c +++ b/src/ui/util.c @@ -498,7 +498,7 @@ iWidget *makeMenu_Widget(iWidget *parent, const iMenuItem *items, size_t n) { if (deviceType_App() == phone_AppDeviceType) { addChild_Widget(menu, iClob(makeMenuSeparator_())); addChildFlags_Widget(menu, - iClob(new_LabelWidget("Cancel", "cancel")), + iClob(new_LabelWidget("${cancel}", "cancel")), itemFlags | noBackground_WidgetFlag | frameless_WidgetFlag | alignLeft_WidgetFlag); } @@ -937,7 +937,7 @@ static iBool slidePanelHandler_(iWidget *d, const char *cmd) { iWidget *button = pointer_Command(cmd); iWidget *panel = userData_Object(button); openMenu_Widget(panel, zero_I2()); -// updateTextCStr_LabelWidget(findWidget_App("panel.back"), ""); +// updateTextCStr_LabelWidget(findWidget_App("panel.back"), ); return iTrue; } if (equal_Command(cmd, "mouse.clicked") && arg_Command(cmd) && @@ -1462,7 +1462,7 @@ void makeFilePath_Widget(iWidget * parent, addChild_Widget(dlg, iClob(makePadding_Widget(gap_UI))); iWidget *div = new_Widget(); { setFlags_Widget(div, arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag, iTrue); - addChild_Widget(div, iClob(newKeyMods_LabelWidget("Cancel", SDLK_ESCAPE, 0, "filepath.cancel"))); + addChild_Widget(div, iClob(newKeyMods_LabelWidget("${cancel}", SDLK_ESCAPE, 0, "filepath.cancel"))); addChild_Widget(div, iClob(newKeyMods_LabelWidget(acceptLabel, SDLK_RETURN, 0, "filepath.accept"))); } addChild_Widget(dlg, iClob(div)); @@ -1566,7 +1566,7 @@ iWidget *makeDialogButtons_Widget(const iMenuItem *actions, size_t numActions) { addChildFlags_Widget(div, iClob(new_Widget()), expand_WidgetFlag); continue; } - if (!iCmpStr(label, "Cancel") && !cmd) { + if (!iCmpStr(label, "${cancel}") && !cmd) { cmd = "cancel"; key = SDLK_ESCAPE; kmods = 0; @@ -1621,7 +1621,7 @@ iWidget *makeValueInput_Widget(iWidget *parent, const iString *initialValue, con addChild_Widget( dlg, iClob(makeDialogButtons_Widget( - (iMenuItem[]){ { "Cancel", 0, 0, NULL }, { acceptLabel, 0, 0, "valueinput.accept" } }, + (iMenuItem[]){ { "${cancel}", 0, 0, NULL }, { acceptLabel, 0, 0, "valueinput.accept" } }, 2))); finalizeSheet_Widget(dlg); if (parent) { @@ -1970,7 +1970,7 @@ iWidget *makePreferences_Widget(void) { } addChild_Widget(dlg, iClob(makeDialogButtons_Widget( - (iMenuItem[]){ { "Dismiss", SDLK_ESCAPE, 0, "prefs.dismiss" } }, 1))); + (iMenuItem[]){ { "${dismiss}", SDLK_ESCAPE, 0, "prefs.dismiss" } }, 1))); addChild_Widget(get_Window()->root, iClob(dlg)); finalizeSheet_Widget(dlg); return dlg; @@ -2001,7 +2001,7 @@ iWidget *makeBookmarkEditor_Widget(void) { } addChild_Widget( dlg, - iClob(makeDialogButtons_Widget((iMenuItem[]){ { "Cancel", 0, 0, NULL }, + iClob(makeDialogButtons_Widget((iMenuItem[]){ { "${cancel}", 0, 0, NULL }, { uiTextCaution_ColorEscape "Save Bookmark", SDLK_RETURN, KMOD_PRIMARY, @@ -2131,7 +2131,7 @@ iWidget *makeFeedSettings_Widget(uint32_t bookmarkId) { iWidget *buttons = addChild_Widget(dlg, iClob(makeDialogButtons_Widget( - (iMenuItem[]){ { "Cancel", 0, 0, NULL }, + (iMenuItem[]){ { "${cancel}", 0, 0, NULL }, { bookmarkId ? uiTextCaution_ColorEscape "Save Settings" : uiTextCaution_ColorEscape "Subscribe", SDLK_RETURN, @@ -2212,7 +2212,7 @@ iWidget *makeIdentityCreation_Widget(void) { } addChild_Widget( dlg, - iClob(makeDialogButtons_Widget((iMenuItem[]){ { "Cancel", 0, 0, NULL }, + iClob(makeDialogButtons_Widget((iMenuItem[]){ { "${cancel}", 0, 0, NULL }, { uiTextAction_ColorEscape "Create Identity", SDLK_RETURN, KMOD_PRIMARY, @@ -2310,7 +2310,7 @@ iWidget *makeTranslation_Widget(iWidget *parent) { dlg, iClob(makeDialogButtons_Widget( (iMenuItem[]){ - { "Cancel", SDLK_ESCAPE, 0, "translation.cancel" }, + { "${cancel}", SDLK_ESCAPE, 0, "translation.cancel" }, { uiTextAction_ColorEscape "Translate", SDLK_RETURN, 0, "translation.submit" } }, 2))); addChild_Widget(parent, iClob(dlg)); diff --git a/src/ui/window.c b/src/ui/window.c index d27d252b..6949e245 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -293,8 +293,8 @@ static const iMenuItem viewMenuItems_[] = { }; static iMenuItem bookmarksMenuItems_[] = { - { "${menu.bookmark.page}", SDLK_d, KMOD_PRIMARY, "bookmark.add" }, - { "${menu.subscribe.page}", subscribeToPage_KeyModifier, "feeds.subscribe" }, + { "${menu.page.bookmark}", SDLK_d, KMOD_PRIMARY, "bookmark.add" }, + { "${menu.page.subscribe}", subscribeToPage_KeyModifier, "feeds.subscribe" }, { "---", 0, 0, NULL }, { "${menu.import.links}", 0, 0, "bookmark.links confirm:1" }, { "---", 0, 0, NULL }, @@ -1162,7 +1162,7 @@ static void setupUserInterface_Window(iWindow *d) { { pin_Icon " ${sidebar.bookmarks}", 0, 0, "toolbar.showview arg:0" }, { star_Icon " ${sidebar.feeds}", 0, 0, "toolbar.showview arg:1" }, { clock_Icon " ${sidebar.history}", 0, 0, "toolbar.showview arg:2" }, - { page_Icon " ${sidebar.outline}", 0, 0, "toolbar.showview arg:4" }, + { page_Icon " ${toolbar.outline}", 0, 0, "toolbar.showview arg:4" }, }; iWidget *menu = makeMenu_Widget(findChild_Widget(toolBar, "toolbar.view"), items, iElemCount(items)); -- cgit v1.2.3