diff --git a/packages/flutter/lib/src/material/about.dart b/packages/flutter/lib/src/material/about.dart index 2f116291b17..6cb5ca352cb 100644 --- a/packages/flutter/lib/src/material/about.dart +++ b/packages/flutter/lib/src/material/about.dart @@ -109,7 +109,8 @@ class AboutListTile extends StatelessWidget { assert(debugCheckHasMaterial(context)); return new ListTile( leading: icon, - title: child ?? new Text('About ${applicationName ?? _defaultApplicationName(context)}'), + title: child ?? + new Text(MaterialLocalizations.of(context).aboutListTileTitle(applicationName ?? _defaultApplicationName(context))), onTap: () { showAboutDialog( context: context, @@ -421,6 +422,7 @@ class _LicensePageState extends State { Widget build(BuildContext context) { final String name = widget.applicationName ?? _defaultApplicationName(context); final String version = widget.applicationVersion ?? _defaultApplicationVersion(context); + final MaterialLocalizations localizations = MaterialLocalizations.of(context); final List contents = [ new Text(name, style: Theme.of(context).textTheme.headline, textAlign: TextAlign.center), new Text(version, style: Theme.of(context).textTheme.body1, textAlign: TextAlign.center), @@ -441,15 +443,21 @@ class _LicensePageState extends State { } return new Scaffold( appBar: new AppBar( - title: new Text(MaterialLocalizations.of(context).licensesPageTitle), + title: new Text(localizations.licensesPageTitle), ), - body: new DefaultTextStyle( - style: Theme.of(context).textTheme.caption, - child: new Scrollbar( - child: new ListView( - padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 12.0), - shrinkWrap: true, - children: contents, + // All of the licenses page text is English. We don't want localized text + // or text direction. + body: new Localizations.override( + locale: const Locale('en', 'US'), + context: context, + child: new DefaultTextStyle( + style: Theme.of(context).textTheme.caption, + child: new Scrollbar( + child: new ListView( + padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 12.0), + shrinkWrap: true, + children: contents, + ), ), ), ), diff --git a/packages/flutter/lib/src/material/i18n/localizations.dart b/packages/flutter/lib/src/material/i18n/localizations.dart index 5ad37ede3c1..eaf99ba29dc 100644 --- a/packages/flutter/lib/src/material/i18n/localizations.dart +++ b/packages/flutter/lib/src/material/i18n/localizations.dart @@ -21,6 +21,7 @@ const Map> localizations = const > localizations = const > localizations = const > localizations = const > localizations = const > localizations = const > localizations = const > localizations = const > localizations = const > localizations = const > localizations = const > localizations = const > localizations = const > localizations = const > localizations = const _nameToValue['showMenuTooltip']; + @override + String aboutListTileTitle(String applicationName) { + final String text = _nameToValue['aboutListTileTitle']; + return text.replaceFirst(r'$applicationName', applicationName); + } + @override String get licensesPageTitle => _nameToValue['licensesPageTitle']; diff --git a/packages/flutter/test/material/about_test.dart b/packages/flutter/test/material/about_test.dart index 223e1bb581b..2087e9398b8 100644 --- a/packages/flutter/test/material/about_test.dart +++ b/packages/flutter/test/material/about_test.dart @@ -67,9 +67,9 @@ void main() { testWidgets('About box logic defaults to executable name for app name', (WidgetTester tester) async { await tester.pumpWidget( - const Directionality( - textDirection: TextDirection.ltr, - child: const Material(child: const AboutListTile()), + new MaterialApp( + title: 'flutter_tester', + home: const Material(child: const AboutListTile()), ), ); expect(find.text('About flutter_tester'), findsOneWidget); diff --git a/packages/flutter/test/material/localizations_test.dart b/packages/flutter/test/material/localizations_test.dart index def6f3cc5f2..8bcd1eb2ece 100644 --- a/packages/flutter/test/material/localizations_test.dart +++ b/packages/flutter/test/material/localizations_test.dart @@ -123,6 +123,9 @@ void main() { expect(localizations.selectAllButtonLabel, isNotNull); expect(localizations.viewLicensesButtonLabel, isNotNull); + expect(localizations.aboutListTileTitle("FOO"), isNotNull); + expect(localizations.aboutListTileTitle("FOO"), contains("FOO")); + expect(localizations.selectedRowCountTitle(0), isNotNull); expect(localizations.selectedRowCountTitle(1), isNotNull); expect(localizations.selectedRowCountTitle(2), isNotNull);