Unreviewed, rolling out r184645.
[WebKit-https.git] / Source / WebCore / platform / gtk / LocalizedStringsGtk.cpp
1 /*
2  * Copyright (C) 2006, 2007 Apple Inc.  All rights reserved.
3  * Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com
4  * Copyright (C) 2007 Holger Hans Peter Freyther
5  * Copyright (C) 2008 Christian Dywan <christian@imendio.com>
6  * Copyright (C) 2008 Nuanti Ltd.
7  * Copyright (C) 2010 Igalia S.L
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the distribution.
17  *
18  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
19  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
22  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
26  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 #include "config.h"
32 #include "LocalizedStrings.h"
33
34 #include "IntSize.h"
35 #include "NotImplemented.h"
36 #include <glib/gi18n-lib.h>
37 #include <gtk/gtk.h>
38 #include <wtf/MathExtras.h>
39 #include <wtf/gobject/GUniquePtr.h>
40 #include <wtf/text/CString.h>
41 #include <wtf/text/WTFString.h>
42
43 namespace WebCore {
44
45 static const char* gtkStockLabel(const char* stockID)
46 {
47     GtkStockItem item;
48     if (!gtk_stock_lookup(stockID, &item))
49         return stockID;
50     return item.label;
51 }
52
53 String submitButtonDefaultLabel()
54 {
55     return String::fromUTF8(_("Submit"));
56 }
57
58 String inputElementAltText()
59 {
60     return String::fromUTF8(_("Submit"));
61 }
62
63 String resetButtonDefaultLabel()
64 {
65     return String::fromUTF8(_("Reset"));
66 }
67
68 String defaultDetailsSummaryText()
69 {
70     return String::fromUTF8(_("Details"));
71 }
72
73 String searchableIndexIntroduction()
74 {
75     return String::fromUTF8(_("This is a searchable index. Enter search keywords: "));
76 }
77
78 String fileButtonChooseFileLabel()
79 {
80     return String::fromUTF8(_("Choose File"));
81 }
82
83 String fileButtonChooseMultipleFilesLabel()
84 {
85     return String::fromUTF8(_("Choose Files"));
86 }
87
88 String fileButtonNoFileSelectedLabel()
89 {
90     return String::fromUTF8(_("(None)"));
91 }
92
93 String fileButtonNoFilesSelectedLabel()
94 {
95     return String::fromUTF8(_("(None)"));
96 }
97
98 String contextMenuItemTagOpenLinkInNewWindow()
99 {
100     return String::fromUTF8(_("Open Link in New _Window"));
101 }
102
103 String contextMenuItemTagDownloadLinkToDisk()
104 {
105     return String::fromUTF8(_("_Download Linked File"));
106 }
107
108 String contextMenuItemTagCopyLinkToClipboard()
109 {
110     return String::fromUTF8(_("Copy Link Loc_ation"));
111 }
112
113 String contextMenuItemTagOpenImageInNewWindow()
114 {
115     return String::fromUTF8(_("Open _Image in New Window"));
116 }
117
118 String contextMenuItemTagDownloadImageToDisk()
119 {
120     return String::fromUTF8(_("Sa_ve Image As"));
121 }
122
123 String contextMenuItemTagCopyImageToClipboard()
124 {
125     return String::fromUTF8(_("Cop_y Image"));
126 }
127
128 String contextMenuItemTagCopyImageUrlToClipboard()
129 {
130     return String::fromUTF8(_("Copy Image _Address"));
131 }
132
133 String contextMenuItemTagOpenVideoInNewWindow()
134 {
135     return String::fromUTF8(_("Open _Video in New Window"));
136 }
137
138 String contextMenuItemTagOpenAudioInNewWindow()
139 {
140     return String::fromUTF8(_("Open _Audio in New Window"));
141 }
142
143 String contextMenuItemTagDownloadVideoToDisk()
144 {
145     return String::fromUTF8(_("Download _Video"));
146 }
147
148 String contextMenuItemTagDownloadAudioToDisk()
149 {
150     return String::fromUTF8(_("Download _Audio"));
151 }
152
153 String contextMenuItemTagCopyVideoLinkToClipboard()
154 {
155     return String::fromUTF8(_("Cop_y Video Link Location"));
156 }
157
158 String contextMenuItemTagCopyAudioLinkToClipboard()
159 {
160     return String::fromUTF8(_("Cop_y Audio Link Location"));
161 }
162
163 String contextMenuItemTagToggleMediaControls()
164 {
165     return String::fromUTF8(_("_Toggle Media Controls"));
166 }
167
168 String contextMenuItemTagShowMediaControls()
169 {
170     return String::fromUTF8(_("_Show Media Controls"));
171 }
172
173 String contextMenuItemTagHideMediaControls()
174 {
175     return String::fromUTF8(_("_Hide Media Controls"));
176 }
177
178 String contextMenuItemTagToggleMediaLoop()
179 {
180     return String::fromUTF8(_("Toggle Media _Loop Playback"));
181 }
182
183 String contextMenuItemTagEnterVideoFullscreen()
184 {
185     return String::fromUTF8(_("Switch Video to _Fullscreen"));
186 }
187
188 String contextMenuItemTagMediaPlay()
189 {
190     return String::fromUTF8(_("_Play"));
191 }
192
193 String contextMenuItemTagMediaPause()
194 {
195     return String::fromUTF8(_("_Pause"));
196 }
197
198 String contextMenuItemTagMediaMute()
199 {
200     return String::fromUTF8(_("_Mute"));
201 }
202
203 String contextMenuItemTagOpenFrameInNewWindow()
204 {
205     return String::fromUTF8(_("Open _Frame in New Window"));
206 }
207
208 String contextMenuItemTagCopy()
209 {
210     static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_COPY));
211     return stockLabel;
212 }
213
214 String contextMenuItemTagDelete()
215 {
216     static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_DELETE));
217     return stockLabel;
218 }
219
220 String contextMenuItemTagSelectAll()
221 {
222     static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_SELECT_ALL));
223     return stockLabel;
224 }
225
226 String contextMenuItemTagUnicode()
227 {
228     return String::fromUTF8(_("_Insert Unicode Control Character"));
229 }
230
231 String contextMenuItemTagInputMethods()
232 {
233     return String::fromUTF8(_("Input _Methods"));
234 }
235
236 String contextMenuItemTagGoBack()
237 {
238     static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_GO_BACK));
239     return stockLabel;
240 }
241
242 String contextMenuItemTagGoForward()
243 {
244     static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_GO_FORWARD));
245     return stockLabel;
246 }
247
248 String contextMenuItemTagStop()
249 {
250     static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_STOP));
251     return stockLabel;
252 }
253
254 String contextMenuItemTagReload()
255 {
256     return String::fromUTF8(_("_Reload"));
257 }
258
259 String contextMenuItemTagCut()
260 {
261     static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_CUT));
262     return stockLabel;
263 }
264
265 String contextMenuItemTagPaste()
266 {
267     static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_PASTE));
268     return stockLabel;
269 }
270
271 String contextMenuItemTagNoGuessesFound()
272 {
273     return String::fromUTF8(_("No Guesses Found"));
274 }
275
276 String contextMenuItemTagIgnoreSpelling()
277 {
278     return String::fromUTF8(_("_Ignore Spelling"));
279 }
280
281 String contextMenuItemTagLearnSpelling()
282 {
283     return String::fromUTF8(_("_Learn Spelling"));
284 }
285
286 String contextMenuItemTagSearchWeb()
287 {
288     return String::fromUTF8(_("_Search the Web"));
289 }
290
291 String contextMenuItemTagLookUpInDictionary(const String&)
292 {
293     return String::fromUTF8(_("_Look Up in Dictionary"));
294 }
295
296 String contextMenuItemTagOpenLink()
297 {
298     return String::fromUTF8(_("_Open Link"));
299 }
300
301 String contextMenuItemTagIgnoreGrammar()
302 {
303     return String::fromUTF8(_("Ignore _Grammar"));
304 }
305
306 String contextMenuItemTagSpellingMenu()
307 {
308     return String::fromUTF8(_("Spelling and _Grammar"));
309 }
310
311 String contextMenuItemTagShowSpellingPanel(bool show)
312 {
313     return String::fromUTF8(show ? _("_Show Spelling and Grammar") : _("_Hide Spelling and Grammar"));
314 }
315
316 String contextMenuItemTagCheckSpelling()
317 {
318     return String::fromUTF8(_("_Check Document Now"));
319 }
320
321 String contextMenuItemTagCheckSpellingWhileTyping()
322 {
323     return String::fromUTF8(_("Check Spelling While _Typing"));
324 }
325
326 String contextMenuItemTagCheckGrammarWithSpelling()
327 {
328     return String::fromUTF8(_("Check _Grammar With Spelling"));
329 }
330
331 String contextMenuItemTagFontMenu()
332 {
333     return String::fromUTF8(_("_Font"));
334 }
335
336 String contextMenuItemTagBold()
337 {
338     static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_BOLD));
339     return stockLabel;
340 }
341
342 String contextMenuItemTagItalic()
343 {
344     static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_ITALIC));
345     return stockLabel;
346 }
347
348 String contextMenuItemTagUnderline()
349 {
350     static String stockLabel = String::fromUTF8(gtkStockLabel(GTK_STOCK_UNDERLINE));
351     return stockLabel;
352 }
353
354 String contextMenuItemTagOutline()
355 {
356     return String::fromUTF8(_("_Outline"));
357 }
358
359 String contextMenuItemTagInspectElement()
360 {
361     return String::fromUTF8(_("Inspect _Element"));
362 }
363
364 String contextMenuItemTagUnicodeInsertLRMMark()
365 {
366     return String::fromUTF8(_("LRM _Left-to-right mark"));
367 }
368
369 String contextMenuItemTagUnicodeInsertRLMMark()
370 {
371     return String::fromUTF8(_("RLM _Right-to-left mark"));
372 }
373
374 String contextMenuItemTagUnicodeInsertLREMark()
375 {
376     return String::fromUTF8(_("LRE Left-to-right _embedding"));
377 }
378
379 String contextMenuItemTagUnicodeInsertRLEMark()
380 {
381     return String::fromUTF8(_("RLE Right-to-left e_mbedding"));
382 }
383
384 String contextMenuItemTagUnicodeInsertLROMark()
385 {
386     return String::fromUTF8(_("LRO Left-to-right _override"));
387 }
388
389 String contextMenuItemTagUnicodeInsertRLOMark()
390 {
391     return String::fromUTF8(_("RLO Right-to-left o_verride"));
392 }
393
394 String contextMenuItemTagUnicodeInsertPDFMark()
395 {
396     return String::fromUTF8(_("PDF _Pop directional formatting"));
397 }
398
399 String contextMenuItemTagUnicodeInsertZWSMark()
400 {
401     return String::fromUTF8(_("ZWS _Zero width space"));
402 }
403
404 String contextMenuItemTagUnicodeInsertZWJMark()
405 {
406     return String::fromUTF8(_("ZWJ Zero width _joiner"));
407 }
408
409 String contextMenuItemTagUnicodeInsertZWNJMark()
410 {
411     return String::fromUTF8(_("ZWNJ Zero width _non-joiner"));
412 }
413
414 String searchMenuNoRecentSearchesText()
415 {
416     return String::fromUTF8(_("No recent searches"));
417 }
418
419 String searchMenuRecentSearchesText()
420 {
421     return String::fromUTF8(_("Recent searches"));
422 }
423
424 String searchMenuClearRecentSearchesText()
425 {
426     return String::fromUTF8(_("_Clear recent searches"));
427 }
428
429 String AXDefinitionText()
430 {
431     return String::fromUTF8(_("definition"));
432 }
433
434 String AXDescriptionListText()
435 {
436     return String::fromUTF8(_("description list"));
437 }
438
439 String AXDescriptionListTermText()
440 {
441     return String::fromUTF8(_("term"));
442 }
443
444 String AXDescriptionListDetailText()
445 {
446     return String::fromUTF8(_("description"));
447 }
448
449 String AXFooterRoleDescriptionText()
450 {
451     return String::fromUTF8(_("footer"));
452 }
453
454 String AXSearchFieldCancelButtonText()
455 {
456     return String::fromUTF8(_("cancel"));
457 }
458
459 String AXButtonActionVerb()
460 {
461     return String::fromUTF8(_("press"));
462 }
463
464 String AXRadioButtonActionVerb()
465 {
466     return String::fromUTF8(_("select"));
467 }
468
469 String AXTextFieldActionVerb()
470 {
471     return String::fromUTF8(_("activate"));
472 }
473
474 String AXCheckedCheckBoxActionVerb()
475 {
476     return String::fromUTF8(_("uncheck"));
477 }
478
479 String AXUncheckedCheckBoxActionVerb()
480 {
481     return String::fromUTF8(_("check"));
482 }
483
484 String AXLinkActionVerb()
485 {
486     return String::fromUTF8(_("jump"));
487 }
488
489 String AXMenuListPopupActionVerb()
490 {
491     return String();
492 }
493
494 String AXMenuListActionVerb()
495 {
496     return String();
497 }
498
499 String AXListItemActionVerb()
500 {
501     return String();
502 }
503     
504 String missingPluginText()
505 {
506     return String::fromUTF8(_("Missing Plug-in"));
507 }
508
509 String crashedPluginText()
510 {
511     notImplemented();
512     return String::fromUTF8(_("Plug-in Failure"));
513 }
514
515 String blockedPluginByContentSecurityPolicyText()
516 {
517     notImplemented();
518     return String();
519 }
520
521 String insecurePluginVersionText()
522 {
523     notImplemented();
524     return String();
525 }
526
527 String inactivePluginText()
528 {
529     notImplemented();
530     return String();
531 }
532
533 String multipleFileUploadText(unsigned numberOfFiles)
534 {
535     // FIXME: If this file gets localized, this should really be localized as one string with a wildcard for the number.
536     return String::number(numberOfFiles) + String::fromUTF8(_(" files"));
537 }
538
539 String unknownFileSizeText()
540 {
541     return String::fromUTF8(_("Unknown"));
542 }
543
544 String imageTitle(const String& filename, const IntSize& size)
545 {
546     GUniquePtr<gchar> string(g_strdup_printf(C_("Title string for images", "%s  (%dx%d pixels)"),
547         filename.utf8().data(), size.width(), size.height()));
548
549     return String::fromUTF8(string.get());
550 }
551
552
553 #if ENABLE(VIDEO)
554
555 String mediaElementLoadingStateText()
556 {
557     return String::fromUTF8(_("Loading..."));
558 }
559
560 String mediaElementLiveBroadcastStateText()
561 {
562     return String::fromUTF8(_("Live Broadcast"));
563 }
564
565 String localizedMediaControlElementString(const String& name)
566 {
567     if (name == "AudioElement")
568         return String::fromUTF8(_("audio playback"));
569     if (name == "VideoElement")
570         return String::fromUTF8(_("video playback"));
571     if (name == "MuteButton")
572         return String::fromUTF8(_("mute"));
573     if (name == "UnMuteButton")
574         return String::fromUTF8(_("unmute"));
575     if (name == "PlayButton")
576         return String::fromUTF8(_("play"));
577     if (name == "PauseButton")
578         return String::fromUTF8(_("pause"));
579     if (name == "Slider")
580         return String::fromUTF8(_("movie time"));
581     if (name == "SliderThumb")
582         return String::fromUTF8(_("timeline slider thumb"));
583     if (name == "RewindButton")
584         return String::fromUTF8(_("back 30 seconds"));
585     if (name == "ReturnToRealtimeButton")
586         return String::fromUTF8(_("return to realtime"));
587     if (name == "CurrentTimeDisplay")
588         return String::fromUTF8(_("elapsed time"));
589     if (name == "TimeRemainingDisplay")
590         return String::fromUTF8(_("remaining time"));
591     if (name == "StatusDisplay")
592         return String::fromUTF8(_("status"));
593     if (name == "EnterFullscreenButton")
594         return String::fromUTF8(_("enter fullscreen"));
595     if (name == "ExitFullscreenButton")
596         return String::fromUTF8(_("exit fullscreen"));
597     if (name == "SeekForwardButton")
598         return String::fromUTF8(_("fast forward"));
599     if (name == "SeekBackButton")
600         return String::fromUTF8(_("fast reverse"));
601     if (name == "ShowClosedCaptionsButton")
602         return String::fromUTF8(_("show closed captions"));
603     if (name == "HideClosedCaptionsButton")
604         return String::fromUTF8(_("hide closed captions"));
605     if (name == "ControlsPanel")
606         return String::fromUTF8(_("media controls"));
607
608     ASSERT_NOT_REACHED();
609     return String();
610 }
611
612 String localizedMediaControlElementHelpText(const String& name)
613 {
614     if (name == "AudioElement")
615         return String::fromUTF8(_("audio element playback controls and status display"));
616     if (name == "VideoElement")
617         return String::fromUTF8(_("video element playback controls and status display"));
618     if (name == "MuteButton")
619         return String::fromUTF8(_("mute audio tracks"));
620     if (name == "UnMuteButton")
621         return String::fromUTF8(_("unmute audio tracks"));
622     if (name == "PlayButton")
623         return String::fromUTF8(_("begin playback"));
624     if (name == "PauseButton")
625         return String::fromUTF8(_("pause playback"));
626     if (name == "Slider")
627         return String::fromUTF8(_("movie time scrubber"));
628     if (name == "SliderThumb")
629         return String::fromUTF8(_("movie time scrubber thumb"));
630     if (name == "RewindButton")
631         return String::fromUTF8(_("seek movie back 30 seconds"));
632     if (name == "ReturnToRealtimeButton")
633         return String::fromUTF8(_("return streaming movie to real time"));
634     if (name == "CurrentTimeDisplay")
635         return String::fromUTF8(_("current movie time in seconds"));
636     if (name == "TimeRemainingDisplay")
637         return String::fromUTF8(_("number of seconds of movie remaining"));
638     if (name == "StatusDisplay")
639         return String::fromUTF8(_("current movie status"));
640     if (name == "SeekBackButton")
641         return String::fromUTF8(_("seek quickly back"));
642     if (name == "SeekForwardButton")
643         return String::fromUTF8(_("seek quickly forward"));
644     if (name == "EnterFullscreenButton")
645         return String::fromUTF8(_("Play movie in fullscreen mode"));
646     if (name == "EnterFullscreenButton")
647         return String::fromUTF8(_("Exit fullscreen mode"));
648     if (name == "ShowClosedCaptionsButton")
649         return String::fromUTF8(_("start displaying closed captions"));
650     if (name == "HideClosedCaptionsButton")
651         return String::fromUTF8(_("stop displaying closed captions"));
652
653     ASSERT_NOT_REACHED();
654     return String();
655 }
656
657 String localizedMediaTimeDescription(float time)
658 {
659     if (!std::isfinite(time))
660         return String::fromUTF8(_("indefinite time"));
661
662     int seconds = static_cast<int>(abs(time));
663     int days = seconds / (60 * 60 * 24);
664     int hours = seconds / (60 * 60);
665     int minutes = (seconds / 60) % 60;
666     seconds %= 60;
667
668     if (days) {
669         GUniquePtr<gchar> string(g_strdup_printf("%d days %d hours %d minutes %d seconds", days, hours, minutes, seconds));
670         return String::fromUTF8(string.get());
671     }
672
673     if (hours) {
674         GUniquePtr<gchar> string(g_strdup_printf("%d hours %d minutes %d seconds", hours, minutes, seconds));
675         return String::fromUTF8(string.get());
676     }
677
678     if (minutes) {
679         GUniquePtr<gchar> string(g_strdup_printf("%d minutes %d seconds", minutes, seconds));
680         return String::fromUTF8(string.get());
681     }
682
683     GUniquePtr<gchar> string(g_strdup_printf("%d seconds", seconds));
684     return String::fromUTF8(string.get());
685 }
686 #endif  // ENABLE(VIDEO)
687
688 String validationMessageValueMissingText()
689 {
690     return String::fromUTF8(_("value missing"));
691 }
692
693 String validationMessageValueMissingForCheckboxText()
694 {
695     notImplemented();
696     return validationMessageValueMissingText();
697 }
698
699 String validationMessageValueMissingForFileText()
700 {
701     notImplemented();
702     return validationMessageValueMissingText();
703 }
704
705 String validationMessageValueMissingForMultipleFileText()
706 {
707     notImplemented();
708     return validationMessageValueMissingText();
709 }
710
711 String validationMessageValueMissingForRadioText()
712 {
713     notImplemented();
714     return validationMessageValueMissingText();
715 }
716
717 String validationMessageValueMissingForSelectText()
718 {
719     notImplemented();
720     return validationMessageValueMissingText();
721 }
722
723 String validationMessageTypeMismatchText()
724 {
725     notImplemented();
726     return String::fromUTF8(_("type mismatch"));
727 }
728
729 String validationMessageTypeMismatchForEmailText()
730 {
731     notImplemented();
732     return validationMessageTypeMismatchText();
733 }
734
735 String validationMessageTypeMismatchForMultipleEmailText()
736 {
737     notImplemented();
738     return validationMessageTypeMismatchText();
739 }
740
741 String validationMessageTypeMismatchForURLText()
742 {
743     notImplemented();
744     return validationMessageTypeMismatchText();
745 }
746
747 String validationMessagePatternMismatchText()
748 {
749     return String::fromUTF8(_("pattern mismatch"));
750 }
751
752 String validationMessageTooLongText(int, int)
753 {
754     return String::fromUTF8(_("too long"));
755 }
756
757 String validationMessageRangeUnderflowText(const String&)
758 {
759     return String::fromUTF8(_("range underflow"));
760 }
761
762 String validationMessageRangeOverflowText(const String&)
763 {
764     return String::fromUTF8(_("range overflow"));
765 }
766
767 String validationMessageStepMismatchText(const String&, const String&)
768 {
769     return String::fromUTF8(_("step mismatch"));
770 }
771
772 String unacceptableTLSCertificate()
773 {
774     return String::fromUTF8(_("Unacceptable TLS certificate"));
775 }
776
777 String localizedString(const char* key)
778 {
779     return String::fromUTF8(key, strlen(key));
780 }
781
782 String validationMessageBadInputForNumberText()
783 {
784     notImplemented();
785     return validationMessageTypeMismatchText();
786 }
787
788 #if ENABLE(VIDEO_TRACK)
789 String textTrackClosedCaptionsText()
790 {
791     return String::fromUTF8(C_("Closed Captions", "Menu section heading for closed captions"));
792 }
793
794 String textTrackSubtitlesText()
795 {
796     return String::fromUTF8(C_("Menu section heading for subtitles", "Subtitles"));
797 }
798
799 String textTrackOffMenuItemText()
800 {
801     return String::fromUTF8(C_("Menu item label for the track that represents disabling closed captions", "Off"));
802 }
803
804 String textTrackAutomaticMenuItemText()
805 {
806     return String::fromUTF8(C_("Menu item label for the automatically choosen track", "Auto"));
807 }
808
809 String textTrackNoLabelText()
810 {
811     return String::fromUTF8(C_("Menu item label for a closed captions track that has no other name", "No label"));
812 }
813
814 String audioTrackNoLabelText()
815 {
816     return String::fromUTF8(C_("Menu item label for an audio track that has no other name", "No label"));
817 }
818 #endif
819
820 String snapshottedPlugInLabelTitle()
821 {
822     return String::fromUTF8(C_("Snapshotted Plug-In", "Title of the label to show on a snapshotted plug-in"));
823 }
824
825 String snapshottedPlugInLabelSubtitle()
826 {
827     return String::fromUTF8(C_("Click to restart", "Subtitle of the label to show on a snapshotted plug-in"));
828 }
829
830 }