Unverified Commit 3f34b480 authored by LouiseHsu's avatar LouiseHsu Committed by GitHub

[Framework] Add Share to selection controls (#132599)

In native iOS, users are able to select text and initiate a share menu, which provides several standard services, such as copy, sharing to social media, direct ability to send to various contacts through messaging apps, etc. 

https://github.com/flutter/engine/assets/36148254/d0af7034-31fd-412e-8636-a06bbff54765

This PR is the framework portion of the changes that will allow Share to be implemented.
The corresponding merged engine PR is [here](https://github.com/flutter/engine/pull/44554)
This PR addresses https://github.com/flutter/flutter/issues/107578
More details are available in this [design doc](https://github.com/flutter/engine/pull/flutter.dev/go/add-missing-features-to-selection-controls)
parent ac66bdb7
......@@ -96,6 +96,7 @@ class CupertinoAdaptiveTextSelectionToolbar extends StatelessWidget {
required VoidCallback? onSelectAll,
required VoidCallback? onLookUp,
required VoidCallback? onSearchWeb,
required VoidCallback? onShare,
required VoidCallback? onLiveTextInput,
required this.anchors,
}) : children = null,
......@@ -107,6 +108,7 @@ class CupertinoAdaptiveTextSelectionToolbar extends StatelessWidget {
onSelectAll: onSelectAll,
onLookUp: onLookUp,
onSearchWeb: onSearchWeb,
onShare: onShare,
onLiveTextInput: onLiveTextInput
);
......
......@@ -253,6 +253,10 @@ abstract class CupertinoLocalizations {
// The global version uses the translated string from the arb file.
String get searchWebButtonLabel;
/// The term used for launching a web search on a selection.
// The global version uses the translated string from the arb file.
String get shareButtonLabel;
/// The default placeholder used in [CupertinoSearchTextField].
// The global version uses the translated string from the arb file.
String get searchTextFieldPlaceholderLabel;
......@@ -469,6 +473,9 @@ class DefaultCupertinoLocalizations implements CupertinoLocalizations {
@override
String get searchWebButtonLabel => 'Search Web';
@override
String get shareButtonLabel => 'Share...';
@override
String get searchTextFieldPlaceholderLabel => 'Search';
......
......@@ -109,6 +109,8 @@ class CupertinoTextSelectionToolbarButton extends StatefulWidget {
return localizations.lookUpButtonLabel;
case ContextMenuButtonType.searchWeb:
return localizations.searchWebButtonLabel;
case ContextMenuButtonType.share:
return localizations.shareButtonLabel;
case ContextMenuButtonType.liveTextInput:
case ContextMenuButtonType.delete:
case ContextMenuButtonType.custom:
......@@ -195,6 +197,7 @@ class _CupertinoTextSelectionToolbarButtonState extends State<CupertinoTextSelec
case ContextMenuButtonType.delete:
case ContextMenuButtonType.lookUp:
case ContextMenuButtonType.searchWeb:
case ContextMenuButtonType.share:
case ContextMenuButtonType.custom:
return textWidget;
case ContextMenuButtonType.liveTextInput:
......
......@@ -105,6 +105,7 @@ class AdaptiveTextSelectionToolbar extends StatelessWidget {
required VoidCallback? onSelectAll,
required VoidCallback? onLookUp,
required VoidCallback? onSearchWeb,
required VoidCallback? onShare,
required VoidCallback? onLiveTextInput,
required this.anchors,
}) : children = null,
......@@ -116,6 +117,7 @@ class AdaptiveTextSelectionToolbar extends StatelessWidget {
onSelectAll: onSelectAll,
onLookUp: onLookUp,
onSearchWeb: onSearchWeb,
onShare: onShare,
onLiveTextInput: onLiveTextInput
);
......@@ -223,6 +225,8 @@ class AdaptiveTextSelectionToolbar extends StatelessWidget {
return localizations.lookUpButtonLabel;
case ContextMenuButtonType.searchWeb:
return localizations.searchWebButtonLabel;
case ContextMenuButtonType.share:
return localizations.searchWebButtonLabel;
case ContextMenuButtonType.liveTextInput:
return localizations.scanTextButtonLabel;
case ContextMenuButtonType.custom:
......
......@@ -121,6 +121,9 @@ abstract class MaterialLocalizations {
/// Label for "search web" edit buttons and menu items.
String get searchWebButtonLabel;
/// Label for "share" edit buttons and menu items.
String get shareButtonLabel;
/// Label for the [AboutDialog] button that shows the [LicensePage].
String get viewLicensesButtonLabel;
......@@ -1190,6 +1193,9 @@ class DefaultMaterialLocalizations implements MaterialLocalizations {
@override
String get searchWebButtonLabel => 'Search Web';
@override
String get shareButtonLabel => 'Share...';
@override
String get viewLicensesButtonLabel => 'View licenses';
......
......@@ -1038,24 +1038,27 @@ mixin TextSelectionDelegate {
/// input.
void bringIntoView(TextPosition position);
/// Whether cut is enabled, must not be null.
/// Whether cut is enabled.
bool get cutEnabled => true;
/// Whether copy is enabled, must not be null.
/// Whether copy is enabled.
bool get copyEnabled => true;
/// Whether paste is enabled, must not be null.
/// Whether paste is enabled.
bool get pasteEnabled => true;
/// Whether select all is enabled, must not be null.
/// Whether select all is enabled.
bool get selectAllEnabled => true;
/// Whether look up is enabled, must not be null.
/// Whether look up is enabled.
bool get lookUpEnabled => true;
/// Whether search web is enabled, must not be null.
/// Whether search web is enabled.
bool get searchWebEnabled => true;
/// Whether share is enabled.
bool get shareEnabled => true;
/// Whether Live Text input is enabled.
///
/// See also:
......
......@@ -32,6 +32,9 @@ enum ContextMenuButtonType {
/// A button that launches a web search for the current text selection.
searchWeb,
/// A button that displays the share screen for the current text selection.
share,
/// A button for starting Live Text input.
///
/// See also:
......
......@@ -1874,6 +1874,7 @@ class EditableText extends StatefulWidget {
required final VoidCallback? onSelectAll,
required final VoidCallback? onLookUp,
required final VoidCallback? onSearchWeb,
required final VoidCallback? onShare,
required final VoidCallback? onLiveTextInput,
}) {
final List<ContextMenuButtonItem> resultButtonItem = <ContextMenuButtonItem>[];
......@@ -1914,6 +1915,11 @@ class EditableText extends StatefulWidget {
onPressed: onSearchWeb,
type: ContextMenuButtonType.searchWeb,
),
if (onShare != null)
ContextMenuButtonItem(
onPressed: onShare,
type: ContextMenuButtonType.share,
),
]);
}
......@@ -2291,6 +2297,17 @@ class EditableTextState extends State<EditableText> with AutomaticKeepAliveClien
&& textEditingValue.selection.textInside(textEditingValue.text).trim() != '';
}
@override
bool get shareEnabled {
if (defaultTargetPlatform != TargetPlatform.iOS) {
return false;
}
return !widget.obscureText
&& !textEditingValue.selection.isCollapsed
&& textEditingValue.selection.textInside(textEditingValue.text).trim() != '';
}
@override
bool get liveTextInputEnabled {
return _liveTextInputStatus?.value == LiveTextInputStatus.enabled &&
......@@ -2456,8 +2473,11 @@ class EditableTextState extends State<EditableText> with AutomaticKeepAliveClien
}
}
/// Look up the current selection, as in the "Look Up" edit menu button on iOS.
/// Look up the current selection,
/// as in the "Look Up" edit menu button on iOS.
///
/// Currently this is only implemented for iOS.
///
/// Throws an error if the selection is empty or collapsed.
Future<void> lookUpSelection(SelectionChangedCause cause) async {
assert(!widget.obscureText);
......@@ -2476,6 +2496,7 @@ class EditableTextState extends State<EditableText> with AutomaticKeepAliveClien
/// as in the "Search Web" edit menu button on iOS.
///
/// Currently this is only implemented for iOS.
///
/// When 'obscureText' is true or the selection is empty,
/// this function will not do anything
Future<void> searchWebForSelection(SelectionChangedCause cause) async {
......@@ -2493,6 +2514,28 @@ class EditableTextState extends State<EditableText> with AutomaticKeepAliveClien
}
}
/// Launch the share interface for the current selection,
/// as in the "Share" edit menu button on iOS.
///
/// Currently this is only implemented for iOS.
///
/// When 'obscureText' is true or the selection is empty,
/// this function will not do anything
Future<void> shareSelection(SelectionChangedCause cause) async {
assert(!widget.obscureText);
if (widget.obscureText) {
return;
}
final String text = textEditingValue.selection.textInside(textEditingValue.text);
if (text.isNotEmpty) {
await SystemChannels.platform.invokeMethod(
'Share.invoke',
text,
);
}
}
void _startLiveTextInput(SelectionChangedCause cause) {
if (!liveTextInputEnabled) {
return;
......@@ -2725,6 +2768,9 @@ class EditableTextState extends State<EditableText> with AutomaticKeepAliveClien
onSearchWeb: searchWebEnabled
? () => searchWebForSelection(SelectionChangedCause.toolbar)
: null,
onShare: shareEnabled
? () => shareSelection(SelectionChangedCause.toolbar)
: null,
onLiveTextInput: liveTextInputEnabled
? () => _startLiveTextInput(SelectionChangedCause.toolbar)
: null,
......
......@@ -177,6 +177,7 @@ void main() {
onLiveTextInput: () {},
onLookUp: () {},
onSearchWeb: () {},
onShare: () {},
),
),
));
......@@ -202,7 +203,7 @@ void main() {
case TargetPlatform.macOS:
case TargetPlatform.linux:
case TargetPlatform.windows:
expect(find.byType(CupertinoDesktopTextSelectionToolbarButton), findsNWidgets(7));
expect(find.byType(CupertinoDesktopTextSelectionToolbarButton), findsNWidgets(8));
}
},
skip: kIsWeb, // [intended] on web the browser handles the context menu.
......
......@@ -336,7 +336,7 @@ void main() {
expect(find.text('Look Up'), findsNothing);
expect(find.text('Search Web'), findsOneWidget);
expect(findOverflowBackButton(), findsOneWidget);
expect(findOverflowNextButton(), findsNothing);
expect(findOverflowNextButton(), findsOneWidget);
// Tapping the back button thrice shows the first page again with the next button.
await tapBackButton();
......@@ -394,6 +394,7 @@ void main() {
expect(find.text('Select All'), findsNothing);
expect(find.text('Look Up'), findsNothing);
expect(find.text('Search Web'), findsNothing);
expect(find.text('Share...'), findsNothing);
expect(findOverflowBackButton(), findsNothing);
expect(findOverflowNextButton(), findsNothing);
......@@ -412,6 +413,7 @@ void main() {
expect(find.text('Select All'), findsNothing);
expect(find.text('Look Up'), findsNothing);
expect(find.text('Search Web'), findsNothing);
expect(find.text('Share...'), findsNothing);
expect(findOverflowBackButton(), findsNothing);
expect(findOverflowNextButton(), findsOneWidget);
......@@ -424,6 +426,7 @@ void main() {
expect(find.text('Select All'), findsNothing);
expect(find.text('Look Up'), findsNothing);
expect(find.text('Search Web'), findsNothing);
expect(find.text('Share...'), findsNothing);
expect(findOverflowBackButton(), findsOneWidget);
expect(findOverflowNextButton(), findsOneWidget);
......@@ -436,6 +439,7 @@ void main() {
expect(find.text('Select All'), findsNothing);
expect(find.text('Look Up'), findsNothing);
expect(find.text('Search Web'), findsNothing);
expect(find.text('Share...'), findsNothing);
expect(findOverflowBackButton(), findsOneWidget);
expect(findOverflowNextButton(), findsOneWidget);
......@@ -447,10 +451,11 @@ void main() {
expect(find.text('Select All'), findsNothing);
expect(find.text('Look Up'), findsOneWidget);
expect(find.text('Search Web'), findsNothing);
expect(find.text('Share...'), findsNothing);
expect(findOverflowBackButton(), findsOneWidget);
expect(findOverflowNextButton(), findsOneWidget);
// Tapping the next button again shows the last page.
// Tapping the next button again shows the Search Web Button.
await tapNextButton();
expect(find.text('Cut'), findsNothing);
expect(find.text('Copy'), findsNothing);
......@@ -458,23 +463,27 @@ void main() {
expect(find.text('Select All'), findsNothing);
expect(find.text('Look Up'), findsNothing);
expect(find.text('Search Web'), findsOneWidget);
expect(find.text('Share...'), findsNothing);
expect(findOverflowBackButton(), findsOneWidget);
expect(findOverflowNextButton(), findsNothing);
expect(findOverflowNextButton(), findsOneWidget);
// Tapping the back button thrice shows the second page again with the next button.
await tapBackButton();
await tapBackButton();
await tapBackButton();
expect(find.byType(CupertinoTextSelectionToolbarButton), findsNWidgets(3));
// Tapping the next button again shows the last page and the Share button
await tapNextButton();
expect(find.text('Cut'), findsNothing);
expect(find.text('Copy'), findsOneWidget);
expect(find.text('Copy'), findsNothing);
expect(find.text('Paste'), findsNothing);
expect(find.text('Select All'), findsNothing);
expect(find.text('Look Up'), findsNothing);
expect(find.text('Search Web'), findsNothing);
expect(find.text('Share...'), findsOneWidget);
expect(findOverflowBackButton(), findsOneWidget);
expect(findOverflowNextButton(), findsOneWidget);
expect(findOverflowNextButton(), findsNothing);
// Tapping the back button again shows the first page again.
// Tapping the back button 5 times shows the first page again.
await tapBackButton();
await tapBackButton();
await tapBackButton();
await tapBackButton();
await tapBackButton();
expect(find.byType(CupertinoTextSelectionToolbarButton), findsNWidgets(2));
expect(find.text('Cut'), findsOneWidget);
......@@ -482,6 +491,8 @@ void main() {
expect(find.text('Paste'), findsNothing);
expect(find.text('Select All'), findsNothing);
expect(find.text('Look Up'), findsNothing);
expect(find.text('Search Web'), findsNothing);
expect(find.text('Share...'), findsNothing);
expect(findOverflowBackButton(), findsNothing);
expect(findOverflowNextButton(), findsOneWidget);
},
......
......@@ -194,6 +194,7 @@ void main() {
onLiveTextInput: () {},
onLookUp: () {},
onSearchWeb: () {},
onShare: () {},
),
),
),
......@@ -211,7 +212,7 @@ void main() {
expect(find.byType(TextSelectionToolbarTextButton), findsNWidgets(6));
case TargetPlatform.fuchsia:
expect(find.text('Select all'), findsOneWidget);
expect(find.byType(TextSelectionToolbarTextButton), findsNWidgets(7));
expect(find.byType(TextSelectionToolbarTextButton), findsNWidgets(8));
case TargetPlatform.iOS:
expect(find.text('Select All'), findsOneWidget);
expect(find.byType(CupertinoTextSelectionToolbarButton), findsNWidgets(6));
......@@ -221,10 +222,10 @@ void main() {
case TargetPlatform.linux:
case TargetPlatform.windows:
expect(find.text('Select all'), findsOneWidget);
expect(find.byType(DesktopTextSelectionToolbarButton), findsNWidgets(7));
expect(find.byType(DesktopTextSelectionToolbarButton), findsNWidgets(8));
case TargetPlatform.macOS:
expect(find.text('Select All'), findsOneWidget);
expect(find.byType(CupertinoDesktopTextSelectionToolbarButton), findsNWidgets(7));
expect(find.byType(CupertinoDesktopTextSelectionToolbarButton), findsNWidgets(8));
}
},
skip: kIsWeb, // [intended] on web the browser handles the context menu.
......
......@@ -32,6 +32,7 @@ void main() {
expect(localizations.scanTextButtonLabel, isNotNull);
expect(localizations.lookUpButtonLabel, isNotNull);
expect(localizations.searchWebButtonLabel, isNotNull);
expect(localizations.shareButtonLabel, isNotNull);
expect(localizations.okButtonLabel, isNotNull);
expect(localizations.pasteButtonLabel, isNotNull);
expect(localizations.selectAllButtonLabel, isNotNull);
......
......@@ -156,6 +156,7 @@ void main() {
onSelectAll: null,
onLookUp: null,
onSearchWeb: null,
onShare: null,
onLiveTextInput: () {
invokedLiveTextInputSuccessfully = true;
},
......
......@@ -2959,7 +2959,7 @@ void main() {
);
// Selected text shows 1 toolbar buttons on MacOS, 2 on iOS.
expect(find.byType(CupertinoButton), isTargetPlatformIOS ? findsNWidgets(3) : findsNWidgets(1));
expect(find.byType(CupertinoButton), isTargetPlatformIOS ? findsNWidgets(4) : findsNWidgets(1));
},
variant: const TargetPlatformVariant(<TargetPlatform>{ TargetPlatform.iOS, TargetPlatform.macOS }),
);
......@@ -3090,7 +3090,7 @@ void main() {
);
// Selected text shows 2 toolbar buttons for iOS, 1 for macOS.
expect(find.byType(CupertinoButton), isTargetPlatformIOS ? findsNWidgets(3) : findsNWidgets(1));
expect(find.byType(CupertinoButton), isTargetPlatformIOS ? findsNWidgets(4) : findsNWidgets(1));
await gesture.up();
await tester.pump();
......@@ -3101,7 +3101,7 @@ void main() {
const TextSelection(baseOffset: 8, extentOffset: 12),
);
// The toolbar is still showing.
expect(find.byType(CupertinoButton), isTargetPlatformIOS ? findsNWidgets(3) : findsNWidgets(1));
expect(find.byType(CupertinoButton), isTargetPlatformIOS ? findsNWidgets(4) : findsNWidgets(1));
},
variant: const TargetPlatformVariant(<TargetPlatform>{ TargetPlatform.iOS, TargetPlatform.macOS }),
);
......@@ -3218,7 +3218,7 @@ void main() {
);
// Toolbar shows one button.
expect(find.byType(CupertinoButton), isTargetPlatformIOS ? findsNWidgets(3) : findsNWidgets(1));
expect(find.byType(CupertinoButton), isTargetPlatformIOS ? findsNWidgets(4) : findsNWidgets(1));
},
variant: const TargetPlatformVariant(<TargetPlatform>{ TargetPlatform.iOS, TargetPlatform.macOS }),
);
......@@ -3554,7 +3554,7 @@ void main() {
),
);
// The toolbar now shows up.
expect(find.byType(CupertinoButton), isTargetPlatformIOS ? findsNWidgets(3) : findsNWidgets(1));
expect(find.byType(CupertinoButton), isTargetPlatformIOS ? findsNWidgets(4) : findsNWidgets(1));
},
variant: const TargetPlatformVariant(<TargetPlatform>{ TargetPlatform.iOS }),
);
......@@ -3782,7 +3782,7 @@ void main() {
);
// Long press toolbar.
expect(find.byType(CupertinoButton), findsNWidgets(3));
expect(find.byType(CupertinoButton), findsNWidgets(4));
},
variant: const TargetPlatformVariant(<TargetPlatform>{ TargetPlatform.iOS }),
);
......@@ -3876,7 +3876,7 @@ void main() {
const TextSelection(baseOffset: 8, extentOffset: 12),
);
expect(find.byType(CupertinoButton), isTargetPlatformIOS ? findsNWidgets(3) : findsNWidgets(1));
expect(find.byType(CupertinoButton), isTargetPlatformIOS ? findsNWidgets(4) : findsNWidgets(1));
}, variant: const TargetPlatformVariant(<TargetPlatform>{ TargetPlatform.iOS, TargetPlatform.macOS }),
);
......@@ -3911,7 +3911,7 @@ void main() {
controller.selection,
const TextSelection(baseOffset: 0, extentOffset: 7),
);
expect(find.byType(CupertinoButton), isTargetPlatformIOS ? findsNWidgets(3) : findsNWidgets(1));
expect(find.byType(CupertinoButton), isTargetPlatformIOS ? findsNWidgets(4) : findsNWidgets(1));
// Double tap selecting the same word somewhere else is fine.
await tester.pumpAndSettle(kDoubleTapTimeout);
......@@ -3928,7 +3928,7 @@ void main() {
controller.selection,
const TextSelection(baseOffset: 0, extentOffset: 7),
);
expect(find.byType(CupertinoButton), isTargetPlatformIOS ? findsNWidgets(3) : findsNWidgets(1));
expect(find.byType(CupertinoButton), isTargetPlatformIOS ? findsNWidgets(4) : findsNWidgets(1));
// Hide the toolbar so it doesn't interfere with taps on the text.
final EditableTextState editableTextState =
......@@ -3950,7 +3950,7 @@ void main() {
controller.selection,
const TextSelection(baseOffset: 8, extentOffset: 12),
);
expect(find.byType(CupertinoButton), isTargetPlatformIOS ? findsNWidgets(3) : findsNWidgets(1));
expect(find.byType(CupertinoButton), isTargetPlatformIOS ? findsNWidgets(4) : findsNWidgets(1));
},
variant: const TargetPlatformVariant(<TargetPlatform>{ TargetPlatform.iOS, TargetPlatform.macOS }),
);
......@@ -4029,7 +4029,7 @@ void main() {
await gesture.up();
await tester.pump();
expect(find.byType(CupertinoButton), findsNWidgets(3));
expect(find.byType(CupertinoButton), findsNWidgets(4));
}, variant: const TargetPlatformVariant(<TargetPlatform>{ TargetPlatform.iOS }));
testWidgets('tap on non-force-press-supported devices work', (WidgetTester tester) async {
......
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Geen plaasvervangers gevind nie",
"menuDismissLabel": "Maak kieslys toe",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "ምንም ተተኪዎች አልተገኙም",
"menuDismissLabel": "ምናሌን አሰናብት",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -45,5 +45,6 @@
"noSpellCheckReplacementsLabel": "لم يتم العثور على بدائل",
"menuDismissLabel": "إغلاق القائمة",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "এইটোৰ সলনি ব্যৱহাৰ কৰিব পৰা শব্দ পোৱা নগ’ল",
"menuDismissLabel": "অগ্ৰাহ্য কৰাৰ মেনু",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Əvəzləmə Tapılmadı",
"menuDismissLabel": "Menyunu qapadın",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -35,5 +35,6 @@
"noSpellCheckReplacementsLabel": "Замен не знойдзена",
"menuDismissLabel": "Закрыць меню",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Не бяха намерени замествания",
"menuDismissLabel": "Отхвърляне на менюто",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "কোনও বিকল্প বানান দেখানো হয়নি",
"menuDismissLabel": "বাতিল করার মেনু",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -30,5 +30,6 @@
"noSpellCheckReplacementsLabel": "Nije pronađena nijedna zamjena",
"menuDismissLabel": "Odbacivanje menija",
"lookUpButtonLabel": "Pogled prema gore",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "No s'ha trobat cap substitució",
"menuDismissLabel": "Ignora el menú",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -35,5 +35,6 @@
"noSpellCheckReplacementsLabel": "Žádná nahrazení nenalezena",
"menuDismissLabel": "Zavřít nabídku",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -45,5 +45,6 @@
"noSpellCheckReplacementsLabel": "Dim Ailosodiadau wedi'u Canfod",
"menuDismissLabel": "Diystyru'r ddewislen",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Der blev ikke fundet nogen erstatninger",
"menuDismissLabel": "Luk menu",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Keine Ersetzungen gefunden",
"menuDismissLabel": "Menü schließen",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Δεν βρέθηκαν αντικαταστάσεις",
"menuDismissLabel": "Παράβλεψη μενού",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -175,6 +175,11 @@
"description": "The label for the Search Web button and menu items on iOS."
},
"shareButtonLabel": "Share...",
"@shareButtonLabel": {
"description": "The label for the Share button and menu items on iOS."
},
"noSpellCheckReplacementsLabel": "No Replacements Found",
"@noSpellCheckReplacementsLabel": {
"description": "The label shown in the text selection context menu on iOS when a misspelled word is tapped but the spell checker found no reasonable fixes for it."
......
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "No se ha encontrado ninguna sustitución",
"menuDismissLabel": "Cerrar menú",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Asendusi ei leitud",
"menuDismissLabel": "Sulge menüü",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Ez da aurkitu ordezteko hitzik",
"menuDismissLabel": "Baztertu menua",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "جایگزینی پیدا نشد",
"menuDismissLabel": "بستن منو",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Korvaavia sanoja ei löydy",
"menuDismissLabel": "Hylkää valikko",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Walang Nahanap na Kapalit",
"menuDismissLabel": "I-dismiss ang menu",
"lookUpButtonLabel": "Tumingin sa Itaas",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Aucun remplacement trouvé",
"menuDismissLabel": "Fermer le menu",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Non se encontrou ningunha substitución",
"menuDismissLabel": "Pechar menú",
"lookUpButtonLabel": "Mirar cara arriba",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Keine Ersetzungen gefunden",
"menuDismissLabel": "Menü schließen",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "બદલવા માટે કોઈ શબ્દ મળ્યો નથી",
"menuDismissLabel": "મેનૂ છોડી દો",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -35,5 +35,6 @@
"noSpellCheckReplacementsLabel": "לא נמצאו חלופות",
"menuDismissLabel": "סגירת התפריט",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "सही वर्तनी वाला कोई शब्द नहीं मिला",
"menuDismissLabel": "मेन्यू खारिज करें",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -30,5 +30,6 @@
"noSpellCheckReplacementsLabel": "Nema pronađenih zamjena",
"menuDismissLabel": "Odbacivanje izbornika",
"lookUpButtonLabel": "Pogled prema gore",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Nem található javítás",
"menuDismissLabel": "Menü bezárása",
"lookUpButtonLabel": "Felfelé nézés",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Փոխարինումներ չեն գտնվել",
"menuDismissLabel": "Փակել ընտրացանկը",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Penggantian Tidak Ditemukan",
"menuDismissLabel": "Tutup menu",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Engir staðgenglar fundust",
"menuDismissLabel": "Loka valmynd",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Nessuna sostituzione trovata",
"menuDismissLabel": "Ignora menu",
"lookUpButtonLabel": "Cerca",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "置き換えるものがありません",
"menuDismissLabel": "メニューを閉じる",
"lookUpButtonLabel": "調べる",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "ჩანაცვლება არ მოიძებნა",
"menuDismissLabel": "მენიუს უარყოფა",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Ауыстыратын ешнәрсе табылмады.",
"menuDismissLabel": "Мәзірді жабу",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "រកមិនឃើញ​ការជំនួសទេ",
"menuDismissLabel": "ច្រានចោល​ម៉ឺនុយ",
"lookUpButtonLabel": "រកមើល",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "\u0caf\u0cbe\u0cb5\u0cc1\u0ca6\u0cc7\u0020\u0cac\u0ca6\u0cb2\u0cbe\u0cb5\u0ca3\u0cc6\u0c97\u0cb3\u0cc1\u0020\u0c95\u0c82\u0ca1\u0cc1\u0cac\u0c82\u0ca6\u0cbf\u0cb2\u0ccd\u0cb2",
"menuDismissLabel": "\u0cae\u0cc6\u0ca8\u0cc1\u0cb5\u0ca8\u0ccd\u0ca8\u0cc1\u0020\u0cb5\u0c9c\u0cbe\u0c97\u0cc6\u0cc2\u0cb3\u0cbf\u0cb8\u0cbf",
"lookUpButtonLabel": "\u004c\u006f\u006f\u006b\u0020\u0055\u0070",
"searchWebButtonLabel": "\u0053\u0065\u0061\u0072\u0063\u0068\u0020\u0057\u0065\u0062"
"searchWebButtonLabel": "\u0053\u0065\u0061\u0072\u0063\u0068\u0020\u0057\u0065\u0062",
"shareButtonLabel": "\u0053\u0068\u0061\u0072\u0065\u002e\u002e\u002e"
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "수정사항 없음",
"menuDismissLabel": "메뉴 닫기",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Алмаштыруу үчүн сөз табылган жок",
"menuDismissLabel": "Менюну жабуу",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "ບໍ່ພົບການແທນທີ່",
"menuDismissLabel": "ປິດເມນູ",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -35,5 +35,6 @@
"noSpellCheckReplacementsLabel": "Nerasta jokių pakeitimų",
"menuDismissLabel": "Atsisakyti meniu",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -30,5 +30,6 @@
"noSpellCheckReplacementsLabel": "Netika atrasts neviens vārds aizstāšanai",
"menuDismissLabel": "Nerādīt izvēlni",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Не се најдени заменски зборови",
"menuDismissLabel": "Отфрлете го менито",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "റീപ്ലേസ്‌മെന്റുകളൊന്നും കണ്ടെത്തിയില്ല",
"menuDismissLabel": "മെനു ഡിസ്മിസ് ചെയ്യുക",
"lookUpButtonLabel": "മുകളിലേക്ക് നോക്കുക",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Ямар ч орлуулалт олдсонгүй",
"menuDismissLabel": "Цэсийг хаах",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "कोणतेही बदल आढळले नाहीत",
"menuDismissLabel": "मेनू डिसमिस करा",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Tiada Penggantian Ditemukan",
"menuDismissLabel": "Ketepikan menu",
"lookUpButtonLabel": "Lihat ke Atas",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "အစားထိုးမှုများ မတွေ့ပါ",
"menuDismissLabel": "မီနူးကိုပယ်ပါ",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Fant ingen erstatninger",
"menuDismissLabel": "Lukk menyen",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "बदल्नु पर्ने कुनै पनि कुरा भेटिएन",
"menuDismissLabel": "मेनु खारेज गर्नुहोस्",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Geen vervangingen gevonden",
"menuDismissLabel": "Menu sluiten",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Fant ingen erstatninger",
"menuDismissLabel": "Lukk menyen",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "କୌଣସି ରିପ୍ଲେସମେଣ୍ଟ ମିଳିଲା ନାହିଁ",
"menuDismissLabel": "ମେନୁ ଖାରଜ କରନ୍ତୁ",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "ਕੋਈ ਸੁਝਾਅ ਨਹੀਂ ਮਿਲਿਆ",
"menuDismissLabel": "ਮੀਨੂ ਖਾਰਜ ਕਰੋ",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -35,5 +35,6 @@
"noSpellCheckReplacementsLabel": "Brak wyników zamieniania",
"menuDismissLabel": "Zamknij menu",
"lookUpButtonLabel": "Sprawdź",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Nenhuma alternativa encontrada",
"menuDismissLabel": "Dispensar menu",
"lookUpButtonLabel": "Pesquisar",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -30,5 +30,6 @@
"noSpellCheckReplacementsLabel": "Nu s-au găsit înlocuiri",
"menuDismissLabel": "Respingeți meniul",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -35,5 +35,6 @@
"noSpellCheckReplacementsLabel": "Варианты замены не найдены",
"menuDismissLabel": "Закрыть меню",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "ප්‍රතිස්ථාපන හමු නොවිණි",
"menuDismissLabel": "මෙනුව අස් කරන්න",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -35,5 +35,6 @@
"noSpellCheckReplacementsLabel": "Nenašli sa žiadne náhrady",
"menuDismissLabel": "Zavrieť ponuku",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -35,5 +35,6 @@
"noSpellCheckReplacementsLabel": "Ni zamenjav",
"menuDismissLabel": "Opusti meni",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Nuk u gjetën zëvendësime",
"menuDismissLabel": "Hiqe menynë",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -30,5 +30,6 @@
"noSpellCheckReplacementsLabel": "Нису пронађене замене",
"menuDismissLabel": "Одбаците мени",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Inga ersättningar hittades",
"menuDismissLabel": "Stäng menyn",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Hakuna Neno Mbadala Lilopatikana",
"menuDismissLabel": "Ondoa menyu",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "மாற்று வார்த்தைகள் கிடைக்கவில்லை",
"menuDismissLabel": "மெனுவை மூடும்",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "రీప్లేస్‌మెంట్‌లు ఏవీ కనుగొనబడలేదు",
"menuDismissLabel": "మెనూను తీసివేయండి",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "ไม่พบรายการแทนที่",
"menuDismissLabel": "ปิดเมนู",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Walang Nahanap na Kapalit",
"menuDismissLabel": "I-dismiss ang menu",
"lookUpButtonLabel": "Tumingin sa Itaas",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Yerine Kelime Bulunamadı",
"menuDismissLabel": "Menüyü kapat",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -35,5 +35,6 @@
"noSpellCheckReplacementsLabel": "Замін не знайдено",
"menuDismissLabel": "Закрити меню",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "کوئی تبدیلیاں نہیں ملیں",
"menuDismissLabel": "مینو برخاست کریں",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Almashtirish uchun soʻz topilmadi",
"menuDismissLabel": "Menyuni yopish",
"lookUpButtonLabel": "Tepaga qarang",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Không tìm thấy phương án thay thế",
"menuDismissLabel": "Đóng trình đơn",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "找不到替换文字",
"menuDismissLabel": "关闭菜单",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -25,5 +25,6 @@
"noSpellCheckReplacementsLabel": "Akukho Okuzofakwa Esikhundleni Okutholakele",
"menuDismissLabel": "Chitha imenyu",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -143,5 +143,6 @@
"collapsedHint": "Uitgevou",
"menuDismissLabel": "Maak kieslys toe",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -143,5 +143,6 @@
"collapsedHint": "ተዘርግቷል",
"menuDismissLabel": "ምናሌን አሰናብት",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -154,5 +154,6 @@
"collapsedHint": "موسَّع",
"menuDismissLabel": "إغلاق القائمة",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
......@@ -143,5 +143,6 @@
"collapsedHint": "বিস্তাৰ কৰা আছে",
"menuDismissLabel": "অগ্ৰাহ্য কৰাৰ মেনু",
"lookUpButtonLabel": "Look Up",
"searchWebButtonLabel": "Search Web"
"searchWebButtonLabel": "Search Web",
"shareButtonLabel": "Share..."
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment