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