Unverified Commit 78c5bb2a authored by Dan Field's avatar Dan Field Committed by GitHub

Make progress indicators accessible (#24275)

* Make progress indicators accessible
parent 567b31a7
......@@ -310,6 +310,9 @@ abstract class MaterialLocalizations {
/// The label for the [TextField]'s character counter.
String remainingTextFieldCharacterCount(int remaining);
/// The default semantics label for a [RefreshIndicator].
String get refreshIndicatorSemanticLabel;
/// The `MaterialLocalizations` from the closest [Localizations] instance
/// that encloses the given context.
///
......@@ -698,6 +701,9 @@ class DefaultMaterialLocalizations implements MaterialLocalizations {
@override
String get collapsedIconTapHint => 'Expand';
@override
String get refreshIndicatorSemanticLabel => 'Refresh';
/// Creates an object that provides US English resource values for the material
/// library widgets.
///
......
......@@ -31,11 +31,21 @@ abstract class ProgressIndicator extends StatefulWidget {
/// The [value] argument can be either null (corresponding to an indeterminate
/// progress indicator) or non-null (corresponding to a determinate progress
/// indicator). See [value] for details.
///
/// {@template flutter.material.progressIndicator.semantics}
/// ## Accessibility
///
/// The [semanticsLabel] can be used to identify the purpose of this progress
/// bar for screen reading software. The [semanticsValue] property may be used
/// for determinate progress indicators to indicate how much progress has been made.
/// {@endtemplate}
const ProgressIndicator({
Key key,
this.value,
this.backgroundColor,
this.valueColor,
this.semanticsLabel,
this.semanticsValue,
}) : super(key: key);
/// If non-null, the value of this progress indicator with 0.0 corresponding
......@@ -58,6 +68,28 @@ abstract class ProgressIndicator extends StatefulWidget {
/// [ThemeData.accentColor].
final Animation<Color> valueColor;
/// {@template flutter.material.progressIndicator.semanticsLabel}
/// The [Semantics.label] for this progress indicator.
///
/// This value indicates the purpose of the progress bar, and will be
/// read out by screen readers to indicate the purpose of this progress
/// indicator.
/// {@endtemplate}
final String semanticsLabel;
/// {@template flutter.material.progressIndicator.semanticsValue}
/// The [Semantics.value] for this progress indicator.
///
/// This will be used in conjunction with the [semanticsLabel] by
/// screen reading software to identify the widget, and is primarily
/// intended for use with determinate progress indicators to announce
/// how far along they are.
///
/// For determinate progress indicators, this will be defaulted to [value]
/// expressed as a percentage, i.e. `0.1` will become '10%'.
/// {@endtemplate}
final String semanticsValue;
Color _getBackgroundColor(BuildContext context) => backgroundColor ?? Theme.of(context).backgroundColor;
Color _getValueColor(BuildContext context) => valueColor?.value ?? Theme.of(context).accentColor;
......@@ -66,6 +98,21 @@ abstract class ProgressIndicator extends StatefulWidget {
super.debugFillProperties(properties);
properties.add(PercentProperty('value', value, showName: false, ifNull: '<indeterminate>'));
}
Widget _buildSemanticsWrapper({
@required BuildContext context,
@required Widget child,
}) {
String expandedSemanticsValue = semanticsValue;
if (value != null) {
expandedSemanticsValue ??= '${(value * 100).round()}%';
}
return Semantics(
label: semanticsLabel,
value: expandedSemanticsValue,
child: child,
);
}
}
class _LinearProgressIndicatorPainter extends CustomPainter {
......@@ -179,12 +226,23 @@ class LinearProgressIndicator extends ProgressIndicator {
/// The [value] argument can be either null (corresponding to an indeterminate
/// progress indicator) or non-null (corresponding to a determinate progress
/// indicator). See [value] for details.
///
/// {@macro flutter.material.progressIndicator.semantics}
const LinearProgressIndicator({
Key key,
double value,
Color backgroundColor,
Animation<Color> valueColor,
}) : super(key: key, value: value, backgroundColor: backgroundColor, valueColor: valueColor);
String semanticsLabel,
String semanticsValue,
}) : super(
key: key,
value: value,
backgroundColor: backgroundColor,
valueColor: valueColor,
semanticsLabel: semanticsLabel,
semanticsValue: semanticsValue,
);
@override
_LinearProgressIndicatorState createState() => _LinearProgressIndicatorState();
......@@ -220,18 +278,21 @@ class _LinearProgressIndicatorState extends State<LinearProgressIndicator> with
}
Widget _buildIndicator(BuildContext context, double animationValue, TextDirection textDirection) {
return Container(
constraints: const BoxConstraints(
minWidth: double.infinity,
minHeight: _kLinearProgressIndicatorHeight,
),
child: CustomPaint(
painter: _LinearProgressIndicatorPainter(
backgroundColor: widget._getBackgroundColor(context),
valueColor: widget._getValueColor(context),
value: widget.value, // may be null
animationValue: animationValue, // ignored if widget.value is not null
textDirection: textDirection,
return widget._buildSemanticsWrapper(
context: context,
child: Container(
constraints: const BoxConstraints(
minWidth: double.infinity,
minHeight: _kLinearProgressIndicatorHeight,
),
child: CustomPaint(
painter: _LinearProgressIndicatorPainter(
backgroundColor: widget._getBackgroundColor(context),
valueColor: widget._getValueColor(context),
value: widget.value, // may be null
animationValue: animationValue, // ignored if widget.value is not null
textDirection: textDirection,
),
),
),
);
......@@ -335,13 +396,24 @@ class CircularProgressIndicator extends ProgressIndicator {
/// The [value] argument can be either null (corresponding to an indeterminate
/// progress indicator) or non-null (corresponding to a determinate progress
/// indicator). See [value] for details.
///
/// {@macro flutter.material.progressIndicator.semantics}
const CircularProgressIndicator({
Key key,
double value,
Color backgroundColor,
Animation<Color> valueColor,
this.strokeWidth = 4.0,
}) : super(key: key, value: value, backgroundColor: backgroundColor, valueColor: valueColor);
String semanticsLabel,
String semanticsValue,
}) : super(
key: key,
value: value,
backgroundColor: backgroundColor,
valueColor: valueColor,
semanticsLabel: semanticsLabel,
semanticsValue: semanticsValue,
);
/// The width of the line used to draw the circle.
final double strokeWidth;
......@@ -397,20 +469,23 @@ class _CircularProgressIndicatorState extends State<CircularProgressIndicator> w
}
Widget _buildIndicator(BuildContext context, double headValue, double tailValue, int stepValue, double rotationValue) {
return Container(
constraints: const BoxConstraints(
minWidth: _kMinCircularProgressIndicatorSize,
minHeight: _kMinCircularProgressIndicatorSize,
),
child: CustomPaint(
painter: _CircularProgressIndicatorPainter(
valueColor: widget._getValueColor(context),
value: widget.value, // may be null
headValue: headValue, // remaining arguments are ignored if widget.value is not null
tailValue: tailValue,
stepValue: stepValue,
rotationValue: rotationValue,
strokeWidth: widget.strokeWidth,
return widget._buildSemanticsWrapper(
context: context,
child: Container(
constraints: const BoxConstraints(
minWidth: _kMinCircularProgressIndicatorSize,
minHeight: _kMinCircularProgressIndicatorSize,
),
child: CustomPaint(
painter: _CircularProgressIndicatorPainter(
valueColor: widget._getValueColor(context),
value: widget.value, // may be null
headValue: headValue, // remaining arguments are ignored if widget.value is not null
tailValue: tailValue,
stepValue: stepValue,
rotationValue: rotationValue,
strokeWidth: widget.strokeWidth,
),
),
),
);
......@@ -510,18 +585,24 @@ class RefreshProgressIndicator extends CircularProgressIndicator {
///
/// Rather than creating a refresh progress indicator directly, consider using
/// a [RefreshIndicator] together with a [Scrollable] widget.
///
/// {@macro flutter.material.progressIndicator.semantics}
const RefreshProgressIndicator({
Key key,
double value,
Color backgroundColor,
Animation<Color> valueColor,
double strokeWidth = 2.0, // Different default than CircularProgressIndicator.
String semanticsLabel,
String semanticsValue,
}) : super(
key: key,
value: value,
backgroundColor: backgroundColor,
valueColor: valueColor,
strokeWidth: strokeWidth,
semanticsLabel: semanticsLabel,
semanticsValue: semanticsValue,
);
@override
......@@ -547,26 +628,29 @@ class _RefreshProgressIndicatorState extends _CircularProgressIndicatorState {
@override
Widget _buildIndicator(BuildContext context, double headValue, double tailValue, int stepValue, double rotationValue) {
final double arrowheadScale = widget.value == null ? 0.0 : (widget.value * 2.0).clamp(0.0, 1.0);
return Container(
width: _indicatorSize,
height: _indicatorSize,
margin: const EdgeInsets.all(4.0), // accommodate the shadow
child: Material(
type: MaterialType.circle,
color: widget.backgroundColor ?? Theme.of(context).canvasColor,
elevation: 2.0,
child: Padding(
padding: const EdgeInsets.all(12.0),
child: CustomPaint(
painter: _RefreshProgressIndicatorPainter(
valueColor: widget._getValueColor(context),
value: null, // Draw the indeterminate progress indicator.
headValue: headValue,
tailValue: tailValue,
stepValue: stepValue,
rotationValue: rotationValue,
strokeWidth: widget.strokeWidth,
arrowheadScale: arrowheadScale,
return widget._buildSemanticsWrapper(
context: context,
child: Container(
width: _indicatorSize,
height: _indicatorSize,
margin: const EdgeInsets.all(4.0), // accommodate the shadow
child: Material(
type: MaterialType.circle,
color: widget.backgroundColor ?? Theme.of(context).canvasColor,
elevation: 2.0,
child: Padding(
padding: const EdgeInsets.all(12.0),
child: CustomPaint(
painter: _RefreshProgressIndicatorPainter(
valueColor: widget._getValueColor(context),
value: null, // Draw the indeterminate progress indicator.
headValue: headValue,
tailValue: tailValue,
stepValue: stepValue,
rotationValue: rotationValue,
strokeWidth: widget.strokeWidth,
arrowheadScale: arrowheadScale,
),
),
),
),
......
......@@ -7,6 +7,8 @@ import 'dart:math' as math;
import 'package:flutter/widgets.dart';
import 'debug.dart';
import 'material_localizations.dart';
import 'progress_indicator.dart';
import 'theme.dart';
......@@ -85,6 +87,11 @@ class RefreshIndicator extends StatefulWidget {
/// The [onRefresh], [child], and [notificationPredicate] arguments must be
/// non-null. The default
/// [displacement] is 40.0 logical pixels.
///
/// The [semanticsLabel] is used to specify an accessibility label for this widget.
/// If it is null, it will be defaulted to [MaterialLocalizations.refreshIndicatorSemanticLabel].
/// An empty string may be passed to avoid having anything read by screen reading software.
/// The [semanticsValue] may be used to specify progress on the widget. The
const RefreshIndicator({
Key key,
@required this.child,
......@@ -93,6 +100,8 @@ class RefreshIndicator extends StatefulWidget {
this.color,
this.backgroundColor,
this.notificationPredicate = defaultScrollNotificationPredicate,
this.semanticsLabel,
this.semanticsValue,
}) : assert(child != null),
assert(onRefresh != null),
assert(notificationPredicate != null),
......@@ -131,6 +140,15 @@ class RefreshIndicator extends StatefulWidget {
/// else for more complicated layouts.
final ScrollNotificationPredicate notificationPredicate;
/// {@macro flutter.material.progressIndicator.semanticsLabel}
///
/// This will be defaulted to [MaterialLocalizations.refreshIndicatorSemanticLabel]
/// if it is null.
final String semanticsLabel;
/// {@macro flutter.material.progressIndicator.semanticsValue}
final String semanticsValue;
@override
RefreshIndicatorState createState() => RefreshIndicatorState();
}
......@@ -391,6 +409,7 @@ class RefreshIndicatorState extends State<RefreshIndicator> with TickerProviderS
@override
Widget build(BuildContext context) {
assert(debugCheckHasMaterialLocalizations(context));
final Widget child = NotificationListener<ScrollNotification>(
key: _key,
onNotification: _handleScrollNotification,
......@@ -434,6 +453,8 @@ class RefreshIndicatorState extends State<RefreshIndicator> with TickerProviderS
animation: _positionController,
builder: (BuildContext context, Widget child) {
return RefreshProgressIndicator(
semanticsLabel: widget.semanticsLabel ?? MaterialLocalizations.of(context).refreshIndicatorSemanticLabel,
semanticsValue: widget.semanticsValue,
value: showIndeterminateIndicator ? null : _value.value,
valueColor: _valueColor,
backgroundColor: widget.backgroundColor,
......
......@@ -13,7 +13,8 @@ void main() {
// The "can be constructed" tests that follow are primarily to ensure that any
// animations started by the progress indicators are stopped at dispose() time.
testWidgets('LinearProgressIndicator(value: 0.0) can be constructed', (WidgetTester tester) async {
testWidgets('LinearProgressIndicator(value: 0.0) can be constructed and has empty semantics by default', (WidgetTester tester) async {
final SemanticsHandle handle = tester.ensureSemantics();
await tester.pumpWidget(
const Directionality(
textDirection: TextDirection.ltr,
......@@ -25,9 +26,13 @@ void main() {
),
),
);
expect(tester.getSemantics(find.byType(LinearProgressIndicator)), matchesSemantics());
handle.dispose();
});
testWidgets('LinearProgressIndicator(value: null) can be constructed', (WidgetTester tester) async {
testWidgets('LinearProgressIndicator(value: null) can be constructed and has empty semantics by default', (WidgetTester tester) async {
final SemanticsHandle handle = tester.ensureSemantics();
await tester.pumpWidget(
const Directionality(
textDirection: TextDirection.rtl,
......@@ -39,6 +44,9 @@ void main() {
),
),
);
expect(tester.getSemantics(find.byType(LinearProgressIndicator)), matchesSemantics());
handle.dispose();
});
testWidgets('LinearProgressIndicator paint (LTR)', (WidgetTester tester) async {
......@@ -166,20 +174,34 @@ void main() {
);
});
testWidgets('CircularProgressIndicator(value: 0.0) can be constructed', (WidgetTester tester) async {
testWidgets('CircularProgressIndicator(value: 0.0) can be constructed and has value semantics by default', (WidgetTester tester) async {
final SemanticsHandle handle = tester.ensureSemantics();
await tester.pumpWidget(
const Center(
child: CircularProgressIndicator(value: 0.0)
const Directionality(
textDirection: TextDirection.ltr,
child: Center(
child: CircularProgressIndicator(value: 0.0)
)
)
);
expect(tester.getSemantics(find.byType(CircularProgressIndicator)), matchesSemantics(
value: '0%',
textDirection: TextDirection.ltr,
));
handle.dispose();
});
testWidgets('CircularProgressIndicator(value: null) can be constructed', (WidgetTester tester) async {
testWidgets('CircularProgressIndicator(value: null) can be constructed and has empty semantics by default', (WidgetTester tester) async {
final SemanticsHandle handle = tester.ensureSemantics();
await tester.pumpWidget(
const Center(
child: CircularProgressIndicator(value: null)
)
);
expect(tester.getSemantics(find.byType(CircularProgressIndicator)), matchesSemantics());
handle.dispose();
});
testWidgets('LinearProgressIndicator causes a repaint when it changes', (WidgetTester tester) async {
......@@ -321,4 +343,147 @@ void main() {
);
expect(tester.binding.transientCallbackCount, 0);
});
testWidgets('LinearProgressIndicator can be made accessible', (WidgetTester tester) async {
final SemanticsHandle handle = tester.ensureSemantics();
final GlobalKey key = GlobalKey();
const String label = 'Label';
const String value = '25%';
await tester.pumpWidget(
Directionality(
textDirection: TextDirection.ltr,
child: LinearProgressIndicator(
key: key,
value: 0.25,
semanticsLabel: label,
semanticsValue: value,
),
),
);
expect(tester.getSemantics(find.byKey(key)), matchesSemantics(
textDirection: TextDirection.ltr,
label: label,
value: value,
));
handle.dispose();
});
testWidgets('LinearProgressIndicator that is determinate gets default a11y value', (WidgetTester tester) async {
final SemanticsHandle handle = tester.ensureSemantics();
final GlobalKey key = GlobalKey();
const String label = 'Label';
await tester.pumpWidget(
Directionality(
textDirection: TextDirection.ltr,
child: LinearProgressIndicator(
key: key,
value: 0.25,
semanticsLabel: label,
),
),
);
expect(tester.getSemantics(find.byKey(key)), matchesSemantics(
textDirection: TextDirection.ltr,
label: label,
value: '25%',
));
handle.dispose();
});
testWidgets('LinearProgressIndicator that is determinate does not default a11y value when label is null', (WidgetTester tester) async {
final SemanticsHandle handle = tester.ensureSemantics();
final GlobalKey key = GlobalKey();
await tester.pumpWidget(
Directionality(
textDirection: TextDirection.ltr,
child: LinearProgressIndicator(
key: key,
value: 0.25,
),
),
);
expect(tester.getSemantics(find.byKey(key)), matchesSemantics());
handle.dispose();
});
testWidgets('LinearProgressIndicator that is indeterminate does not default a11y value', (WidgetTester tester) async {
final SemanticsHandle handle = tester.ensureSemantics();
final GlobalKey key = GlobalKey();
const String label = 'Progress';
await tester.pumpWidget(
Directionality(
textDirection: TextDirection.ltr,
child: LinearProgressIndicator(
key: key,
value: 0.25,
semanticsLabel: label,
),
),
);
expect(tester.getSemantics(find.byKey(key)), matchesSemantics(
textDirection: TextDirection.ltr,
label: label,
));
handle.dispose();
});
testWidgets('CircularProgressIndicator can be made accessible', (WidgetTester tester) async {
final SemanticsHandle handle = tester.ensureSemantics();
final GlobalKey key = GlobalKey();
const String label = 'Label';
const String value = '25%';
await tester.pumpWidget(
Directionality(
textDirection: TextDirection.ltr,
child: CircularProgressIndicator(
key: key,
value: 0.25,
semanticsLabel: label,
semanticsValue: value,
),
),
);
expect(tester.getSemantics(find.byKey(key)), matchesSemantics(
textDirection: TextDirection.ltr,
label: label,
value: value,
));
handle.dispose();
});
testWidgets('RefreshProgressIndicator can be made accessible', (WidgetTester tester) async {
final SemanticsHandle handle = tester.ensureSemantics();
final GlobalKey key = GlobalKey();
const String label = 'Label';
const String value = '25%';
await tester.pumpWidget(
Directionality(
textDirection: TextDirection.ltr,
child: RefreshProgressIndicator(
key: key,
semanticsLabel: label,
semanticsValue: value,
),
),
);
expect(tester.getSemantics(find.byKey(key)), matchesSemantics(
textDirection: TextDirection.ltr,
label: label,
value: value,
));
handle.dispose();
});
}
......@@ -23,6 +23,7 @@ Future<void> holdRefresh() {
void main() {
testWidgets('RefreshIndicator', (WidgetTester tester) async {
refreshCalled = false;
final SemanticsHandle handle = tester.ensureSemantics();
await tester.pumpWidget(
MaterialApp(
home: RefreshIndicator(
......@@ -42,10 +43,16 @@ void main() {
await tester.fling(find.text('A'), const Offset(0.0, 300.0), 1000.0);
await tester.pump();
expect(tester.getSemantics(find.byType(RefreshProgressIndicator)), matchesSemantics(
label: 'Refresh',
));
await tester.pump(const Duration(seconds: 1)); // finish the scroll animation
await tester.pump(const Duration(seconds: 1)); // finish the indicator settle animation
await tester.pump(const Duration(seconds: 1)); // finish the indicator hide animation
expect(refreshCalled, true);
handle.dispose();
});
testWidgets('Refresh Indicator - nested', (WidgetTester tester) async {
......
......@@ -131,6 +131,9 @@ class MaterialLocalizationAr extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'الصفحة السابقة';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => r'$remainingCount أحرف متبقية';
......@@ -332,6 +335,9 @@ class MaterialLocalizationBg extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Предишната страница';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -533,6 +539,9 @@ class MaterialLocalizationBs extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Prethodna stranica';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => r'Preostala su $remainingCount znaka';
......@@ -734,6 +743,9 @@ class MaterialLocalizationCa extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Pàgina anterior';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -935,6 +947,9 @@ class MaterialLocalizationCs extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Předchozí stránka';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => r'Zbývají $remainingCount znaky';
......@@ -1136,6 +1151,9 @@ class MaterialLocalizationDa extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Forrige side';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -1337,6 +1355,9 @@ class MaterialLocalizationDe extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Vorherige Seite';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -1568,6 +1589,9 @@ class MaterialLocalizationEl extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Προηγούμενη σελίδα';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -1769,6 +1793,9 @@ class MaterialLocalizationEn extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Previous page';
@override
String get refreshIndicatorSemanticLabel => r'Refresh';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -2273,6 +2300,9 @@ class MaterialLocalizationEs extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Página anterior';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -4097,6 +4127,9 @@ class MaterialLocalizationEt extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Eelmine leht';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -4298,6 +4331,9 @@ class MaterialLocalizationFa extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'صفحه قبل';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -4499,6 +4535,9 @@ class MaterialLocalizationFi extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Edellinen sivu';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -4700,6 +4739,9 @@ class MaterialLocalizationFil extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Nakaraang page';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -4901,6 +4943,9 @@ class MaterialLocalizationFr extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Page précédente';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -5129,6 +5174,9 @@ class MaterialLocalizationGsw extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Vorherige Seite';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -5330,6 +5378,9 @@ class MaterialLocalizationHe extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'הדף הקודם';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -5531,6 +5582,9 @@ class MaterialLocalizationHi extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'पिछला पेज';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -5732,6 +5786,9 @@ class MaterialLocalizationHr extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Prethodna stranica';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => r'Preostala su $remainingCount znaka';
......@@ -5933,6 +5990,9 @@ class MaterialLocalizationHu extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Előző oldal';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -6134,6 +6194,9 @@ class MaterialLocalizationId extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Halaman sebelumnya';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -6335,6 +6398,9 @@ class MaterialLocalizationIt extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Pagina precedente';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -6536,6 +6602,9 @@ class MaterialLocalizationJa extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'前のページ';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -6737,6 +6806,9 @@ class MaterialLocalizationKm extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'ទំព័រមុន';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -6938,6 +7010,9 @@ class MaterialLocalizationKo extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'이전 페이지';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -7139,6 +7214,9 @@ class MaterialLocalizationLt extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Ankstesnis puslapis';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => r'Liko $remainingCount simboliai';
......@@ -7340,6 +7418,9 @@ class MaterialLocalizationLv extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Iepriekšējā lapa';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -7541,6 +7622,9 @@ class MaterialLocalizationMn extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Өмнөх хуудас';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -7943,6 +8027,9 @@ class MaterialLocalizationMs extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Halaman sebelumnya';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -8144,6 +8231,9 @@ class MaterialLocalizationNb extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Forrige side';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -8345,6 +8435,9 @@ class MaterialLocalizationNl extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Vorige pagina';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -8546,6 +8639,9 @@ class MaterialLocalizationPl extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Poprzednia strona';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => r'Jeszcze $remainingCount znaki';
......@@ -8747,6 +8843,9 @@ class MaterialLocalizationPs extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'مخکینی مخ';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -8948,6 +9047,9 @@ class MaterialLocalizationPt extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Página anterior';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -9233,6 +9335,9 @@ class MaterialLocalizationRo extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Pagina anterioară';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => r'$remainingCount caractere rămase';
......@@ -9434,6 +9539,9 @@ class MaterialLocalizationRu extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Предыдущая страница';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => r'Осталось $remainingCount символа';
......@@ -9635,6 +9743,9 @@ class MaterialLocalizationSk extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Predchádzajúca stránka';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => r'Zostávajú $remainingCount znaky';
......@@ -9836,6 +9947,9 @@ class MaterialLocalizationSl extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Prejšnja stran';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => r'Še $remainingCount znaki';
......@@ -10037,6 +10151,9 @@ class MaterialLocalizationSr extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Претходна страница';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => r'Преостала су $remainingCount знака';
......@@ -10439,6 +10556,9 @@ class MaterialLocalizationSv extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Föregående sida';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -10640,6 +10760,9 @@ class MaterialLocalizationTh extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'หน้าก่อน';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -10841,6 +10964,9 @@ class MaterialLocalizationTl extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Nakaraang page';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -11042,6 +11168,9 @@ class MaterialLocalizationTr extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Önceki sayfa';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -11243,6 +11372,9 @@ class MaterialLocalizationUk extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Попередня сторінка';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => r'Залишилося $remainingCount символи';
......@@ -11444,6 +11576,9 @@ class MaterialLocalizationUr extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'گزشتہ صفحہ';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -11645,6 +11780,9 @@ class MaterialLocalizationVi extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'Trang trước';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......@@ -11846,6 +11984,9 @@ class MaterialLocalizationZh extends GlobalMaterialLocalizations {
@override
String get previousPageTooltip => r'上一页';
@override
String get refreshIndicatorSemanticLabel => r'TBD';
@override
String get remainingTextFieldCharacterCountFew => null;
......
......@@ -57,5 +57,6 @@
"collapsedIconTapHint": "توسيع",
"remainingTextFieldCharacterCountZero": "لا أحرف متبقية",
"remainingTextFieldCharacterCountOne": "حرف واحد متبقٍ",
"remainingTextFieldCharacterCountOther": "$remainingCount حرف متبقٍ"
"remainingTextFieldCharacterCountOther": "$remainingCount حرف متبقٍ",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Разгъване",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Остава 1 знак",
"remainingTextFieldCharacterCountOther": "Остават $remainingCount знака"
"remainingTextFieldCharacterCountOther": "Остават $remainingCount знака",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -52,5 +52,6 @@
"collapsedIconTapHint": "Proširi",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Preostao je 1 znak",
"remainingTextFieldCharacterCountOther": "Preostalo je $remainingCount znakova"
"remainingTextFieldCharacterCountOther": "Preostalo je $remainingCount znakova",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Desplega",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 caràcter",
"remainingTextFieldCharacterCountOther": "Queden $remainingCount caràcters"
"remainingTextFieldCharacterCountOther": "Queden $remainingCount caràcters",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -54,5 +54,6 @@
"collapsedIconTapHint": "Rozbalit",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Zbývá 1 znak",
"remainingTextFieldCharacterCountOther": "Zbývá $remainingCount znaků"
"remainingTextFieldCharacterCountOther": "Zbývá $remainingCount znaků",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Udvid",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Ét tegn tilbage",
"remainingTextFieldCharacterCountOther": "$remainingCount tegn tilbage"
"remainingTextFieldCharacterCountOther": "$remainingCount tegn tilbage",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -51,5 +51,6 @@
"collapsedIconTapHint": "Maximieren",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Noch 1 Zeichen",
"remainingTextFieldCharacterCountOther": "Noch $remainingCount Zeichen"
"remainingTextFieldCharacterCountOther": "Noch $remainingCount Zeichen",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Maximieren",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Noch 1 Zeichen",
"remainingTextFieldCharacterCountOther": "Noch $remainingCount Zeichen"
"remainingTextFieldCharacterCountOther": "Noch $remainingCount Zeichen",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Ανάπτυξη",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "απομένει 1 χαρακτήρας",
"remainingTextFieldCharacterCountOther": "απομένουν $remainingCount χαρακτήρες"
"remainingTextFieldCharacterCountOther": "απομένουν $remainingCount χαρακτήρες",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -254,5 +254,10 @@
"@remainingTextFieldCharacterCount": {
"description": "The label for the TextField's character counter. remainingCharacters is a integer representing how many more characters the user can type into the text field before using up a given budget. All values are greater than or equal to zero.",
"plural": "remainingCount"
},
"refreshIndicatorSemanticLabel": "Refresh",
"@refreshIndicatorSemanticLabel": {
"description": "The verb which describes what happens when a RefreshIndicator is displayed on screen. This is used by TalkBack on Android to announce that a refresh is happening."
}
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expand",
"remainingTextFieldCharacterCountZero": "No characters remaining",
"remainingTextFieldCharacterCountOne": "1 character remaining",
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining"
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining",
"refreshIndicatorSemanticLabel": "Refresh"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expand",
"remainingTextFieldCharacterCountZero": "No characters remaining",
"remainingTextFieldCharacterCountOne": "1 character remaining",
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining"
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining",
"refreshIndicatorSemanticLabel": "Refresh"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expand",
"remainingTextFieldCharacterCountZero": "No characters remaining",
"remainingTextFieldCharacterCountOne": "1 character remaining",
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining"
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining",
"refreshIndicatorSemanticLabel": "Refresh"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expand",
"remainingTextFieldCharacterCountZero": "No characters remaining",
"remainingTextFieldCharacterCountOne": "1 character remaining",
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining"
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining",
"refreshIndicatorSemanticLabel": "Refresh"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expand",
"remainingTextFieldCharacterCountZero": "No characters remaining",
"remainingTextFieldCharacterCountOne": "1 character remaining",
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining"
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining",
"refreshIndicatorSemanticLabel": "Refresh"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expand",
"remainingTextFieldCharacterCountZero": "No characters remaining",
"remainingTextFieldCharacterCountOne": "1 character remaining",
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining"
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining",
"refreshIndicatorSemanticLabel": "Refresh"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expand",
"remainingTextFieldCharacterCountZero": "No characters remaining",
"remainingTextFieldCharacterCountOne": "1 character remaining",
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining"
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining",
"refreshIndicatorSemanticLabel": "Refresh"
}
......@@ -51,5 +51,6 @@
"collapsedIconTapHint": "Mostrar",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter.",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres"
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Laienda",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Jäänud on 1 tähemärk",
"remainingTextFieldCharacterCountOther": "Jäänud on $remainingCount tähemärki"
"remainingTextFieldCharacterCountOther": "Jäänud on $remainingCount tähemärki",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "بزرگ کردن",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "۱ نویسه باقی مانده است",
"remainingTextFieldCharacterCountOther": "$remainingCount نویسه باقی مانده است"
"remainingTextFieldCharacterCountOther": "$remainingCount نویسه باقی مانده است",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Laajenna",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 merkki jäljellä",
"remainingTextFieldCharacterCountOther": "$remainingCount merkkiä jäljellä"
"remainingTextFieldCharacterCountOther": "$remainingCount merkkiä jäljellä",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "I-expand",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 character ang natitira",
"remainingTextFieldCharacterCountOther": "$remainingCount na character ang natitira"
"remainingTextFieldCharacterCountOther": "$remainingCount na character ang natitira",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -51,5 +51,6 @@
"collapsedIconTapHint": "Développer",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 caractère restant",
"remainingTextFieldCharacterCountOther": "$remainingCount caractères restants"
"remainingTextFieldCharacterCountOther": "$remainingCount caractères restants",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Maximieren",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Noch 1 Zeichen",
"remainingTextFieldCharacterCountOther": "Noch $remainingCount Zeichen"
"remainingTextFieldCharacterCountOther": "Noch $remainingCount Zeichen",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -54,5 +54,6 @@
"collapsedIconTapHint": "הרחבה",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "נותר תו אחד",
"remainingTextFieldCharacterCountOther": "נותרו $remainingCount תווים"
"remainingTextFieldCharacterCountOther": "נותרו $remainingCount תווים",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "बड़ा करें",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "एक वर्ण अाैर डाला जा सकता है",
"remainingTextFieldCharacterCountOther": "$remainingCount वर्ण अाैर डाले जा सकते हैं"
"remainingTextFieldCharacterCountOther": "$remainingCount वर्ण अाैर डाले जा सकते हैं",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -52,5 +52,6 @@
"collapsedIconTapHint": "Proširi",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Preostao je 1 znak",
"remainingTextFieldCharacterCountOther": "Preostalo je $remainingCount znakova"
"remainingTextFieldCharacterCountOther": "Preostalo je $remainingCount znakova",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Kibontás",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 karakter maradt",
"remainingTextFieldCharacterCountOther": "$remainingCount karakter maradt"
"remainingTextFieldCharacterCountOther": "$remainingCount karakter maradt",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Luaskan",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Sisa 1 karakter",
"remainingTextFieldCharacterCountOther": "Sisa $remainingCount karakter"
"remainingTextFieldCharacterCountOther": "Sisa $remainingCount karakter",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Espandi",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 carattere rimanente",
"remainingTextFieldCharacterCountOther": "$remainingCount caratteri rimanenti"
"remainingTextFieldCharacterCountOther": "$remainingCount caratteri rimanenti",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "展開",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "残り 1 文字(半角相当)",
"remainingTextFieldCharacterCountOther": "残り $remainingCount 文字(半角相当)"
"remainingTextFieldCharacterCountOther": "残り $remainingCount 文字(半角相当)",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "ពង្រីក",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "នៅសល់​ 1 តួ​ទៀត",
"remainingTextFieldCharacterCountOther": "នៅសល់ $remainingCount តួ​ទៀត"
"remainingTextFieldCharacterCountOther": "នៅសល់ $remainingCount តួ​ទៀត",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "펼치기",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1자 남음",
"remainingTextFieldCharacterCountOther": "$remainingCount자 남음"
"remainingTextFieldCharacterCountOther": "$remainingCount자 남음",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -54,5 +54,6 @@
"collapsedIconTapHint": "Išskleisti",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Liko 1 simbolis",
"remainingTextFieldCharacterCountOther": "Liko $remainingCount simbolių"
"remainingTextFieldCharacterCountOther": "Liko $remainingCount simbolių",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -51,5 +51,6 @@
"collapsedIconTapHint": "Izvērst",
"remainingTextFieldCharacterCountZero": "Nav atlikusi neviena rakstzīme.",
"remainingTextFieldCharacterCountOne": "Atlikusi 1 rakstzīme.",
"remainingTextFieldCharacterCountOther": "Atlikušas $remainingCount rakstzīmes."
"remainingTextFieldCharacterCountOther": "Atlikušas $remainingCount rakstzīmes.",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -51,5 +51,6 @@
"collapsedIconTapHint": "Expand",
"remainingTextFieldCharacterCountZero": "No characters remaining",
"remainingTextFieldCharacterCountOne": "1 character remaining",
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining"
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -51,5 +51,6 @@
"collapsedIconTapHint": "Kembangkan",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 aksara lagi",
"remainingTextFieldCharacterCountOther": "$remainingCount aksara lagi"
"remainingTextFieldCharacterCountOther": "$remainingCount aksara lagi",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Vis",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 tegn gjenstår",
"remainingTextFieldCharacterCountOther": "$remainingCount tegn gjenstår"
"remainingTextFieldCharacterCountOther": "$remainingCount tegn gjenstår",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Uitvouwen",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 teken resterend",
"remainingTextFieldCharacterCountOther": "$remainingCount tekens resterend"
"remainingTextFieldCharacterCountOther": "$remainingCount tekens resterend",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -54,5 +54,6 @@
"collapsedIconTapHint": "Rozwiń",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Jeszcze 1 znak",
"remainingTextFieldCharacterCountOther": "Jeszcze $remainingCount znaku"
"remainingTextFieldCharacterCountOther": "Jeszcze $remainingCount znaku",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -49,5 +49,6 @@
"collapsedIconTapHint": "TBD",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "TBD",
"remainingTextFieldCharacterCountOther": "TBD"
"remainingTextFieldCharacterCountOther": "TBD",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -52,5 +52,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 caractere restante",
"remainingTextFieldCharacterCountOther": "$remainingCount caracteres restantes"
"remainingTextFieldCharacterCountOther": "$remainingCount caracteres restantes",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Resta 1 caráter",
"remainingTextFieldCharacterCountOther": "Restam $remainingCount carateres"
"remainingTextFieldCharacterCountOther": "Restam $remainingCount carateres",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -53,5 +53,6 @@
"collapsedIconTapHint": "Extindeți",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "un caracter rămas",
"remainingTextFieldCharacterCountOther": "$remainingCount de caractere rămase"
"remainingTextFieldCharacterCountOther": "$remainingCount de caractere rămase",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -55,5 +55,6 @@
"collapsedIconTapHint": "Развернуть",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Остался 1 символ",
"remainingTextFieldCharacterCountOther": "Осталось $remainingCount символа"
"remainingTextFieldCharacterCountOther": "Осталось $remainingCount символа",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -54,5 +54,6 @@
"collapsedIconTapHint": "Rozbaliť",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Zostáva 1 znak",
"remainingTextFieldCharacterCountOther": "Zostáva $remainingCount znakov"
"remainingTextFieldCharacterCountOther": "Zostáva $remainingCount znakov",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -54,5 +54,6 @@
"collapsedIconTapHint": "Razširiti",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Še 1 znak",
"remainingTextFieldCharacterCountOther": "Še $remainingCount znakov"
"remainingTextFieldCharacterCountOther": "Še $remainingCount znakov",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -52,5 +52,6 @@
"collapsedIconTapHint": "Прошири",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Преостао је 1 знак",
"remainingTextFieldCharacterCountOther": "Преостало је $remainingCount знакова"
"remainingTextFieldCharacterCountOther": "Преостало је $remainingCount знакова",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -52,5 +52,6 @@
"collapsedIconTapHint": "Proširi",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Preostao je 1 znak",
"remainingTextFieldCharacterCountOther": "Preostalo je $remainingCount znakova"
"remainingTextFieldCharacterCountOther": "Preostalo je $remainingCount znakova",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Utöka",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 tecken kvar",
"remainingTextFieldCharacterCountOther": "$remainingCount tecken kvar"
"remainingTextFieldCharacterCountOther": "$remainingCount tecken kvar",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "ขยาย",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "เหลือ 1 อักขระ",
"remainingTextFieldCharacterCountOther": "เหลือ $remainingCount อักขระ"
"remainingTextFieldCharacterCountOther": "เหลือ $remainingCount อักขระ",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "I-expand",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 character ang natitira",
"remainingTextFieldCharacterCountOther": "$remainingCount na character ang natitira"
"remainingTextFieldCharacterCountOther": "$remainingCount na character ang natitira",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Genişlet",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 karakter kaldı",
"remainingTextFieldCharacterCountOther": "$remainingCount karakter kaldı"
"remainingTextFieldCharacterCountOther": "$remainingCount karakter kaldı",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -54,5 +54,6 @@
"collapsedIconTapHint": "Розгорнути",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Залишився 1 символ",
"remainingTextFieldCharacterCountOther": "Залишилося $remainingCount символу"
"remainingTextFieldCharacterCountOther": "Залишилося $remainingCount символу",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "پھیلائیں",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 حرف باقی ہے",
"remainingTextFieldCharacterCountOther": "$remainingCount حروف باقی ہیں"
"remainingTextFieldCharacterCountOther": "$remainingCount حروف باقی ہیں",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Mở rộng",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Còn lại 1 ký tự",
"remainingTextFieldCharacterCountOther": "Còn lại $remainingCount ký tự"
"remainingTextFieldCharacterCountOther": "Còn lại $remainingCount ký tự",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "展开",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "还可输入 1 个字符",
"remainingTextFieldCharacterCountOther": "还可输入 $remainingCount 个字符"
"remainingTextFieldCharacterCountOther": "还可输入 $remainingCount 个字符",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "展開",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "還可輸入 1 個字元",
"remainingTextFieldCharacterCountOther": "還可輸入 $remainingCount 個字元"
"remainingTextFieldCharacterCountOther": "還可輸入 $remainingCount 個字元",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -50,5 +50,6 @@
"collapsedIconTapHint": "展開",
"remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "還可輸入 1 個字元",
"remainingTextFieldCharacterCountOther": "還可輸入 $remainingCount 個字元"
"remainingTextFieldCharacterCountOther": "還可輸入 $remainingCount 個字元",
"refreshIndicatorSemanticLabel": "TBD"
}
......@@ -40,6 +40,7 @@ void main() {
expect(localizations.alertDialogLabel, isNotNull);
expect(localizations.collapsedIconTapHint, isNotNull);
expect(localizations.expandedIconTapHint, isNotNull);
expect(localizations.refreshIndicatorSemanticLabel, isNotNull);
expect(localizations.remainingTextFieldCharacterCount(0), isNotNull);
expect(localizations.remainingTextFieldCharacterCount(1), isNotNull);
......
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