From a7303e040d1b3ea0911070d9c7a70e9779be8a7e Mon Sep 17 00:00:00 2001 From: jslavitz Date: Mon, 1 Oct 2018 10:04:08 -0700 Subject: [PATCH] Selection controls internationalization (#22443) * Fix internationalization issues with cupertinoTextSelectionControls --- .../lib/src/cupertino/localizations.dart | 27 +++++++++++++++++++ .../lib/src/cupertino/text_selection.dart | 12 +++++---- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/packages/flutter/lib/src/cupertino/localizations.dart b/packages/flutter/lib/src/cupertino/localizations.dart index bf6c4a5a5e..7eac5ceb11 100644 --- a/packages/flutter/lib/src/cupertino/localizations.dart +++ b/packages/flutter/lib/src/cupertino/localizations.dart @@ -185,6 +185,19 @@ abstract class CupertinoLocalizations { /// ```dart /// CupertinoLocalizations.of(context).anteMeridiemAbbreviation; /// ``` + + /// The term used for cutting + String get cutButtonLabel; + + /// The term used for copying + String get copyButtonLabel; + + /// The term used for pasting + String get pasteButtonLabel; + + /// The term used for selecting everything + String get selectAllButtonLabel; + static CupertinoLocalizations of(BuildContext context) { return Localizations.of(context, CupertinoLocalizations); } @@ -252,6 +265,8 @@ class DefaultCupertinoLocalizations implements CupertinoLocalizations { 'December', ]; + + @override String datePickerYear(int yearIndex) => yearIndex.toString(); @@ -317,6 +332,18 @@ class DefaultCupertinoLocalizations implements CupertinoLocalizations { @override String timerPickerSecondLabel(int second) => 'sec'; + @override + String get cutButtonLabel => 'Cut'; + + @override + String get copyButtonLabel => 'Copy'; + + @override + String get pasteButtonLabel => 'Paste'; + + @override + String get selectAllButtonLabel => 'Select All'; + /// Creates an object that provides US English resource values for the /// cupertino library widgets. /// diff --git a/packages/flutter/lib/src/cupertino/text_selection.dart b/packages/flutter/lib/src/cupertino/text_selection.dart index cc0b6a6976..7361877a31 100644 --- a/packages/flutter/lib/src/cupertino/text_selection.dart +++ b/packages/flutter/lib/src/cupertino/text_selection.dart @@ -8,6 +8,7 @@ import 'package:flutter/widgets.dart'; import 'package:flutter/rendering.dart'; import 'button.dart'; +import 'localizations.dart'; // Padding around the line at the edge of the text selection that has 0 width and // the height of the text font. @@ -73,27 +74,28 @@ class _TextSelectionToolbar extends StatelessWidget { Widget build(BuildContext context) { final List items = []; final Widget onePhysicalPixelVerticalDivider = - SizedBox(width: 1.0 / MediaQuery.of(context).devicePixelRatio); + SizedBox(width: 1.0 / MediaQuery.of(context).devicePixelRatio); + final CupertinoLocalizations localizations = CupertinoLocalizations.of(context); if (handleCut != null) - items.add(_buildToolbarButton('Cut', handleCut)); + items.add(_buildToolbarButton(localizations.cutButtonLabel, handleCut)); if (handleCopy != null) { if (items.isNotEmpty) items.add(onePhysicalPixelVerticalDivider); - items.add(_buildToolbarButton('Copy', handleCopy)); + items.add(_buildToolbarButton(localizations.copyButtonLabel, handleCopy)); } if (handlePaste != null) { if (items.isNotEmpty) items.add(onePhysicalPixelVerticalDivider); - items.add(_buildToolbarButton('Paste', handlePaste)); + items.add(_buildToolbarButton(localizations.pasteButtonLabel, handlePaste)); } if (handleSelectAll != null) { if (items.isNotEmpty) items.add(onePhysicalPixelVerticalDivider); - items.add(_buildToolbarButton('Select All', handleSelectAll)); + items.add(_buildToolbarButton(localizations.selectAllButtonLabel, handleSelectAll)); } final Widget triangle = SizedBox.fromSize(