1/*
2 * Copyright (C) 2007 Staikos Computing Services Inc. <info@staikos.net>
3 * Copyright (C) 2007 Apple Inc.  All rights reserved.
4 *
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 *    notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 *    notice, this list of conditions and the following disclaimer in the
14 *    documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
20 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
24 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#include "config.h"
30
31#include "IntSize.h"
32#include "LocalizedStrings.h"
33#include "NotImplemented.h"
34#include "PlatformString.h"
35#include <wtf/MathExtras.h>
36
37#include <QCoreApplication>
38#include <QLocale>
39
40namespace WebCore {
41
42String submitButtonDefaultLabel()
43{
44    return QCoreApplication::translate("QWebPage", "Submit", "default label for Submit buttons in forms on web pages");
45}
46
47String inputElementAltText()
48{
49    return QCoreApplication::translate("QWebPage", "Submit", "Submit (input element) alt text for <input> elements with no alt, title, or value");
50}
51
52String resetButtonDefaultLabel()
53{
54    return QCoreApplication::translate("QWebPage", "Reset", "default label for Reset buttons in forms on web pages");
55}
56
57String defaultLanguage()
58{
59    QLocale locale;
60    return locale.name().replace("_", "-");
61}
62
63String searchableIndexIntroduction()
64{
65    return QCoreApplication::translate("QWebPage", "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'");
66}
67
68String fileButtonChooseFileLabel()
69{
70    return QCoreApplication::translate("QWebPage", "Choose File", "title for file button used in HTML forms");
71}
72
73String fileButtonNoFileSelectedLabel()
74{
75    return QCoreApplication::translate("QWebPage", "No file selected", "text to display in file button used in HTML forms when no file is selected");
76}
77
78String contextMenuItemTagOpenLinkInNewWindow()
79{
80    return QCoreApplication::translate("QWebPage", "Open in New Window", "Open in New Window context menu item");
81}
82
83String contextMenuItemTagDownloadLinkToDisk()
84{
85    return QCoreApplication::translate("QWebPage", "Save Link...", "Download Linked File context menu item");
86}
87
88String contextMenuItemTagCopyLinkToClipboard()
89{
90    return QCoreApplication::translate("QWebPage", "Copy Link", "Copy Link context menu item");
91}
92
93String contextMenuItemTagOpenImageInNewWindow()
94{
95    return QCoreApplication::translate("QWebPage", "Open Image", "Open Image in New Window context menu item");
96}
97
98String contextMenuItemTagDownloadImageToDisk()
99{
100    return QCoreApplication::translate("QWebPage", "Save Image", "Download Image context menu item");
101}
102
103String contextMenuItemTagCopyImageToClipboard()
104{
105    return QCoreApplication::translate("QWebPage", "Copy Image", "Copy Link context menu item");
106}
107
108String contextMenuItemTagOpenFrameInNewWindow()
109{
110    return QCoreApplication::translate("QWebPage", "Open Frame", "Open Frame in New Window context menu item");
111}
112
113String contextMenuItemTagCopy()
114{
115    return QCoreApplication::translate("QWebPage", "Copy", "Copy context menu item");
116}
117
118String contextMenuItemTagGoBack()
119{
120    return QCoreApplication::translate("QWebPage", "Go Back", "Back context menu item");
121}
122
123String contextMenuItemTagGoForward()
124{
125    return QCoreApplication::translate("QWebPage", "Go Forward", "Forward context menu item");
126}
127
128String contextMenuItemTagStop()
129{
130    return QCoreApplication::translate("QWebPage", "Stop", "Stop context menu item");
131}
132
133String contextMenuItemTagReload()
134{
135    return QCoreApplication::translate("QWebPage", "Reload", "Reload context menu item");
136}
137
138String contextMenuItemTagCut()
139{
140    return QCoreApplication::translate("QWebPage", "Cut", "Cut context menu item");
141}
142
143String contextMenuItemTagPaste()
144{
145    return QCoreApplication::translate("QWebPage", "Paste", "Paste context menu item");
146}
147
148String contextMenuItemTagNoGuessesFound()
149{
150    return QCoreApplication::translate("QWebPage", "No Guesses Found", "No Guesses Found context menu item");
151}
152
153String contextMenuItemTagIgnoreSpelling()
154{
155    return QCoreApplication::translate("QWebPage", "Ignore", "Ignore Spelling context menu item");
156}
157
158String contextMenuItemTagLearnSpelling()
159{
160    return QCoreApplication::translate("QWebPage", "Add To Dictionary", "Learn Spelling context menu item");
161}
162
163String contextMenuItemTagSearchWeb()
164{
165    return QCoreApplication::translate("QWebPage", "Search The Web", "Search The Web context menu item");
166}
167
168String contextMenuItemTagLookUpInDictionary()
169{
170    return QCoreApplication::translate("QWebPage", "Look Up In Dictionary", "Look Up in Dictionary context menu item");
171}
172
173String contextMenuItemTagOpenLink()
174{
175    return QCoreApplication::translate("QWebPage", "Open Link", "Open Link context menu item");
176}
177
178String contextMenuItemTagIgnoreGrammar()
179{
180    return QCoreApplication::translate("QWebPage", "Ignore", "Ignore Grammar context menu item");
181}
182
183String contextMenuItemTagSpellingMenu()
184{
185    return QCoreApplication::translate("QWebPage", "Spelling", "Spelling and Grammar context sub-menu item");
186}
187
188String contextMenuItemTagShowSpellingPanel(bool show)
189{
190    return show ? QCoreApplication::translate("QWebPage", "Show Spelling and Grammar", "menu item title") :
191                  QCoreApplication::translate("QWebPage", "Hide Spelling and Grammar", "menu item title");
192}
193
194String contextMenuItemTagCheckSpelling()
195{
196    return QCoreApplication::translate("QWebPage", "Check Spelling", "Check spelling context menu item");
197}
198
199String contextMenuItemTagCheckSpellingWhileTyping()
200{
201    return QCoreApplication::translate("QWebPage", "Check Spelling While Typing", "Check spelling while typing context menu item");
202}
203
204String contextMenuItemTagCheckGrammarWithSpelling()
205{
206    return QCoreApplication::translate("QWebPage", "Check Grammar With Spelling", "Check grammar with spelling context menu item");
207}
208
209String contextMenuItemTagFontMenu()
210{
211    return QCoreApplication::translate("QWebPage", "Fonts", "Font context sub-menu item");
212}
213
214String contextMenuItemTagBold()
215{
216    return QCoreApplication::translate("QWebPage", "Bold", "Bold context menu item");
217}
218
219String contextMenuItemTagItalic()
220{
221    return QCoreApplication::translate("QWebPage", "Italic", "Italic context menu item");
222}
223
224String contextMenuItemTagUnderline()
225{
226    return QCoreApplication::translate("QWebPage", "Underline", "Underline context menu item");
227}
228
229String contextMenuItemTagOutline()
230{
231    return QCoreApplication::translate("QWebPage", "Outline", "Outline context menu item");
232}
233
234String contextMenuItemTagWritingDirectionMenu()
235{
236    return QCoreApplication::translate("QWebPage", "Direction", "Writing direction context sub-menu item");
237}
238
239String contextMenuItemTagTextDirectionMenu()
240{
241    return QCoreApplication::translate("QWebPage", "Text Direction", "Text direction context sub-menu item");
242}
243
244String contextMenuItemTagDefaultDirection()
245{
246    return QCoreApplication::translate("QWebPage", "Default", "Default writing direction context menu item");
247}
248
249String contextMenuItemTagLeftToRight()
250{
251    return QCoreApplication::translate("QWebPage", "Left to Right", "Left to Right context menu item");
252}
253
254String contextMenuItemTagRightToLeft()
255{
256    return QCoreApplication::translate("QWebPage", "Right to Left", "Right to Left context menu item");
257}
258
259String contextMenuItemTagInspectElement()
260{
261    return QCoreApplication::translate("QWebPage", "Inspect", "Inspect Element context menu item");
262}
263
264String searchMenuNoRecentSearchesText()
265{
266    return QCoreApplication::translate("QWebPage", "No recent searches", "Label for only item in menu that appears when clicking on the search field image, when no searches have been performed");
267}
268
269String searchMenuRecentSearchesText()
270{
271    return QCoreApplication::translate("QWebPage", "Recent searches", "label for first item in the menu that appears when clicking on the search field image, used as embedded menu title");
272}
273
274String searchMenuClearRecentSearchesText()
275{
276    return QCoreApplication::translate("QWebPage", "Clear recent searches", "menu item in Recent Searches menu that empties menu's contents");
277}
278
279String AXWebAreaText()
280{
281    return String();
282}
283
284String AXLinkText()
285{
286    return String();
287}
288
289String AXListMarkerText()
290{
291    return String();
292}
293
294String AXImageMapText()
295{
296    return String();
297}
298
299String AXHeadingText()
300{
301    return String();
302}
303
304String AXDefinitionListTermText()
305{
306    return String();
307}
308
309String AXDefinitionListDefinitionText()
310{
311    return String();
312}
313
314String AXButtonActionVerb()
315{
316    return String();
317}
318
319String AXRadioButtonActionVerb()
320{
321    return String();
322}
323
324String AXTextFieldActionVerb()
325{
326    return String();
327}
328
329String AXCheckedCheckBoxActionVerb()
330{
331    return String();
332}
333
334String AXUncheckedCheckBoxActionVerb()
335{
336    return String();
337}
338
339String AXLinkActionVerb()
340{
341    return String();
342}
343
344String AXMenuListPopupActionVerb()
345{
346    return String();
347}
348
349String AXMenuListActionVerb()
350{
351    return String();
352}
353
354String multipleFileUploadText(unsigned)
355{
356    return String();
357}
358
359String unknownFileSizeText()
360{
361    return QCoreApplication::translate("QWebPage", "Unknown", "Unknown filesize FTP directory listing item");
362}
363
364String imageTitle(const String& filename, const IntSize& size)
365{
366    return QCoreApplication::translate("QWebPage", "%1 (%2x%3 pixels)", "Title string for images").arg(filename).arg(size.width()).arg(size.height());
367}
368
369String mediaElementLoadingStateText()
370{
371    return QCoreApplication::translate("QWebPage", "Loading...", "Media controller status message when the media is loading");
372}
373
374String mediaElementLiveBroadcastStateText()
375{
376    return QCoreApplication::translate("QWebPage", "Live Broadcast", "Media controller status message when watching a live broadcast");
377}
378
379#if ENABLE(VIDEO)
380
381String localizedMediaControlElementString(const String& name)
382{
383    if (name == "AudioElement")
384        return QCoreApplication::translate("QWebPage", "Audio Element", "Media controller element");
385    if (name == "VideoElement")
386        return QCoreApplication::translate("QWebPage", "Video Element", "Media controller element");
387    if (name == "MuteButton")
388        return QCoreApplication::translate("QWebPage", "Mute Button", "Media controller element");
389    if (name == "UnMuteButton")
390        return QCoreApplication::translate("QWebPage", "Unmute Button", "Media controller element");
391    if (name == "PlayButton")
392        return QCoreApplication::translate("QWebPage", "Play Button", "Media controller element");
393    if (name == "PauseButton")
394        return QCoreApplication::translate("QWebPage", "Pause Button", "Media controller element");
395    if (name == "Slider")
396        return QCoreApplication::translate("QWebPage", "Slider", "Media controller element");
397    if (name == "SliderThumb")
398        return QCoreApplication::translate("QWebPage", "Slider Thumb", "Media controller element");
399    if (name == "RewindButton")
400        return QCoreApplication::translate("QWebPage", "Rewind Button", "Media controller element");
401    if (name == "ReturnToRealtimeButton")
402        return QCoreApplication::translate("QWebPage", "Return to Real-time Button", "Media controller element");
403    if (name == "CurrentTimeDisplay")
404        return QCoreApplication::translate("QWebPage", "Elapsed Time", "Media controller element");
405    if (name == "TimeRemainingDisplay")
406        return QCoreApplication::translate("QWebPage", "Remaining Time", "Media controller element");
407    if (name == "StatusDisplay")
408        return QCoreApplication::translate("QWebPage", "Status Display", "Media controller element");
409    if (name == "FullscreenButton")
410        return QCoreApplication::translate("QWebPage", "Fullscreen Button", "Media controller element");
411    if (name == "SeekForwardButton")
412        return QCoreApplication::translate("QWebPage", "Seek Forward Button", "Media controller element");
413    if (name == "SeekBackButton")
414        return QCoreApplication::translate("QWebPage", "Seek Back Button", "Media controller element");
415
416    return String();
417}
418
419String localizedMediaControlElementHelpText(const String& name)
420{
421    if (name == "AudioElement")
422        return QCoreApplication::translate("QWebPage", "Audio element playback controls and status display", "Media controller element");
423    if (name == "VideoElement")
424        return QCoreApplication::translate("QWebPage", "Video element playback controls and status display", "Media controller element");
425    if (name == "MuteButton")
426        return QCoreApplication::translate("QWebPage", "Mute audio tracks", "Media controller element");
427    if (name == "UnMuteButton")
428        return QCoreApplication::translate("QWebPage", "Unmute audio tracks", "Media controller element");
429    if (name == "PlayButton")
430        return QCoreApplication::translate("QWebPage", "Begin playback", "Media controller element");
431    if (name == "PauseButton")
432        return QCoreApplication::translate("QWebPage", "Pause playback", "Media controller element");
433    if (name == "Slider")
434        return QCoreApplication::translate("QWebPage", "Movie time scrubber", "Media controller element");
435    if (name == "SliderThumb")
436        return QCoreApplication::translate("QWebPage", "Movie time scrubber thumb", "Media controller element");
437    if (name == "RewindButton")
438        return QCoreApplication::translate("QWebPage", "Rewind movie", "Media controller element");
439    if (name == "ReturnToRealtimeButton")
440        return QCoreApplication::translate("QWebPage", "Return streaming movie to real-time", "Media controller element");
441    if (name == "CurrentTimeDisplay")
442        return QCoreApplication::translate("QWebPage", "Current movie time", "Media controller element");
443    if (name == "TimeRemainingDisplay")
444        return QCoreApplication::translate("QWebPage", "Remaining movie time", "Media controller element");
445    if (name == "StatusDisplay")
446        return QCoreApplication::translate("QWebPage", "Current movie status", "Media controller element");
447    if (name == "FullscreenButton")
448        return QCoreApplication::translate("QWebPage", "Play movie in full-screen mode", "Media controller element");
449    if (name == "SeekForwardButton")
450        return QCoreApplication::translate("QWebPage", "Seek quickly back", "Media controller element");
451    if (name == "SeekBackButton")
452        return QCoreApplication::translate("QWebPage", "Seek quickly forward", "Media controller element");
453
454    ASSERT_NOT_REACHED();
455    return String();
456}
457
458String localizedMediaTimeDescription(float time)
459{
460    if (!isfinite(time))
461        return QCoreApplication::translate("QWebPage", "Indefinite time", "Media time description");
462
463    int seconds = (int)fabsf(time);
464    int days = seconds / (60 * 60 * 24);
465    int hours = seconds / (60 * 60);
466    int minutes = (seconds / 60) % 60;
467    seconds %= 60;
468
469    if (days) {
470        return QCoreApplication::translate("QWebPage", "%1 days %2 hours %3 minutes %4 seconds", "Media time description").arg(days).arg(hours).arg(minutes).arg(seconds);
471    }
472
473    if (hours) {
474        return QCoreApplication::translate("QWebPage", "%1 hours %2 minutes %3 seconds", "Media time description").arg(hours).arg(minutes).arg(seconds);
475    }
476
477    if (minutes) {
478        return QCoreApplication::translate("QWebPage", "%1 minutes %2 seconds", "Media time description").arg(minutes).arg(seconds);
479    }
480
481    return QCoreApplication::translate("QWebPage", "%1 seconds", "Media time description").arg(seconds);
482}
483#endif  // ENABLE(VIDEO)
484
485String validationMessageValueMissingText()
486{
487    notImplemented();
488    return String();
489}
490
491String validationMessageTypeMismatchText()
492{
493    notImplemented();
494    return String();
495}
496
497String validationMessagePatternMismatchText()
498{
499    notImplemented();
500    return String();
501}
502
503String validationMessageTooLongText()
504{
505    notImplemented();
506    return String();
507}
508
509String validationMessageRangeUnderflowText()
510{
511    notImplemented();
512    return String();
513}
514
515String validationMessageRangeOverflowText()
516{
517    notImplemented();
518    return String();
519}
520
521String validationMessageStepMismatchText()
522{
523    notImplemented();
524    return String();
525}
526
527}
528// vim: ts=4 sw=4 et
529