2 * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23 * THE POSSIBILITY OF SUCH DAMAGE.
27 #include "DefaultLocalizationStrategy.h"
29 #if USE(PLATFORM_STRATEGIES)
32 #include "LocalizedStrings.h"
33 #include "NotImplemented.h"
34 #include "PlatformString.h"
35 #include <wtf/MathExtras.h>
36 #include <wtf/text/CString.h>
37 #include <wtf/unicode/CharacterNames.h>
38 #include <wtf/UnusedParam.h>
41 #include <wtf/RetainPtr.h>
45 #include "WebCoreSystemInterface.h"
50 // We can't use String::format for two reasons:
51 // 1) It doesn't handle non-ASCII characters in the format string.
52 // 2) It doesn't handle the %2$d syntax.
53 // Note that because |format| is used as the second parameter to va_start, it cannot be a reference
54 // type according to section 18.7/3 of the C++ N1905 standard.
55 static String formatLocalizedString(String format, ...)
59 va_start(arguments, format);
60 RetainPtr<CFStringRef> formatCFString(AdoptCF, format.createCFString());
61 RetainPtr<CFStringRef> result(AdoptCF, CFStringCreateWithFormatAndArguments(0, 0, formatCFString.get(), arguments));
66 va_start(arguments, format);
68 result.vsprintf(format.latin1().data(), arguments);
77 #if !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)
78 static String truncatedStringForLookupMenuItem(const String& original)
80 if (original.isEmpty())
83 // Truncate the string if it's too long. This is in consistency with AppKit.
84 unsigned maxNumberOfGraphemeClustersInLookupMenuItem = 24;
85 DEFINE_STATIC_LOCAL(String, ellipsis, (&horizontalEllipsis, 1));
87 String trimmed = original.stripWhiteSpace();
88 unsigned numberOfCharacters = numCharactersInGraphemeClusters(trimmed, maxNumberOfGraphemeClustersInLookupMenuItem);
89 return numberOfCharacters == trimmed.length() ? trimmed : trimmed.left(numberOfCharacters) + ellipsis;
93 DefaultLocalizationStrategy& DefaultLocalizationStrategy::shared()
95 DEFINE_STATIC_LOCAL(DefaultLocalizationStrategy, defaultLocalizationStrategy, ());
96 return defaultLocalizationStrategy;
99 DefaultLocalizationStrategy::DefaultLocalizationStrategy()
103 String DefaultLocalizationStrategy::inputElementAltText()
105 return WEB_UI_STRING_KEY("Submit", "Submit (input element)", "alt text for <input> elements with no alt, title, or value");
108 String DefaultLocalizationStrategy::resetButtonDefaultLabel()
110 return WEB_UI_STRING("Reset", "default label for Reset buttons in forms on web pages");
113 String DefaultLocalizationStrategy::searchableIndexIntroduction()
115 return WEB_UI_STRING("This is a searchable index. Enter search keywords: ",
116 "text that appears at the start of nearly-obsolete web pages in the form of a 'searchable index'");
119 String DefaultLocalizationStrategy::submitButtonDefaultLabel()
121 return WEB_UI_STRING("Submit", "default label for Submit buttons in forms on web pages");
124 String DefaultLocalizationStrategy::fileButtonChooseFileLabel()
126 return WEB_UI_STRING("Choose File", "title for a single file chooser button used in HTML forms");
129 String DefaultLocalizationStrategy::fileButtonChooseMultipleFilesLabel()
131 return WEB_UI_STRING("Choose Files", "title for a multiple file chooser button used in HTML forms. This title should be as short as possible.");
134 String DefaultLocalizationStrategy::fileButtonNoFileSelectedLabel()
136 return WEB_UI_STRING("no file selected", "text to display in file button used in HTML forms when no file is selected");
139 String DefaultLocalizationStrategy::defaultDetailsSummaryText()
141 return WEB_UI_STRING("Details", "text to display in <details> tag when it has no <summary> child");
145 String DefaultLocalizationStrategy::copyImageUnknownFileLabel()
147 return WEB_UI_STRING("unknown", "Unknown filename");
151 #if ENABLE(CONTEXT_MENUS)
153 String DefaultLocalizationStrategy::contextMenuItemTagOpenLinkInNewWindow()
155 return WEB_UI_STRING("Open Link in New Window", "Open in New Window context menu item");
158 String DefaultLocalizationStrategy::contextMenuItemTagDownloadLinkToDisk()
160 return WEB_UI_STRING("Download Linked File", "Download Linked File context menu item");
163 String DefaultLocalizationStrategy::contextMenuItemTagCopyLinkToClipboard()
165 return WEB_UI_STRING("Copy Link", "Copy Link context menu item");
168 String DefaultLocalizationStrategy::contextMenuItemTagOpenImageInNewWindow()
170 return WEB_UI_STRING("Open Image in New Window", "Open Image in New Window context menu item");
173 String DefaultLocalizationStrategy::contextMenuItemTagDownloadImageToDisk()
175 return WEB_UI_STRING("Download Image", "Download Image context menu item");
178 String DefaultLocalizationStrategy::contextMenuItemTagCopyImageToClipboard()
180 return WEB_UI_STRING("Copy Image", "Copy Image context menu item");
184 String DefaultLocalizationStrategy::contextMenuItemTagCopyImageUrlToClipboard()
186 return WEB_UI_STRING("Copy Image Address", "Copy Image Address menu item");
190 String DefaultLocalizationStrategy::contextMenuItemTagOpenVideoInNewWindow()
192 return WEB_UI_STRING("Open Video in New Window", "Open Video in New Window context menu item");
195 String DefaultLocalizationStrategy::contextMenuItemTagOpenAudioInNewWindow()
197 return WEB_UI_STRING("Open Audio in New Window", "Open Audio in New Window context menu item");
200 String DefaultLocalizationStrategy::contextMenuItemTagCopyVideoLinkToClipboard()
202 return WEB_UI_STRING("Copy Video Address", "Copy Video Address Location context menu item");
205 String DefaultLocalizationStrategy::contextMenuItemTagCopyAudioLinkToClipboard()
207 return WEB_UI_STRING("Copy Audio Address", "Copy Audio Address Location context menu item");
210 String DefaultLocalizationStrategy::contextMenuItemTagToggleMediaControls()
212 return WEB_UI_STRING("Controls", "Media Controls context menu item");
215 String DefaultLocalizationStrategy::contextMenuItemTagToggleMediaLoop()
217 return WEB_UI_STRING("Loop", "Media Loop context menu item");
220 String DefaultLocalizationStrategy::contextMenuItemTagEnterVideoFullscreen()
222 return WEB_UI_STRING("Enter Fullscreen", "Video Enter Fullscreen context menu item");
225 String DefaultLocalizationStrategy::contextMenuItemTagMediaPlay()
227 return WEB_UI_STRING("Play", "Media Play context menu item");
230 String DefaultLocalizationStrategy::contextMenuItemTagMediaPause()
232 return WEB_UI_STRING("Pause", "Media Pause context menu item");
235 String DefaultLocalizationStrategy::contextMenuItemTagMediaMute()
237 return WEB_UI_STRING("Mute", "Media Mute context menu item");
240 String DefaultLocalizationStrategy::contextMenuItemTagOpenFrameInNewWindow()
242 return WEB_UI_STRING("Open Frame in New Window", "Open Frame in New Window context menu item");
245 String DefaultLocalizationStrategy::contextMenuItemTagCopy()
247 return WEB_UI_STRING("Copy", "Copy context menu item");
250 String DefaultLocalizationStrategy::contextMenuItemTagGoBack()
252 return WEB_UI_STRING("Back", "Back context menu item");
255 String DefaultLocalizationStrategy::contextMenuItemTagGoForward()
257 return WEB_UI_STRING("Forward", "Forward context menu item");
260 String DefaultLocalizationStrategy::contextMenuItemTagStop()
262 return WEB_UI_STRING("Stop", "Stop context menu item");
265 String DefaultLocalizationStrategy::contextMenuItemTagReload()
267 return WEB_UI_STRING("Reload", "Reload context menu item");
270 String DefaultLocalizationStrategy::contextMenuItemTagCut()
272 return WEB_UI_STRING("Cut", "Cut context menu item");
275 String DefaultLocalizationStrategy::contextMenuItemTagPaste()
277 return WEB_UI_STRING("Paste", "Paste context menu item");
282 String DefaultLocalizationStrategy::contextMenuItemTagDelete()
288 String DefaultLocalizationStrategy::contextMenuItemTagInputMethods()
291 return "Input Methods";
294 String DefaultLocalizationStrategy::contextMenuItemTagUnicode()
302 #if PLATFORM(GTK) || PLATFORM(QT)
304 String DefaultLocalizationStrategy::contextMenuItemTagSelectAll()
312 String DefaultLocalizationStrategy::contextMenuItemTagNoGuessesFound()
314 return WEB_UI_STRING("No Guesses Found", "No Guesses Found context menu item");
317 String DefaultLocalizationStrategy::contextMenuItemTagIgnoreSpelling()
319 return WEB_UI_STRING("Ignore Spelling", "Ignore Spelling context menu item");
322 String DefaultLocalizationStrategy::contextMenuItemTagLearnSpelling()
324 return WEB_UI_STRING("Learn Spelling", "Learn Spelling context menu item");
327 String DefaultLocalizationStrategy::contextMenuItemTagSearchWeb()
329 #if PLATFORM(MAC) && !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)
330 RetainPtr<CFStringRef> searchProviderName(AdoptCF, wkCopyDefaultSearchProviderDisplayName());
331 return formatLocalizedString(WEB_UI_STRING("Search with %@", "Search with search provider context menu item with provider name inserted"), searchProviderName.get());
333 return WEB_UI_STRING("Search with Google", "Search with Google context menu item");
337 String DefaultLocalizationStrategy::contextMenuItemTagLookUpInDictionary(const String& selectedString)
339 #if defined(BUILDING_ON_LEOPARD) || defined(BUILDING_ON_SNOW_LEOPARD)
340 UNUSED_PARAM(selectedString);
341 return WEB_UI_STRING("Look Up in Dictionary", "Look Up in Dictionary context menu item");
344 RetainPtr<CFStringRef> selectedCFString(AdoptCF, truncatedStringForLookupMenuItem(selectedString).createCFString());
345 return formatLocalizedString(WEB_UI_STRING("Look Up “%@”", "Look Up context menu item with selected word"), selectedCFString.get());
347 return WEB_UI_STRING("Look Up “<selection>”", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));
352 String DefaultLocalizationStrategy::contextMenuItemTagOpenLink()
354 return WEB_UI_STRING("Open Link", "Open Link context menu item");
357 String DefaultLocalizationStrategy::contextMenuItemTagIgnoreGrammar()
359 return WEB_UI_STRING("Ignore Grammar", "Ignore Grammar context menu item");
362 String DefaultLocalizationStrategy::contextMenuItemTagSpellingMenu()
364 return WEB_UI_STRING("Spelling and Grammar", "Spelling and Grammar context sub-menu item");
367 String DefaultLocalizationStrategy::contextMenuItemTagShowSpellingPanel(bool show)
370 return WEB_UI_STRING("Show Spelling and Grammar", "menu item title");
371 return WEB_UI_STRING("Hide Spelling and Grammar", "menu item title");
374 String DefaultLocalizationStrategy::contextMenuItemTagCheckSpelling()
376 return WEB_UI_STRING("Check Document Now", "Check spelling context menu item");
379 String DefaultLocalizationStrategy::contextMenuItemTagCheckSpellingWhileTyping()
381 return WEB_UI_STRING("Check Spelling While Typing", "Check spelling while typing context menu item");
384 String DefaultLocalizationStrategy::contextMenuItemTagCheckGrammarWithSpelling()
386 return WEB_UI_STRING("Check Grammar With Spelling", "Check grammar with spelling context menu item");
389 String DefaultLocalizationStrategy::contextMenuItemTagFontMenu()
391 return WEB_UI_STRING("Font", "Font context sub-menu item");
394 String DefaultLocalizationStrategy::contextMenuItemTagBold()
396 return WEB_UI_STRING("Bold", "Bold context menu item");
399 String DefaultLocalizationStrategy::contextMenuItemTagItalic()
401 return WEB_UI_STRING("Italic", "Italic context menu item");
404 String DefaultLocalizationStrategy::contextMenuItemTagUnderline()
406 return WEB_UI_STRING("Underline", "Underline context menu item");
409 String DefaultLocalizationStrategy::contextMenuItemTagOutline()
411 return WEB_UI_STRING("Outline", "Outline context menu item");
414 String DefaultLocalizationStrategy::contextMenuItemTagWritingDirectionMenu()
416 return WEB_UI_STRING("Paragraph Direction", "Paragraph direction context sub-menu item");
419 String DefaultLocalizationStrategy::contextMenuItemTagTextDirectionMenu()
421 return WEB_UI_STRING("Selection Direction", "Selection direction context sub-menu item");
424 String DefaultLocalizationStrategy::contextMenuItemTagDefaultDirection()
426 return WEB_UI_STRING("Default", "Default writing direction context menu item");
429 String DefaultLocalizationStrategy::contextMenuItemTagLeftToRight()
431 return WEB_UI_STRING("Left to Right", "Left to Right context menu item");
434 String DefaultLocalizationStrategy::contextMenuItemTagRightToLeft()
436 return WEB_UI_STRING("Right to Left", "Right to Left context menu item");
441 String DefaultLocalizationStrategy::contextMenuItemTagSearchInSpotlight()
443 return WEB_UI_STRING("Search in Spotlight", "Search in Spotlight context menu item");
446 String DefaultLocalizationStrategy::contextMenuItemTagShowFonts()
448 return WEB_UI_STRING("Show Fonts", "Show fonts context menu item");
451 String DefaultLocalizationStrategy::contextMenuItemTagStyles()
453 return WEB_UI_STRING("Styles...", "Styles context menu item");
456 String DefaultLocalizationStrategy::contextMenuItemTagShowColors()
458 return WEB_UI_STRING("Show Colors", "Show colors context menu item");
461 String DefaultLocalizationStrategy::contextMenuItemTagSpeechMenu()
463 return WEB_UI_STRING("Speech", "Speech context sub-menu item");
466 String DefaultLocalizationStrategy::contextMenuItemTagStartSpeaking()
468 return WEB_UI_STRING("Start Speaking", "Start speaking context menu item");
471 String DefaultLocalizationStrategy::contextMenuItemTagStopSpeaking()
473 return WEB_UI_STRING("Stop Speaking", "Stop speaking context menu item");
476 String DefaultLocalizationStrategy::contextMenuItemTagCorrectSpellingAutomatically()
478 return WEB_UI_STRING("Correct Spelling Automatically", "Correct Spelling Automatically context menu item");
481 String DefaultLocalizationStrategy::contextMenuItemTagSubstitutionsMenu()
483 return WEB_UI_STRING("Substitutions", "Substitutions context sub-menu item");
486 String DefaultLocalizationStrategy::contextMenuItemTagShowSubstitutions(bool show)
489 return WEB_UI_STRING("Show Substitutions", "menu item title");
490 return WEB_UI_STRING("Hide Substitutions", "menu item title");
493 String DefaultLocalizationStrategy::contextMenuItemTagSmartCopyPaste()
495 return WEB_UI_STRING("Smart Copy/Paste", "Smart Copy/Paste context menu item");
498 String DefaultLocalizationStrategy::contextMenuItemTagSmartQuotes()
500 return WEB_UI_STRING("Smart Quotes", "Smart Quotes context menu item");
503 String DefaultLocalizationStrategy::contextMenuItemTagSmartDashes()
505 return WEB_UI_STRING("Smart Dashes", "Smart Dashes context menu item");
508 String DefaultLocalizationStrategy::contextMenuItemTagSmartLinks()
510 return WEB_UI_STRING("Smart Links", "Smart Links context menu item");
513 String DefaultLocalizationStrategy::contextMenuItemTagTextReplacement()
515 return WEB_UI_STRING("Text Replacement", "Text Replacement context menu item");
518 String DefaultLocalizationStrategy::contextMenuItemTagTransformationsMenu()
520 return WEB_UI_STRING("Transformations", "Transformations context sub-menu item");
523 String DefaultLocalizationStrategy::contextMenuItemTagMakeUpperCase()
525 return WEB_UI_STRING("Make Upper Case", "Make Upper Case context menu item");
528 String DefaultLocalizationStrategy::contextMenuItemTagMakeLowerCase()
530 return WEB_UI_STRING("Make Lower Case", "Make Lower Case context menu item");
533 String DefaultLocalizationStrategy::contextMenuItemTagCapitalize()
535 return WEB_UI_STRING("Capitalize", "Capitalize context menu item");
538 String DefaultLocalizationStrategy::contextMenuItemTagChangeBack(const String& replacedString)
541 return replacedString;
546 String DefaultLocalizationStrategy::contextMenuItemTagInspectElement()
548 return WEB_UI_STRING("Inspect Element", "Inspect Element context menu item");
551 #endif // ENABLE(CONTEXT_MENUS)
553 String DefaultLocalizationStrategy::searchMenuNoRecentSearchesText()
555 return WEB_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");
558 String DefaultLocalizationStrategy::searchMenuRecentSearchesText()
560 return WEB_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");
563 String DefaultLocalizationStrategy::searchMenuClearRecentSearchesText()
565 return WEB_UI_STRING("Clear Recent Searches", "menu item in Recent Searches menu that empties menu's contents");
568 String DefaultLocalizationStrategy::AXWebAreaText()
570 return WEB_UI_STRING("HTML content", "accessibility role description for web area");
573 String DefaultLocalizationStrategy::AXLinkText()
575 return WEB_UI_STRING("link", "accessibility role description for link");
578 String DefaultLocalizationStrategy::AXListMarkerText()
580 return WEB_UI_STRING("list marker", "accessibility role description for list marker");
583 String DefaultLocalizationStrategy::AXImageMapText()
585 return WEB_UI_STRING("image map", "accessibility role description for image map");
588 String DefaultLocalizationStrategy::AXHeadingText()
590 return WEB_UI_STRING("heading", "accessibility role description for headings");
593 String DefaultLocalizationStrategy::AXDefinitionListTermText()
595 return WEB_UI_STRING("term", "term word of a definition");
598 String DefaultLocalizationStrategy::AXDefinitionListDefinitionText()
600 return WEB_UI_STRING("definition", "definition phrase");
604 String DefaultLocalizationStrategy::AXARIAContentGroupText(const String& ariaType)
606 if (ariaType == "ARIAApplicationAlert")
607 return WEB_UI_STRING("alert", "An ARIA accessibility group that acts as an alert.");
608 if (ariaType == "ARIAApplicationAlertDialog")
609 return WEB_UI_STRING("alert dialog", "An ARIA accessibility group that acts as an alert dialog.");
610 if (ariaType == "ARIAApplicationDialog")
611 return WEB_UI_STRING("dialog", "An ARIA accessibility group that acts as an dialog.");
612 if (ariaType == "ARIAApplicationLog")
613 return WEB_UI_STRING("log", "An ARIA accessibility group that acts as a console log.");
614 if (ariaType == "ARIAApplicationMarquee")
615 return WEB_UI_STRING("marquee", "An ARIA accessibility group that acts as a marquee.");
616 if (ariaType == "ARIAApplicationStatus")
617 return WEB_UI_STRING("application status", "An ARIA accessibility group that acts as a status update.");
618 if (ariaType == "ARIAApplicationTimer")
619 return WEB_UI_STRING("timer", "An ARIA accessibility group that acts as an updating timer.");
620 if (ariaType == "ARIADocument")
621 return WEB_UI_STRING("document", "An ARIA accessibility group that acts as a document.");
622 if (ariaType == "ARIADocumentArticle")
623 return WEB_UI_STRING("article", "An ARIA accessibility group that acts as an article.");
624 if (ariaType == "ARIADocumentNote")
625 return WEB_UI_STRING("note", "An ARIA accessibility group that acts as a note in a document.");
626 if (ariaType == "ARIADocumentRegion")
627 return WEB_UI_STRING("region", "An ARIA accessibility group that acts as a distinct region in a document.");
628 if (ariaType == "ARIALandmarkApplication")
629 return WEB_UI_STRING("application", "An ARIA accessibility group that acts as an application.");
630 if (ariaType == "ARIALandmarkBanner")
631 return WEB_UI_STRING("banner", "An ARIA accessibility group that acts as a banner.");
632 if (ariaType == "ARIALandmarkComplementary")
633 return WEB_UI_STRING("complementary", "An ARIA accessibility group that acts as a region of complementary information.");
634 if (ariaType == "ARIALandmarkContentInfo")
635 return WEB_UI_STRING("content", "An ARIA accessibility group that contains content.");
636 if (ariaType == "ARIALandmarkMain")
637 return WEB_UI_STRING("main", "An ARIA accessibility group that is the main portion of the website.");
638 if (ariaType == "ARIALandmarkNavigation")
639 return WEB_UI_STRING("navigation", "An ARIA accessibility group that contains the main navigation elements of a website.");
640 if (ariaType == "ARIALandmarkSearch")
641 return WEB_UI_STRING("search", "An ARIA accessibility group that contains a search feature of a website.");
642 if (ariaType == "ARIAUserInterfaceTooltip")
643 return WEB_UI_STRING("tooltip", "An ARIA accessibility group that acts as a tooltip.");
644 if (ariaType == "ARIATabPanel")
645 return WEB_UI_STRING("tab panel", "An ARIA accessibility group that contains the content of a tab.");
646 if (ariaType == "ARIADocumentMath")
647 return WEB_UI_STRING("math", "An ARIA accessibility group that contains mathematical symbols.");
652 String DefaultLocalizationStrategy::AXButtonActionVerb()
654 return WEB_UI_STRING("press", "Verb stating the action that will occur when a button is pressed, as used by accessibility");
657 String DefaultLocalizationStrategy::AXRadioButtonActionVerb()
659 return WEB_UI_STRING("select", "Verb stating the action that will occur when a radio button is clicked, as used by accessibility");
662 String DefaultLocalizationStrategy::AXTextFieldActionVerb()
664 return WEB_UI_STRING("activate", "Verb stating the action that will occur when a text field is selected, as used by accessibility");
667 String DefaultLocalizationStrategy::AXCheckedCheckBoxActionVerb()
669 return WEB_UI_STRING("uncheck", "Verb stating the action that will occur when a checked checkbox is clicked, as used by accessibility");
672 String DefaultLocalizationStrategy::AXUncheckedCheckBoxActionVerb()
674 return WEB_UI_STRING("check", "Verb stating the action that will occur when an unchecked checkbox is clicked, as used by accessibility");
677 String DefaultLocalizationStrategy::AXMenuListActionVerb()
683 String DefaultLocalizationStrategy::AXMenuListPopupActionVerb()
689 String DefaultLocalizationStrategy::AXLinkActionVerb()
691 return WEB_UI_STRING("jump", "Verb stating the action that will occur when a link is clicked, as used by accessibility");
694 String DefaultLocalizationStrategy::missingPluginText()
696 return WEB_UI_STRING("Missing Plug-in", "Label text to be used when a plugin is missing");
699 String DefaultLocalizationStrategy::crashedPluginText()
701 return WEB_UI_STRING("Plug-in Failure", "Label text to be used if plugin host process has crashed");
704 String DefaultLocalizationStrategy::multipleFileUploadText(unsigned numberOfFiles)
706 return formatLocalizedString(WEB_UI_STRING("%d files", "Label to describe the number of files selected in a file upload control that allows multiple files"), numberOfFiles);
709 String DefaultLocalizationStrategy::unknownFileSizeText()
711 return WEB_UI_STRING("Unknown", "Unknown filesize FTP directory listing item");
716 String DefaultLocalizationStrategy::uploadFileText()
722 String DefaultLocalizationStrategy::allFilesText()
732 String DefaultLocalizationStrategy::keygenMenuItem512()
734 return WEB_UI_STRING("512 (Low Grade)", "Menu item title for KEYGEN pop-up menu");
737 String DefaultLocalizationStrategy::keygenMenuItem1024()
739 return WEB_UI_STRING("1024 (Medium Grade)", "Menu item title for KEYGEN pop-up menu");
742 String DefaultLocalizationStrategy::keygenMenuItem2048()
744 return WEB_UI_STRING("2048 (High Grade)", "Menu item title for KEYGEN pop-up menu");
747 String DefaultLocalizationStrategy::keygenKeychainItemName(const String& host)
749 RetainPtr<CFStringRef> hostCFString(AdoptCF, host.createCFString());
750 return formatLocalizedString(WEB_UI_STRING("Key from %@", "Name of keychain key generated by the KEYGEN tag"), hostCFString.get());
755 String DefaultLocalizationStrategy::imageTitle(const String& filename, const IntSize& size)
758 #if !defined(BUILDING_ON_LEOPARD)
759 RetainPtr<CFStringRef> filenameCFString(AdoptCF, filename.createCFString());
760 RetainPtr<CFLocaleRef> locale(AdoptCF, CFLocaleCopyCurrent());
761 RetainPtr<CFNumberFormatterRef> formatter(AdoptCF, CFNumberFormatterCreate(0, locale.get(), kCFNumberFormatterDecimalStyle));
763 int widthInt = size.width();
764 RetainPtr<CFNumberRef> width(AdoptCF, CFNumberCreate(0, kCFNumberIntType, &widthInt));
765 RetainPtr<CFStringRef> widthString(AdoptCF, CFNumberFormatterCreateStringWithNumber(0, formatter.get(), width.get()));
767 int heightInt = size.height();
768 RetainPtr<CFNumberRef> height(AdoptCF, CFNumberCreate(0, kCFNumberIntType, &heightInt));
769 RetainPtr<CFStringRef> heightString(AdoptCF, CFNumberFormatterCreateStringWithNumber(0, formatter.get(), height.get()));
771 return formatLocalizedString(WEB_UI_STRING("%@ %@×%@ pixels", "window title for a standalone image (uses multiplication symbol, not x)"), filenameCFString.get(), widthString.get(), heightString.get());
773 RetainPtr<CFStringRef> filenameCFString(AdoptCF, filename.createCFString());
774 return formatLocalizedString(WEB_UI_STRING("%@ %d×%d pixels", "window title for a standalone image (uses multiplication symbol, not x)"), filenameCFString.get(), size.width(), size.height());
777 return formatLocalizedString(WEB_UI_STRING("<filename> %d×%d pixels", "window title for a standalone image (uses multiplication symbol, not x)"), size.width(), size.height()).replace("<filename>", filename);
781 String DefaultLocalizationStrategy::mediaElementLoadingStateText()
783 return WEB_UI_STRING("Loading...", "Media controller status message when the media is loading");
786 String DefaultLocalizationStrategy::mediaElementLiveBroadcastStateText()
788 return WEB_UI_STRING("Live Broadcast", "Media controller status message when watching a live broadcast");
791 String DefaultLocalizationStrategy::localizedMediaControlElementString(const String& name)
793 if (name == "AudioElement")
794 return WEB_UI_STRING("audio element controller", "accessibility role description for audio element controller");
795 if (name == "VideoElement")
796 return WEB_UI_STRING("video element controller", "accessibility role description for video element controller");
797 if (name == "MuteButton")
798 return WEB_UI_STRING("mute", "accessibility role description for mute button");
799 if (name == "UnMuteButton")
800 return WEB_UI_STRING("unmute", "accessibility role description for turn mute off button");
801 if (name == "PlayButton")
802 return WEB_UI_STRING("play", "accessibility role description for play button");
803 if (name == "PauseButton")
804 return WEB_UI_STRING("pause", "accessibility role description for pause button");
805 if (name == "Slider")
806 return WEB_UI_STRING("movie time", "accessibility role description for timeline slider");
807 if (name == "SliderThumb")
808 return WEB_UI_STRING("timeline slider thumb", "accessibility role description for timeline thumb");
809 if (name == "RewindButton")
810 return WEB_UI_STRING("back 30 seconds", "accessibility role description for seek back 30 seconds button");
811 if (name == "ReturnToRealtimeButton")
812 return WEB_UI_STRING("return to realtime", "accessibility role description for return to real time button");
813 if (name == "CurrentTimeDisplay")
814 return WEB_UI_STRING("elapsed time", "accessibility role description for elapsed time display");
815 if (name == "TimeRemainingDisplay")
816 return WEB_UI_STRING("remaining time", "accessibility role description for time remaining display");
817 if (name == "StatusDisplay")
818 return WEB_UI_STRING("status", "accessibility role description for movie status");
819 if (name == "FullscreenButton")
820 return WEB_UI_STRING("fullscreen", "accessibility role description for enter fullscreen button");
821 if (name == "SeekForwardButton")
822 return WEB_UI_STRING("fast forward", "accessibility role description for fast forward button");
823 if (name == "SeekBackButton")
824 return WEB_UI_STRING("fast reverse", "accessibility role description for fast reverse button");
825 if (name == "ShowClosedCaptionsButton")
826 return WEB_UI_STRING("show closed captions", "accessibility role description for show closed captions button");
827 if (name == "HideClosedCaptionsButton")
828 return WEB_UI_STRING("hide closed captions", "accessibility role description for hide closed captions button");
830 // FIXME: the ControlsPanel container should never be visible in the accessibility hierarchy.
831 if (name == "ControlsPanel")
834 ASSERT_NOT_REACHED();
838 String DefaultLocalizationStrategy::localizedMediaControlElementHelpText(const String& name)
840 if (name == "AudioElement")
841 return WEB_UI_STRING("audio element playback controls and status display", "accessibility role description for audio element controller");
842 if (name == "VideoElement")
843 return WEB_UI_STRING("video element playback controls and status display", "accessibility role description for video element controller");
844 if (name == "MuteButton")
845 return WEB_UI_STRING("mute audio tracks", "accessibility help text for mute button");
846 if (name == "UnMuteButton")
847 return WEB_UI_STRING("unmute audio tracks", "accessibility help text for un mute button");
848 if (name == "PlayButton")
849 return WEB_UI_STRING("begin playback", "accessibility help text for play button");
850 if (name == "PauseButton")
851 return WEB_UI_STRING("pause playback", "accessibility help text for pause button");
852 if (name == "Slider")
853 return WEB_UI_STRING("movie time scrubber", "accessibility help text for timeline slider");
854 if (name == "SliderThumb")
855 return WEB_UI_STRING("movie time scrubber thumb", "accessibility help text for timeline slider thumb");
856 if (name == "RewindButton")
857 return WEB_UI_STRING("seek movie back 30 seconds", "accessibility help text for jump back 30 seconds button");
858 if (name == "ReturnToRealtimeButton")
859 return WEB_UI_STRING("return streaming movie to real time", "accessibility help text for return streaming movie to real time button");
860 if (name == "CurrentTimeDisplay")
861 return WEB_UI_STRING("current movie time in seconds", "accessibility help text for elapsed time display");
862 if (name == "TimeRemainingDisplay")
863 return WEB_UI_STRING("number of seconds of movie remaining", "accessibility help text for remaining time display");
864 if (name == "StatusDisplay")
865 return WEB_UI_STRING("current movie status", "accessibility help text for movie status display");
866 if (name == "SeekBackButton")
867 return WEB_UI_STRING("seek quickly back", "accessibility help text for fast rewind button");
868 if (name == "SeekForwardButton")
869 return WEB_UI_STRING("seek quickly forward", "accessibility help text for fast forward button");
870 if (name == "FullscreenButton")
871 return WEB_UI_STRING("Play movie in fullscreen mode", "accessibility help text for enter fullscreen button");
872 if (name == "ShowClosedCaptionsButton")
873 return WEB_UI_STRING("start displaying closed captions", "accessibility help text for show closed captions button");
874 if (name == "HideClosedCaptionsButton")
875 return WEB_UI_STRING("stop displaying closed captions", "accessibility help text for hide closed captions button");
877 ASSERT_NOT_REACHED();
881 String DefaultLocalizationStrategy::localizedMediaTimeDescription(float time)
884 return WEB_UI_STRING("indefinite time", "accessibility help text for an indefinite media controller time value");
886 int seconds = static_cast<int>(fabsf(time));
887 int days = seconds / (60 * 60 * 24);
888 int hours = seconds / (60 * 60);
889 int minutes = (seconds / 60) % 60;
893 return formatLocalizedString(WEB_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);
895 return formatLocalizedString(WEB_UI_STRING("%1$d hours %2$d minutes %3$d seconds", "accessibility help text for media controller time value >= 60 minutes"), hours, minutes, seconds);
897 return formatLocalizedString(WEB_UI_STRING("%1$d minutes %2$d seconds", "accessibility help text for media controller time value >= 60 seconds"), minutes, seconds);
898 return formatLocalizedString(WEB_UI_STRING("%1$d seconds", "accessibility help text for media controller time value < 60 seconds"), seconds);
901 String DefaultLocalizationStrategy::validationMessageValueMissingText()
903 return WEB_UI_STRING("value missing", "Validation message for required form control elements that have no value");
906 String DefaultLocalizationStrategy::validationMessageTypeMismatchText()
908 return WEB_UI_STRING("type mismatch", "Validation message for input form controls with a value not matching type");
911 String DefaultLocalizationStrategy::validationMessagePatternMismatchText()
913 return WEB_UI_STRING("pattern mismatch", "Validation message for input form controls requiring a constrained value according to pattern");
916 String DefaultLocalizationStrategy::validationMessageTooLongText()
918 return WEB_UI_STRING("too long", "Validation message for form control elements with a value longer than maximum allowed length");
921 String DefaultLocalizationStrategy::validationMessageRangeUnderflowText()
923 return WEB_UI_STRING("range underflow", "Validation message for input form controls with value lower than allowed minimum");
926 String DefaultLocalizationStrategy::validationMessageRangeOverflowText()
928 return WEB_UI_STRING("range overflow", "Validation message for input form controls with value higher than allowed maximum");
931 String DefaultLocalizationStrategy::validationMessageStepMismatchText()
933 return WEB_UI_STRING("step mismatch", "Validation message for input form controls with value not respecting the step attribute");
936 } // namespace WebCore
938 #endif // USE(PLATFORM_STRATEGIES)