Add default localization strategy that can be shared by WebKit1 and WebKit2
authorweinig@apple.com <weinig@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 30 Mar 2011 17:28:54 +0000 (17:28 +0000)
committerweinig@apple.com <weinig@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 30 Mar 2011 17:28:54 +0000 (17:28 +0000)
https://bugs.webkit.org/show_bug.cgi?id=57406

Reviewed by Anders Carlsson.

Source/WebCore:

Currently, only WebKit2 uses this default strategy, but WebKit1 should be able
to adopt it soon.

* platform/DefaultLocalizationStrategy.cpp: Copied from Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp.
(WebCore::DefaultLocalizationStrategy::DefaultLocalizationStrategy):
* platform/DefaultLocalizationStrategy.h: Copied from Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h.
Copy the implementation of the Localization strategy from WebKit2 into a shared default strategy.

* platform/LocalizedStrings.cpp:
(WebCore::localizedString):
Add default implementation of localization bottleneck function.

* platform/LocalizedStrings.h:
Add localization macros here, instead of defining them in the above layer.

* platform/PlatformStrategies.cpp:
(WebCore::PlatformStrategies::createLocalizationStrategy):
* platform/PlatformStrategies.h:
Add default implementation of strategy creation function which creates the default strategy.

* platform/win/LocalizedStringsWin.cpp: Copied from Source/WebCore/platform/mac/LocalizedStringsMac.mm.
(WebCore::localizedString):
Add stub for windows, this will be update to pull from the bundle in a follow up patch.

* Android.mk:
* CMakeLists.txt:
* GNUmakefile.am:
* WebCore.exp.in:
* WebCore.gypi:
* WebCore.pro:
* WebCore.vcproj/WebCore.vcproj:
* WebCore.xcodeproj/project.pbxproj:
Add new files.

Source/WebKit2:

* Shared/WebLocalizableStrings.h: Removed.
Removed in favor of using WebCore/LocalizedStrings.h directly.

* PluginProcess/mac/PluginProcessMac.mm:
* UIProcess/API/mac/WKView.mm:
* UIProcess/mac/WebInspectorProxyMac.mm:
* WebProcess/WebCoreSupport/mac/WebErrorsMac.mm:
* WebProcess/mac/WebProcessMac.mm:
Use WebCore/LocalizedStrings.h directly.

* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
Remove localization strategy override in favor of using new default implementation.

* GNUmakefile.am:
* WebKit2.pro:
* WebKit2.xcodeproj/project.pbxproj:
* win/WebKit2.vcproj:
Remove WebLocalizableStrings.h

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@82465 268f45cc-cd09-0410-ab3c-d52691b4dbfc

28 files changed:
Source/WebCore/Android.mk
Source/WebCore/CMakeLists.txt
Source/WebCore/ChangeLog
Source/WebCore/GNUmakefile.am
Source/WebCore/WebCore.exp.in
Source/WebCore/WebCore.gypi
Source/WebCore/WebCore.pro
Source/WebCore/WebCore.vcproj/WebCore.vcproj
Source/WebCore/WebCore.xcodeproj/project.pbxproj
Source/WebCore/platform/DefaultLocalizationStrategy.cpp [new file with mode: 0644]
Source/WebCore/platform/DefaultLocalizationStrategy.h [new file with mode: 0644]
Source/WebCore/platform/LocalizedStrings.cpp
Source/WebCore/platform/LocalizedStrings.h
Source/WebCore/platform/PlatformStrategies.cpp
Source/WebCore/platform/PlatformStrategies.h
Source/WebCore/platform/win/LocalizedStringsWin.cpp [moved from Source/WebKit2/Shared/WebLocalizableStrings.h with 70% similarity]
Source/WebKit2/ChangeLog
Source/WebKit2/GNUmakefile.am
Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm
Source/WebKit2/UIProcess/API/mac/WKView.mm
Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm
Source/WebKit2/WebKit2.pro
Source/WebKit2/WebKit2.xcodeproj/project.pbxproj
Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp
Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h
Source/WebKit2/WebProcess/WebCoreSupport/mac/WebErrorsMac.mm
Source/WebKit2/WebProcess/mac/WebProcessMac.mm
Source/WebKit2/win/WebKit2.vcproj

index ed33ace..90f50d6 100644 (file)
@@ -468,6 +468,7 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
        platform/Arena.cpp \
        platform/ContentType.cpp \
        platform/CrossThreadCopier.cpp \
+       platform/DefaultLocalizationStrategy.cpp \
        platform/DragData.cpp \
        platform/DragImage.cpp \
        platform/FileChooser.cpp \
index dcb7994..630f76e 100644 (file)
@@ -1033,6 +1033,7 @@ SET(WebCore_SOURCES
     platform/ContextMenuItem.cpp
     platform/ContentType.cpp
     platform/CrossThreadCopier.cpp
+    platform/DefaultLocalizationStrategy.cpp
     platform/DragData.cpp
     platform/DragImage.cpp
     platform/FileChooser.cpp
index e493f47..36d0243 100644 (file)
@@ -1,3 +1,44 @@
+2011-03-30  Sam Weinig  <sam@webkit.org>
+
+        Reviewed by Anders Carlsson.
+
+        Add default localization strategy that can be shared by WebKit1 and WebKit2
+        https://bugs.webkit.org/show_bug.cgi?id=57406
+
+        Currently, only WebKit2 uses this default strategy, but WebKit1 should be able
+        to adopt it soon.
+
+        * platform/DefaultLocalizationStrategy.cpp: Copied from Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp.
+        (WebCore::DefaultLocalizationStrategy::DefaultLocalizationStrategy):
+        * platform/DefaultLocalizationStrategy.h: Copied from Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h.
+        Copy the implementation of the Localization strategy from WebKit2 into a shared default strategy.
+
+        * platform/LocalizedStrings.cpp:
+        (WebCore::localizedString):
+        Add default implementation of localization bottleneck function.
+
+        * platform/LocalizedStrings.h:
+        Add localization macros here, instead of defining them in the above layer.
+
+        * platform/PlatformStrategies.cpp:
+        (WebCore::PlatformStrategies::createLocalizationStrategy):
+        * platform/PlatformStrategies.h:
+        Add default implementation of strategy creation function which creates the default strategy.
+
+        * platform/win/LocalizedStringsWin.cpp: Copied from Source/WebCore/platform/mac/LocalizedStringsMac.mm.
+        (WebCore::localizedString):
+        Add stub for windows, this will be update to pull from the bundle in a follow up patch.
+
+        * Android.mk:
+        * CMakeLists.txt:
+        * GNUmakefile.am:
+        * WebCore.exp.in:
+        * WebCore.gypi:
+        * WebCore.pro:
+        * WebCore.vcproj/WebCore.vcproj:
+        * WebCore.xcodeproj/project.pbxproj:
+        Add new files.
+
 2011-03-30  Andras Becsi  <abecsi@webkit.org>
 
         Reviewed by Darin Adler.
index 98869e4..41e69ee 100644 (file)
@@ -2367,6 +2367,8 @@ webcore_sources += \
        Source/WebCore/platform/CrossThreadCopier.h \
        Source/WebCore/platform/Cursor.cpp \
        Source/WebCore/platform/Cursor.h \
+       Source/WebCore/platform/DefaultLocalizationStrategy.cpp \
+       Source/WebCore/platform/DefaultLocalizationStrategy.h \
        Source/WebCore/platform/DragData.cpp \
        Source/WebCore/platform/DragData.h \
        Source/WebCore/platform/DragImage.cpp \
index ea61d81..51111ef 100644 (file)
@@ -479,6 +479,7 @@ __ZN7WebCore17GlyphPageTreeNode18treeGlyphPageCountEv
 __ZN7WebCore17HistoryController26saveDocumentAndScrollStateEv
 __ZN7WebCore17nameForCursorTypeENS_6Cursor4TypeE
 __ZN7WebCore17openTemporaryFileERKN3WTF6StringERi
+__ZN7WebCore18PlatformStrategies26createLocalizationStrategyEv
 __ZN7WebCore18SearchPopupMenuMacC1EPNS_15PopupMenuClientE
 __ZN7WebCore18isStartOfParagraphERKNS_15VisiblePositionENS_27EditingBoundaryCrossingRuleE
 __ZN7WebCore18pluginScriptObjectEPN3JSC9ExecStateEPNS_13JSHTMLElementE
@@ -754,8 +755,8 @@ __ZN7WebCore6Editor24isSelectionUngrammaticalEv
 __ZN7WebCore6Editor26decreaseSelectionListLevelEv
 __ZN7WebCore6Editor26increaseSelectionListLevelEv
 __ZN7WebCore6Editor26writeSelectionToPasteboardERKN3WTF6StringERKNS1_6VectorIS2_Lm0EEE
-__ZN7WebCore6Editor27readSelectionFromPasteboardERKN3WTF6StringE
 __ZN7WebCore6Editor27handleCorrectionPanelResultERKN3WTF6StringE
+__ZN7WebCore6Editor27readSelectionFromPasteboardERKN3WTF6StringE
 __ZN7WebCore6Editor29canDecreaseSelectionListLevelEv
 __ZN7WebCore6Editor29canIncreaseSelectionListLevelEv
 __ZN7WebCore6Editor30applyParagraphStyleToSelectionEPNS_19CSSStyleDeclarationENS_10EditActionE
@@ -1217,9 +1218,9 @@ __ZNK7WebCore6Editor17firstRectForRangeEPNS_5RangeE
 __ZNK7WebCore6Editor17selectionHasStyleEiRKN3WTF6StringE
 __ZNK7WebCore6Editor17shouldDeleteRangeEPNS_5RangeE
 __ZNK7WebCore6Editor23getCompositionSelectionERjS1_
+__ZNK7WebCore6Editor26selectionStartHasMarkerForENS_14DocumentMarker10MarkerTypeEii
 __ZNK7WebCore6Editor30applyEditingStyleToBodyElementEv
 __ZNK7WebCore6Editor31fontAttributesForSelectionStartEv
-__ZNK7WebCore6Editor26selectionStartHasMarkerForENS_14DocumentMarker10MarkerTypeEii
 __ZNK7WebCore6Editor37baseWritingDirectionForSelectionStartEv
 __ZNK7WebCore6Editor6canCutEv
 __ZNK7WebCore6Editor7Command11isSupportedEv
@@ -1287,6 +1288,7 @@ __ZTVN7WebCore12ChromeClientE
 __ZTVN7WebCore16IconDatabaseBaseE
 __ZTVN7WebCore17FileChooserClientE
 __ZTVN7WebCore17FrameLoaderClientE
+__ZTVN7WebCore18PlatformStrategiesE
 __ZTVN7WebCore25HistoryPropertyListWriterE
 __ZTVN7WebCore28InspectorFrontendClientLocal8SettingsE
 _filenameByFixingIllegalCharacters
index 352bc61..290b93a 100644 (file)
             'platform/CookieJar.h',
             'platform/CookiesStrategy.h',
             'platform/Cursor.h',
+            'platform/DefaultLocalizationStrategy.h',
             'platform/DragData.h',
             'platform/DragImage.h',
             'platform/FileChooser.h',
             'platform/CrossThreadCopier.cpp',
             'platform/CrossThreadCopier.h',
             'platform/Cursor.cpp',
+            'platform/DefaultLocalizationStrategy.cpp',
             'platform/DragData.cpp',
             'platform/DragImage.cpp',
             'platform/EventLoop.h',
index 7f21ee0..2ac917a 100644 (file)
@@ -948,6 +948,7 @@ SOURCES += \
     platform/text/LocalizedNumberNone.cpp \
     platform/ContentType.cpp \
     platform/CrossThreadCopier.cpp \
+    platform/DefaultLocalizationStrategy.cpp \
     platform/DragData.cpp \
     platform/DragImage.cpp \
     platform/FileChooser.cpp \
@@ -1876,6 +1877,7 @@ HEADERS += \
     platform/ContentType.h \
     platform/ContextMenu.h \
     platform/CrossThreadCopier.h \
+    platform/DefaultLocalizationStrategy.h \
     platform/DragData.h \
     platform/DragImage.h \
     platform/FileChooser.h \
index 82c13c3..cd4fee6 100755 (executable)
                                >
                        </File>
                        <File
+                               RelativePath="..\platform\DefaultLocalizationStrategy.cpp"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\platform\DefaultLocalizationStrategy.h"
+                               >
+                       </File>
+                       <File
                                RelativePath="..\platform\DragImage.cpp"
                                >
                        </File>
                                        >
                                </File>
                                <File
+                                       RelativePath="..\platform\win\LocalizedStringsWin.cpp"
+                                       >
+                               </File>
+                               <File
                                        RelativePath="..\platform\win\LoggingWin.cpp"
                                        >
                                </File>
index 773a53d..45ea664 100644 (file)
                BCC065880F3CE2A700CD2D87 /* JSClientRect.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC065840F3CE2A700CD2D87 /* JSClientRect.h */; };
                BCC065890F3CE2A700CD2D87 /* JSClientRectList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC065850F3CE2A700CD2D87 /* JSClientRectList.cpp */; };
                BCC0658A0F3CE2A700CD2D87 /* JSClientRectList.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC065860F3CE2A700CD2D87 /* JSClientRectList.h */; };
+               BCC36EB81342AA3F004BEEF7 /* DefaultLocalizationStrategy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC36EB61342AA3F004BEEF7 /* DefaultLocalizationStrategy.cpp */; };
+               BCC36EB91342AA3F004BEEF7 /* DefaultLocalizationStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC36EB71342AA3F004BEEF7 /* DefaultLocalizationStrategy.h */; };
                BCC438780E886CC700533DD5 /* JSHTMLInputElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC438770E886CC700533DD5 /* JSHTMLInputElementCustom.cpp */; };
                BCC573350D695BBE006EF517 /* DOMProgressEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC573330D695BBE006EF517 /* DOMProgressEvent.h */; };
                BCC573360D695BBE006EF517 /* DOMProgressEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCC573340D695BBE006EF517 /* DOMProgressEvent.mm */; };
                BCC065840F3CE2A700CD2D87 /* JSClientRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSClientRect.h; sourceTree = "<group>"; };
                BCC065850F3CE2A700CD2D87 /* JSClientRectList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSClientRectList.cpp; sourceTree = "<group>"; };
                BCC065860F3CE2A700CD2D87 /* JSClientRectList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSClientRectList.h; sourceTree = "<group>"; };
+               BCC36EB61342AA3F004BEEF7 /* DefaultLocalizationStrategy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DefaultLocalizationStrategy.cpp; sourceTree = "<group>"; };
+               BCC36EB71342AA3F004BEEF7 /* DefaultLocalizationStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DefaultLocalizationStrategy.h; sourceTree = "<group>"; };
                BCC438770E886CC700533DD5 /* JSHTMLInputElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLInputElementCustom.cpp; sourceTree = "<group>"; };
                BCC573330D695BBE006EF517 /* DOMProgressEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMProgressEvent.h; sourceTree = "<group>"; };
                BCC573340D695BBE006EF517 /* DOMProgressEvent.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMProgressEvent.mm; sourceTree = "<group>"; };
                                2E4346570F546A9900B0F1BA /* CrossThreadCopier.h */,
                                E11AF15011B9A1A300805103 /* Cursor.cpp */,
                                F587868402DE3B8601EA4122 /* Cursor.h */,
+                               BCC36EB61342AA3F004BEEF7 /* DefaultLocalizationStrategy.cpp */,
+                               BCC36EB71342AA3F004BEEF7 /* DefaultLocalizationStrategy.h */,
                                A79546420B5C4CB4007B438F /* DragData.cpp */,
                                A7B6E69D0B291A9600D0529F /* DragData.h */,
                                A7CFB3CF0B7ED10A0070C32D /* DragImage.cpp */,
                                93F199ED08245E59001E9ABC /* XSLTProcessor.h in Headers */,
                                E1BE512E0CF6C512002EA959 /* XSLTUnicodeSort.h in Headers */,
                                977E2E0F12F0FC9C00C13379 /* XSSFilter.h in Headers */,
+                               BCC36EB91342AA3F004BEEF7 /* DefaultLocalizationStrategy.h in Headers */,
                                599C671E1343439400C3423C /* JavaMethodJobject.h in Headers */,
                                F34742DD134362F000531BC2 /* PageDebuggerAgent.h in Headers */,
                                F34742E11343631F00531BC2 /* WorkerDebuggerAgent.h in Headers */,
                                93F19B0508245E59001E9ABC /* XSLTProcessorLibxslt.cpp in Sources */,
                                E1BE512D0CF6C512002EA959 /* XSLTUnicodeSort.cpp in Sources */,
                                977E2E0E12F0FC9C00C13379 /* XSSFilter.cpp in Sources */,
+                               BCC36EB81342AA3F004BEEF7 /* DefaultLocalizationStrategy.cpp in Sources */,
                                599C671C1343438900C3423C /* JavaMethodJobject.cpp in Sources */,
                                F34742DC134362F000531BC2 /* PageDebuggerAgent.cpp in Sources */,
                                F34742E01343631F00531BC2 /* WorkerDebuggerAgent.cpp in Sources */,
diff --git a/Source/WebCore/platform/DefaultLocalizationStrategy.cpp b/Source/WebCore/platform/DefaultLocalizationStrategy.cpp
new file mode 100644 (file)
index 0000000..985da49
--- /dev/null
@@ -0,0 +1,872 @@
+/*
+ * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "DefaultLocalizationStrategy.h"
+
+#if USE(PLATFORM_STRATEGIES)
+
+#include "IntSize.h"
+#include "LocalizedStrings.h"
+#include "NotImplemented.h"
+#include <wtf/MathExtras.h>
+#include <wtf/text/CString.h>
+
+#if USE(CF)
+#include <wtf/RetainPtr.h>
+#endif
+
+namespace WebCore {
+
+// We can't use String::format for two reasons:
+//  1) It doesn't handle non-ASCII characters in the format string.
+//  2) It doesn't handle the %2$d syntax.
+// Note that because |format| is used as the second parameter to va_start, it cannot be a reference
+// type according to section 18.7/3 of the C++ N1905 standard.
+static String formatLocalizedString(String format, ...)
+{
+#if USE(CF)
+    va_list arguments;
+    va_start(arguments, format);
+    RetainPtr<CFStringRef> formatCFString(AdoptCF, format.createCFString());
+    RetainPtr<CFStringRef> result(AdoptCF, CFStringCreateWithFormatAndArguments(0, 0, formatCFString.get(), arguments));
+    va_end(arguments);
+    return result.get();
+#elif PLATFORM(QT)
+    va_list arguments;
+    va_start(arguments, format);
+    QString result;
+    result.vsprintf(format.latin1().data(), arguments);
+    va_end(arguments);
+    return result;
+#else
+    notImplemented();
+    return format;
+#endif
+}
+
+DefaultLocalizationStrategy::DefaultLocalizationStrategy()
+{
+}
+
+String DefaultLocalizationStrategy::inputElementAltText()
+{
+    return UI_STRING_KEY("Submit", "Submit (input element)", "alt text for <input> elements with no alt, title, or value");
+}
+
+String DefaultLocalizationStrategy::resetButtonDefaultLabel()
+{
+    return UI_STRING("Reset", "default label for Reset buttons in forms on web pages");
+}
+
+String DefaultLocalizationStrategy::searchableIndexIntroduction()
+{
+    return UI_STRING("This is a searchable index. Enter search keywords: ",
+        "text that appears at the start of nearly-obsolete web pages in the form of a 'searchable index'");
+}
+
+String DefaultLocalizationStrategy::submitButtonDefaultLabel()
+{
+    return UI_STRING("Submit", "default label for Submit buttons in forms on web pages");
+}
+
+String DefaultLocalizationStrategy::fileButtonChooseFileLabel()
+{
+    return UI_STRING("Choose File", "title for file button used in HTML forms");
+}
+
+String DefaultLocalizationStrategy::fileButtonNoFileSelectedLabel()
+{
+    return UI_STRING("no file selected", "text to display in file button used in HTML forms when no file is selected");
+}
+
+String DefaultLocalizationStrategy::defaultDetailsSummaryText()
+{
+    return UI_STRING("Details", "text to display in <details> tag when it has no <summary> child");
+}
+
+#if PLATFORM(MAC)
+String DefaultLocalizationStrategy::copyImageUnknownFileLabel()
+{
+    return UI_STRING("unknown", "Unknown filename");
+}
+#endif
+
+#if ENABLE(CONTEXT_MENUS)
+
+String DefaultLocalizationStrategy::contextMenuItemTagOpenLinkInNewWindow()
+{
+    return UI_STRING("Open Link in New Window", "Open in New Window context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagDownloadLinkToDisk()
+{
+    return UI_STRING("Download Linked File", "Download Linked File context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagCopyLinkToClipboard()
+{
+    return UI_STRING("Copy Link", "Copy Link context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagOpenImageInNewWindow()
+{
+    return UI_STRING("Open Image in New Window", "Open Image in New Window context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagDownloadImageToDisk()
+{
+    return UI_STRING("Download Image", "Download Image context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagCopyImageToClipboard()
+{
+    return UI_STRING("Copy Image", "Copy Image context menu item");
+}
+
+#if PLATFORM(QT)
+String DefaultLocalizationStrategy::contextMenuItemTagCopyImageUrlToClipboard()
+{
+    return UI_STRING("Copy Image Address", "Copy Image Address menu item");
+}
+#endif
+
+String DefaultLocalizationStrategy::contextMenuItemTagOpenVideoInNewWindow()
+{
+    return UI_STRING("Open Video in New Window", "Open Video in New Window context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagOpenAudioInNewWindow()
+{
+    return UI_STRING("Open Audio in New Window", "Open Audio in New Window context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagCopyVideoLinkToClipboard()
+{
+    return UI_STRING("Copy Video Address", "Copy Video Address Location context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagCopyAudioLinkToClipboard()
+{
+    return UI_STRING("Copy Audio Address", "Copy Audio Address Location context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagToggleMediaControls()
+{
+    return UI_STRING("Controls", "Media Controls context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagToggleMediaLoop()
+{
+    return UI_STRING("Loop", "Media Loop context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagEnterVideoFullscreen()
+{
+    return UI_STRING("Enter Fullscreen", "Video Enter Fullscreen context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagMediaPlay()
+{
+    return UI_STRING("Play", "Media Play context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagMediaPause()
+{
+    return UI_STRING("Pause", "Media Pause context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagMediaMute()
+{
+    return UI_STRING("Mute", "Media Mute context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagOpenFrameInNewWindow()
+{
+    return UI_STRING("Open Frame in New Window", "Open Frame in New Window context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagCopy()
+{
+    return UI_STRING("Copy", "Copy context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagGoBack()
+{
+    return UI_STRING("Back", "Back context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagGoForward()
+{
+    return UI_STRING("Forward", "Forward context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagStop()
+{
+    return UI_STRING("Stop", "Stop context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagReload()
+{
+    return UI_STRING("Reload", "Reload context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagCut()
+{
+    return UI_STRING("Cut", "Cut context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagPaste()
+{
+    return UI_STRING("Paste", "Paste context menu item");
+}
+
+#if PLATFORM(GTK)
+
+String DefaultLocalizationStrategy::contextMenuItemTagDelete()
+{
+    notImplemented();
+    return "Delete";
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagInputMethods()
+{
+    notImplemented();
+    return "Input Methods";
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagUnicode()
+{
+    notImplemented();
+    return "Unicode";
+}
+
+#endif
+
+#if PLATFORM(GTK) || PLATFORM(QT)
+
+String DefaultLocalizationStrategy::contextMenuItemTagSelectAll()
+{
+    notImplemented();
+    return "Select All";
+}
+
+#endif
+
+String DefaultLocalizationStrategy::contextMenuItemTagNoGuessesFound()
+{
+    return UI_STRING("No Guesses Found", "No Guesses Found context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagIgnoreSpelling()
+{
+    return UI_STRING("Ignore Spelling", "Ignore Spelling context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagLearnSpelling()
+{
+    return UI_STRING("Learn Spelling", "Learn Spelling context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagSearchWeb()
+{
+    return UI_STRING("Search in Google", "Search in Google context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagLookUpInDictionary(const String& selectedString)
+{
+#if defined(BUILDING_ON_TIGER) || defined(BUILDING_ON_LEOPARD) || defined(BUILDING_ON_SNOW_LEOPARD)
+    return UI_STRING("Look Up in Dictionary", "Look Up in Dictionary context menu item");
+#else
+    return UI_STRING("Look Up “<selection>”", "Look Up context menu item with selected word").replace("<selection>", selectedString);
+#endif
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagOpenLink()
+{
+    return UI_STRING("Open Link", "Open Link context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagIgnoreGrammar()
+{
+    return UI_STRING("Ignore Grammar", "Ignore Grammar context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagSpellingMenu()
+{
+    return UI_STRING("Spelling and Grammar", "Spelling and Grammar context sub-menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagShowSpellingPanel(bool show)
+{
+    if (show)
+        return UI_STRING("Show Spelling and Grammar", "menu item title");
+    return UI_STRING("Hide Spelling and Grammar", "menu item title");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagCheckSpelling()
+{
+    return UI_STRING("Check Document Now", "Check spelling context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagCheckSpellingWhileTyping()
+{
+    return UI_STRING("Check Spelling While Typing", "Check spelling while typing context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagCheckGrammarWithSpelling()
+{
+    return UI_STRING("Check Grammar With Spelling", "Check grammar with spelling context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagFontMenu()
+{
+    return UI_STRING("Font", "Font context sub-menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagBold()
+{
+    return UI_STRING("Bold", "Bold context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagItalic()
+{
+    return UI_STRING("Italic", "Italic context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagUnderline()
+{
+    return UI_STRING("Underline", "Underline context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagOutline()
+{
+    return UI_STRING("Outline", "Outline context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagWritingDirectionMenu()
+{
+    return UI_STRING("Paragraph Direction", "Paragraph direction context sub-menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagTextDirectionMenu()
+{
+    return UI_STRING("Selection Direction", "Selection direction context sub-menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagDefaultDirection()
+{
+    return UI_STRING("Default", "Default writing direction context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagLeftToRight()
+{
+    return UI_STRING("Left to Right", "Left to Right context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagRightToLeft()
+{
+    return UI_STRING("Right to Left", "Right to Left context menu item");
+}
+
+#if PLATFORM(MAC)
+
+String DefaultLocalizationStrategy::contextMenuItemTagSearchInSpotlight()
+{
+    return UI_STRING("Search in Spotlight", "Search in Spotlight context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagShowFonts()
+{
+    return UI_STRING("Show Fonts", "Show fonts context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagStyles()
+{
+    return UI_STRING("Styles...", "Styles context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagShowColors()
+{
+    return UI_STRING("Show Colors", "Show colors context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagSpeechMenu()
+{
+    return UI_STRING("Speech", "Speech context sub-menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagStartSpeaking()
+{
+    return UI_STRING("Start Speaking", "Start speaking context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagStopSpeaking()
+{
+    return UI_STRING("Stop Speaking", "Stop speaking context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagCorrectSpellingAutomatically()
+{
+    return UI_STRING("Correct Spelling Automatically", "Correct Spelling Automatically context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagSubstitutionsMenu()
+{
+    return UI_STRING("Substitutions", "Substitutions context sub-menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagShowSubstitutions(bool show)
+{
+    if (show) 
+        return UI_STRING("Show Substitutions", "menu item title");
+    return UI_STRING("Hide Substitutions", "menu item title");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagSmartCopyPaste()
+{
+    return UI_STRING("Smart Copy/Paste", "Smart Copy/Paste context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagSmartQuotes()
+{
+    return UI_STRING("Smart Quotes", "Smart Quotes context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagSmartDashes()
+{
+    return UI_STRING("Smart Dashes", "Smart Dashes context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagSmartLinks()
+{
+    return UI_STRING("Smart Links", "Smart Links context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagTextReplacement()
+{
+    return UI_STRING("Text Replacement", "Text Replacement context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagTransformationsMenu()
+{
+    return UI_STRING("Transformations", "Transformations context sub-menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagMakeUpperCase()
+{
+    return UI_STRING("Make Upper Case", "Make Upper Case context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagMakeLowerCase()
+{
+    return UI_STRING("Make Lower Case", "Make Lower Case context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagCapitalize()
+{
+    return UI_STRING("Capitalize", "Capitalize context menu item");
+}
+
+String DefaultLocalizationStrategy::contextMenuItemTagChangeBack(const String& replacedString)
+{
+    notImplemented();
+    return replacedString;
+}
+
+#endif
+
+String DefaultLocalizationStrategy::contextMenuItemTagInspectElement()
+{
+    return UI_STRING("Inspect Element", "Inspect Element context menu item");
+}
+
+#endif // ENABLE(CONTEXT_MENUS)
+
+String DefaultLocalizationStrategy::searchMenuNoRecentSearchesText()
+{
+    return UI_STRING("No recent searches", "Label for only item in menu that appears when clicking on the search field image, when no searches have been performed");
+}
+
+String DefaultLocalizationStrategy::searchMenuRecentSearchesText()
+{
+    return UI_STRING("Recent Searches", "label for first item in the menu that appears when clicking on the search field image, used as embedded menu title");
+}
+
+String DefaultLocalizationStrategy::searchMenuClearRecentSearchesText()
+{
+    return UI_STRING("Clear Recent Searches", "menu item in Recent Searches menu that empties menu's contents");
+}
+
+String DefaultLocalizationStrategy::AXWebAreaText()
+{
+    return UI_STRING("HTML content", "accessibility role description for web area");
+}
+
+String DefaultLocalizationStrategy::AXLinkText()
+{
+    return UI_STRING("link", "accessibility role description for link");
+}
+
+String DefaultLocalizationStrategy::AXListMarkerText()
+{
+    return UI_STRING("list marker", "accessibility role description for list marker");
+}
+
+String DefaultLocalizationStrategy::AXImageMapText()
+{
+    return UI_STRING("image map", "accessibility role description for image map");
+}
+
+String DefaultLocalizationStrategy::AXHeadingText()
+{
+    return UI_STRING("heading", "accessibility role description for headings");
+}
+
+String DefaultLocalizationStrategy::AXDefinitionListTermText()
+{
+    return UI_STRING("term", "term word of a definition");
+}
+
+String DefaultLocalizationStrategy::AXDefinitionListDefinitionText()
+{
+    return UI_STRING("definition", "definition phrase");
+}
+
+#if PLATFORM(MAC)
+String DefaultLocalizationStrategy::AXARIAContentGroupText(const String& ariaType)
+{
+    if (ariaType == "ARIAApplicationAlert")
+        return UI_STRING("alert", "An ARIA accessibility group that acts as an alert.");
+    if (ariaType == "ARIAApplicationAlertDialog")
+        return UI_STRING("alert dialog", "An ARIA accessibility group that acts as an alert dialog.");
+    if (ariaType == "ARIAApplicationDialog")
+        return UI_STRING("dialog", "An ARIA accessibility group that acts as an dialog.");
+    if (ariaType == "ARIAApplicationLog")
+        return UI_STRING("log", "An ARIA accessibility group that acts as a console log.");
+    if (ariaType == "ARIAApplicationMarquee")
+        return UI_STRING("marquee", "An ARIA accessibility group that acts as a marquee.");    
+    if (ariaType == "ARIAApplicationStatus")
+        return UI_STRING("application status", "An ARIA accessibility group that acts as a status update.");    
+    if (ariaType == "ARIAApplicationTimer")
+        return UI_STRING("timer", "An ARIA accessibility group that acts as an updating timer.");    
+    if (ariaType == "ARIADocument")
+        return UI_STRING("document", "An ARIA accessibility group that acts as a document.");    
+    if (ariaType == "ARIADocumentArticle")
+        return UI_STRING("article", "An ARIA accessibility group that acts as an article.");    
+    if (ariaType == "ARIADocumentNote")
+        return UI_STRING("note", "An ARIA accessibility group that acts as a note in a document.");    
+    if (ariaType == "ARIADocumentRegion")
+        return UI_STRING("region", "An ARIA accessibility group that acts as a distinct region in a document.");    
+    if (ariaType == "ARIALandmarkApplication")
+        return UI_STRING("application", "An ARIA accessibility group that acts as an application.");    
+    if (ariaType == "ARIALandmarkBanner")
+        return UI_STRING("banner", "An ARIA accessibility group that acts as a banner.");    
+    if (ariaType == "ARIALandmarkComplementary")
+        return UI_STRING("complementary", "An ARIA accessibility group that acts as a region of complementary information.");    
+    if (ariaType == "ARIALandmarkContentInfo")
+        return UI_STRING("content", "An ARIA accessibility group that contains content.");    
+    if (ariaType == "ARIALandmarkMain")
+        return UI_STRING("main", "An ARIA accessibility group that is the main portion of the website.");    
+    if (ariaType == "ARIALandmarkNavigation")
+        return UI_STRING("navigation", "An ARIA accessibility group that contains the main navigation elements of a website.");    
+    if (ariaType == "ARIALandmarkSearch")
+        return UI_STRING("search", "An ARIA accessibility group that contains a search feature of a website.");    
+    if (ariaType == "ARIAUserInterfaceTooltip")
+        return UI_STRING("tooltip", "An ARIA accessibility group that acts as a tooltip.");    
+    if (ariaType == "ARIATabPanel")
+        return UI_STRING("tab panel", "An ARIA accessibility group that contains the content of a tab.");
+    if (ariaType == "ARIADocumentMath")
+        return UI_STRING("math", "An ARIA accessibility group that contains mathematical symbols.");
+    return String();
+}
+#endif
+
+String DefaultLocalizationStrategy::AXButtonActionVerb()
+{
+    return UI_STRING("press", "Verb stating the action that will occur when a button is pressed, as used by accessibility");
+}
+
+String DefaultLocalizationStrategy::AXRadioButtonActionVerb() 
+{
+    return UI_STRING("select", "Verb stating the action that will occur when a radio button is clicked, as used by accessibility");
+}
+
+String DefaultLocalizationStrategy::AXTextFieldActionVerb()
+{
+    return UI_STRING("activate", "Verb stating the action that will occur when a text field is selected, as used by accessibility");
+}
+
+String DefaultLocalizationStrategy::AXCheckedCheckBoxActionVerb()
+{
+    return UI_STRING("uncheck", "Verb stating the action that will occur when a checked checkbox is clicked, as used by accessibility");
+}
+
+String DefaultLocalizationStrategy::AXUncheckedCheckBoxActionVerb()
+{
+    return UI_STRING("check", "Verb stating the action that will occur when an unchecked checkbox is clicked, as used by accessibility");
+}
+
+String DefaultLocalizationStrategy::AXMenuListActionVerb()
+{
+    notImplemented();
+    return "select";
+}
+
+String DefaultLocalizationStrategy::AXMenuListPopupActionVerb()
+{
+    notImplemented();
+    return "select";
+}
+
+String DefaultLocalizationStrategy::AXLinkActionVerb()
+{
+    return UI_STRING("jump", "Verb stating the action that will occur when a link is clicked, as used by accessibility");
+}
+
+String DefaultLocalizationStrategy::missingPluginText()
+{
+    return UI_STRING("Missing Plug-in", "Label text to be used when a plugin is missing");
+}
+
+String DefaultLocalizationStrategy::crashedPluginText()
+{
+    return UI_STRING("Plug-in Failure", "Label text to be used if plugin host process has crashed");
+}
+
+String DefaultLocalizationStrategy::multipleFileUploadText(unsigned numberOfFiles)
+{
+    return formatLocalizedString(UI_STRING("%d files", "Label to describe the number of files selected in a file upload control that allows multiple files"), numberOfFiles);
+}
+
+String DefaultLocalizationStrategy::unknownFileSizeText()
+{
+    return UI_STRING("Unknown", "Unknown filesize FTP directory listing item");
+}
+
+#if PLATFORM(WIN)
+
+String DefaultLocalizationStrategy::uploadFileText()
+{
+    notImplemented();
+    return "upload";
+}
+
+String DefaultLocalizationStrategy::allFilesText()
+{
+    notImplemented();
+    return "all files";
+}
+
+#endif
+
+#if PLATFORM(MAC)
+
+String DefaultLocalizationStrategy::keygenMenuItem512()
+{
+    return UI_STRING("512 (Low Grade)", "Menu item title for KEYGEN pop-up menu");
+}
+
+String DefaultLocalizationStrategy::keygenMenuItem1024()
+{
+    return UI_STRING("1024 (Medium Grade)", "Menu item title for KEYGEN pop-up menu");
+}
+
+String DefaultLocalizationStrategy::keygenMenuItem2048()
+{
+    return UI_STRING("2048 (High Grade)", "Menu item title for KEYGEN pop-up menu");
+}
+
+String DefaultLocalizationStrategy::keygenKeychainItemName(const String& host)
+{
+    return UI_STRING("Key from <hostname>", "Name of keychain key generated by the KEYGEN tag").replace("<hostname>", host);
+}
+
+#endif
+
+String DefaultLocalizationStrategy::imageTitle(const String& filename, const IntSize& size)
+{
+    // FIXME: This should format the numbers correctly. In Mac WebKit, we used +[NSNumberFormatter localizedStringFromNumber:numberStyle:].
+    return formatLocalizedString(UI_STRING("<filename> %d×%d pixels", "window title suffix for a standalone image (uses multiplication symbol, not x)"), size.width(), size.height()).replace("<filename>", filename);
+}
+
+String DefaultLocalizationStrategy::mediaElementLoadingStateText()
+{
+    return UI_STRING("Loading...", "Media controller status message when the media is loading");
+}
+
+String DefaultLocalizationStrategy::mediaElementLiveBroadcastStateText()
+{
+    return UI_STRING("Live Broadcast", "Media controller status message when watching a live broadcast");
+}
+
+String DefaultLocalizationStrategy::localizedMediaControlElementString(const String& name)
+{
+    if (name == "AudioElement")
+        return UI_STRING("audio element controller", "accessibility role description for audio element controller");
+    if (name == "VideoElement")
+        return UI_STRING("video element controller", "accessibility role description for video element controller");
+    if (name == "MuteButton")
+        return UI_STRING("mute", "accessibility role description for mute button");
+    if (name == "UnMuteButton")
+        return UI_STRING("unmute", "accessibility role description for turn mute off button");
+    if (name == "PlayButton")
+        return UI_STRING("play", "accessibility role description for play button");
+    if (name == "PauseButton")
+        return UI_STRING("pause", "accessibility role description for pause button");
+    if (name == "Slider")
+        return UI_STRING("movie time", "accessibility role description for timeline slider");
+    if (name == "SliderThumb")
+        return UI_STRING("timeline slider thumb", "accessibility role description for timeline thumb");
+    if (name == "RewindButton")
+        return UI_STRING("back 30 seconds", "accessibility role description for seek back 30 seconds button");
+    if (name == "ReturnToRealtimeButton")
+        return UI_STRING("return to realtime", "accessibility role description for return to real time button");
+    if (name == "CurrentTimeDisplay")
+        return UI_STRING("elapsed time", "accessibility role description for elapsed time display");
+    if (name == "TimeRemainingDisplay")
+        return UI_STRING("remaining time", "accessibility role description for time remaining display");
+    if (name == "StatusDisplay")
+        return UI_STRING("status", "accessibility role description for movie status");
+    if (name == "FullscreenButton")
+        return UI_STRING("fullscreen", "accessibility role description for enter fullscreen button");
+    if (name == "SeekForwardButton")
+        return UI_STRING("fast forward", "accessibility role description for fast forward button");
+    if (name == "SeekBackButton")
+        return UI_STRING("fast reverse", "accessibility role description for fast reverse button");
+    if (name == "ShowClosedCaptionsButton")
+        return UI_STRING("show closed captions", "accessibility role description for show closed captions button");
+    if (name == "HideClosedCaptionsButton")
+        return UI_STRING("hide closed captions", "accessibility role description for hide closed captions button");
+
+    // FIXME: the ControlsPanel container should never be visible in the accessibility hierarchy.
+    if (name == "ControlsPanel")
+        return String();
+
+    ASSERT_NOT_REACHED();
+    return String();
+}
+
+String DefaultLocalizationStrategy::localizedMediaControlElementHelpText(const String& name)
+{
+    if (name == "AudioElement")
+        return UI_STRING("audio element playback controls and status display", "accessibility role description for audio element controller");
+    if (name == "VideoElement")
+        return UI_STRING("video element playback controls and status display", "accessibility role description for video element controller");
+    if (name == "MuteButton")
+        return UI_STRING("mute audio tracks", "accessibility help text for mute button");
+    if (name == "UnMuteButton")
+        return UI_STRING("unmute audio tracks", "accessibility help text for un mute button");
+    if (name == "PlayButton")
+        return UI_STRING("begin playback", "accessibility help text for play button");
+    if (name == "PauseButton")
+        return UI_STRING("pause playback", "accessibility help text for pause button");
+    if (name == "Slider")
+        return UI_STRING("movie time scrubber", "accessibility help text for timeline slider");
+    if (name == "SliderThumb")
+        return UI_STRING("movie time scrubber thumb", "accessibility help text for timeline slider thumb");
+    if (name == "RewindButton")
+        return UI_STRING("seek movie back 30 seconds", "accessibility help text for jump back 30 seconds button");
+    if (name == "ReturnToRealtimeButton")
+        return UI_STRING("return streaming movie to real time", "accessibility help text for return streaming movie to real time button");
+    if (name == "CurrentTimeDisplay")
+        return UI_STRING("current movie time in seconds", "accessibility help text for elapsed time display");
+    if (name == "TimeRemainingDisplay")
+        return UI_STRING("number of seconds of movie remaining", "accessibility help text for remaining time display");
+    if (name == "StatusDisplay")
+        return UI_STRING("current movie status", "accessibility help text for movie status display");
+    if (name == "SeekBackButton")
+        return UI_STRING("seek quickly back", "accessibility help text for fast rewind button");
+    if (name == "SeekForwardButton")
+        return UI_STRING("seek quickly forward", "accessibility help text for fast forward button");
+    if (name == "FullscreenButton")
+        return UI_STRING("Play movie in fullscreen mode", "accessibility help text for enter fullscreen button");
+    if (name == "ShowClosedCaptionsButton")
+        return UI_STRING("start displaying closed captions", "accessibility help text for show closed captions button");
+    if (name == "HideClosedCaptionsButton")
+        return UI_STRING("stop displaying closed captions", "accessibility help text for hide closed captions button");
+
+    ASSERT_NOT_REACHED();
+    return String();
+}
+
+String DefaultLocalizationStrategy::localizedMediaTimeDescription(float time)
+{
+    if (!isfinite(time))
+        return UI_STRING("indefinite time", "accessibility help text for an indefinite media controller time value");
+
+    int seconds = static_cast<int>(fabsf(time)); 
+    int days = seconds / (60 * 60 * 24);
+    int hours = seconds / (60 * 60);
+    int minutes = (seconds / 60) % 60;
+    seconds %= 60;
+
+    if (days)
+        return formatLocalizedString(UI_STRING("%1$d days %2$d hours %3$d minutes %4$d seconds", "accessibility help text for media controller time value >= 1 day"), days, hours, minutes, seconds);
+    if (hours)
+        return formatLocalizedString(UI_STRING("%1$d hours %2$d minutes %3$d seconds", "accessibility help text for media controller time value >= 60 minutes"), hours, minutes, seconds);
+    if (minutes)
+        return formatLocalizedString(UI_STRING("%1$d minutes %2$d seconds", "accessibility help text for media controller time value >= 60 seconds"), minutes, seconds);
+    return formatLocalizedString(UI_STRING("%1$d seconds", "accessibility help text for media controller time value < 60 seconds"), seconds);
+}
+
+String DefaultLocalizationStrategy::validationMessageValueMissingText()
+{
+    return UI_STRING("value missing", "Validation message for required form control elements that have no value");
+}
+
+String DefaultLocalizationStrategy::validationMessageTypeMismatchText()
+{
+    return UI_STRING("type mismatch", "Validation message for input form controls with a value not matching type");
+}
+
+String DefaultLocalizationStrategy::validationMessagePatternMismatchText()
+{
+    return UI_STRING("pattern mismatch", "Validation message for input form controls requiring a constrained value according to pattern");
+}
+
+String DefaultLocalizationStrategy::validationMessageTooLongText()
+{
+    return UI_STRING("too long", "Validation message for form control elements with a value longer than maximum allowed length");
+}
+
+String DefaultLocalizationStrategy::validationMessageRangeUnderflowText()
+{
+    return UI_STRING("range underflow", "Validation message for input form controls with value lower than allowed minimum");
+}
+
+String DefaultLocalizationStrategy::validationMessageRangeOverflowText()
+{
+    return UI_STRING("range overflow", "Validation message for input form controls with value higher than allowed maximum");
+}
+
+String DefaultLocalizationStrategy::validationMessageStepMismatchText()
+{
+    return UI_STRING("step mismatch", "Validation message for input form controls with value not respecting the step attribute");
+}
+
+} // namespace WebCore
+
+#endif // USE(PLATFORM_STRATEGIES)
diff --git a/Source/WebCore/platform/DefaultLocalizationStrategy.h b/Source/WebCore/platform/DefaultLocalizationStrategy.h
new file mode 100644 (file)
index 0000000..56120e0
--- /dev/null
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef DefaultLocalizationStrategy_h
+#define DefaultLocalizationStrategy_h
+
+#if USE(PLATFORM_STRATEGIES)
+
+#include "LocalizationStrategy.h"
+#include <wtf/text/WTFString.h>
+
+namespace WebCore {
+
+class DefaultLocalizationStrategy : public LocalizationStrategy {
+public:
+    DefaultLocalizationStrategy();
+
+private:
+    virtual String inputElementAltText();
+    virtual String resetButtonDefaultLabel();
+    virtual String searchableIndexIntroduction();
+    virtual String submitButtonDefaultLabel();
+    virtual String fileButtonChooseFileLabel();
+    virtual String fileButtonNoFileSelectedLabel();
+    virtual String defaultDetailsSummaryText();
+#if PLATFORM(MAC)
+    virtual String copyImageUnknownFileLabel();
+#endif
+#if ENABLE(CONTEXT_MENUS)
+    virtual String contextMenuItemTagOpenLinkInNewWindow();
+    virtual String contextMenuItemTagDownloadLinkToDisk();
+    virtual String contextMenuItemTagCopyLinkToClipboard();
+    virtual String contextMenuItemTagOpenImageInNewWindow();
+    virtual String contextMenuItemTagDownloadImageToDisk();
+    virtual String contextMenuItemTagCopyImageToClipboard();
+#if PLATFORM(QT)
+    virtual String contextMenuItemTagCopyImageUrlToClipboard();
+#endif
+    virtual String contextMenuItemTagOpenFrameInNewWindow();
+    virtual String contextMenuItemTagCopy();
+    virtual String contextMenuItemTagGoBack();
+    virtual String contextMenuItemTagGoForward();
+    virtual String contextMenuItemTagStop();
+    virtual String contextMenuItemTagReload();
+    virtual String contextMenuItemTagCut();
+    virtual String contextMenuItemTagPaste();
+#if PLATFORM(GTK)
+    virtual String contextMenuItemTagDelete();
+    virtual String contextMenuItemTagInputMethods();
+    virtual String contextMenuItemTagUnicode();
+#endif
+#if PLATFORM(GTK) || PLATFORM(QT)
+    virtual String contextMenuItemTagSelectAll();
+#endif
+    virtual String contextMenuItemTagNoGuessesFound();
+    virtual String contextMenuItemTagIgnoreSpelling();
+    virtual String contextMenuItemTagLearnSpelling();
+    virtual String contextMenuItemTagSearchWeb();
+    virtual String contextMenuItemTagLookUpInDictionary(const String& selectedString);
+    virtual String contextMenuItemTagOpenLink();
+    virtual String contextMenuItemTagIgnoreGrammar();
+    virtual String contextMenuItemTagSpellingMenu();
+    virtual String contextMenuItemTagShowSpellingPanel(bool show);
+    virtual String contextMenuItemTagCheckSpelling();
+    virtual String contextMenuItemTagCheckSpellingWhileTyping();
+    virtual String contextMenuItemTagCheckGrammarWithSpelling();
+    virtual String contextMenuItemTagFontMenu();
+    virtual String contextMenuItemTagBold();
+    virtual String contextMenuItemTagItalic();
+    virtual String contextMenuItemTagUnderline();
+    virtual String contextMenuItemTagOutline();
+    virtual String contextMenuItemTagWritingDirectionMenu();
+    virtual String contextMenuItemTagTextDirectionMenu();
+    virtual String contextMenuItemTagDefaultDirection();
+    virtual String contextMenuItemTagLeftToRight();
+    virtual String contextMenuItemTagRightToLeft();
+#if PLATFORM(MAC)
+    virtual String contextMenuItemTagSearchInSpotlight();
+    virtual String contextMenuItemTagShowFonts();
+    virtual String contextMenuItemTagStyles();
+    virtual String contextMenuItemTagShowColors();
+    virtual String contextMenuItemTagSpeechMenu();
+    virtual String contextMenuItemTagStartSpeaking();
+    virtual String contextMenuItemTagStopSpeaking();
+    virtual String contextMenuItemTagCorrectSpellingAutomatically();
+    virtual String contextMenuItemTagSubstitutionsMenu();
+    virtual String contextMenuItemTagShowSubstitutions(bool show);
+    virtual String contextMenuItemTagSmartCopyPaste();
+    virtual String contextMenuItemTagSmartQuotes();
+    virtual String contextMenuItemTagSmartDashes();
+    virtual String contextMenuItemTagSmartLinks();
+    virtual String contextMenuItemTagTextReplacement();
+    virtual String contextMenuItemTagTransformationsMenu();
+    virtual String contextMenuItemTagMakeUpperCase();
+    virtual String contextMenuItemTagMakeLowerCase();
+    virtual String contextMenuItemTagCapitalize();
+    virtual String contextMenuItemTagChangeBack(const String& replacedString);
+#endif
+    virtual String contextMenuItemTagInspectElement();
+    virtual String contextMenuItemTagOpenVideoInNewWindow();
+    virtual String contextMenuItemTagOpenAudioInNewWindow();
+    virtual String contextMenuItemTagCopyVideoLinkToClipboard();
+    virtual String contextMenuItemTagCopyAudioLinkToClipboard();
+    virtual String contextMenuItemTagToggleMediaControls();
+    virtual String contextMenuItemTagToggleMediaLoop();
+    virtual String contextMenuItemTagEnterVideoFullscreen();
+    virtual String contextMenuItemTagMediaPlay();
+    virtual String contextMenuItemTagMediaPause();
+    virtual String contextMenuItemTagMediaMute();
+#endif // ENABLE(CONTEXT_MENUS)
+    virtual String searchMenuNoRecentSearchesText();
+    virtual String searchMenuRecentSearchesText();
+    virtual String searchMenuClearRecentSearchesText();
+    virtual String AXWebAreaText();
+    virtual String AXLinkText();
+    virtual String AXListMarkerText();
+    virtual String AXImageMapText();
+    virtual String AXHeadingText();
+    virtual String AXDefinitionListTermText();
+    virtual String AXDefinitionListDefinitionText();
+#if PLATFORM(MAC)
+    virtual String AXARIAContentGroupText(const String& ariaType);
+#endif
+    virtual String AXButtonActionVerb();
+    virtual String AXRadioButtonActionVerb();
+    virtual String AXTextFieldActionVerb();
+    virtual String AXCheckedCheckBoxActionVerb();
+    virtual String AXUncheckedCheckBoxActionVerb();
+    virtual String AXMenuListActionVerb();
+    virtual String AXMenuListPopupActionVerb();
+    virtual String AXLinkActionVerb();
+    virtual String missingPluginText();
+    virtual String crashedPluginText();
+    virtual String multipleFileUploadText(unsigned numberOfFiles);
+    virtual String unknownFileSizeText();
+#if PLATFORM(WIN)
+    virtual String uploadFileText();
+    virtual String allFilesText();
+#endif
+#if PLATFORM(MAC)
+    virtual String keygenMenuItem512();
+    virtual String keygenMenuItem1024();
+    virtual String keygenMenuItem2048();
+    virtual String keygenKeychainItemName(const String& host);
+#endif
+    virtual String imageTitle(const String& filename, const IntSize&);
+    virtual String mediaElementLoadingStateText();
+    virtual String mediaElementLiveBroadcastStateText();
+    virtual String localizedMediaControlElementString(const String&);
+    virtual String localizedMediaControlElementHelpText(const String&);
+    virtual String localizedMediaTimeDescription(float);
+    virtual String validationMessageValueMissingText();
+    virtual String validationMessageTypeMismatchText();
+    virtual String validationMessagePatternMismatchText();
+    virtual String validationMessageTooLongText();
+    virtual String validationMessageRangeUnderflowText();
+    virtual String validationMessageRangeOverflowText();
+    virtual String validationMessageStepMismatchText();
+};
+
+} // namespace WebCore
+
+#endif // USE(PLATFORM_STRATEGIES)
+
+#endif // DefaultLocalizationStrategy_h
index b92ef50..f5ad0b7 100644 (file)
@@ -699,4 +699,11 @@ String validationMessageStepMismatchText(const String&, const String&)
 
 #endif // USE(PLATFORM_STRATEGIES)
 
+#if !PLATFORM(MAC) && !PLATFORM(WIN)
+String localizedString(const char* key)
+{
+    return String::fromUTF8(key, strlen(key));
+}
+#endif
+
 } // namespace WebCore
index 72ec2f1..3885439 100644 (file)
@@ -194,9 +194,11 @@ namespace WebCore {
     String validationMessageRangeOverflowText(const String& maximum);
     String validationMessageStepMismatchText(const String& base, const String& step);
 
-#if PLATFORM(MAC)
+
+#define UI_STRING(string, description) WebCore::localizedString(string)
+#define UI_STRING_KEY(string, key, description) WebCore::localizedString(key)
+
     String localizedString(const char* key);
-#endif
 
 } // namespace WebCore
 
index e0baa70..9623108 100644 (file)
@@ -29,6 +29,8 @@
 
 #include "PlatformStrategies.h"
 
+#include "DefaultLocalizationStrategy.h"
+
 namespace WebCore {
 
 static PlatformStrategies* s_platformStrategies;
@@ -51,7 +53,12 @@ void setPlatformStrategies(PlatformStrategies* platformStrategies)
     // throw an exception here in release builds.
     ASSERT(platformStrategies != s_platformStrategies);
 }
-    
+
+LocalizationStrategy* PlatformStrategies::createLocalizationStrategy()
+{
+    return new DefaultLocalizationStrategy;
+}
+
 } // namespace WebCore
 
 #endif // USE(PLATFORM_STRATEGIES)
index bda7c90..6768658 100644 (file)
@@ -81,7 +81,7 @@ protected:
 private:
     virtual CookiesStrategy* createCookiesStrategy() = 0;
     virtual PluginStrategy* createPluginStrategy() = 0;
-    virtual LocalizationStrategy* createLocalizationStrategy() = 0;
+    virtual LocalizationStrategy* createLocalizationStrategy();
     virtual VisitedLinkStrategy* createVisitedLinkStrategy() = 0;
 
     CookiesStrategy* m_cookiesStrategy;
  * THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef WebLocalizableStrings_h
-#define WebLocalizableStrings_h
+#include "config.h"
+#include "LocalizedStrings.h"
 
-#include <WebCore/LocalizedStrings.h>
 #include <wtf/text/WTFString.h>
 
-#if PLATFORM(MAC)
+namespace WebCore {
 
-#define UI_STRING(string, description) WebCore::localizedString(string)
-#define UI_STRING_KEY(string, key, description) WebCore::localizedString(key)
+String localizedString(const char* key)
+{
+    // FIXME: <rdar://problem/9119405> Win: WebKit2 needs to be made localizable
+    return String::fromUTF8(key, strlen(key));
+}
 
-#else
-
-// FIXME: <rdar://problem/9119405> Win: WebKit2 needs to be made localizable
-
-#define UI_STRING(string, description) WTF::String::fromUTF8(string, strlen(string))
-#define UI_STRING_KEY(string, key, description) WTF::String::fromUTF8(string, strlen(string))
-
-#endif
-
-#endif // WebLocalizableStrings_h
+} // namespace WebCore
index 6efa317..0060f10 100644 (file)
@@ -1,3 +1,30 @@
+2011-03-30  Sam Weinig  <sam@webkit.org>
+
+        Reviewed by Anders Carlsson.
+
+        Add default localization strategy that can be shared by WebKit1 and WebKit2
+        https://bugs.webkit.org/show_bug.cgi?id=57406
+
+        * Shared/WebLocalizableStrings.h: Removed.
+        Removed in favor of using WebCore/LocalizedStrings.h directly.
+
+        * PluginProcess/mac/PluginProcessMac.mm:
+        * UIProcess/API/mac/WKView.mm:
+        * UIProcess/mac/WebInspectorProxyMac.mm:
+        * WebProcess/WebCoreSupport/mac/WebErrorsMac.mm:
+        * WebProcess/mac/WebProcessMac.mm:
+        Use WebCore/LocalizedStrings.h directly.
+
+        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
+        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
+        Remove localization strategy override in favor of using new default implementation.
+
+        * GNUmakefile.am:
+        * WebKit2.pro:
+        * WebKit2.xcodeproj/project.pbxproj:
+        * win/WebKit2.vcproj:
+        Remove WebLocalizableStrings.h
+
 2011-03-30  Anders Carlsson  <andersca@apple.com>
 
         Reviewed by Adam Roben.
index feb97c2..837165d 100644 (file)
@@ -261,7 +261,6 @@ libWebKit2_la_SOURCES = \
        Source/WebKit2/Shared/WebImage.cpp \
        Source/WebKit2/Shared/WebImage.h \
        Source/WebKit2/Shared/WebKeyboardEvent.cpp \
-       Source/WebKit2/Shared/WebLocalizableStrings.h \
        Source/WebKit2/Shared/WebMouseEvent.cpp \
        Source/WebKit2/Shared/WebNavigationDataStore.h \
        Source/WebKit2/Shared/WebNumber.h \
index cb9f20e..3a3586a 100644 (file)
@@ -32,7 +32,7 @@
 #import "PluginProcessShim.h"
 #import "PluginProcessProxyMessages.h"
 #import "PluginProcessCreationParameters.h"
-#import "WebLocalizableStrings.h"
+#import <WebCore/LocalizedStrings.h>
 #import <WebKitSystemInterface.h>
 #import <dlfcn.h>
 #import <wtf/HashSet.h>
index 9e269de..05693ef 100644 (file)
@@ -51,7 +51,6 @@
 #import "WebContext.h"
 #import "WebEventFactory.h"
 #import "WebFullScreenManagerProxy.h"
-#import "WebLocalizableStrings.h"
 #import "WebPage.h"
 #import "WebPageProxy.h"
 #import "WebProcessProxy.h"
index 285f25e..9657764 100644 (file)
 #if ENABLE(INSPECTOR)
 
 #import "WKAPICast.h"
-#import "WebLocalizableStrings.h"
 #import "WKView.h"
 #import "WebPageProxy.h"
 #import <WebKitSystemInterface.h>
+#import <WebCore/LocalizedStrings.h>
 #import <wtf/text/WTFString.h>
 
 using namespace WebCore;
index 1e0d3dc..d3b0814 100644 (file)
@@ -141,7 +141,6 @@ HEADERS += \
     Shared/WebGeolocationPosition.h \
     Shared/WebGraphicsContext.h \
     Shared/WebImage.h \
-    Shared/WebLocalizableStrings.h \
     Shared/WebNavigationDataStore.h \
     Shared/WebNumber.h \
     Shared/WebOpenPanelParameters.h \
index 8bee829..d54f8f2 100644 (file)
                1CA8B935127C774E00576C2B /* WebInspectorProxyMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebInspectorProxyMac.mm; sourceTree = "<group>"; };
                1CA8B943127C882A00576C2B /* WebInspectorProxyMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebInspectorProxyMessageReceiver.cpp; sourceTree = "<group>"; };
                1CA8B944127C882A00576C2B /* WebInspectorProxyMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebInspectorProxyMessages.h; sourceTree = "<group>"; };
-               1CE518E81342251D0019E697 /* WebLocalizableStrings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebLocalizableStrings.h; sourceTree = "<group>"; };
                29CD55A8128E294F00133C85 /* AccessibilityWebPageObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityWebPageObject.h; sourceTree = "<group>"; };
                29CD55A9128E294F00133C85 /* AccessibilityWebPageObject.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AccessibilityWebPageObject.mm; sourceTree = "<group>"; };
                32DBCF5E0370ADEE00C91783 /* WebKit2Prefix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKit2Prefix.h; sourceTree = "<group>"; };
                                BCCF6ABA12C91EF9008F9C35 /* WebImage.cpp */,
                                BCCF6ABB12C91EF9008F9C35 /* WebImage.h */,
                                C0337DD2127A2A0E008FF4F4 /* WebKeyboardEvent.cpp */,
-                               1CE518E81342251D0019E697 /* WebLocalizableStrings.h */,
                                905620E812BC248B000799B6 /* WebMemorySampler.cpp */,
                                905620E912BC248B000799B6 /* WebMemorySampler.h */,
                                C0337DAF127A28D0008FF4F4 /* WebMouseEvent.cpp */,
index 2e5cd52..9cb6bec 100644 (file)
 #include "WebContextMessages.h"
 #include "WebCookieManager.h"
 #include "WebCoreArgumentCoders.h"
-#include "WebLocalizableStrings.h"
 #include "WebProcess.h"
-#include <WebCore/NotImplemented.h>
 #include <WebCore/Page.h>
-#include <WebCore/PageGroup.h>
-#include <wtf/MathExtras.h>
-#include <wtf/text/CString.h>
 
 #if USE(CF)
 #include <wtf/RetainPtr.h>
@@ -48,33 +43,6 @@ using namespace WebCore;
 
 namespace WebKit {
 
-// We can't use String::format for two reasons:
-//  1) It doesn't handle non-ASCII characters in the format string.
-//  2) It doesn't handle the %2$d syntax.
-// Note that because |format| is used as the second parameter to va_start, it cannot be a reference
-// type according to section 18.7/3 of the C++ N1905 standard.
-static String formatLocalizedString(String format, ...)
-{
-#if USE(CF)
-    va_list arguments;
-    va_start(arguments, format);
-    RetainPtr<CFStringRef> formatCFString(AdoptCF, format.createCFString());
-    RetainPtr<CFStringRef> result(AdoptCF, CFStringCreateWithFormatAndArguments(0, 0, formatCFString.get(), arguments));
-    va_end(arguments);
-    return result.get();
-#elif PLATFORM(QT)
-    va_list arguments;
-    va_start(arguments, format);
-    QString result;
-    result.vsprintf(format.latin1().data(), arguments);
-    va_end(arguments);
-    return result;
-#else
-    notImplemented();
-    return format;
-#endif
-}
-
 void WebPlatformStrategies::initialize()
 {
     DEFINE_STATIC_LOCAL(WebPlatformStrategies, platformStrategies, ());
@@ -97,11 +65,6 @@ PluginStrategy* WebPlatformStrategies::createPluginStrategy()
     return this;
 }
 
-LocalizationStrategy* WebPlatformStrategies::createLocalizationStrategy()
-{
-    return this;
-}
-
 VisitedLinkStrategy* WebPlatformStrategies::createVisitedLinkStrategy()
 {
     return this;
@@ -116,25 +79,6 @@ void WebPlatformStrategies::notifyCookiesChanged()
 
 // PluginStrategy
 
-void WebPlatformStrategies::populatePluginCache()
-{
-    if (m_pluginCacheIsPopulated)
-        return;
-
-    ASSERT(m_cachedPlugins.isEmpty());
-    
-    Vector<PluginInfo> plugins;
-    
-    // FIXME: Should we do something in case of error here?
-    WebProcess::shared().connection()->sendSync(Messages::WebContext::GetPlugins(m_shouldRefreshPlugins),
-                                                Messages::WebContext::GetPlugins::Reply(plugins), 0);
-
-    m_cachedPlugins.swap(plugins);
-    
-    m_shouldRefreshPlugins = false;
-    m_pluginCacheIsPopulated = true;
-}
-
 void WebPlatformStrategies::refreshPlugins()
 {
     m_cachedPlugins.clear();
@@ -150,805 +94,27 @@ void WebPlatformStrategies::getPluginInfo(const WebCore::Page*, Vector<WebCore::
     plugins = m_cachedPlugins;
 }
 
-// LocalizationStrategy    
-
-String WebPlatformStrategies::inputElementAltText()
-{
-    return UI_STRING_KEY("Submit", "Submit (input element)", "alt text for <input> elements with no alt, title, or value");
-}
-
-String WebPlatformStrategies::resetButtonDefaultLabel()
-{
-    return UI_STRING("Reset", "default label for Reset buttons in forms on web pages");
-}
-
-String WebPlatformStrategies::searchableIndexIntroduction()
-{
-    return UI_STRING("This is a searchable index. Enter search keywords: ",
-        "text that appears at the start of nearly-obsolete web pages in the form of a 'searchable index'");
-}
-
-String WebPlatformStrategies::submitButtonDefaultLabel()
-{
-    return UI_STRING("Submit", "default label for Submit buttons in forms on web pages");
-}
-
-String WebPlatformStrategies::fileButtonChooseFileLabel()
-{
-    return UI_STRING("Choose File", "title for file button used in HTML forms");
-}
-
-String WebPlatformStrategies::fileButtonNoFileSelectedLabel()
-{
-    return UI_STRING("no file selected", "text to display in file button used in HTML forms when no file is selected");
-}
-
-String WebPlatformStrategies::defaultDetailsSummaryText()
-{
-    return UI_STRING("Details", "text to display in <details> tag when it has no <summary> child");
-}
-
-#if PLATFORM(MAC)
-String WebPlatformStrategies::copyImageUnknownFileLabel()
-{
-    return UI_STRING("unknown", "Unknown filename");
-}
-#endif
-
-#if ENABLE(CONTEXT_MENUS)
-
-String WebPlatformStrategies::contextMenuItemTagOpenLinkInNewWindow()
-{
-    return UI_STRING("Open Link in New Window", "Open in New Window context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagDownloadLinkToDisk()
-{
-    return UI_STRING("Download Linked File", "Download Linked File context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagCopyLinkToClipboard()
-{
-    return UI_STRING("Copy Link", "Copy Link context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagOpenImageInNewWindow()
-{
-    return UI_STRING("Open Image in New Window", "Open Image in New Window context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagDownloadImageToDisk()
-{
-    return UI_STRING("Download Image", "Download Image context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagCopyImageToClipboard()
-{
-    return UI_STRING("Copy Image", "Copy Image context menu item");
-}
-
-#if PLATFORM(QT)
-String WebPlatformStrategies::contextMenuItemTagCopyImageUrlToClipboard()
-{
-    return UI_STRING("Copy Image Address", "Copy Image Address menu item");
-}
-#endif
-
-String WebPlatformStrategies::contextMenuItemTagOpenVideoInNewWindow()
-{
-    return UI_STRING("Open Video in New Window", "Open Video in New Window context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagOpenAudioInNewWindow()
-{
-    return UI_STRING("Open Audio in New Window", "Open Audio in New Window context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagCopyVideoLinkToClipboard()
-{
-    return UI_STRING("Copy Video Address", "Copy Video Address Location context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagCopyAudioLinkToClipboard()
-{
-    return UI_STRING("Copy Audio Address", "Copy Audio Address Location context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagToggleMediaControls()
-{
-    return UI_STRING("Controls", "Media Controls context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagToggleMediaLoop()
-{
-    return UI_STRING("Loop", "Media Loop context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagEnterVideoFullscreen()
-{
-    return UI_STRING("Enter Fullscreen", "Video Enter Fullscreen context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagMediaPlay()
-{
-    return UI_STRING("Play", "Media Play context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagMediaPause()
-{
-    return UI_STRING("Pause", "Media Pause context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagMediaMute()
-{
-    return UI_STRING("Mute", "Media Mute context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagOpenFrameInNewWindow()
-{
-    return UI_STRING("Open Frame in New Window", "Open Frame in New Window context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagCopy()
-{
-    return UI_STRING("Copy", "Copy context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagGoBack()
-{
-    return UI_STRING("Back", "Back context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagGoForward()
-{
-    return UI_STRING("Forward", "Forward context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagStop()
-{
-    return UI_STRING("Stop", "Stop context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagReload()
-{
-    return UI_STRING("Reload", "Reload context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagCut()
-{
-    return UI_STRING("Cut", "Cut context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagPaste()
-{
-    return UI_STRING("Paste", "Paste context menu item");
-}
-
-#if PLATFORM(GTK)
-
-String WebPlatformStrategies::contextMenuItemTagDelete()
-{
-    notImplemented();
-    return "Delete";
-}
-
-String WebPlatformStrategies::contextMenuItemTagInputMethods()
-{
-    notImplemented();
-    return "Input Methods";
-}
-
-String WebPlatformStrategies::contextMenuItemTagUnicode()
-{
-    notImplemented();
-    return "Unicode";
-}
-
-#endif
-
-#if PLATFORM(GTK) || PLATFORM(QT)
-
-String WebPlatformStrategies::contextMenuItemTagSelectAll()
-{
-    notImplemented();
-    return "Select All";
-}
-
-#endif
-
-String WebPlatformStrategies::contextMenuItemTagNoGuessesFound()
-{
-    return UI_STRING("No Guesses Found", "No Guesses Found context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagIgnoreSpelling()
-{
-    return UI_STRING("Ignore Spelling", "Ignore Spelling context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagLearnSpelling()
-{
-    return UI_STRING("Learn Spelling", "Learn Spelling context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagSearchWeb()
-{
-    return UI_STRING("Search in Google", "Search in Google context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagLookUpInDictionary(const String& selectedString)
-{
-#if defined(BUILDING_ON_TIGER) || defined(BUILDING_ON_LEOPARD) || defined(BUILDING_ON_SNOW_LEOPARD)
-    return UI_STRING("Look Up in Dictionary", "Look Up in Dictionary context menu item");
-#else
-    return UI_STRING("Look Up “<selection>”", "Look Up context menu item with selected word").replace("<selection>", selectedString);
-#endif
-}
-
-String WebPlatformStrategies::contextMenuItemTagOpenLink()
-{
-    return UI_STRING("Open Link", "Open Link context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagIgnoreGrammar()
-{
-    return UI_STRING("Ignore Grammar", "Ignore Grammar context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagSpellingMenu()
-{
-    return UI_STRING("Spelling and Grammar", "Spelling and Grammar context sub-menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagShowSpellingPanel(bool show)
-{
-    if (show)
-        return UI_STRING("Show Spelling and Grammar", "menu item title");
-    return UI_STRING("Hide Spelling and Grammar", "menu item title");
-}
-
-String WebPlatformStrategies::contextMenuItemTagCheckSpelling()
-{
-    return UI_STRING("Check Document Now", "Check spelling context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagCheckSpellingWhileTyping()
-{
-    return UI_STRING("Check Spelling While Typing", "Check spelling while typing context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagCheckGrammarWithSpelling()
-{
-    return UI_STRING("Check Grammar With Spelling", "Check grammar with spelling context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagFontMenu()
-{
-    return UI_STRING("Font", "Font context sub-menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagBold()
-{
-    return UI_STRING("Bold", "Bold context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagItalic()
-{
-    return UI_STRING("Italic", "Italic context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagUnderline()
-{
-    return UI_STRING("Underline", "Underline context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagOutline()
-{
-    return UI_STRING("Outline", "Outline context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagWritingDirectionMenu()
-{
-    return UI_STRING("Paragraph Direction", "Paragraph direction context sub-menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagTextDirectionMenu()
-{
-    return UI_STRING("Selection Direction", "Selection direction context sub-menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagDefaultDirection()
-{
-    return UI_STRING("Default", "Default writing direction context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagLeftToRight()
-{
-    return UI_STRING("Left to Right", "Left to Right context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagRightToLeft()
-{
-    return UI_STRING("Right to Left", "Right to Left context menu item");
-}
-
-#if PLATFORM(MAC)
-
-String WebPlatformStrategies::contextMenuItemTagSearchInSpotlight()
-{
-    return UI_STRING("Search in Spotlight", "Search in Spotlight context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagShowFonts()
-{
-    return UI_STRING("Show Fonts", "Show fonts context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagStyles()
-{
-    return UI_STRING("Styles...", "Styles context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagShowColors()
-{
-    return UI_STRING("Show Colors", "Show colors context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagSpeechMenu()
-{
-    return UI_STRING("Speech", "Speech context sub-menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagStartSpeaking()
-{
-    return UI_STRING("Start Speaking", "Start speaking context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagStopSpeaking()
-{
-    return UI_STRING("Stop Speaking", "Stop speaking context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagCorrectSpellingAutomatically()
-{
-    return UI_STRING("Correct Spelling Automatically", "Correct Spelling Automatically context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagSubstitutionsMenu()
-{
-    return UI_STRING("Substitutions", "Substitutions context sub-menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagShowSubstitutions(bool show)
-{
-    if (show) 
-        return UI_STRING("Show Substitutions", "menu item title");
-    return UI_STRING("Hide Substitutions", "menu item title");
-}
-
-String WebPlatformStrategies::contextMenuItemTagSmartCopyPaste()
-{
-    return UI_STRING("Smart Copy/Paste", "Smart Copy/Paste context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagSmartQuotes()
-{
-    return UI_STRING("Smart Quotes", "Smart Quotes context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagSmartDashes()
-{
-    return UI_STRING("Smart Dashes", "Smart Dashes context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagSmartLinks()
-{
-    return UI_STRING("Smart Links", "Smart Links context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagTextReplacement()
-{
-    return UI_STRING("Text Replacement", "Text Replacement context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagTransformationsMenu()
-{
-    return UI_STRING("Transformations", "Transformations context sub-menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagMakeUpperCase()
-{
-    return UI_STRING("Make Upper Case", "Make Upper Case context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagMakeLowerCase()
-{
-    return UI_STRING("Make Lower Case", "Make Lower Case context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagCapitalize()
-{
-    return UI_STRING("Capitalize", "Capitalize context menu item");
-}
-
-String WebPlatformStrategies::contextMenuItemTagChangeBack(const String& replacedString)
-{
-    notImplemented();
-    return replacedString;
-}
-
-#endif
-
-String WebPlatformStrategies::contextMenuItemTagInspectElement()
-{
-    return UI_STRING("Inspect Element", "Inspect Element context menu item");
-}
-
-#endif // ENABLE(CONTEXT_MENUS)
-
-String WebPlatformStrategies::searchMenuNoRecentSearchesText()
-{
-    return UI_STRING("No recent searches", "Label for only item in menu that appears when clicking on the search field image, when no searches have been performed");
-}
-
-String WebPlatformStrategies::searchMenuRecentSearchesText()
-{
-    return UI_STRING("Recent Searches", "label for first item in the menu that appears when clicking on the search field image, used as embedded menu title");
-}
-
-String WebPlatformStrategies::searchMenuClearRecentSearchesText()
-{
-    return UI_STRING("Clear Recent Searches", "menu item in Recent Searches menu that empties menu's contents");
-}
-
-String WebPlatformStrategies::AXWebAreaText()
-{
-    return UI_STRING("HTML content", "accessibility role description for web area");
-}
-
-String WebPlatformStrategies::AXLinkText()
-{
-    return UI_STRING("link", "accessibility role description for link");
-}
-
-String WebPlatformStrategies::AXListMarkerText()
-{
-    return UI_STRING("list marker", "accessibility role description for list marker");
-}
-
-String WebPlatformStrategies::AXImageMapText()
-{
-    return UI_STRING("image map", "accessibility role description for image map");
-}
-
-String WebPlatformStrategies::AXHeadingText()
-{
-    return UI_STRING("heading", "accessibility role description for headings");
-}
-
-String WebPlatformStrategies::AXDefinitionListTermText()
-{
-    return UI_STRING("term", "term word of a definition");
-}
-
-String WebPlatformStrategies::AXDefinitionListDefinitionText()
-{
-    return UI_STRING("definition", "definition phrase");
-}
-
-#if PLATFORM(MAC)
-String WebPlatformStrategies::AXARIAContentGroupText(const String& ariaType)
-{
-    if (ariaType == "ARIAApplicationAlert")
-        return UI_STRING("alert", "An ARIA accessibility group that acts as an alert.");
-    if (ariaType == "ARIAApplicationAlertDialog")
-        return UI_STRING("alert dialog", "An ARIA accessibility group that acts as an alert dialog.");
-    if (ariaType == "ARIAApplicationDialog")
-        return UI_STRING("dialog", "An ARIA accessibility group that acts as an dialog.");
-    if (ariaType == "ARIAApplicationLog")
-        return UI_STRING("log", "An ARIA accessibility group that acts as a console log.");
-    if (ariaType == "ARIAApplicationMarquee")
-        return UI_STRING("marquee", "An ARIA accessibility group that acts as a marquee.");    
-    if (ariaType == "ARIAApplicationStatus")
-        return UI_STRING("application status", "An ARIA accessibility group that acts as a status update.");    
-    if (ariaType == "ARIAApplicationTimer")
-        return UI_STRING("timer", "An ARIA accessibility group that acts as an updating timer.");    
-    if (ariaType == "ARIADocument")
-        return UI_STRING("document", "An ARIA accessibility group that acts as a document.");    
-    if (ariaType == "ARIADocumentArticle")
-        return UI_STRING("article", "An ARIA accessibility group that acts as an article.");    
-    if (ariaType == "ARIADocumentNote")
-        return UI_STRING("note", "An ARIA accessibility group that acts as a note in a document.");    
-    if (ariaType == "ARIADocumentRegion")
-        return UI_STRING("region", "An ARIA accessibility group that acts as a distinct region in a document.");    
-    if (ariaType == "ARIALandmarkApplication")
-        return UI_STRING("application", "An ARIA accessibility group that acts as an application.");    
-    if (ariaType == "ARIALandmarkBanner")
-        return UI_STRING("banner", "An ARIA accessibility group that acts as a banner.");    
-    if (ariaType == "ARIALandmarkComplementary")
-        return UI_STRING("complementary", "An ARIA accessibility group that acts as a region of complementary information.");    
-    if (ariaType == "ARIALandmarkContentInfo")
-        return UI_STRING("content", "An ARIA accessibility group that contains content.");    
-    if (ariaType == "ARIALandmarkMain")
-        return UI_STRING("main", "An ARIA accessibility group that is the main portion of the website.");    
-    if (ariaType == "ARIALandmarkNavigation")
-        return UI_STRING("navigation", "An ARIA accessibility group that contains the main navigation elements of a website.");    
-    if (ariaType == "ARIALandmarkSearch")
-        return UI_STRING("search", "An ARIA accessibility group that contains a search feature of a website.");    
-    if (ariaType == "ARIAUserInterfaceTooltip")
-        return UI_STRING("tooltip", "An ARIA accessibility group that acts as a tooltip.");    
-    if (ariaType == "ARIATabPanel")
-        return UI_STRING("tab panel", "An ARIA accessibility group that contains the content of a tab.");
-    if (ariaType == "ARIADocumentMath")
-        return UI_STRING("math", "An ARIA accessibility group that contains mathematical symbols.");
-    return String();
-}
-#endif
-
-String WebPlatformStrategies::AXButtonActionVerb()
-{
-    return UI_STRING("press", "Verb stating the action that will occur when a button is pressed, as used by accessibility");
-}
-
-String WebPlatformStrategies::AXRadioButtonActionVerb() 
-{
-    return UI_STRING("select", "Verb stating the action that will occur when a radio button is clicked, as used by accessibility");
-}
-
-String WebPlatformStrategies::AXTextFieldActionVerb()
-{
-    return UI_STRING("activate", "Verb stating the action that will occur when a text field is selected, as used by accessibility");
-}
-
-String WebPlatformStrategies::AXCheckedCheckBoxActionVerb()
-{
-    return UI_STRING("uncheck", "Verb stating the action that will occur when a checked checkbox is clicked, as used by accessibility");
-}
-
-String WebPlatformStrategies::AXUncheckedCheckBoxActionVerb()
-{
-    return UI_STRING("check", "Verb stating the action that will occur when an unchecked checkbox is clicked, as used by accessibility");
-}
-
-String WebPlatformStrategies::AXMenuListActionVerb()
-{
-    notImplemented();
-    return "select";
-}
-
-String WebPlatformStrategies::AXMenuListPopupActionVerb()
-{
-    notImplemented();
-    return "select";
-}
-
-String WebPlatformStrategies::AXLinkActionVerb()
-{
-    return UI_STRING("jump", "Verb stating the action that will occur when a link is clicked, as used by accessibility");
-}
-
-String WebPlatformStrategies::missingPluginText()
-{
-    return UI_STRING("Missing Plug-in", "Label text to be used when a plugin is missing");
-}
-
-String WebPlatformStrategies::crashedPluginText()
-{
-    return UI_STRING("Plug-in Failure", "Label text to be used if plugin host process has crashed");
-}
-
-String WebPlatformStrategies::multipleFileUploadText(unsigned numberOfFiles)
-{
-    return formatLocalizedString(UI_STRING("%d files", "Label to describe the number of files selected in a file upload control that allows multiple files"), numberOfFiles);
-}
-
-String WebPlatformStrategies::unknownFileSizeText()
-{
-    return UI_STRING("Unknown", "Unknown filesize FTP directory listing item");
-}
-
-#if PLATFORM(WIN)
-
-String WebPlatformStrategies::uploadFileText()
-{
-    notImplemented();
-    return "upload";
-}
-
-String WebPlatformStrategies::allFilesText()
-{
-    notImplemented();
-    return "all files";
-}
-
-#endif
-
-#if PLATFORM(MAC)
-
-String WebPlatformStrategies::keygenMenuItem512()
-{
-    return UI_STRING("512 (Low Grade)", "Menu item title for KEYGEN pop-up menu");
-}
-
-String WebPlatformStrategies::keygenMenuItem1024()
-{
-    return UI_STRING("1024 (Medium Grade)", "Menu item title for KEYGEN pop-up menu");
-}
-
-String WebPlatformStrategies::keygenMenuItem2048()
-{
-    return UI_STRING("2048 (High Grade)", "Menu item title for KEYGEN pop-up menu");
-}
-
-String WebPlatformStrategies::keygenKeychainItemName(const WTF::String& host)
-{
-    return UI_STRING("Key from <hostname>", "Name of keychain key generated by the KEYGEN tag").replace("<hostname>", host);
-}
-
-#endif
-
-String WebPlatformStrategies::imageTitle(const String& filename, const IntSize& size)
-{
-    // FIXME: This should format the numbers correctly. In Mac WebKit, we used +[NSNumberFormatter localizedStringFromNumber:numberStyle:].
-    return formatLocalizedString(UI_STRING("<filename> %d×%d pixels", "window title suffix for a standalone image (uses multiplication symbol, not x)"), size.width(), size.height()).replace("<filename>", filename);
-}
-
-String WebPlatformStrategies::mediaElementLoadingStateText()
-{
-    return UI_STRING("Loading...", "Media controller status message when the media is loading");
-}
-
-String WebPlatformStrategies::mediaElementLiveBroadcastStateText()
-{
-    return UI_STRING("Live Broadcast", "Media controller status message when watching a live broadcast");
-}
-
-String WebPlatformStrategies::localizedMediaControlElementString(const String& name)
-{
-    if (name == "AudioElement")
-        return UI_STRING("audio element controller", "accessibility role description for audio element controller");
-    if (name == "VideoElement")
-        return UI_STRING("video element controller", "accessibility role description for video element controller");
-    if (name == "MuteButton")
-        return UI_STRING("mute", "accessibility role description for mute button");
-    if (name == "UnMuteButton")
-        return UI_STRING("unmute", "accessibility role description for turn mute off button");
-    if (name == "PlayButton")
-        return UI_STRING("play", "accessibility role description for play button");
-    if (name == "PauseButton")
-        return UI_STRING("pause", "accessibility role description for pause button");
-    if (name == "Slider")
-        return UI_STRING("movie time", "accessibility role description for timeline slider");
-    if (name == "SliderThumb")
-        return UI_STRING("timeline slider thumb", "accessibility role description for timeline thumb");
-    if (name == "RewindButton")
-        return UI_STRING("back 30 seconds", "accessibility role description for seek back 30 seconds button");
-    if (name == "ReturnToRealtimeButton")
-        return UI_STRING("return to realtime", "accessibility role description for return to real time button");
-    if (name == "CurrentTimeDisplay")
-        return UI_STRING("elapsed time", "accessibility role description for elapsed time display");
-    if (name == "TimeRemainingDisplay")
-        return UI_STRING("remaining time", "accessibility role description for time remaining display");
-    if (name == "StatusDisplay")
-        return UI_STRING("status", "accessibility role description for movie status");
-    if (name == "FullscreenButton")
-        return UI_STRING("fullscreen", "accessibility role description for enter fullscreen button");
-    if (name == "SeekForwardButton")
-        return UI_STRING("fast forward", "accessibility role description for fast forward button");
-    if (name == "SeekBackButton")
-        return UI_STRING("fast reverse", "accessibility role description for fast reverse button");
-    if (name == "ShowClosedCaptionsButton")
-        return UI_STRING("show closed captions", "accessibility role description for show closed captions button");
-    if (name == "HideClosedCaptionsButton")
-        return UI_STRING("hide closed captions", "accessibility role description for hide closed captions button");
-
-    // FIXME: the ControlsPanel container should never be visible in the accessibility hierarchy.
-    if (name == "ControlsPanel")
-        return String();
-
-    ASSERT_NOT_REACHED();
-    return String();
-}
-
-String WebPlatformStrategies::localizedMediaControlElementHelpText(const String& name)
-{
-    if (name == "AudioElement")
-        return UI_STRING("audio element playback controls and status display", "accessibility role description for audio element controller");
-    if (name == "VideoElement")
-        return UI_STRING("video element playback controls and status display", "accessibility role description for video element controller");
-    if (name == "MuteButton")
-        return UI_STRING("mute audio tracks", "accessibility help text for mute button");
-    if (name == "UnMuteButton")
-        return UI_STRING("unmute audio tracks", "accessibility help text for un mute button");
-    if (name == "PlayButton")
-        return UI_STRING("begin playback", "accessibility help text for play button");
-    if (name == "PauseButton")
-        return UI_STRING("pause playback", "accessibility help text for pause button");
-    if (name == "Slider")
-        return UI_STRING("movie time scrubber", "accessibility help text for timeline slider");
-    if (name == "SliderThumb")
-        return UI_STRING("movie time scrubber thumb", "accessibility help text for timeline slider thumb");
-    if (name == "RewindButton")
-        return UI_STRING("seek movie back 30 seconds", "accessibility help text for jump back 30 seconds button");
-    if (name == "ReturnToRealtimeButton")
-        return UI_STRING("return streaming movie to real time", "accessibility help text for return streaming movie to real time button");
-    if (name == "CurrentTimeDisplay")
-        return UI_STRING("current movie time in seconds", "accessibility help text for elapsed time display");
-    if (name == "TimeRemainingDisplay")
-        return UI_STRING("number of seconds of movie remaining", "accessibility help text for remaining time display");
-    if (name == "StatusDisplay")
-        return UI_STRING("current movie status", "accessibility help text for movie status display");
-    if (name == "SeekBackButton")
-        return UI_STRING("seek quickly back", "accessibility help text for fast rewind button");
-    if (name == "SeekForwardButton")
-        return UI_STRING("seek quickly forward", "accessibility help text for fast forward button");
-    if (name == "FullscreenButton")
-        return UI_STRING("Play movie in fullscreen mode", "accessibility help text for enter fullscreen button");
-    if (name == "ShowClosedCaptionsButton")
-        return UI_STRING("start displaying closed captions", "accessibility help text for show closed captions button");
-    if (name == "HideClosedCaptionsButton")
-        return UI_STRING("stop displaying closed captions", "accessibility help text for hide closed captions button");
-
-    ASSERT_NOT_REACHED();
-    return String();
-}
-
-String WebPlatformStrategies::localizedMediaTimeDescription(float time)
-{
-    if (!isfinite(time))
-        return UI_STRING("indefinite time", "accessibility help text for an indefinite media controller time value");
-
-    int seconds = static_cast<int>(fabsf(time)); 
-    int days = seconds / (60 * 60 * 24);
-    int hours = seconds / (60 * 60);
-    int minutes = (seconds / 60) % 60;
-    seconds %= 60;
-
-    if (days)
-        return formatLocalizedString(UI_STRING("%1$d days %2$d hours %3$d minutes %4$d seconds", "accessibility help text for media controller time value >= 1 day"), days, hours, minutes, seconds);
-    if (hours)
-        return formatLocalizedString(UI_STRING("%1$d hours %2$d minutes %3$d seconds", "accessibility help text for media controller time value >= 60 minutes"), hours, minutes, seconds);
-    if (minutes)
-        return formatLocalizedString(UI_STRING("%1$d minutes %2$d seconds", "accessibility help text for media controller time value >= 60 seconds"), minutes, seconds);
-    return formatLocalizedString(UI_STRING("%1$d seconds", "accessibility help text for media controller time value < 60 seconds"), seconds);
-}
-
-String WebPlatformStrategies::validationMessageValueMissingText()
-{
-    return UI_STRING("value missing", "Validation message for required form control elements that have no value");
-}
-
-String WebPlatformStrategies::validationMessageTypeMismatchText()
-{
-    return UI_STRING("type mismatch", "Validation message for input form controls with a value not matching type");
-}
-
-String WebPlatformStrategies::validationMessagePatternMismatchText()
-{
-    return UI_STRING("pattern mismatch", "Validation message for input form controls requiring a constrained value according to pattern");
-}
-
-String WebPlatformStrategies::validationMessageTooLongText()
-{
-    return UI_STRING("too long", "Validation message for form control elements with a value longer than maximum allowed length");
-}
-
-String WebPlatformStrategies::validationMessageRangeUnderflowText()
+void WebPlatformStrategies::populatePluginCache()
 {
-    return UI_STRING("range underflow", "Validation message for input form controls with value lower than allowed minimum");
-}
+    if (m_pluginCacheIsPopulated)
+        return;
 
-String WebPlatformStrategies::validationMessageRangeOverflowText()
-{
-    return UI_STRING("range overflow", "Validation message for input form controls with value higher than allowed maximum");
-}
+    ASSERT(m_cachedPlugins.isEmpty());
+    
+    Vector<PluginInfo> plugins;
+    
+    // FIXME: Should we do something in case of error here?
+    WebProcess::shared().connection()->sendSync(Messages::WebContext::GetPlugins(m_shouldRefreshPlugins),
+                                                Messages::WebContext::GetPlugins::Reply(plugins), 0);
 
-String WebPlatformStrategies::validationMessageStepMismatchText()
-{
-    return UI_STRING("step mismatch", "Validation message for input form controls with value not respecting the step attribute");
+    m_cachedPlugins.swap(plugins);
+    
+    m_shouldRefreshPlugins = false;
+    m_pluginCacheIsPopulated = true;
 }
 
 // VisitedLinkStrategy
+
 bool WebPlatformStrategies::isLinkVisited(Page* page, LinkHash linkHash)
 {
     return WebProcess::shared().isLinkVisited(linkHash);
index f2582f3..55285de 100644 (file)
 #include <WebCore/CookiesStrategy.h>
 #include <WebCore/PlatformStrategies.h>
 #include <WebCore/PluginStrategy.h>
-#include <WebCore/LocalizationStrategy.h>
 #include <WebCore/VisitedLinkStrategy.h>
 
 namespace WebKit {
 
-class WebPlatformStrategies : public WebCore::PlatformStrategies, private WebCore::CookiesStrategy, private WebCore::PluginStrategy, private WebCore::LocalizationStrategy, private WebCore::VisitedLinkStrategy {
+class WebPlatformStrategies : public WebCore::PlatformStrategies, private WebCore::CookiesStrategy, private WebCore::PluginStrategy, private WebCore::VisitedLinkStrategy {
 public:
     static void initialize();
     
@@ -46,7 +45,6 @@ private:
     // WebCore::PlatformStrategies
     virtual WebCore::CookiesStrategy* createCookiesStrategy();
     virtual WebCore::PluginStrategy* createPluginStrategy();
-    virtual WebCore::LocalizationStrategy* createLocalizationStrategy();
     virtual WebCore::VisitedLinkStrategy* createVisitedLinkStrategy();
 
     // WebCore::CookiesStrategy
@@ -55,158 +53,15 @@ private:
     // WebCore::PluginStrategy
     virtual void refreshPlugins();
     virtual void getPluginInfo(const WebCore::Page*, Vector<WebCore::PluginInfo>&);
-
-    // WebCore::LocalizationStrategy    
-    virtual String inputElementAltText();
-    virtual String resetButtonDefaultLabel();
-    virtual String searchableIndexIntroduction();
-    virtual String submitButtonDefaultLabel();
-    virtual String fileButtonChooseFileLabel();
-    virtual String fileButtonNoFileSelectedLabel();
-    virtual String defaultDetailsSummaryText();
-#if PLATFORM(MAC)
-    virtual String copyImageUnknownFileLabel();
-#endif
-#if ENABLE(CONTEXT_MENUS)
-    virtual String contextMenuItemTagOpenLinkInNewWindow();
-    virtual String contextMenuItemTagDownloadLinkToDisk();
-    virtual String contextMenuItemTagCopyLinkToClipboard();
-    virtual String contextMenuItemTagOpenImageInNewWindow();
-    virtual String contextMenuItemTagDownloadImageToDisk();
-    virtual String contextMenuItemTagCopyImageToClipboard();
-#if PLATFORM(QT)
-    virtual String contextMenuItemTagCopyImageUrlToClipboard();
-#endif
-    virtual String contextMenuItemTagOpenFrameInNewWindow();
-    virtual String contextMenuItemTagCopy();
-    virtual String contextMenuItemTagGoBack();
-    virtual String contextMenuItemTagGoForward();
-    virtual String contextMenuItemTagStop();
-    virtual String contextMenuItemTagReload();
-    virtual String contextMenuItemTagCut();
-    virtual String contextMenuItemTagPaste();
-#if PLATFORM(GTK)
-    virtual String contextMenuItemTagDelete();
-    virtual String contextMenuItemTagInputMethods();
-    virtual String contextMenuItemTagUnicode();
-#endif
-#if PLATFORM(GTK) || PLATFORM(QT)
-    virtual String contextMenuItemTagSelectAll();
-#endif
-    virtual String contextMenuItemTagNoGuessesFound();
-    virtual String contextMenuItemTagIgnoreSpelling();
-    virtual String contextMenuItemTagLearnSpelling();
-    virtual String contextMenuItemTagSearchWeb();
-    virtual String contextMenuItemTagLookUpInDictionary(const String& selectedString);
-    virtual String contextMenuItemTagOpenLink();
-    virtual String contextMenuItemTagIgnoreGrammar();
-    virtual String contextMenuItemTagSpellingMenu();
-    virtual String contextMenuItemTagShowSpellingPanel(bool show);
-    virtual String contextMenuItemTagCheckSpelling();
-    virtual String contextMenuItemTagCheckSpellingWhileTyping();
-    virtual String contextMenuItemTagCheckGrammarWithSpelling();
-    virtual String contextMenuItemTagFontMenu();
-    virtual String contextMenuItemTagBold();
-    virtual String contextMenuItemTagItalic();
-    virtual String contextMenuItemTagUnderline();
-    virtual String contextMenuItemTagOutline();
-    virtual String contextMenuItemTagWritingDirectionMenu();
-    virtual String contextMenuItemTagTextDirectionMenu();
-    virtual String contextMenuItemTagDefaultDirection();
-    virtual String contextMenuItemTagLeftToRight();
-    virtual String contextMenuItemTagRightToLeft();
-#if PLATFORM(MAC)
-    virtual String contextMenuItemTagSearchInSpotlight();
-    virtual String contextMenuItemTagShowFonts();
-    virtual String contextMenuItemTagStyles();
-    virtual String contextMenuItemTagShowColors();
-    virtual String contextMenuItemTagSpeechMenu();
-    virtual String contextMenuItemTagStartSpeaking();
-    virtual String contextMenuItemTagStopSpeaking();
-    virtual String contextMenuItemTagCorrectSpellingAutomatically();
-    virtual String contextMenuItemTagSubstitutionsMenu();
-    virtual String contextMenuItemTagShowSubstitutions(bool show);
-    virtual String contextMenuItemTagSmartCopyPaste();
-    virtual String contextMenuItemTagSmartQuotes();
-    virtual String contextMenuItemTagSmartDashes();
-    virtual String contextMenuItemTagSmartLinks();
-    virtual String contextMenuItemTagTextReplacement();
-    virtual String contextMenuItemTagTransformationsMenu();
-    virtual String contextMenuItemTagMakeUpperCase();
-    virtual String contextMenuItemTagMakeLowerCase();
-    virtual String contextMenuItemTagCapitalize();
-    virtual String contextMenuItemTagChangeBack(const String& replacedString);
-#endif
-    virtual String contextMenuItemTagInspectElement();
-    virtual String contextMenuItemTagOpenVideoInNewWindow();
-    virtual String contextMenuItemTagOpenAudioInNewWindow();
-    virtual String contextMenuItemTagCopyVideoLinkToClipboard();
-    virtual String contextMenuItemTagCopyAudioLinkToClipboard();
-    virtual String contextMenuItemTagToggleMediaControls();
-    virtual String contextMenuItemTagToggleMediaLoop();
-    virtual String contextMenuItemTagEnterVideoFullscreen();
-    virtual String contextMenuItemTagMediaPlay();
-    virtual String contextMenuItemTagMediaPause();
-    virtual String contextMenuItemTagMediaMute();
-#endif // ENABLE(CONTEXT_MENUS)
-    virtual String searchMenuNoRecentSearchesText();
-    virtual String searchMenuRecentSearchesText();
-    virtual String searchMenuClearRecentSearchesText();
-    virtual String AXWebAreaText();
-    virtual String AXLinkText();
-    virtual String AXListMarkerText();
-    virtual String AXImageMapText();
-    virtual String AXHeadingText();
-    virtual String AXDefinitionListTermText();
-    virtual String AXDefinitionListDefinitionText();
-#if PLATFORM(MAC)
-    virtual String AXARIAContentGroupText(const String& ariaType);
-#endif
-    virtual String AXButtonActionVerb();
-    virtual String AXRadioButtonActionVerb();
-    virtual String AXTextFieldActionVerb();
-    virtual String AXCheckedCheckBoxActionVerb();
-    virtual String AXUncheckedCheckBoxActionVerb();
-    virtual String AXMenuListActionVerb();
-    virtual String AXMenuListPopupActionVerb();
-    virtual String AXLinkActionVerb();
-    virtual String missingPluginText();
-    virtual String crashedPluginText();
-    virtual String multipleFileUploadText(unsigned numberOfFiles);
-    virtual String unknownFileSizeText();
-#if PLATFORM(WIN)
-    virtual String uploadFileText();
-    virtual String allFilesText();
-#endif
-#if PLATFORM(MAC)
-    virtual String keygenMenuItem512();
-    virtual String keygenMenuItem1024();
-    virtual String keygenMenuItem2048();
-    virtual String keygenKeychainItemName(const String& host);
-#endif
-    virtual String imageTitle(const String& filename, const WebCore::IntSize& size);
-    virtual String mediaElementLoadingStateText();
-    virtual String mediaElementLiveBroadcastStateText();
-    virtual String localizedMediaControlElementString(const String&);
-    virtual String localizedMediaControlElementHelpText(const String&);
-    virtual String localizedMediaTimeDescription(float);
-    virtual String validationMessageValueMissingText();
-    virtual String validationMessageTypeMismatchText();
-    virtual String validationMessagePatternMismatchText();
-    virtual String validationMessageTooLongText();
-    virtual String validationMessageRangeUnderflowText();
-    virtual String validationMessageRangeOverflowText();
-    virtual String validationMessageStepMismatchText();
-
     void populatePluginCache();
 
-    bool m_pluginCacheIsPopulated;
-    bool m_shouldRefreshPlugins;
-    Vector<WebCore::PluginInfo> m_cachedPlugins;
-
     // WebCore::VisitedLinkStrategy
     virtual bool isLinkVisited(WebCore::Page*, WebCore::LinkHash);
     virtual void addVisitedLink(WebCore::Page*, WebCore::LinkHash);
+
+    bool m_pluginCacheIsPopulated;
+    bool m_shouldRefreshPlugins;
+    Vector<WebCore::PluginInfo> m_cachedPlugins;
 };
 
 } // namespace WebKit
index 9931dc4..70e7607 100644 (file)
@@ -28,7 +28,7 @@
 
 #import "WKError.h"
 #import "WebError.h"
-#import "WebLocalizableStrings.h"
+#import <WebCore/LocalizedStrings.h>
 #import <WebCore/ResourceRequest.h>
 #import <WebCore/ResourceResponse.h>
 #import <pthread.h>
index 50a5699..0d19913 100644 (file)
@@ -28,7 +28,6 @@
 
 #import "FullKeyboardAccessWatcher.h"
 #import "SandboxExtension.h"
-#import "WebLocalizableStrings.h"
 #import "WebPage.h"
 #import "WebProcessCreationParameters.h"
 #import <WebCore/MemoryCache.h>
@@ -40,6 +39,7 @@
 #import <mach/mach.h>
 #import <mach/mach_error.h>
 #import <objc/runtime.h>
+#import <WebCore/LocalizedStrings.h>
 
 #if ENABLE(WEB_PROCESS_SANDBOX)
 #import <sandbox.h>
index 19c7d6a..0cf5281 100755 (executable)
                                >
                        </File>
                        <File
-                               RelativePath="..\Shared\WebLocalizableStrings.h"
-                               >
-                       </File>
-                       <File
                                RelativePath="..\Shared\WebMouseEvent.cpp"
                                >
                        </File>