<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[214244] trunk/Source/WebCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/214244">214244</a></dd>
<dt>Author</dt> <dd>carlosgc@webkit.org</dd>
<dt>Date</dt> <dd>2017-03-22 02:55:34 -0700 (Wed, 22 Mar 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>Make it possible to use WEB_UI_STRING macros to mark translatable strings in glib based ports
https://bugs.webkit.org/show_bug.cgi?id=169672

Reviewed by Michael Catanzaro.

Source/WebCore:

WEB_UI_STRING macros are currently used by Cocoa based ports and Windows port. For other ports it simply returns
the given string, but it's not translated. In the GTK+ port we have all translatable strings from
LocalizedStrings.cpp copied in LocalizedStringsGtk.cpp to use the glib macros to mark them as translatable. In
most of the cases the strings are exactly in the same, in some others (the context menu ones) the string only
differs in the mnemonics used by GTK, and only in a few cases the strings are different. We could remove most of
that duplication if strings used by WEB_UI_STRING were marked as translatable in glib based ports too.

This patch makes that possible with the following changes:

  - Add WEB_UI_STRING_WITH_MNEMONIC() to handle the cases where the strings only differ in the mnemonics. It
    receives the string with mnemonics that is ignored in all ports except GTK+.
  - All platform specific strings have been moved to the platform files, to ensure scanners don't include
    strings from other ports.
  - For the same reason a new macro WEB_UI_CFSTRING has been also added, just to make sure that CF strings are
    only used by CF based ports. The implementation is the same as WEB_UI_STRING, it only changes the name to
    not confuse the scanners.
  - And again for the same reason, for non-CF and non-Glib cases WEB_UI_STRING is not used, since in those cases
    strings are not really translated and String::fromUTF8() is actually used. So, now we use String::fromUTF8()
    directly instead of WEB_UI_STRING to not confuse the scanners.

* CMakeLists.txt: Add LocalizedStrings.cpp to the compilation.
* PlatformGTK.cmake: Move LocalizedStringsGtk.cpp to the list of sources not depending on GTK+, since it no
longer uses GTK+.
* extract-localizable-strings.pl: Update it to handle the new macros.
* platform/LocalizedStrings.cpp:
(WebCore::formatLocalizedString):
(WebCore::contextMenuItemTagOpenLinkInNewWindow):
(WebCore::contextMenuItemTagDownloadLinkToDisk):
(WebCore::contextMenuItemTagOpenImageInNewWindow):
(WebCore::contextMenuItemTagCopyImageToClipboard):
(WebCore::contextMenuItemTagOpenFrameInNewWindow):
(WebCore::contextMenuItemTagCopy):
(WebCore::contextMenuItemTagGoBack):
(WebCore::contextMenuItemTagGoForward):
(WebCore::contextMenuItemTagStop):
(WebCore::contextMenuItemTagReload):
(WebCore::contextMenuItemTagCut):
(WebCore::contextMenuItemTagPaste):
(WebCore::contextMenuItemTagIgnoreSpelling):
(WebCore::contextMenuItemTagLearnSpelling):
(WebCore::contextMenuItemTagLookUpInDictionary):
(WebCore::contextMenuItemTagOpenLink):
(WebCore::contextMenuItemTagIgnoreGrammar):
(WebCore::contextMenuItemTagSpellingMenu):
(WebCore::contextMenuItemTagShowSpellingPanel):
(WebCore::contextMenuItemTagCheckSpelling):
(WebCore::contextMenuItemTagCheckSpellingWhileTyping):
(WebCore::contextMenuItemTagCheckGrammarWithSpelling):
(WebCore::contextMenuItemTagFontMenu):
(WebCore::contextMenuItemTagBold):
(WebCore::contextMenuItemTagItalic):
(WebCore::contextMenuItemTagUnderline):
(WebCore::contextMenuItemTagOutline):
(WebCore::contextMenuItemTagOpenVideoInNewWindow):
(WebCore::contextMenuItemTagOpenAudioInNewWindow):
(WebCore::contextMenuItemTagDownloadVideoToDisk):
(WebCore::contextMenuItemTagDownloadAudioToDisk):
(WebCore::contextMenuItemTagExitVideoFullscreen):
(WebCore::contextMenuItemTagMediaPlay):
(WebCore::contextMenuItemTagMediaPause):
(WebCore::contextMenuItemTagMediaMute):
(WebCore::contextMenuItemTagInspectElement):
(WebCore::AXAutoFillContactsLabel):
(WebCore::imageTitle):
(WebCore::validationMessageRangeUnderflowText):
(WebCore::validationMessageRangeOverflowText):
(WebCore::textTrackCountryAndLanguageMenuItemText):
(WebCore::textTrackLanguageMenuItemText):
(WebCore::closedCaptionTrackMenuItemText):
(WebCore::sdhTrackMenuItemText):
(WebCore::easyReaderTrackMenuItemText):
(WebCore::forcedTrackMenuItemText):
(WebCore::audioDescriptionTrackSuffixText):
(WebCore::webCryptoMasterKeyKeychainLabel):
* platform/LocalizedStrings.h:
* platform/cocoa/LocalizedStringsCocoa.mm:
(WebCore::copyImageUnknownFileLabel):
(WebCore::contextMenuItemTagSearchInSpotlight):
(WebCore::contextMenuItemTagSearchWeb):
(WebCore::contextMenuItemTagShowFonts):
(WebCore::contextMenuItemTagStyles):
(WebCore::contextMenuItemTagShowColors):
(WebCore::contextMenuItemTagSpeechMenu):
(WebCore::contextMenuItemTagStartSpeaking):
(WebCore::contextMenuItemTagStopSpeaking):
(WebCore::contextMenuItemTagCorrectSpellingAutomatically):
(WebCore::contextMenuItemTagSubstitutionsMenu):
(WebCore::contextMenuItemTagShowSubstitutions):
(WebCore::contextMenuItemTagSmartCopyPaste):
(WebCore::contextMenuItemTagSmartQuotes):
(WebCore::contextMenuItemTagSmartDashes):
(WebCore::contextMenuItemTagSmartLinks):
(WebCore::contextMenuItemTagTextReplacement):
(WebCore::contextMenuItemTagTransformationsMenu):
(WebCore::contextMenuItemTagMakeUpperCase):
(WebCore::contextMenuItemTagMakeLowerCase):
(WebCore::contextMenuItemTagCapitalize):
(WebCore::contextMenuItemTagChangeBack):
(WebCore::contextMenuItemTagEnterVideoEnhancedFullscreen):
(WebCore::contextMenuItemTagExitVideoEnhancedFullscreen):
(WebCore::AXARIAContentGroupText):
(WebCore::AXHorizontalRuleDescriptionText):
(WebCore::AXMarkText):
(WebCore::AXMeterGaugeRegionOptimumText):
(WebCore::AXMeterGaugeRegionSuboptimalText):
(WebCore::AXMeterGaugeRegionLessGoodText):
(WebCore::builtInPDFPluginName):
(WebCore::pdfDocumentTypeDescription):
(WebCore::postScriptDocumentTypeDescription):
(WebCore::keygenMenuItem2048):
(WebCore::keygenKeychainItemName):
(WebCore::htmlSelectMultipleItems):
(WebCore::fileButtonChooseMediaFileLabel):
(WebCore::fileButtonChooseMultipleMediaFilesLabel):
(WebCore::fileButtonNoMediaFileSelectedLabel):
(WebCore::fileButtonNoMediaFilesSelectedLabel):
(WebCore::insertListTypeNone):
(WebCore::insertListTypeBulleted):
(WebCore::insertListTypeBulletedAccessibilityTitle):
(WebCore::insertListTypeNumbered):
(WebCore::insertListTypeNumberedAccessibilityTitle):
(WebCore::exitFullScreenButtonAccessibilityTitle):
* platform/gtk/LocalizedStringsGtk.cpp:
(WebCore::contextMenuItemTagDelete):
(WebCore::contextMenuItemTagSelectAll):
* platform/win/LocalizedStringsWin.cpp:
(WebCore::contextMenuItemTagSearchWeb):
(WebCore::uploadFileText):
(WebCore::allFilesText):

Source/WebCore/platform/gtk/po:

* CMakeLists.txt: Add keyword parameters for WEB_UI_STRING macros.
* POTFILES.in: Add LocalizedStrings.cpp to the list.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorePlatformGTKcmake">trunk/Source/WebCore/PlatformGTK.cmake</a></li>
<li><a href="#trunkSourceWebCoreextractlocalizablestringspl">trunk/Source/WebCore/extract-localizable-strings.pl</a></li>
<li><a href="#trunkSourceWebCoreplatformLocalizedStringscpp">trunk/Source/WebCore/platform/LocalizedStrings.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformLocalizedStringsh">trunk/Source/WebCore/platform/LocalizedStrings.h</a></li>
<li><a href="#trunkSourceWebCoreplatformcocoaLocalizedStringsCocoamm">trunk/Source/WebCore/platform/cocoa/LocalizedStringsCocoa.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgtkLocalizedStringsGtkcpp">trunk/Source/WebCore/platform/gtk/LocalizedStringsGtk.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgtkpoCMakeListstxt">trunk/Source/WebCore/platform/gtk/po/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreplatformgtkpoChangeLog">trunk/Source/WebCore/platform/gtk/po/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreplatformgtkpoPOTFILESin">trunk/Source/WebCore/platform/gtk/po/POTFILES.in</a></li>
<li><a href="#trunkSourceWebCoreplatformwinLocalizedStringsWincpp">trunk/Source/WebCore/platform/win/LocalizedStringsWin.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (214243 => 214244)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2017-03-22 08:41:44 UTC (rev 214243)
+++ trunk/Source/WebCore/CMakeLists.txt        2017-03-22 09:55:34 UTC (rev 214244)
</span><span class="lines">@@ -2163,6 +2163,7 @@
</span><span class="cx">     platform/LengthPoint.cpp
</span><span class="cx">     platform/LengthSize.cpp
</span><span class="cx">     platform/LinkHash.cpp
</span><ins>+    platform/LocalizedStrings.cpp
</ins><span class="cx">     platform/Logging.cpp
</span><span class="cx">     platform/LowPowerModeNotifier.cpp
</span><span class="cx">     platform/MIMETypeRegistry.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (214243 => 214244)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2017-03-22 08:41:44 UTC (rev 214243)
+++ trunk/Source/WebCore/ChangeLog        2017-03-22 09:55:34 UTC (rev 214244)
</span><span class="lines">@@ -1,3 +1,140 @@
</span><ins>+2017-03-22  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
+
+        Make it possible to use WEB_UI_STRING macros to mark translatable strings in glib based ports
+        https://bugs.webkit.org/show_bug.cgi?id=169672
+
+        Reviewed by Michael Catanzaro.
+
+        WEB_UI_STRING macros are currently used by Cocoa based ports and Windows port. For other ports it simply returns
+        the given string, but it's not translated. In the GTK+ port we have all translatable strings from
+        LocalizedStrings.cpp copied in LocalizedStringsGtk.cpp to use the glib macros to mark them as translatable. In
+        most of the cases the strings are exactly in the same, in some others (the context menu ones) the string only
+        differs in the mnemonics used by GTK, and only in a few cases the strings are different. We could remove most of
+        that duplication if strings used by WEB_UI_STRING were marked as translatable in glib based ports too.
+
+        This patch makes that possible with the following changes:
+
+          - Add WEB_UI_STRING_WITH_MNEMONIC() to handle the cases where the strings only differ in the mnemonics. It
+            receives the string with mnemonics that is ignored in all ports except GTK+.
+          - All platform specific strings have been moved to the platform files, to ensure scanners don't include
+            strings from other ports.
+          - For the same reason a new macro WEB_UI_CFSTRING has been also added, just to make sure that CF strings are
+            only used by CF based ports. The implementation is the same as WEB_UI_STRING, it only changes the name to
+            not confuse the scanners.
+          - And again for the same reason, for non-CF and non-Glib cases WEB_UI_STRING is not used, since in those cases
+            strings are not really translated and String::fromUTF8() is actually used. So, now we use String::fromUTF8()
+            directly instead of WEB_UI_STRING to not confuse the scanners.
+
+        * CMakeLists.txt: Add LocalizedStrings.cpp to the compilation.
+        * PlatformGTK.cmake: Move LocalizedStringsGtk.cpp to the list of sources not depending on GTK+, since it no
+        longer uses GTK+.
+        * extract-localizable-strings.pl: Update it to handle the new macros.
+        * platform/LocalizedStrings.cpp:
+        (WebCore::formatLocalizedString):
+        (WebCore::contextMenuItemTagOpenLinkInNewWindow):
+        (WebCore::contextMenuItemTagDownloadLinkToDisk):
+        (WebCore::contextMenuItemTagOpenImageInNewWindow):
+        (WebCore::contextMenuItemTagCopyImageToClipboard):
+        (WebCore::contextMenuItemTagOpenFrameInNewWindow):
+        (WebCore::contextMenuItemTagCopy):
+        (WebCore::contextMenuItemTagGoBack):
+        (WebCore::contextMenuItemTagGoForward):
+        (WebCore::contextMenuItemTagStop):
+        (WebCore::contextMenuItemTagReload):
+        (WebCore::contextMenuItemTagCut):
+        (WebCore::contextMenuItemTagPaste):
+        (WebCore::contextMenuItemTagIgnoreSpelling):
+        (WebCore::contextMenuItemTagLearnSpelling):
+        (WebCore::contextMenuItemTagLookUpInDictionary):
+        (WebCore::contextMenuItemTagOpenLink):
+        (WebCore::contextMenuItemTagIgnoreGrammar):
+        (WebCore::contextMenuItemTagSpellingMenu):
+        (WebCore::contextMenuItemTagShowSpellingPanel):
+        (WebCore::contextMenuItemTagCheckSpelling):
+        (WebCore::contextMenuItemTagCheckSpellingWhileTyping):
+        (WebCore::contextMenuItemTagCheckGrammarWithSpelling):
+        (WebCore::contextMenuItemTagFontMenu):
+        (WebCore::contextMenuItemTagBold):
+        (WebCore::contextMenuItemTagItalic):
+        (WebCore::contextMenuItemTagUnderline):
+        (WebCore::contextMenuItemTagOutline):
+        (WebCore::contextMenuItemTagOpenVideoInNewWindow):
+        (WebCore::contextMenuItemTagOpenAudioInNewWindow):
+        (WebCore::contextMenuItemTagDownloadVideoToDisk):
+        (WebCore::contextMenuItemTagDownloadAudioToDisk):
+        (WebCore::contextMenuItemTagExitVideoFullscreen):
+        (WebCore::contextMenuItemTagMediaPlay):
+        (WebCore::contextMenuItemTagMediaPause):
+        (WebCore::contextMenuItemTagMediaMute):
+        (WebCore::contextMenuItemTagInspectElement):
+        (WebCore::AXAutoFillContactsLabel):
+        (WebCore::imageTitle):
+        (WebCore::validationMessageRangeUnderflowText):
+        (WebCore::validationMessageRangeOverflowText):
+        (WebCore::textTrackCountryAndLanguageMenuItemText):
+        (WebCore::textTrackLanguageMenuItemText):
+        (WebCore::closedCaptionTrackMenuItemText):
+        (WebCore::sdhTrackMenuItemText):
+        (WebCore::easyReaderTrackMenuItemText):
+        (WebCore::forcedTrackMenuItemText):
+        (WebCore::audioDescriptionTrackSuffixText):
+        (WebCore::webCryptoMasterKeyKeychainLabel):
+        * platform/LocalizedStrings.h:
+        * platform/cocoa/LocalizedStringsCocoa.mm:
+        (WebCore::copyImageUnknownFileLabel):
+        (WebCore::contextMenuItemTagSearchInSpotlight):
+        (WebCore::contextMenuItemTagSearchWeb):
+        (WebCore::contextMenuItemTagShowFonts):
+        (WebCore::contextMenuItemTagStyles):
+        (WebCore::contextMenuItemTagShowColors):
+        (WebCore::contextMenuItemTagSpeechMenu):
+        (WebCore::contextMenuItemTagStartSpeaking):
+        (WebCore::contextMenuItemTagStopSpeaking):
+        (WebCore::contextMenuItemTagCorrectSpellingAutomatically):
+        (WebCore::contextMenuItemTagSubstitutionsMenu):
+        (WebCore::contextMenuItemTagShowSubstitutions):
+        (WebCore::contextMenuItemTagSmartCopyPaste):
+        (WebCore::contextMenuItemTagSmartQuotes):
+        (WebCore::contextMenuItemTagSmartDashes):
+        (WebCore::contextMenuItemTagSmartLinks):
+        (WebCore::contextMenuItemTagTextReplacement):
+        (WebCore::contextMenuItemTagTransformationsMenu):
+        (WebCore::contextMenuItemTagMakeUpperCase):
+        (WebCore::contextMenuItemTagMakeLowerCase):
+        (WebCore::contextMenuItemTagCapitalize):
+        (WebCore::contextMenuItemTagChangeBack):
+        (WebCore::contextMenuItemTagEnterVideoEnhancedFullscreen):
+        (WebCore::contextMenuItemTagExitVideoEnhancedFullscreen):
+        (WebCore::AXARIAContentGroupText):
+        (WebCore::AXHorizontalRuleDescriptionText):
+        (WebCore::AXMarkText):
+        (WebCore::AXMeterGaugeRegionOptimumText):
+        (WebCore::AXMeterGaugeRegionSuboptimalText):
+        (WebCore::AXMeterGaugeRegionLessGoodText):
+        (WebCore::builtInPDFPluginName):
+        (WebCore::pdfDocumentTypeDescription):
+        (WebCore::postScriptDocumentTypeDescription):
+        (WebCore::keygenMenuItem2048):
+        (WebCore::keygenKeychainItemName):
+        (WebCore::htmlSelectMultipleItems):
+        (WebCore::fileButtonChooseMediaFileLabel):
+        (WebCore::fileButtonChooseMultipleMediaFilesLabel):
+        (WebCore::fileButtonNoMediaFileSelectedLabel):
+        (WebCore::fileButtonNoMediaFilesSelectedLabel):
+        (WebCore::insertListTypeNone):
+        (WebCore::insertListTypeBulleted):
+        (WebCore::insertListTypeBulletedAccessibilityTitle):
+        (WebCore::insertListTypeNumbered):
+        (WebCore::insertListTypeNumberedAccessibilityTitle):
+        (WebCore::exitFullScreenButtonAccessibilityTitle):
+        * platform/gtk/LocalizedStringsGtk.cpp:
+        (WebCore::contextMenuItemTagDelete):
+        (WebCore::contextMenuItemTagSelectAll):
+        * platform/win/LocalizedStringsWin.cpp:
+        (WebCore::contextMenuItemTagSearchWeb):
+        (WebCore::uploadFileText):
+        (WebCore::allFilesText):
+
</ins><span class="cx"> 2017-03-21  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] Migrate off of CTFontCreateForCSS
</span></span></pre></div>
<a id="trunkSourceWebCorePlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/PlatformGTK.cmake (214243 => 214244)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PlatformGTK.cmake        2017-03-22 08:41:44 UTC (rev 214243)
+++ trunk/Source/WebCore/PlatformGTK.cmake        2017-03-22 09:55:34 UTC (rev 214244)
</span><span class="lines">@@ -139,6 +139,7 @@
</span><span class="cx"> 
</span><span class="cx">     platform/gtk/DragDataGtk.cpp
</span><span class="cx">     platform/gtk/ErrorsGtk.cpp
</span><ins>+    platform/gtk/LocalizedStringsGtk.cpp
</ins><span class="cx">     platform/gtk/MIMETypeRegistryGtk.cpp
</span><span class="cx">     platform/gtk/PasteboardGtk.cpp
</span><span class="cx">     platform/gtk/ScrollAnimatorGtk.cpp
</span><span class="lines">@@ -200,7 +201,6 @@
</span><span class="cx">     platform/gtk/GRefPtrGtk.cpp
</span><span class="cx">     platform/gtk/GtkUtilities.cpp
</span><span class="cx">     platform/gtk/GtkVersioning.c
</span><del>-    platform/gtk/LocalizedStringsGtk.cpp
</del><span class="cx">     platform/gtk/PasteboardHelper.cpp
</span><span class="cx">     platform/gtk/PlatformKeyboardEventGtk.cpp
</span><span class="cx">     platform/gtk/PlatformMouseEventGtk.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreextractlocalizablestringspl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/extract-localizable-strings.pl (214243 => 214244)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/extract-localizable-strings.pl        2017-03-22 08:41:44 UTC (rev 214243)
+++ trunk/Source/WebCore/extract-localizable-strings.pl        2017-03-22 09:55:34 UTC (rev 214244)
</span><span class="lines">@@ -132,6 +132,7 @@
</span><span class="cx">     my $UIString;
</span><span class="cx">     my $key;
</span><span class="cx">     my $comment;
</span><ins>+    my $mnemonic;
</ins><span class="cx">     
</span><span class="cx">     my $string;
</span><span class="cx">     my $stringLine;
</span><span class="lines">@@ -188,6 +189,9 @@
</span><span class="cx">                         # FIXME: Validate UTF-8 here?
</span><span class="cx">                         $key = $string;
</span><span class="cx">                         $expected = &quot;,&quot;;
</span><ins>+                    } elsif (($macro =~ /WEB_UI_STRING_WITH_MNEMONIC$/) and !defined $mnemonic) {
+                        $mnemonic = $string;
+                        $expected = &quot;,&quot;;
</ins><span class="cx">                     } elsif (!defined $comment) {
</span><span class="cx">                         # FIXME: Validate UTF-8 here?
</span><span class="cx">                         $comment = $string;
</span><span class="lines">@@ -240,12 +244,13 @@
</span><span class="cx">                     emitError($file, $., &quot;found $token but expected $expected&quot;);
</span><span class="cx">                     $expected = &quot;&quot;;
</span><span class="cx">                 }
</span><del>-                if (($token =~ /(WEB_)?UI_STRING(_KEY)?(_INTERNAL)?$/) || ($token =~ /WEB_UI_NSSTRING$/)) {
</del><ins>+                if (($token =~ /(WEB_)?UI_STRING(_KEY)?(_INTERNAL)?$/) || ($token =~ /WEB_UI_NSSTRING$/) || ($token =~ /WEB_UI_STRING_WITH_MNEMONIC$/) || ($token =~ /WEB_UI_CFSTRING$/)) {
</ins><span class="cx">                     $expected = &quot;(&quot;;
</span><span class="cx">                     $macro = $token;
</span><span class="cx">                     $UIString = undef;
</span><span class="cx">                     $key = undef;
</span><span class="cx">                     $comment = undef;
</span><ins>+                    $mnemonic = undef;
</ins><span class="cx">                     $macroLine = $.;
</span><span class="cx">                 } elsif ($token eq &quot;(&quot; or $token eq &quot;[&quot;) {
</span><span class="cx">                     ++$nestingLevel if defined $nestingLevel;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformLocalizedStringscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/LocalizedStrings.cpp (214243 => 214244)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/LocalizedStrings.cpp        2017-03-22 08:41:44 UTC (rev 214243)
+++ trunk/Source/WebCore/platform/LocalizedStrings.cpp        2017-03-22 09:55:34 UTC (rev 214244)
</span><span class="lines">@@ -38,8 +38,8 @@
</span><span class="cx"> #include &lt;wtf/RetainPtr.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if PLATFORM(COCOA)
-#include &quot;WebCoreSystemInterface.h&quot;
</del><ins>+#if USE(GLIB)
+#include &lt;wtf/glib/GUniquePtr.h&gt;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx"> //  2) It doesn't handle the %2$d syntax.
</span><span class="cx"> // Note that because |format| is used as the second parameter to va_start, it cannot be a reference
</span><span class="cx"> // type according to section 18.7/3 of the C++ N1905 standard.
</span><del>-static String formatLocalizedString(String format, ...)
</del><ins>+String formatLocalizedString(String format, ...)
</ins><span class="cx"> {
</span><span class="cx"> #if USE(CF)
</span><span class="cx">     va_list arguments;
</span><span class="lines">@@ -66,6 +66,12 @@
</span><span class="cx"> 
</span><span class="cx">     va_end(arguments);
</span><span class="cx">     return result.get();
</span><ins>+#elif USE(GLIB)
+    va_list arguments;
+    va_start(arguments, format);
+    GUniquePtr&lt;gchar&gt; result(g_strdup_vprintf(format.utf8().data(), arguments));
+    va_end(arguments);
+    return String::fromUTF8(result.get());
</ins><span class="cx"> #else
</span><span class="cx">     notImplemented();
</span><span class="cx">     return format;
</span><span class="lines">@@ -132,85 +138,80 @@
</span><span class="cx">     return WEB_UI_STRING(&quot;Details&quot;, &quot;text to display in &lt;details&gt; tag when it has no &lt;summary&gt; child&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if PLATFORM(COCOA)
-
-String copyImageUnknownFileLabel()
-{
-    return WEB_UI_STRING(&quot;unknown&quot;, &quot;Unknown filename&quot;);
-}
-
-#endif
-
</del><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagOpenLinkInNewWindow()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Open Link in New Window&quot;, &quot;Open in New Window context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Open Link in New Window&quot;, &quot;Open Link in New _Window&quot;, &quot;Open in New Window context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagDownloadLinkToDisk()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Download Linked File&quot;, &quot;Download Linked File context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Download Linked File&quot;, &quot;_Download Linked File&quot;, &quot;Download Linked File context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if !PLATFORM(GTK)
</ins><span class="cx"> String contextMenuItemTagCopyLinkToClipboard()
</span><span class="cx"> {
</span><span class="cx">     return WEB_UI_STRING(&quot;Copy Link&quot;, &quot;Copy Link context menu item&quot;);
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagOpenImageInNewWindow()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Open Image in New Window&quot;, &quot;Open Image in New Window context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Open Image in New Window&quot;, &quot;Open _Image in New Window&quot;, &quot;Open Image in New Window context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if !PLATFORM(GTK)
</ins><span class="cx"> String contextMenuItemTagDownloadImageToDisk()
</span><span class="cx"> {
</span><span class="cx">     return WEB_UI_STRING(&quot;Download Image&quot;, &quot;Download Image context menu item&quot;);
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagCopyImageToClipboard()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Copy Image&quot;, &quot;Copy Image context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Copy Image&quot;, &quot;Cop_y Image&quot;, &quot;Copy Image context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagOpenFrameInNewWindow()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Open Frame in New Window&quot;, &quot;Open Frame in New Window context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Open Frame in New Window&quot;, &quot;Open _Frame in New Window&quot;, &quot;Open Frame in New Window context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagCopy()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Copy&quot;, &quot;Copy context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Copy&quot;, &quot;_Copy&quot;, &quot;Copy context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagGoBack()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Back&quot;, &quot;Back context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Back&quot;, &quot;_Back&quot;, &quot;Back context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagGoForward()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Forward&quot;, &quot;Forward context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Forward&quot;, &quot;_Forward&quot;, &quot;Forward context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagStop()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Stop&quot;, &quot;Stop context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Stop&quot;, &quot;_Stop&quot;, &quot;Stop context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagReload()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Reload&quot;, &quot;Reload context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Reload&quot;, &quot;_Reload&quot;, &quot;Reload context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagCut()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Cut&quot;, &quot;Cut context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Cut&quot;, &quot;Cu_t&quot;, &quot;Cut context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagPaste()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Paste&quot;, &quot;Paste context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Paste&quot;, &quot;_Paste&quot;, &quot;Paste context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagNoGuessesFound()
</span><span class="lines">@@ -220,139 +221,89 @@
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagIgnoreSpelling()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Ignore Spelling&quot;, &quot;Ignore Spelling context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Ignore Spelling&quot;, &quot;_Ignore Spelling&quot;, &quot;Ignore Spelling context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagLearnSpelling()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Learn Spelling&quot;, &quot;Learn Spelling context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Learn Spelling&quot;, &quot;_Learn Spelling&quot;, &quot;Learn Spelling context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if PLATFORM(COCOA)
-String contextMenuItemTagSearchInSpotlight()
-{
-    return WEB_UI_STRING(&quot;Search in Spotlight&quot;, &quot;Search in Spotlight context menu item&quot;);
-}
-#endif
-
-String contextMenuItemTagSearchWeb()
-{
-#if PLATFORM(COCOA)
-    auto searchProviderName = adoptCF(wkCopyDefaultSearchProviderDisplayName());
-    return formatLocalizedString(WEB_UI_STRING(&quot;Search with %@&quot;, &quot;Search with search provider context menu item with provider name inserted&quot;), searchProviderName.get());
-#else
-    return WEB_UI_STRING(&quot;Search with Google&quot;, &quot;Search with Google context menu item&quot;);
-#endif
-}
-
</del><span class="cx"> String contextMenuItemTagLookUpInDictionary(const String&amp; selectedString)
</span><span class="cx"> {
</span><span class="cx"> #if USE(CF)
</span><span class="cx">     auto selectedCFString = truncatedStringForLookupMenuItem(selectedString).createCFString();
</span><del>-    return formatLocalizedString(WEB_UI_STRING(&quot;Look Up “%@”&quot;, &quot;Look Up context menu item with selected word&quot;), selectedCFString.get());
</del><ins>+    return formatLocalizedString(WEB_UI_CFSTRING(&quot;Look Up “%@”&quot;, &quot;Look Up context menu item with selected word&quot;), selectedCFString.get());
+#elif USE(GLIB)
+    return formatLocalizedString(WEB_UI_STRING(&quot;Look Up “%s”&quot;, &quot;Look Up context menu item with selected word&quot;), truncatedStringForLookupMenuItem(selectedString).utf8().data());
</ins><span class="cx"> #else
</span><del>-    return WEB_UI_STRING(&quot;Look Up “&lt;selection&gt;”&quot;, &quot;Look Up context menu item with selected word&quot;).replace(&quot;&lt;selection&gt;&quot;, truncatedStringForLookupMenuItem(selectedString));
</del><ins>+    return String::fromUTF8(&quot;Look Up “&lt;selection&gt;”&quot;, &quot;Look Up context menu item with selected word&quot;).replace(&quot;&lt;selection&gt;&quot;, truncatedStringForLookupMenuItem(selectedString));
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagOpenLink()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Open Link&quot;, &quot;Open Link context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Open Link&quot;, &quot;_Open Link&quot;, &quot;Open Link context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagIgnoreGrammar()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Ignore Grammar&quot;, &quot;Ignore Grammar context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Ignore Grammar&quot;, &quot;Ignore _Grammar&quot;, &quot;Ignore Grammar context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagSpellingMenu()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Spelling and Grammar&quot;, &quot;Spelling and Grammar context sub-menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Spelling and Grammar&quot;, &quot;Spelling and _Grammar&quot;, &quot;Spelling and Grammar context sub-menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagShowSpellingPanel(bool show)
</span><span class="cx"> {
</span><span class="cx">     if (show)
</span><del>-        return WEB_UI_STRING(&quot;Show Spelling and Grammar&quot;, &quot;menu item title&quot;);
-    return WEB_UI_STRING(&quot;Hide Spelling and Grammar&quot;, &quot;menu item title&quot;);
</del><ins>+        return WEB_UI_STRING_WITH_MNEMONIC(&quot;Show Spelling and Grammar&quot;, &quot;_Show Spelling and Grammar&quot;, &quot;menu item title&quot;);
+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Hide Spelling and Grammar&quot;, &quot;_Hide Spelling and Grammar&quot;, &quot;menu item title&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagCheckSpelling()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Check Document Now&quot;, &quot;Check spelling context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Check Document Now&quot;, &quot;_Check Document Now&quot;, &quot;Check spelling context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagCheckSpellingWhileTyping()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Check Spelling While Typing&quot;, &quot;Check spelling while typing context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Check Spelling While Typing&quot;, &quot;Check Spelling While _Typing&quot;, &quot;Check spelling while typing context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagCheckGrammarWithSpelling()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Check Grammar With Spelling&quot;, &quot;Check grammar with spelling context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Check Grammar With Spelling&quot;, &quot;Check _Grammar With Spelling&quot;, &quot;Check grammar with spelling context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagFontMenu()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Font&quot;, &quot;Font context sub-menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Font&quot;, &quot;_Font&quot;, &quot;Font context sub-menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if PLATFORM(COCOA)
-String contextMenuItemTagShowFonts()
-{
-    return WEB_UI_STRING(&quot;Show Fonts&quot;, &quot;Show fonts context menu item&quot;);
-}
-#endif
-
</del><span class="cx"> String contextMenuItemTagBold()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Bold&quot;, &quot;Bold context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Bold&quot;, &quot;_Bold&quot;, &quot;Bold context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagItalic()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Italic&quot;, &quot;Italic context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Italic&quot;, &quot;_Italic&quot;, &quot;Italic context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagUnderline()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Underline&quot;, &quot;Underline context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Underline&quot;, &quot;_Underline&quot;, &quot;Underline context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagOutline()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Outline&quot;, &quot;Outline context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Outline&quot;, &quot;_Outline&quot;, &quot;Outline context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if PLATFORM(COCOA)
-
-String contextMenuItemTagStyles()
-{
-    return WEB_UI_STRING(&quot;Styles...&quot;, &quot;Styles context menu item&quot;);
-}
-
-String contextMenuItemTagShowColors()
-{
-    return WEB_UI_STRING(&quot;Show Colors&quot;, &quot;Show colors context menu item&quot;);
-}
-
-String contextMenuItemTagSpeechMenu()
-{
-    return WEB_UI_STRING(&quot;Speech&quot;, &quot;Speech context sub-menu item&quot;);
-}
-
-String contextMenuItemTagStartSpeaking()
-{
-    return WEB_UI_STRING(&quot;Start Speaking&quot;, &quot;Start speaking context menu item&quot;);
-}
-
-String contextMenuItemTagStopSpeaking()
-{
-    return WEB_UI_STRING(&quot;Stop Speaking&quot;, &quot;Stop speaking context menu item&quot;);
-}
-
-#endif
-
</del><ins>+#if !PLATFORM(GTK)
</ins><span class="cx"> String contextMenuItemTagWritingDirectionMenu()
</span><span class="cx"> {
</span><span class="cx">     return WEB_UI_STRING(&quot;Paragraph Direction&quot;, &quot;Paragraph direction context sub-menu item&quot;);
</span><span class="lines">@@ -377,99 +328,29 @@
</span><span class="cx"> {
</span><span class="cx">     return WEB_UI_STRING(&quot;Right to Left&quot;, &quot;Right to Left context menu item&quot;);
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><del>-#if PLATFORM(COCOA)
-
-String contextMenuItemTagCorrectSpellingAutomatically()
-{
-    return WEB_UI_STRING(&quot;Correct Spelling Automatically&quot;, &quot;Correct Spelling Automatically context menu item&quot;);
-}
-
-String contextMenuItemTagSubstitutionsMenu()
-{
-    return WEB_UI_STRING(&quot;Substitutions&quot;, &quot;Substitutions context sub-menu item&quot;);
-}
-
-String contextMenuItemTagShowSubstitutions(bool show)
-{
-    if (show)
-        return WEB_UI_STRING(&quot;Show Substitutions&quot;, &quot;menu item title&quot;);
-    return WEB_UI_STRING(&quot;Hide Substitutions&quot;, &quot;menu item title&quot;);
-}
-
-String contextMenuItemTagSmartCopyPaste()
-{
-    return WEB_UI_STRING(&quot;Smart Copy/Paste&quot;, &quot;Smart Copy/Paste context menu item&quot;);
-}
-
-String contextMenuItemTagSmartQuotes()
-{
-    return WEB_UI_STRING(&quot;Smart Quotes&quot;, &quot;Smart Quotes context menu item&quot;);
-}
-
-String contextMenuItemTagSmartDashes()
-{
-    return WEB_UI_STRING(&quot;Smart Dashes&quot;, &quot;Smart Dashes context menu item&quot;);
-}
-
-String contextMenuItemTagSmartLinks()
-{
-    return WEB_UI_STRING(&quot;Smart Links&quot;, &quot;Smart Links context menu item&quot;);
-}
-
-String contextMenuItemTagTextReplacement()
-{
-    return WEB_UI_STRING(&quot;Text Replacement&quot;, &quot;Text Replacement context menu item&quot;);
-}
-
-String contextMenuItemTagTransformationsMenu()
-{
-    return WEB_UI_STRING(&quot;Transformations&quot;, &quot;Transformations context sub-menu item&quot;);
-}
-
-String contextMenuItemTagMakeUpperCase()
-{
-    return WEB_UI_STRING(&quot;Make Upper Case&quot;, &quot;Make Upper Case context menu item&quot;);
-}
-
-String contextMenuItemTagMakeLowerCase()
-{
-    return WEB_UI_STRING(&quot;Make Lower Case&quot;, &quot;Make Lower Case context menu item&quot;);
-}
-
-String contextMenuItemTagCapitalize()
-{
-    return WEB_UI_STRING(&quot;Capitalize&quot;, &quot;Capitalize context menu item&quot;);
-}
-
-String contextMenuItemTagChangeBack(const String&amp; replacedString)
-{
-    notImplemented();
-    return replacedString;
-}
-
-#endif // PLATFORM(COCOA)
-
</del><span class="cx"> String contextMenuItemTagOpenVideoInNewWindow()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Open Video in New Window&quot;, &quot;Open Video in New Window context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Open Video in New Window&quot;, &quot;Open _Video in New Window&quot;, &quot;Open Video in New Window context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagOpenAudioInNewWindow()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Open Audio in New Window&quot;, &quot;Open Audio in New Window context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Open Audio in New Window&quot;, &quot;Open _Video in New Window&quot;, &quot;Open Audio in New Window context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagDownloadVideoToDisk()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Download Video&quot;, &quot;Download Video To Disk context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Download Video&quot;, &quot;Download _Video&quot;, &quot;Download Video To Disk context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagDownloadAudioToDisk()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Download Audio&quot;, &quot;Download Audio To Disk context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Download Audio&quot;, &quot;Download _Audio&quot;, &quot;Download Audio To Disk context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if !PLATFORM(GTK)
</ins><span class="cx"> String contextMenuItemTagCopyVideoLinkToClipboard()
</span><span class="cx"> {
</span><span class="cx">     return WEB_UI_STRING(&quot;Copy Video Address&quot;, &quot;Copy Video Address Location context menu item&quot;);
</span><span class="lines">@@ -509,39 +390,26 @@
</span><span class="cx"> {
</span><span class="cx">     return WEB_UI_STRING(&quot;Exit Full Screen&quot;, &quot;Video Exit Fullscreen context menu item&quot;);
</span><span class="cx"> }
</span><del>-
-#if PLATFORM(MAC) &amp;&amp; ENABLE(VIDEO_PRESENTATION_MODE)
-
-String contextMenuItemTagEnterVideoEnhancedFullscreen()
-{
-    return WEB_UI_STRING(&quot;Enter Picture in Picture&quot;, &quot;menu item&quot;);
-}
-
-String contextMenuItemTagExitVideoEnhancedFullscreen()
-{
-    return WEB_UI_STRING(&quot;Exit Picture in Picture&quot;, &quot;menu item&quot;);
-}
-
</del><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagMediaPlay()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Play&quot;, &quot;Media Play context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Play&quot;, &quot;_Play&quot;, &quot;Media Play context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagMediaPause()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Pause&quot;, &quot;Media Pause context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Pause&quot;, &quot;_Pause&quot;, &quot;Media Pause context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagMediaMute()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Mute&quot;, &quot;Media Mute context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Mute&quot;, &quot;_Mute&quot;, &quot;Media Mute context menu item&quot;);
</ins><span class="cx"> }
</span><del>-    
</del><ins>+
</ins><span class="cx"> String contextMenuItemTagInspectElement()
</span><span class="cx"> {
</span><del>-    return WEB_UI_STRING(&quot;Inspect Element&quot;, &quot;Inspect Element context menu item&quot;);
</del><ins>+    return WEB_UI_STRING_WITH_MNEMONIC(&quot;Inspect Element&quot;, &quot;Inspect _Element&quot;, &quot;Inspect Element context menu item&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(CONTEXT_MENUS)
</span><span class="lines">@@ -752,83 +620,7 @@
</span><span class="cx"> {
</span><span class="cx">     return WEB_UI_STRING(&quot;contact info auto fill&quot;, &quot;Label for the auto fill contacts button inside a text field.&quot;);
</span><span class="cx"> }
</span><del>-    
-#if PLATFORM(COCOA)
-String AXARIAContentGroupText(const String&amp; ariaType)
-{
-    if (ariaType == &quot;ARIAApplicationAlert&quot;)
-        return WEB_UI_STRING(&quot;alert&quot;, &quot;An ARIA accessibility group that acts as an alert.&quot;);
-    if (ariaType == &quot;ARIAApplicationAlertDialog&quot;)
-        return WEB_UI_STRING(&quot;web alert dialog&quot;, &quot;An ARIA accessibility group that acts as an alert dialog.&quot;);
-    if (ariaType == &quot;ARIAApplicationDialog&quot;)
-        return WEB_UI_STRING(&quot;web dialog&quot;, &quot;An ARIA accessibility group that acts as an dialog.&quot;);
-    if (ariaType == &quot;ARIAApplicationLog&quot;)
-        return WEB_UI_STRING(&quot;log&quot;, &quot;An ARIA accessibility group that acts as a console log.&quot;);
-    if (ariaType == &quot;ARIAApplicationMarquee&quot;)
-        return WEB_UI_STRING(&quot;marquee&quot;, &quot;An ARIA accessibility group that acts as a marquee.&quot;);
-    if (ariaType == &quot;ARIAApplicationStatus&quot;)
-        return WEB_UI_STRING(&quot;application status&quot;, &quot;An ARIA accessibility group that acts as a status update.&quot;);
-    if (ariaType == &quot;ARIAApplicationTimer&quot;)
-        return WEB_UI_STRING(&quot;timer&quot;, &quot;An ARIA accessibility group that acts as an updating timer.&quot;);
-    if (ariaType == &quot;ARIADocument&quot;)
-        return WEB_UI_STRING(&quot;document&quot;, &quot;An ARIA accessibility group that acts as a document.&quot;);
-    if (ariaType == &quot;ARIADocumentArticle&quot;)
-        return WEB_UI_STRING(&quot;article&quot;, &quot;An ARIA accessibility group that acts as an article.&quot;);
-    if (ariaType == &quot;ARIADocumentNote&quot;)
-        return WEB_UI_STRING(&quot;note&quot;, &quot;An ARIA accessibility group that acts as a note in a document.&quot;);
-    if (ariaType == &quot;ARIAWebApplication&quot;)
-        return WEB_UI_STRING(&quot;web application&quot;, &quot;An ARIA accessibility group that acts as an application.&quot;);
-    if (ariaType == &quot;ARIALandmarkBanner&quot;)
-        return WEB_UI_STRING(&quot;banner&quot;, &quot;An ARIA accessibility group that acts as a banner.&quot;);
-    if (ariaType == &quot;ARIALandmarkComplementary&quot;)
-        return WEB_UI_STRING(&quot;complementary&quot;, &quot;An ARIA accessibility group that acts as a region of complementary information.&quot;);
-    if (ariaType == &quot;ARIALandmarkContentInfo&quot;)
-        return WEB_UI_STRING(&quot;content information&quot;, &quot;An ARIA accessibility group that contains content.&quot;);
-    if (ariaType == &quot;ARIALandmarkMain&quot;)
-        return WEB_UI_STRING(&quot;main&quot;, &quot;An ARIA accessibility group that is the main portion of the website.&quot;);
-    if (ariaType == &quot;ARIALandmarkNavigation&quot;)
-        return WEB_UI_STRING(&quot;navigation&quot;, &quot;An ARIA accessibility group that contains the main navigation elements of a website.&quot;);
-    if (ariaType == &quot;ARIALandmarkRegion&quot;)
-        return WEB_UI_STRING(&quot;region&quot;, &quot;An ARIA accessibility group that acts as a distinct region in a document.&quot;);
-    if (ariaType == &quot;ARIALandmarkSearch&quot;)
-        return WEB_UI_STRING(&quot;search&quot;, &quot;An ARIA accessibility group that contains a search feature of a website.&quot;);
-    if (ariaType == &quot;ARIAUserInterfaceTooltip&quot;)
-        return WEB_UI_STRING(&quot;tooltip&quot;, &quot;An ARIA accessibility group that acts as a tooltip.&quot;);
-    if (ariaType == &quot;ARIATabPanel&quot;)
-        return WEB_UI_STRING(&quot;tab panel&quot;, &quot;An ARIA accessibility group that contains the content of a tab.&quot;);
-    if (ariaType == &quot;ARIADocumentMath&quot;)
-        return WEB_UI_STRING(&quot;math&quot;, &quot;An ARIA accessibility group that contains mathematical symbols.&quot;);
-    return String();
-}
</del><span class="cx"> 
</span><del>-String AXHorizontalRuleDescriptionText()
-{
-    return WEB_UI_STRING(&quot;separator&quot;, &quot;accessibility role description for a horizontal rule [&lt;hr&gt;]&quot;);
-}
-    
-String AXMarkText()
-{
-    return WEB_UI_STRING(&quot;highlighted&quot;, &quot;accessibility role description for a mark element&quot;);
-}
-
-#if ENABLE(METER_ELEMENT)
-String AXMeterGaugeRegionOptimumText()
-{
-    return WEB_UI_STRING(&quot;optimal value&quot;, &quot;The optimum value description for a meter element.&quot;);
-}
-
-String AXMeterGaugeRegionSuboptimalText()
-{
-    return WEB_UI_STRING(&quot;suboptimal value&quot;, &quot;The suboptimal value description for a meter element.&quot;);
-}
-
-String AXMeterGaugeRegionLessGoodText()
-{
-    return WEB_UI_STRING(&quot;critical value&quot;, &quot;The less good value description for a meter element.&quot;);
-}
-#endif // ENABLE(METER_ELEMENT)
-#endif // PLATFORM(COCOA)
-
</del><span class="cx"> String missingPluginText()
</span><span class="cx"> {
</span><span class="cx">     return WEB_UI_STRING(&quot;Missing Plug-in&quot;, &quot;Label text to be used when a plugin is missing&quot;);
</span><span class="lines">@@ -859,87 +651,6 @@
</span><span class="cx">     return WEB_UI_STRING_KEY(&quot;Unknown&quot;, &quot;Unknown (filesize)&quot;, &quot;Unknown filesize FTP directory listing item&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if PLATFORM(WIN)
-String uploadFileText()
-{
-    notImplemented();
-    return &quot;upload&quot;;
-}
-
-String allFilesText()
-{
-    notImplemented();
-    return &quot;all files&quot;;
-}
-#endif
-
-#if PLATFORM(COCOA)
-String builtInPDFPluginName()
-{
-    // Also exposed to DOM.
-    return WEB_UI_STRING(&quot;WebKit built-in PDF&quot;, &quot;Pseudo plug-in name, visible in the Installed Plug-ins page in Safari.&quot;);
-}
-
-String pdfDocumentTypeDescription()
-{
-    // Also exposed to DOM.
-    return WEB_UI_STRING(&quot;Portable Document Format&quot;, &quot;Description of the primary type supported by the PDF pseudo plug-in. Visible in the Installed Plug-ins page in Safari.&quot;);
-}
-
-String postScriptDocumentTypeDescription()
-{
-    // Also exposed to DOM.
-    return WEB_UI_STRING(&quot;PostScript&quot;, &quot;Description of the PostScript type supported by the PDF pseudo plug-in. Visible in the Installed Plug-ins page in Safari.&quot;);
-}
-
-String keygenMenuItem2048()
-{
-    return WEB_UI_STRING(&quot;2048 (High Grade)&quot;, &quot;Menu item title for KEYGEN pop-up menu&quot;);
-}
-
-String keygenKeychainItemName(const String&amp; host)
-{
-    return formatLocalizedString(WEB_UI_STRING(&quot;Key from %@&quot;, &quot;Name of keychain key generated by the KEYGEN tag&quot;), host.createCFString().get());
-}
-
-#endif
-
-#if PLATFORM(IOS)
-
-String htmlSelectMultipleItems(size_t count)
-{
-    switch (count) {
-    case 0:
-        return WEB_UI_STRING(&quot;0 Items&quot;, &quot;Present the element &lt;select multiple&gt; when no &lt;option&gt; items are selected (iOS only)&quot;);
-    case 1:
-        return WEB_UI_STRING(&quot;1 Item&quot;, &quot;Present the element &lt;select multiple&gt; when a single &lt;option&gt; is selected (iOS only)&quot;);
-    default:
-        return formatLocalizedString(WEB_UI_STRING(&quot;%zu Items&quot;, &quot;Present the number of selected &lt;option&gt; items in a &lt;select multiple&gt; element (iOS only)&quot;), count);
-    }
-}
-
-String fileButtonChooseMediaFileLabel()
-{
-    return WEB_UI_STRING(&quot;Choose Media (Single)&quot;, &quot;Title for file button used in HTML forms for media files&quot;);
-}
-
-String fileButtonChooseMultipleMediaFilesLabel()
-{
-    return WEB_UI_STRING(&quot;Choose Media (Multiple)&quot;, &quot;Title for file button used in HTML5 forms for multiple media files&quot;);
-}
-
-String fileButtonNoMediaFileSelectedLabel()
-{
-    return WEB_UI_STRING(&quot;no media selected (single)&quot;, &quot;Text to display in file button used in HTML forms for media files when no media file is selected&quot;);
-}
-
-String fileButtonNoMediaFilesSelectedLabel()
-{
-    return WEB_UI_STRING(&quot;no media selected (multiple)&quot;, &quot;Text to display in file button used in HTML forms for media files when no media files are selected and the button allows multiple files to be selected&quot;);
-}
-
-#endif
-
</del><span class="cx"> String imageTitle(const String&amp; filename, const IntSize&amp; size)
</span><span class="cx"> {
</span><span class="cx"> #if USE(CF)
</span><span class="lines">@@ -954,9 +665,11 @@
</span><span class="cx">     auto height = adoptCF(CFNumberCreate(0, kCFNumberIntType, &amp;heightInt));
</span><span class="cx">     auto heightString = adoptCF(CFNumberFormatterCreateStringWithNumber(0, formatter.get(), height.get()));
</span><span class="cx"> 
</span><del>-    return formatLocalizedString(WEB_UI_STRING(&quot;%@ %@×%@ pixels&quot;, &quot;window title for a standalone image (uses multiplication symbol, not x)&quot;), filename.createCFString().get(), widthString.get(), heightString.get());
</del><ins>+    return formatLocalizedString(WEB_UI_CFSTRING(&quot;%@ %@×%@ pixels&quot;, &quot;window title for a standalone image (uses multiplication symbol, not x)&quot;), filename.createCFString().get(), widthString.get(), heightString.get());
+#elif USE(GLIB)
+    return formatLocalizedString(WEB_UI_STRING(&quot;%s %d×%d pixels&quot;, &quot;window title for a standalone image (uses multiplication symbol, not x)&quot;), filename.utf8().data(), size.width(), size.height());
</ins><span class="cx"> #else
</span><del>-    return formatLocalizedString(WEB_UI_STRING(&quot;&lt;filename&gt; %d×%d pixels&quot;, &quot;window title for a standalone image (uses multiplication symbol, not x)&quot;), size.width(), size.height()).replace(&quot;&lt;filename&gt;&quot;, filename);
</del><ins>+    return formatLocalizedString(String::fromUTF8(&quot;&lt;filename&gt; %d×%d pixels&quot;, &quot;window title for a standalone image (uses multiplication symbol, not x)&quot;), size.width(), size.height()).replace(&quot;&lt;filename&gt;&quot;, filename);
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1141,6 +854,7 @@
</span><span class="cx">     return WEB_UI_STRING(&quot;Match the requested format&quot;, &quot;Validation message for input form controls requiring a constrained value according to pattern&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if !PLATFORM(GTK)
</ins><span class="cx"> String validationMessageTooShortText(int, int minLength)
</span><span class="cx"> {
</span><span class="cx">     return formatLocalizedString(WEB_UI_STRING(&quot;Use at least %d characters&quot;, &quot;Validation message for form control elements with a value shorter than minimum allowed length&quot;), minLength);
</span><span class="lines">@@ -1147,21 +861,22 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if !PLATFORM(COCOA)
</span><del>-
</del><span class="cx"> String validationMessageTooLongText(int, int maxLength)
</span><span class="cx"> {
</span><span class="cx">     return formatLocalizedString(WEB_UI_STRING(&quot;Use no more than %d characters&quot;, &quot;Validation message for form control elements with a value shorter than maximum allowed length&quot;), maxLength);
</span><span class="cx"> }
</span><del>-
</del><span class="cx"> #endif
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> String validationMessageRangeUnderflowText(const String&amp; minimum)
</span><span class="cx"> {
</span><span class="cx"> #if USE(CF)
</span><del>-    return formatLocalizedString(WEB_UI_STRING(&quot;Value must be greater than or equal to %@&quot;, &quot;Validation message for input form controls with value lower than allowed minimum&quot;), minimum.createCFString().get());
</del><ins>+    return formatLocalizedString(WEB_UI_CFSTRING(&quot;Value must be greater than or equal to %@&quot;, &quot;Validation message for input form controls with value lower than allowed minimum&quot;), minimum.createCFString().get());
+#elif USE(GLIB)
+    return formatLocalizedString(WEB_UI_STRING(&quot;Value must be greater than or equal to %s&quot;, &quot;Validation message for input form controls with value lower than allowed minimum&quot;), minimum.utf8().data());
</ins><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(minimum);
</span><del>-    return WEB_UI_STRING(&quot;range underflow&quot;, &quot;Validation message for input form controls with value lower than allowed minimum&quot;);
</del><ins>+    return String::fromUTF8(&quot;range underflow&quot;, &quot;Validation message for input form controls with value lower than allowed minimum&quot;);
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1168,10 +883,12 @@
</span><span class="cx"> String validationMessageRangeOverflowText(const String&amp; maximum)
</span><span class="cx"> {
</span><span class="cx"> #if USE(CF)
</span><del>-    return formatLocalizedString(WEB_UI_STRING(&quot;Value must be less than or equal to %@&quot;, &quot;Validation message for input form controls with value higher than allowed maximum&quot;), maximum.createCFString().get());
</del><ins>+    return formatLocalizedString(WEB_UI_CFSTRING(&quot;Value must be less than or equal to %@&quot;, &quot;Validation message for input form controls with value higher than allowed maximum&quot;), maximum.createCFString().get());
+#elif USE(GLIB)
+    return formatLocalizedString(WEB_UI_STRING(&quot;Value must be less than or equal to %s&quot;, &quot;Validation message for input form controls with value higher than allowed maximum&quot;), maximum.utf8().data());
</ins><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(maximum);
</span><del>-    return WEB_UI_STRING(&quot;range overflow&quot;, &quot;Validation message for input form controls with value higher than allowed maximum&quot;);
</del><ins>+    return String::fromUTF8(&quot;range overflow&quot;, &quot;Validation message for input form controls with value higher than allowed maximum&quot;);
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1223,37 +940,37 @@
</span><span class="cx"> 
</span><span class="cx"> String textTrackCountryAndLanguageMenuItemText(const String&amp; title, const String&amp; country, const String&amp; language)
</span><span class="cx"> {
</span><del>-    return formatLocalizedString(WEB_UI_STRING(&quot;%@ (%@-%@)&quot;, &quot;Text track display name format that includes the country and language of the subtitle, in the form of 'Title (Language-Country)'&quot;), title.createCFString().get(), language.createCFString().get(), country.createCFString().get());
</del><ins>+    return formatLocalizedString(WEB_UI_CFSTRING(&quot;%@ (%@-%@)&quot;, &quot;Text track display name format that includes the country and language of the subtitle, in the form of 'Title (Language-Country)'&quot;), title.createCFString().get(), language.createCFString().get(), country.createCFString().get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String textTrackLanguageMenuItemText(const String&amp; title, const String&amp; language)
</span><span class="cx"> {
</span><del>-    return formatLocalizedString(WEB_UI_STRING(&quot;%@ (%@)&quot;, &quot;Text track display name format that includes the language of the subtitle, in the form of 'Title (Language)'&quot;), title.createCFString().get(), language.createCFString().get());
</del><ins>+    return formatLocalizedString(WEB_UI_CFSTRING(&quot;%@ (%@)&quot;, &quot;Text track display name format that includes the language of the subtitle, in the form of 'Title (Language)'&quot;), title.createCFString().get(), language.createCFString().get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String closedCaptionTrackMenuItemText(const String&amp; title)
</span><span class="cx"> {
</span><del>-    return formatLocalizedString(WEB_UI_STRING(&quot;%@ CC&quot;, &quot;Text track contains closed captions&quot;), title.createCFString().get());
</del><ins>+    return formatLocalizedString(WEB_UI_CFSTRING(&quot;%@ CC&quot;, &quot;Text track contains closed captions&quot;), title.createCFString().get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String sdhTrackMenuItemText(const String&amp; title)
</span><span class="cx"> {
</span><del>-    return formatLocalizedString(WEB_UI_STRING(&quot;%@ SDH&quot;, &quot;Text track contains subtitles for the deaf and hard of hearing&quot;), title.createCFString().get());
</del><ins>+    return formatLocalizedString(WEB_UI_CFSTRING(&quot;%@ SDH&quot;, &quot;Text track contains subtitles for the deaf and hard of hearing&quot;), title.createCFString().get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String easyReaderTrackMenuItemText(const String&amp; title)
</span><span class="cx"> {
</span><del>-    return formatLocalizedString(WEB_UI_STRING(&quot;%@ Easy Reader&quot;, &quot;Text track contains simplified (3rd grade level) subtitles&quot;), title.createCFString().get());
</del><ins>+    return formatLocalizedString(WEB_UI_CFSTRING(&quot;%@ Easy Reader&quot;, &quot;Text track contains simplified (3rd grade level) subtitles&quot;), title.createCFString().get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String forcedTrackMenuItemText(const String&amp; title)
</span><span class="cx"> {
</span><del>-    return formatLocalizedString(WEB_UI_STRING(&quot;%@ Forced&quot;, &quot;Text track contains forced subtitles&quot;), title.createCFString().get());
</del><ins>+    return formatLocalizedString(WEB_UI_CFSTRING(&quot;%@ Forced&quot;, &quot;Text track contains forced subtitles&quot;), title.createCFString().get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String audioDescriptionTrackSuffixText(const String&amp; title)
</span><span class="cx"> {
</span><del>-    return formatLocalizedString(WEB_UI_STRING(&quot;%@ AD&quot;, &quot;Text track contains Audio Descriptions&quot;), title.createCFString().get());
</del><ins>+    return formatLocalizedString(WEB_UI_CFSTRING(&quot;%@ AD&quot;, &quot;Text track contains Audio Descriptions&quot;), title.createCFString().get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="lines">@@ -1277,7 +994,13 @@
</span><span class="cx"> 
</span><span class="cx"> String webCryptoMasterKeyKeychainLabel(const String&amp; localizedApplicationName)
</span><span class="cx"> {
</span><del>-    return formatLocalizedString(WEB_UI_STRING(&quot;%@ WebCrypto Master Key&quot;, &quot;Name of application's single WebCrypto master key in Keychain&quot;), localizedApplicationName.createCFString().get());
</del><ins>+#if USE(CF)
+    return formatLocalizedString(WEB_UI_CFSTRING(&quot;%@ WebCrypto Master Key&quot;, &quot;Name of application's single WebCrypto master key in Keychain&quot;), localizedApplicationName.createCFString().get());
+#elif USE(GLIB)
+    return formatLocalizedString(WEB_UI_STRING(&quot;%s WebCrypto Master Key&quot;, &quot;Name of application's single WebCrypto master key in Keychain&quot;), localizedApplicationName.utf8().data());
+#else
+    return String::fromUTF8(&quot;&lt;application&gt; WebCrypto Master Key&quot;, &quot;Name of application's single WebCrypto master key in Keychain&quot;).replace(&quot;&lt;application&gt;&quot;, localizedApplicationName);
+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String webCryptoMasterKeyKeychainComment()
</span><span class="lines">@@ -1287,38 +1010,6 @@
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if PLATFORM(MAC)
</del><span class="cx"> 
</span><del>-String insertListTypeNone()
-{
-    return WEB_UI_STRING(&quot;None&quot;, &quot;Option in segmented control for choosing list type in text editing&quot;);
-}
</del><span class="cx"> 
</span><del>-String insertListTypeBulleted()
-{
-    return WEB_UI_STRING(&quot;•&quot;, &quot;Option in segmented control for choosing list type in text editing&quot;);
-}
-
-String insertListTypeBulletedAccessibilityTitle()
-{
-    return WEB_UI_STRING(&quot;Bulleted list&quot;, &quot;Option in segmented control for inserting a bulleted list in text editing&quot;);
-}
-
-String insertListTypeNumbered()
-{
-    return WEB_UI_STRING(&quot;1. 2. 3.&quot;, &quot;Option in segmented control for choosing list type in text editing&quot;);
-}
-
-String insertListTypeNumberedAccessibilityTitle()
-{
-    return WEB_UI_STRING(&quot;Numbered list&quot;, &quot;Option in segmented control for inserting a numbered list in text editing&quot;);
-}
-
-String exitFullScreenButtonAccessibilityTitle()
-{
-    return WEB_UI_STRING(&quot;Exit Fullscreen&quot;, &quot;Button for exiting fullscreen when in fullscreen media playback&quot;);
-}
-
-#endif // PLATFORM(MAC)
-
</del><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformLocalizedStringsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/LocalizedStrings.h (214243 => 214244)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/LocalizedStrings.h        2017-03-22 08:41:44 UTC (rev 214243)
+++ trunk/Source/WebCore/platform/LocalizedStrings.h        2017-03-22 09:55:34 UTC (rev 214244)
</span><span class="lines">@@ -29,6 +29,10 @@
</span><span class="cx"> 
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> 
</span><ins>+#if USE(GLIB) &amp;&amp; defined(GETTEXT_PACKAGE)
+#include &lt;glib/gi18n-lib.h&gt;
+#endif
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx">     class IntSize;
</span><span class="lines">@@ -307,10 +311,23 @@
</span><span class="cx">     WEBCORE_EXPORT String exitFullScreenButtonAccessibilityTitle();
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if USE(GLIB) &amp;&amp; defined(GETTEXT_PACKAGE)
+#define WEB_UI_STRING(string, description) WebCore::localizedString(_(string))
+#define WEB_UI_STRING_KEY(string, key, description) WebCore::localizedString(C_(key, string))
+#define WEB_UI_STRING_WITH_MNEMONIC(string, mnemonic, description) WebCore::localizedString(_(mnemonic))
+#else
</ins><span class="cx"> #define WEB_UI_STRING(string, description) WebCore::localizedString(string)
</span><span class="cx"> #define WEB_UI_STRING_KEY(string, key, description) WebCore::localizedString(key)
</span><ins>+#define WEB_UI_STRING_WITH_MNEMONIC(string, mnemonic, description) WebCore::localizedString(string)
+#endif
</ins><span class="cx"> 
</span><ins>+#if USE(CF)
+// This is exactly as WEB_UI_STRING, but renamed to ensure the string is not scanned by non-CF ports.
+#define WEB_UI_CFSTRING(string, description) WebCore::localizedString(string)
+#endif
+
</ins><span class="cx">     WEBCORE_EXPORT String localizedString(const char* key);
</span><ins>+    String formatLocalizedString(String format, ...);
</ins><span class="cx"> 
</span><span class="cx"> #ifdef __OBJC__
</span><span class="cx"> #define WEB_UI_NSSTRING(string, description) WebCore::localizedNSString(string)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformcocoaLocalizedStringsCocoamm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/cocoa/LocalizedStringsCocoa.mm (214243 => 214244)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/cocoa/LocalizedStringsCocoa.mm        2017-03-22 08:41:44 UTC (rev 214243)
+++ trunk/Source/WebCore/platform/cocoa/LocalizedStringsCocoa.mm        2017-03-22 09:55:34 UTC (rev 214244)
</span><span class="lines">@@ -26,6 +26,8 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;LocalizedStrings.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;NotImplemented.h&quot;
+#include &quot;WebCoreSystemInterface.h&quot;
</ins><span class="cx"> #include &lt;wtf/Assertions.h&gt;
</span><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="cx"> #include &lt;wtf/RetainPtr.h&gt;
</span><span class="lines">@@ -51,9 +53,305 @@
</span><span class="cx">     return localizedNSString((NSString *)keyString.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String copyImageUnknownFileLabel()
+{
+    return WEB_UI_STRING(&quot;unknown&quot;, &quot;Unknown filename&quot;);
+}
+
+#if ENABLE(CONTEXT_MENUS)
+String contextMenuItemTagSearchInSpotlight()
+{
+    return WEB_UI_STRING(&quot;Search in Spotlight&quot;, &quot;Search in Spotlight context menu item&quot;);
+}
+
+String contextMenuItemTagSearchWeb()
+{
+    auto searchProviderName = adoptCF(wkCopyDefaultSearchProviderDisplayName());
+    return formatLocalizedString(WEB_UI_STRING(&quot;Search with %@&quot;, &quot;Search with search provider context menu item with provider name inserted&quot;), searchProviderName.get());
+}
+
+String contextMenuItemTagShowFonts()
+{
+    return WEB_UI_STRING(&quot;Show Fonts&quot;, &quot;Show fonts context menu item&quot;);
+}
+
+String contextMenuItemTagStyles()
+{
+    return WEB_UI_STRING(&quot;Styles...&quot;, &quot;Styles context menu item&quot;);
+}
+
+String contextMenuItemTagShowColors()
+{
+    return WEB_UI_STRING(&quot;Show Colors&quot;, &quot;Show colors context menu item&quot;);
+}
+
+String contextMenuItemTagSpeechMenu()
+{
+    return WEB_UI_STRING(&quot;Speech&quot;, &quot;Speech context sub-menu item&quot;);
+}
+
+String contextMenuItemTagStartSpeaking()
+{
+    return WEB_UI_STRING(&quot;Start Speaking&quot;, &quot;Start speaking context menu item&quot;);
+}
+
+String contextMenuItemTagStopSpeaking()
+{
+    return WEB_UI_STRING(&quot;Stop Speaking&quot;, &quot;Stop speaking context menu item&quot;);
+}
+
+String contextMenuItemTagCorrectSpellingAutomatically()
+{
+    return WEB_UI_STRING(&quot;Correct Spelling Automatically&quot;, &quot;Correct Spelling Automatically context menu item&quot;);
+}
+
+String contextMenuItemTagSubstitutionsMenu()
+{
+    return WEB_UI_STRING(&quot;Substitutions&quot;, &quot;Substitutions context sub-menu item&quot;);
+}
+
+String contextMenuItemTagShowSubstitutions(bool show)
+{
+    if (show)
+        return WEB_UI_STRING(&quot;Show Substitutions&quot;, &quot;menu item title&quot;);
+    return WEB_UI_STRING(&quot;Hide Substitutions&quot;, &quot;menu item title&quot;);
+}
+
+String contextMenuItemTagSmartCopyPaste()
+{
+    return WEB_UI_STRING(&quot;Smart Copy/Paste&quot;, &quot;Smart Copy/Paste context menu item&quot;);
+}
+
+String contextMenuItemTagSmartQuotes()
+{
+    return WEB_UI_STRING(&quot;Smart Quotes&quot;, &quot;Smart Quotes context menu item&quot;);
+}
+
+String contextMenuItemTagSmartDashes()
+{
+    return WEB_UI_STRING(&quot;Smart Dashes&quot;, &quot;Smart Dashes context menu item&quot;);
+}
+
+String contextMenuItemTagSmartLinks()
+{
+    return WEB_UI_STRING(&quot;Smart Links&quot;, &quot;Smart Links context menu item&quot;);
+}
+
+String contextMenuItemTagTextReplacement()
+{
+    return WEB_UI_STRING(&quot;Text Replacement&quot;, &quot;Text Replacement context menu item&quot;);
+}
+
+String contextMenuItemTagTransformationsMenu()
+{
+    return WEB_UI_STRING(&quot;Transformations&quot;, &quot;Transformations context sub-menu item&quot;);
+}
+
+String contextMenuItemTagMakeUpperCase()
+{
+    return WEB_UI_STRING(&quot;Make Upper Case&quot;, &quot;Make Upper Case context menu item&quot;);
+}
+
+String contextMenuItemTagMakeLowerCase()
+{
+    return WEB_UI_STRING(&quot;Make Lower Case&quot;, &quot;Make Lower Case context menu item&quot;);
+}
+
+String contextMenuItemTagCapitalize()
+{
+    return WEB_UI_STRING(&quot;Capitalize&quot;, &quot;Capitalize context menu item&quot;);
+}
+
+String contextMenuItemTagChangeBack(const String&amp; replacedString)
+{
+    notImplemented();
+    return replacedString;
+}
+
+#if PLATFORM(MAC) &amp;&amp; ENABLE(VIDEO_PRESENTATION_MODE)
+String contextMenuItemTagEnterVideoEnhancedFullscreen()
+{
+    return WEB_UI_STRING(&quot;Enter Picture in Picture&quot;, &quot;menu item&quot;);
+}
+
+String contextMenuItemTagExitVideoEnhancedFullscreen()
+{
+    return WEB_UI_STRING(&quot;Exit Picture in Picture&quot;, &quot;menu item&quot;);
+}
+#endif
+#endif // ENABLE(CONTEXT_MENUS)
+
+String AXARIAContentGroupText(const String&amp; ariaType)
+{
+    if (ariaType == &quot;ARIAApplicationAlert&quot;)
+        return WEB_UI_STRING(&quot;alert&quot;, &quot;An ARIA accessibility group that acts as an alert.&quot;);
+    if (ariaType == &quot;ARIAApplicationAlertDialog&quot;)
+        return WEB_UI_STRING(&quot;web alert dialog&quot;, &quot;An ARIA accessibility group that acts as an alert dialog.&quot;);
+    if (ariaType == &quot;ARIAApplicationDialog&quot;)
+        return WEB_UI_STRING(&quot;web dialog&quot;, &quot;An ARIA accessibility group that acts as an dialog.&quot;);
+    if (ariaType == &quot;ARIAApplicationLog&quot;)
+        return WEB_UI_STRING(&quot;log&quot;, &quot;An ARIA accessibility group that acts as a console log.&quot;);
+    if (ariaType == &quot;ARIAApplicationMarquee&quot;)
+        return WEB_UI_STRING(&quot;marquee&quot;, &quot;An ARIA accessibility group that acts as a marquee.&quot;);
+    if (ariaType == &quot;ARIAApplicationStatus&quot;)
+        return WEB_UI_STRING(&quot;application status&quot;, &quot;An ARIA accessibility group that acts as a status update.&quot;);
+    if (ariaType == &quot;ARIAApplicationTimer&quot;)
+        return WEB_UI_STRING(&quot;timer&quot;, &quot;An ARIA accessibility group that acts as an updating timer.&quot;);
+    if (ariaType == &quot;ARIADocument&quot;)
+        return WEB_UI_STRING(&quot;document&quot;, &quot;An ARIA accessibility group that acts as a document.&quot;);
+    if (ariaType == &quot;ARIADocumentArticle&quot;)
+        return WEB_UI_STRING(&quot;article&quot;, &quot;An ARIA accessibility group that acts as an article.&quot;);
+    if (ariaType == &quot;ARIADocumentNote&quot;)
+        return WEB_UI_STRING(&quot;note&quot;, &quot;An ARIA accessibility group that acts as a note in a document.&quot;);
+    if (ariaType == &quot;ARIAWebApplication&quot;)
+        return WEB_UI_STRING(&quot;web application&quot;, &quot;An ARIA accessibility group that acts as an application.&quot;);
+    if (ariaType == &quot;ARIALandmarkBanner&quot;)
+        return WEB_UI_STRING(&quot;banner&quot;, &quot;An ARIA accessibility group that acts as a banner.&quot;);
+    if (ariaType == &quot;ARIALandmarkComplementary&quot;)
+        return WEB_UI_STRING(&quot;complementary&quot;, &quot;An ARIA accessibility group that acts as a region of complementary information.&quot;);
+    if (ariaType == &quot;ARIALandmarkContentInfo&quot;)
+        return WEB_UI_STRING(&quot;content information&quot;, &quot;An ARIA accessibility group that contains content.&quot;);
+    if (ariaType == &quot;ARIALandmarkMain&quot;)
+        return WEB_UI_STRING(&quot;main&quot;, &quot;An ARIA accessibility group that is the main portion of the website.&quot;);
+    if (ariaType == &quot;ARIALandmarkNavigation&quot;)
+        return WEB_UI_STRING(&quot;navigation&quot;, &quot;An ARIA accessibility group that contains the main navigation elements of a website.&quot;);
+    if (ariaType == &quot;ARIALandmarkRegion&quot;)
+        return WEB_UI_STRING(&quot;region&quot;, &quot;An ARIA accessibility group that acts as a distinct region in a document.&quot;);
+    if (ariaType == &quot;ARIALandmarkSearch&quot;)
+        return WEB_UI_STRING(&quot;search&quot;, &quot;An ARIA accessibility group that contains a search feature of a website.&quot;);
+    if (ariaType == &quot;ARIAUserInterfaceTooltip&quot;)
+        return WEB_UI_STRING(&quot;tooltip&quot;, &quot;An ARIA accessibility group that acts as a tooltip.&quot;);
+    if (ariaType == &quot;ARIATabPanel&quot;)
+        return WEB_UI_STRING(&quot;tab panel&quot;, &quot;An ARIA accessibility group that contains the content of a tab.&quot;);
+    if (ariaType == &quot;ARIADocumentMath&quot;)
+        return WEB_UI_STRING(&quot;math&quot;, &quot;An ARIA accessibility group that contains mathematical symbols.&quot;);
+    return String();
+}
+
+String AXHorizontalRuleDescriptionText()
+{
+    return WEB_UI_STRING(&quot;separator&quot;, &quot;accessibility role description for a horizontal rule [&lt;hr&gt;]&quot;);
+}
+
+String AXMarkText()
+{
+    return WEB_UI_STRING(&quot;highlighted&quot;, &quot;accessibility role description for a mark element&quot;);
+}
+
+#if ENABLE(METER_ELEMENT)
+String AXMeterGaugeRegionOptimumText()
+{
+    return WEB_UI_STRING(&quot;optimal value&quot;, &quot;The optimum value description for a meter element.&quot;);
+}
+
+String AXMeterGaugeRegionSuboptimalText()
+{
+    return WEB_UI_STRING(&quot;suboptimal value&quot;, &quot;The suboptimal value description for a meter element.&quot;);
+}
+
+String AXMeterGaugeRegionLessGoodText()
+{
+    return WEB_UI_STRING(&quot;critical value&quot;, &quot;The less good value description for a meter element.&quot;);
+}
+#endif // ENABLE(METER_ELEMENT)
+
+String builtInPDFPluginName()
+{
+    // Also exposed to DOM.
+    return WEB_UI_STRING(&quot;WebKit built-in PDF&quot;, &quot;Pseudo plug-in name, visible in the Installed Plug-ins page in Safari.&quot;);
+}
+
+String pdfDocumentTypeDescription()
+{
+    // Also exposed to DOM.
+    return WEB_UI_STRING(&quot;Portable Document Format&quot;, &quot;Description of the primary type supported by the PDF pseudo plug-in. Visible in the Installed Plug-ins page in Safari.&quot;);
+}
+
+String postScriptDocumentTypeDescription()
+{
+    // Also exposed to DOM.
+    return WEB_UI_STRING(&quot;PostScript&quot;, &quot;Description of the PostScript type supported by the PDF pseudo plug-in. Visible in the Installed Plug-ins page in Safari.&quot;);
+}
+
+String keygenMenuItem2048()
+{
+    return WEB_UI_STRING(&quot;2048 (High Grade)&quot;, &quot;Menu item title for KEYGEN pop-up menu&quot;);
+}
+
+String keygenKeychainItemName(const String&amp; host)
+{
+    return formatLocalizedString(WEB_UI_STRING(&quot;Key from %@&quot;, &quot;Name of keychain key generated by the KEYGEN tag&quot;), host.createCFString().get());
+}
+
+#if PLATFORM(IOS)
+String htmlSelectMultipleItems(size_t count)
+{
+    switch (count) {
+    case 0:
+        return WEB_UI_STRING(&quot;0 Items&quot;, &quot;Present the element &lt;select multiple&gt; when no &lt;option&gt; items are selected (iOS only)&quot;);
+    case 1:
+        return WEB_UI_STRING(&quot;1 Item&quot;, &quot;Present the element &lt;select multiple&gt; when a single &lt;option&gt; is selected (iOS only)&quot;);
+    default:
+        return formatLocalizedString(WEB_UI_STRING(&quot;%zu Items&quot;, &quot;Present the number of selected &lt;option&gt; items in a &lt;select multiple&gt; element (iOS only)&quot;), count);
+    }
+}
+
+String fileButtonChooseMediaFileLabel()
+{
+    return WEB_UI_STRING(&quot;Choose Media (Single)&quot;, &quot;Title for file button used in HTML forms for media files&quot;);
+}
+
+String fileButtonChooseMultipleMediaFilesLabel()
+{
+    return WEB_UI_STRING(&quot;Choose Media (Multiple)&quot;, &quot;Title for file button used in HTML5 forms for multiple media files&quot;);
+}
+
+String fileButtonNoMediaFileSelectedLabel()
+{
+    return WEB_UI_STRING(&quot;no media selected (single)&quot;, &quot;Text to display in file button used in HTML forms for media files when no media file is selected&quot;);
+}
+
+String fileButtonNoMediaFilesSelectedLabel()
+{
+    return WEB_UI_STRING(&quot;no media selected (multiple)&quot;, &quot;Text to display in file button used in HTML forms for media files when no media files are selected and the button allows multiple files to be selected&quot;);
+}
+#endif
+
</ins><span class="cx"> String validationMessageTooLongText(int, int maxLength)
</span><span class="cx"> {
</span><span class="cx">     return [NSString localizedStringWithFormat:WEB_UI_NSSTRING(@&quot;Use no more than %d character(s)&quot;, @&quot;Validation message for form control elements with a value shorter than maximum allowed length&quot;), maxLength];
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(MAC)
+String insertListTypeNone()
+{
+    return WEB_UI_STRING(&quot;None&quot;, &quot;Option in segmented control for choosing list type in text editing&quot;);
+}
+
+String insertListTypeBulleted()
+{
+    return WEB_UI_STRING(&quot;•&quot;, &quot;Option in segmented control for choosing list type in text editing&quot;);
+}
+
+String insertListTypeBulletedAccessibilityTitle()
+{
+    return WEB_UI_STRING(&quot;Bulleted list&quot;, &quot;Option in segmented control for inserting a bulleted list in text editing&quot;);
+}
+
+String insertListTypeNumbered()
+{
+    return WEB_UI_STRING(&quot;1. 2. 3.&quot;, &quot;Option in segmented control for choosing list type in text editing&quot;);
+}
+
+String insertListTypeNumberedAccessibilityTitle()
+{
+    return WEB_UI_STRING(&quot;Numbered list&quot;, &quot;Option in segmented control for inserting a numbered list in text editing&quot;);
+}
+
+String exitFullScreenButtonAccessibilityTitle()
+{
+    return WEB_UI_STRING(&quot;Exit Fullscreen&quot;, &quot;Button for exiting fullscreen when in fullscreen media playback&quot;);
+}
+#endif // PLATFORM(MAC)
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgtkLocalizedStringsGtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/gtk/LocalizedStringsGtk.cpp (214243 => 214244)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/gtk/LocalizedStringsGtk.cpp        2017-03-22 08:41:44 UTC (rev 214243)
+++ trunk/Source/WebCore/platform/gtk/LocalizedStringsGtk.cpp        2017-03-22 09:55:34 UTC (rev 214244)
</span><span class="lines">@@ -31,11 +31,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;LocalizedStrings.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;IntSize.h&quot;
-#include &quot;NotImplemented.h&quot;
-#include &lt;glib/gi18n-lib.h&gt;
-#include &lt;gtk/gtk.h&gt;
-#include &lt;wtf/MathExtras.h&gt;
</del><span class="cx"> #include &lt;wtf/glib/GUniquePtr.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="lines">@@ -42,114 +37,22 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-static const char* gtkStockLabel(const char* stockID)
-{
-    GtkStockItem item;
-    if (!gtk_stock_lookup(stockID, &amp;item))
-        return stockID;
-    return item.label;
-}
-
-String submitButtonDefaultLabel()
-{
-    return String::fromUTF8(_(&quot;Submit&quot;));
-}
-
-String inputElementAltText()
-{
-    return String::fromUTF8(_(&quot;Submit&quot;));
-}
-
-String resetButtonDefaultLabel()
-{
-    return String::fromUTF8(_(&quot;Reset&quot;));
-}
-
-String defaultDetailsSummaryText()
-{
-    return String::fromUTF8(_(&quot;Details&quot;));
-}
-
-String searchableIndexIntroduction()
-{
-    return String::fromUTF8(_(&quot;This is a searchable index. Enter search keywords: &quot;));
-}
-
-String fileButtonChooseFileLabel()
-{
-    return String::fromUTF8(_(&quot;Choose File&quot;));
-}
-
-String fileButtonChooseMultipleFilesLabel()
-{
-    return String::fromUTF8(_(&quot;Choose Files&quot;));
-}
-
-String fileButtonNoFileSelectedLabel()
-{
-    return String::fromUTF8(_(&quot;(None)&quot;));
-}
-
-String fileButtonNoFilesSelectedLabel()
-{
-    return String::fromUTF8(_(&quot;(None)&quot;));
-}
-
-String contextMenuItemTagOpenLinkInNewWindow()
-{
-    return String::fromUTF8(_(&quot;Open Link in New _Window&quot;));
-}
-
-String contextMenuItemTagDownloadLinkToDisk()
-{
-    return String::fromUTF8(_(&quot;_Download Linked File&quot;));
-}
-
</del><ins>+#if ENABLE(CONTEXT_MENUS)
</ins><span class="cx"> String contextMenuItemTagCopyLinkToClipboard()
</span><span class="cx"> {
</span><span class="cx">     return String::fromUTF8(_(&quot;Copy Link Loc_ation&quot;));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String contextMenuItemTagOpenImageInNewWindow()
-{
-    return String::fromUTF8(_(&quot;Open _Image in New Window&quot;));
-}
-
</del><span class="cx"> String contextMenuItemTagDownloadImageToDisk()
</span><span class="cx"> {
</span><span class="cx">     return String::fromUTF8(_(&quot;Sa_ve Image As&quot;));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String contextMenuItemTagCopyImageToClipboard()
-{
-    return String::fromUTF8(_(&quot;Cop_y Image&quot;));
-}
-
</del><span class="cx"> String contextMenuItemTagCopyImageUrlToClipboard()
</span><span class="cx"> {
</span><span class="cx">     return String::fromUTF8(_(&quot;Copy Image _Address&quot;));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String contextMenuItemTagOpenVideoInNewWindow()
-{
-    return String::fromUTF8(_(&quot;Open _Video in New Window&quot;));
-}
-
-String contextMenuItemTagOpenAudioInNewWindow()
-{
-    return String::fromUTF8(_(&quot;Open _Audio in New Window&quot;));
-}
-
-String contextMenuItemTagDownloadVideoToDisk()
-{
-    return String::fromUTF8(_(&quot;Download _Video&quot;));
-}
-
-String contextMenuItemTagDownloadAudioToDisk()
-{
-    return String::fromUTF8(_(&quot;Download _Audio&quot;));
-}
-
</del><span class="cx"> String contextMenuItemTagCopyVideoLinkToClipboard()
</span><span class="cx"> {
</span><span class="cx">     return String::fromUTF8(_(&quot;Cop_y Video Link Location&quot;));
</span><span class="lines">@@ -185,42 +88,14 @@
</span><span class="cx">     return String::fromUTF8(_(&quot;Switch Video to _Fullscreen&quot;));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String contextMenuItemTagMediaPlay()
-{
-    return String::fromUTF8(_(&quot;_Play&quot;));
-}
-
-String contextMenuItemTagMediaPause()
-{
-    return String::fromUTF8(_(&quot;_Pause&quot;));
-}
-
-String contextMenuItemTagMediaMute()
-{
-    return String::fromUTF8(_(&quot;_Mute&quot;));
-}
-
-String contextMenuItemTagOpenFrameInNewWindow()
-{
-    return String::fromUTF8(_(&quot;Open _Frame in New Window&quot;));
-}
-
-String contextMenuItemTagCopy()
-{
-    static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_COPY));
-    return stockLabel;
-}
-
</del><span class="cx"> String contextMenuItemTagDelete()
</span><span class="cx"> {
</span><del>-    static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_DELETE));
-    return stockLabel;
</del><ins>+    return String::fromUTF8(_(&quot;_Delete&quot;));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagSelectAll()
</span><span class="cx"> {
</span><del>-    static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_SELECT_ALL));
-    return stockLabel;
</del><ins>+    return String::fromUTF8(_(&quot;Select _All&quot;));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String contextMenuItemTagUnicode()
</span><span class="lines">@@ -233,134 +108,11 @@
</span><span class="cx">     return String::fromUTF8(_(&quot;Input _Methods&quot;));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String contextMenuItemTagGoBack()
-{
-    static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_GO_BACK));
-    return stockLabel;
-}
-
-String contextMenuItemTagGoForward()
-{
-    static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_GO_FORWARD));
-    return stockLabel;
-}
-
-String contextMenuItemTagStop()
-{
-    static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_STOP));
-    return stockLabel;
-}
-
-String contextMenuItemTagReload()
-{
-    return String::fromUTF8(_(&quot;_Reload&quot;));
-}
-
-String contextMenuItemTagCut()
-{
-    static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_CUT));
-    return stockLabel;
-}
-
-String contextMenuItemTagPaste()
-{
-    static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_PASTE));
-    return stockLabel;
-}
-
-String contextMenuItemTagNoGuessesFound()
-{
-    return String::fromUTF8(_(&quot;No Guesses Found&quot;));
-}
-
-String contextMenuItemTagIgnoreSpelling()
-{
-    return String::fromUTF8(_(&quot;_Ignore Spelling&quot;));
-}
-
-String contextMenuItemTagLearnSpelling()
-{
-    return String::fromUTF8(_(&quot;_Learn Spelling&quot;));
-}
-
</del><span class="cx"> String contextMenuItemTagSearchWeb()
</span><span class="cx"> {
</span><span class="cx">     return String::fromUTF8(_(&quot;_Search the Web&quot;));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String contextMenuItemTagLookUpInDictionary(const String&amp;)
-{
-    return String::fromUTF8(_(&quot;_Look Up in Dictionary&quot;));
-}
-
-String contextMenuItemTagOpenLink()
-{
-    return String::fromUTF8(_(&quot;_Open Link&quot;));
-}
-
-String contextMenuItemTagIgnoreGrammar()
-{
-    return String::fromUTF8(_(&quot;Ignore _Grammar&quot;));
-}
-
-String contextMenuItemTagSpellingMenu()
-{
-    return String::fromUTF8(_(&quot;Spelling and _Grammar&quot;));
-}
-
-String contextMenuItemTagShowSpellingPanel(bool show)
-{
-    return String::fromUTF8(show ? _(&quot;_Show Spelling and Grammar&quot;) : _(&quot;_Hide Spelling and Grammar&quot;));
-}
-
-String contextMenuItemTagCheckSpelling()
-{
-    return String::fromUTF8(_(&quot;_Check Document Now&quot;));
-}
-
-String contextMenuItemTagCheckSpellingWhileTyping()
-{
-    return String::fromUTF8(_(&quot;Check Spelling While _Typing&quot;));
-}
-
-String contextMenuItemTagCheckGrammarWithSpelling()
-{
-    return String::fromUTF8(_(&quot;Check _Grammar With Spelling&quot;));
-}
-
-String contextMenuItemTagFontMenu()
-{
-    return String::fromUTF8(_(&quot;_Font&quot;));
-}
-
-String contextMenuItemTagBold()
-{
-    static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_BOLD));
-    return stockLabel;
-}
-
-String contextMenuItemTagItalic()
-{
-    static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_ITALIC));
-    return stockLabel;
-}
-
-String contextMenuItemTagUnderline()
-{
-    static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_UNDERLINE));
-    return stockLabel;
-}
-
-String contextMenuItemTagOutline()
-{
-    return String::fromUTF8(_(&quot;_Outline&quot;));
-}
-
-String contextMenuItemTagInspectElement()
-{
-    return String::fromUTF8(_(&quot;Inspect _Element&quot;));
-}
-
</del><span class="cx"> String contextMenuItemTagUnicodeInsertLRMMark()
</span><span class="cx"> {
</span><span class="cx">     return String::fromUTF8(_(&quot;LRM _Left-to-right mark&quot;));
</span><span class="lines">@@ -410,405 +162,8 @@
</span><span class="cx"> {
</span><span class="cx">     return String::fromUTF8(_(&quot;ZWNJ Zero width _non-joiner&quot;));
</span><span class="cx"> }
</span><ins>+#endif // ENABLE(CONTEXT_MENUS)
</ins><span class="cx"> 
</span><del>-String searchMenuNoRecentSearchesText()
-{
-    return String::fromUTF8(_(&quot;No recent searches&quot;));
-}
-
-String searchMenuRecentSearchesText()
-{
-    return String::fromUTF8(_(&quot;Recent searches&quot;));
-}
-
-String searchMenuClearRecentSearchesText()
-{
-    return String::fromUTF8(_(&quot;_Clear recent searches&quot;));
-}
-
-String AXDefinitionText()
-{
-    return String::fromUTF8(_(&quot;definition&quot;));
-}
-
-String AXDescriptionListText()
-{
-    return String::fromUTF8(_(&quot;description list&quot;));
-}
-
-String AXDescriptionListTermText()
-{
-    return String::fromUTF8(_(&quot;term&quot;));
-}
-
-String AXDescriptionListDetailText()
-{
-    return String::fromUTF8(_(&quot;description&quot;));
-}
-
-String AXDetailsText()
-{
-    return String::fromUTF8(_(&quot;details&quot;));
-}
-
-String AXSummaryText()
-{
-    return String::fromUTF8(_(&quot;summary&quot;));
-}
-
-String AXFigureText()
-{
-    return String::fromUTF8(_(&quot;figure&quot;));
-}
-
-String AXOutputText()
-{
-    return String::fromUTF8(_(&quot;output&quot;));
-}
-
-String AXEmailFieldText()
-{
-    return String::fromUTF8(_(&quot;email field&quot;));
-}
-
-String AXTelephoneFieldText()
-{
-    return String::fromUTF8(_(&quot;telephone number field&quot;));
-}
-
-String AXURLFieldText()
-{
-    return String::fromUTF8(_(&quot;URL field&quot;));
-}
-
-String AXDateFieldText()
-{
-    return String::fromUTF8(_(&quot;date field&quot;));
-}
-
-String AXTimeFieldText()
-{
-    return String::fromUTF8(_(&quot;time field&quot;));
-}
-
-String AXDateTimeFieldText()
-{
-    return String::fromUTF8(_(&quot;date and time field&quot;));
-}
-
-String AXMonthFieldText()
-{
-    return String::fromUTF8(_(&quot;month and year field&quot;));
-}
-
-String AXNumberFieldText()
-{
-    return String::fromUTF8(_(&quot;number field&quot;));
-}
-
-String AXWeekFieldText()
-{
-    return String::fromUTF8(_(&quot;week and year field&quot;));
-}
-
-String AXFooterRoleDescriptionText()
-{
-    return String::fromUTF8(_(&quot;footer&quot;));
-}
-
-String AXSearchFieldCancelButtonText()
-{
-    return String::fromUTF8(_(&quot;cancel&quot;));
-}
-
-String AXAutoFillCredentialsLabel()
-{
-    return String::fromUTF8(_(&quot;password auto fill&quot;));
-}
-
-String AXAutoFillContactsLabel()
-{
-    return String::fromUTF8(_(&quot;contact info auto fill&quot;));
-}
-    
-String AXButtonActionVerb()
-{
-    return String::fromUTF8(_(&quot;press&quot;));
-}
-
-String AXRadioButtonActionVerb()
-{
-    return String::fromUTF8(_(&quot;select&quot;));
-}
-
-String AXTextFieldActionVerb()
-{
-    return String::fromUTF8(_(&quot;activate&quot;));
-}
-
-String AXCheckedCheckBoxActionVerb()
-{
-    return String::fromUTF8(_(&quot;uncheck&quot;));
-}
-
-String AXUncheckedCheckBoxActionVerb()
-{
-    return String::fromUTF8(_(&quot;check&quot;));
-}
-
-String AXLinkActionVerb()
-{
-    return String::fromUTF8(_(&quot;jump&quot;));
-}
-
-String AXMenuListPopupActionVerb()
-{
-    return String();
-}
-
-String AXMenuListActionVerb()
-{
-    return String();
-}
-
-String AXListItemActionVerb()
-{
-    return String();
-}
-    
-String missingPluginText()
-{
-    return String::fromUTF8(_(&quot;Missing Plug-in&quot;));
-}
-
-String crashedPluginText()
-{
-    notImplemented();
-    return String::fromUTF8(_(&quot;Plug-in Failure&quot;));
-}
-
-String blockedPluginByContentSecurityPolicyText()
-{
-    notImplemented();
-    return String();
-}
-
-String insecurePluginVersionText()
-{
-    notImplemented();
-    return String();
-}
-
-String multipleFileUploadText(unsigned numberOfFiles)
-{
-    // FIXME: If this file gets localized, this should really be localized as one string with a wildcard for the number.
-    return String::number(numberOfFiles) + String::fromUTF8(_(&quot; files&quot;));
-}
-
-String unknownFileSizeText()
-{
-    return String::fromUTF8(_(&quot;Unknown&quot;));
-}
-
-String imageTitle(const String&amp; filename, const IntSize&amp; size)
-{
-    GUniquePtr&lt;gchar&gt; string(g_strdup_printf(C_(&quot;window title for a standalone image (uses multiplication symbol, not x)&quot;, &quot;%s %d×%d pixels&quot;),
-        filename.utf8().data(), size.width(), size.height()));
-
-    return String::fromUTF8(string.get());
-}
-
-
-#if ENABLE(VIDEO)
-
-String mediaElementLoadingStateText()
-{
-    return String::fromUTF8(_(&quot;Loading...&quot;));
-}
-
-String mediaElementLiveBroadcastStateText()
-{
-    return String::fromUTF8(_(&quot;Live Broadcast&quot;));
-}
-
-String localizedMediaControlElementString(const String&amp; name)
-{
-    if (name == &quot;AudioElement&quot;)
-        return String::fromUTF8(_(&quot;audio playback&quot;));
-    if (name == &quot;VideoElement&quot;)
-        return String::fromUTF8(_(&quot;video playback&quot;));
-    if (name == &quot;MuteButton&quot;)
-        return String::fromUTF8(_(&quot;mute&quot;));
-    if (name == &quot;UnMuteButton&quot;)
-        return String::fromUTF8(_(&quot;unmute&quot;));
-    if (name == &quot;PlayButton&quot;)
-        return String::fromUTF8(_(&quot;play&quot;));
-    if (name == &quot;PauseButton&quot;)
-        return String::fromUTF8(_(&quot;pause&quot;));
-    if (name == &quot;Slider&quot;)
-        return String::fromUTF8(_(&quot;movie time&quot;));
-    if (name == &quot;SliderThumb&quot;)
-        return String::fromUTF8(_(&quot;timeline slider thumb&quot;));
-    if (name == &quot;RewindButton&quot;)
-        return String::fromUTF8(_(&quot;back 30 seconds&quot;));
-    if (name == &quot;ReturnToRealtimeButton&quot;)
-        return String::fromUTF8(_(&quot;return to realtime&quot;));
-    if (name == &quot;CurrentTimeDisplay&quot;)
-        return String::fromUTF8(_(&quot;elapsed time&quot;));
-    if (name == &quot;TimeRemainingDisplay&quot;)
-        return String::fromUTF8(_(&quot;remaining time&quot;));
-    if (name == &quot;StatusDisplay&quot;)
-        return String::fromUTF8(_(&quot;status&quot;));
-    if (name == &quot;EnterFullscreenButton&quot;)
-        return String::fromUTF8(_(&quot;enter fullscreen&quot;));
-    if (name == &quot;ExitFullscreenButton&quot;)
-        return String::fromUTF8(_(&quot;exit fullscreen&quot;));
-    if (name == &quot;SeekForwardButton&quot;)
-        return String::fromUTF8(_(&quot;fast forward&quot;));
-    if (name == &quot;SeekBackButton&quot;)
-        return String::fromUTF8(_(&quot;fast reverse&quot;));
-    if (name == &quot;ShowClosedCaptionsButton&quot;)
-        return String::fromUTF8(_(&quot;show closed captions&quot;));
-    if (name == &quot;HideClosedCaptionsButton&quot;)
-        return String::fromUTF8(_(&quot;hide closed captions&quot;));
-    if (name == &quot;ControlsPanel&quot;)
-        return String::fromUTF8(_(&quot;media controls&quot;));
-
-    ASSERT_NOT_REACHED();
-    return String();
-}
-
-String localizedMediaControlElementHelpText(const String&amp; name)
-{
-    if (name == &quot;AudioElement&quot;)
-        return String::fromUTF8(_(&quot;audio element playback controls and status display&quot;));
-    if (name == &quot;VideoElement&quot;)
-        return String::fromUTF8(_(&quot;video element playback controls and status display&quot;));
-    if (name == &quot;MuteButton&quot;)
-        return String::fromUTF8(_(&quot;mute audio tracks&quot;));
-    if (name == &quot;UnMuteButton&quot;)
-        return String::fromUTF8(_(&quot;unmute audio tracks&quot;));
-    if (name == &quot;PlayButton&quot;)
-        return String::fromUTF8(_(&quot;begin playback&quot;));
-    if (name == &quot;PauseButton&quot;)
-        return String::fromUTF8(_(&quot;pause playback&quot;));
-    if (name == &quot;Slider&quot;)
-        return String::fromUTF8(_(&quot;movie time scrubber&quot;));
-    if (name == &quot;SliderThumb&quot;)
-        return String::fromUTF8(_(&quot;movie time scrubber thumb&quot;));
-    if (name == &quot;RewindButton&quot;)
-        return String::fromUTF8(_(&quot;seek movie back 30 seconds&quot;));
-    if (name == &quot;ReturnToRealtimeButton&quot;)
-        return String::fromUTF8(_(&quot;return streaming movie to real time&quot;));
-    if (name == &quot;CurrentTimeDisplay&quot;)
-        return String::fromUTF8(_(&quot;current movie time in seconds&quot;));
-    if (name == &quot;TimeRemainingDisplay&quot;)
-        return String::fromUTF8(_(&quot;number of seconds of movie remaining&quot;));
-    if (name == &quot;StatusDisplay&quot;)
-        return String::fromUTF8(_(&quot;current movie status&quot;));
-    if (name == &quot;SeekBackButton&quot;)
-        return String::fromUTF8(_(&quot;seek quickly back&quot;));
-    if (name == &quot;SeekForwardButton&quot;)
-        return String::fromUTF8(_(&quot;seek quickly forward&quot;));
-    if (name == &quot;EnterFullscreenButton&quot;)
-        return String::fromUTF8(_(&quot;Play movie in fullscreen mode&quot;));
-    if (name == &quot;EnterFullscreenButton&quot;)
-        return String::fromUTF8(_(&quot;Exit fullscreen mode&quot;));
-    if (name == &quot;ShowClosedCaptionsButton&quot;)
-        return String::fromUTF8(_(&quot;start displaying closed captions&quot;));
-    if (name == &quot;HideClosedCaptionsButton&quot;)
-        return String::fromUTF8(_(&quot;stop displaying closed captions&quot;));
-
-    ASSERT_NOT_REACHED();
-    return String();
-}
-
-String localizedMediaTimeDescription(float time)
-{
-    if (!std::isfinite(time))
-        return String::fromUTF8(_(&quot;indefinite time&quot;));
-
-    int seconds = abs(static_cast&lt;int&gt;(time));
-    int days = seconds / (60 * 60 * 24);
-    int hours = seconds / (60 * 60);
-    int minutes = (seconds / 60) % 60;
-    seconds %= 60;
-
-    if (days) {
-        GUniquePtr&lt;gchar&gt; string(g_strdup_printf(&quot;%d days %d hours %d minutes %d seconds&quot;, days, hours, minutes, seconds));
-        return String::fromUTF8(string.get());
-    }
-
-    if (hours) {
-        GUniquePtr&lt;gchar&gt; string(g_strdup_printf(&quot;%d hours %d minutes %d seconds&quot;, hours, minutes, seconds));
-        return String::fromUTF8(string.get());
-    }
-
-    if (minutes) {
-        GUniquePtr&lt;gchar&gt; string(g_strdup_printf(&quot;%d minutes %d seconds&quot;, minutes, seconds));
-        return String::fromUTF8(string.get());
-    }
-
-    GUniquePtr&lt;gchar&gt; string(g_strdup_printf(&quot;%d seconds&quot;, seconds));
-    return String::fromUTF8(string.get());
-}
-#endif  // ENABLE(VIDEO)
-
-String validationMessageValueMissingText()
-{
-    return String::fromUTF8(_(&quot;Fill out this field&quot;));
-}
-
-String validationMessageValueMissingForCheckboxText()
-{
-    return String::fromUTF8(_(&quot;Select this checkbox&quot;));
-}
-
-String validationMessageValueMissingForFileText()
-{
-    return String::fromUTF8(_(&quot;Select a file&quot;));
-}
-
-String validationMessageValueMissingForMultipleFileText()
-{
-    return validationMessageValueMissingForFileText();
-}
-
-String validationMessageValueMissingForRadioText()
-{
-    return String::fromUTF8(_(&quot;Select one of these options&quot;));
-}
-
-String validationMessageValueMissingForSelectText()
-{
-    return String::fromUTF8(_(&quot;Select an item in the list&quot;));
-}
-
-String validationMessageTypeMismatchText()
-{
-    return String::fromUTF8(_(&quot;Invalid value&quot;));
-}
-
-String validationMessageTypeMismatchForEmailText()
-{
-    return String::fromUTF8(_(&quot;Enter an email address&quot;));
-}
-
-String validationMessageTypeMismatchForMultipleEmailText()
-{
-    return validationMessageTypeMismatchForEmailText();
-}
-
-String validationMessageTypeMismatchForURLText()
-{
-    return String::fromUTF8(_(&quot;Enter a URL&quot;));
-}
-
-String validationMessagePatternMismatchText()
-{
-    return String::fromUTF8(_(&quot;Match the requested format&quot;));
-}
-
</del><span class="cx"> String validationMessageTooShortText(int, int minLength)
</span><span class="cx"> {
</span><span class="cx">     GUniquePtr&lt;char&gt; string(g_strdup_printf(ngettext(&quot;Use at least one character&quot;, &quot;Use at least %d characters&quot;, minLength), minLength));
</span><span class="lines">@@ -821,28 +176,6 @@
</span><span class="cx">     return String::fromUTF8(string.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String validationMessageRangeUnderflowText(const String&amp; minimum)
-{
-    GUniquePtr&lt;char&gt; string(g_strdup_printf(_(&quot;Value must be greater than or equal to %s&quot;), minimum.utf8().data()));
-    return String::fromUTF8(string.get());
-}
-
-String validationMessageRangeOverflowText(const String&amp; maximum)
-{
-    GUniquePtr&lt;char&gt; string(g_strdup_printf(_(&quot;Value must be less than or equal to %s&quot;), maximum.utf8().data()));
-    return String::fromUTF8(string.get());
-}
-
-String validationMessageStepMismatchText(const String&amp;, const String&amp;)
-{
-    return String::fromUTF8(_(&quot;Enter a valid value&quot;));
-}
-
-String validationMessageBadInputForNumberText()
-{
-    return String::fromUTF8(_(&quot;Enter a number&quot;));
-}
-
</del><span class="cx"> String unacceptableTLSCertificate()
</span><span class="cx"> {
</span><span class="cx">     return String::fromUTF8(_(&quot;Unacceptable TLS certificate&quot;));
</span><span class="lines">@@ -853,41 +186,4 @@
</span><span class="cx">     return String::fromUTF8(key, strlen(key));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if ENABLE(VIDEO_TRACK)
-String textTrackSubtitlesText()
-{
-    return String::fromUTF8(C_(&quot;Menu section heading for subtitles&quot;, &quot;Subtitles&quot;));
-}
-
-String textTrackOffMenuItemText()
-{
-    return String::fromUTF8(C_(&quot;Menu item label for the track that represents disabling closed captions&quot;, &quot;Off&quot;));
-}
-
-String textTrackAutomaticMenuItemText()
-{
-    return String::fromUTF8(C_(&quot;Menu item label for the automatically chosen track&quot;, &quot;Auto&quot;));
-}
-
-String textTrackNoLabelText()
-{
-    return String::fromUTF8(C_(&quot;Menu item label for a closed captions track that has no other name&quot;, &quot;No label&quot;));
-}
-
-String audioTrackNoLabelText()
-{
-    return String::fromUTF8(C_(&quot;Menu item label for an audio track that has no other name&quot;, &quot;No label&quot;));
-}
-#endif
-
-String snapshottedPlugInLabelTitle()
-{
-    return String::fromUTF8(C_(&quot;Snapshotted Plug-In&quot;, &quot;Title of the label to show on a snapshotted plug-in&quot;));
-}
-
-String snapshottedPlugInLabelSubtitle()
-{
-    return String::fromUTF8(C_(&quot;Click to restart&quot;, &quot;Subtitle of the label to show on a snapshotted plug-in&quot;));
-}
-
-}
</del><ins>+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgtkpoCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/gtk/po/CMakeLists.txt (214243 => 214244)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/gtk/po/CMakeLists.txt        2017-03-22 08:41:44 UTC (rev 214243)
+++ trunk/Source/WebCore/platform/gtk/po/CMakeLists.txt        2017-03-22 09:55:34 UTC (rev 214244)
</span><span class="lines">@@ -25,6 +25,9 @@
</span><span class="cx">             --package-name=&quot;webkitgtk&quot;
</span><span class="cx">             --keyword=_
</span><span class="cx">             --keyword=N_
</span><ins>+            --keyword=WEB_UI_STRING:1
+            --keyword=WEB_UI_STRING_KEY:3c,1
+            --keyword=WEB_UI_STRING_WITH_MNEMONIC:2
</ins><span class="cx">             --from-code=UTF-8
</span><span class="cx">             -o ${pot_file}
</span><span class="cx">     WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/..
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgtkpoChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/gtk/po/ChangeLog (214243 => 214244)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/gtk/po/ChangeLog        2017-03-22 08:41:44 UTC (rev 214243)
+++ trunk/Source/WebCore/platform/gtk/po/ChangeLog        2017-03-22 09:55:34 UTC (rev 214244)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2017-03-22  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
+
+        Make it possible to use WEB_UI_STRING macros to mark translatable strings in glib based ports
+        https://bugs.webkit.org/show_bug.cgi?id=169672
+
+        Reviewed by Michael Catanzaro.
+
+        * CMakeLists.txt: Add keyword parameters for WEB_UI_STRING macros.
+        * POTFILES.in: Add LocalizedStrings.cpp to the list.
+
</ins><span class="cx"> 2017-03-18  Yuri Chornoivan  &lt;yurchor@ukr.net&gt;
</span><span class="cx"> 
</span><span class="cx">         Update Ukrainian translation
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgtkpoPOTFILESin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/gtk/po/POTFILES.in (214243 => 214244)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/gtk/po/POTFILES.in        2017-03-22 08:41:44 UTC (rev 214243)
+++ trunk/Source/WebCore/platform/gtk/po/POTFILES.in        2017-03-22 09:55:34 UTC (rev 214244)
</span><span class="lines">@@ -1,6 +1,7 @@
</span><span class="cx"> # List of source files which contain translatable strings.
</span><span class="cx"> ErrorsGtk.cpp
</span><span class="cx"> LocalizedStringsGtk.cpp
</span><ins>+../LocalizedStrings.cpp
</ins><span class="cx"> ../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp
</span><span class="cx"> ../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp
</span><span class="cx"> ../../../WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformwinLocalizedStringsWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/win/LocalizedStringsWin.cpp (214243 => 214244)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/win/LocalizedStringsWin.cpp        2017-03-22 08:41:44 UTC (rev 214243)
+++ trunk/Source/WebCore/platform/win/LocalizedStringsWin.cpp        2017-03-22 09:55:34 UTC (rev 214244)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;LocalizedStrings.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;NotImplemented.h&quot;
</ins><span class="cx"> #include &quot;WebCoreInstanceHandle.h&quot;
</span><span class="cx"> #include &lt;windows.h&gt;
</span><span class="cx"> #include &lt;wtf/Assertions.h&gt;
</span><span class="lines">@@ -59,4 +60,23 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(CONTEXT_MENUS)
+String contextMenuItemTagSearchWeb()
+{
+    return WEB_UI_STRING(&quot;Search with Google&quot;, &quot;Search with Google context menu item&quot;);
+}
+#endif
+
+String uploadFileText()
+{
+    notImplemented();
+    return &quot;upload&quot;;
+}
+
+String allFilesText()
+{
+    notImplemented();
+    return &quot;all files&quot;;
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre>
</div>
</div>

</body>
</html>