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 { ...@@ -310,6 +310,9 @@ abstract class MaterialLocalizations {
/// The label for the [TextField]'s character counter. /// The label for the [TextField]'s character counter.
String remainingTextFieldCharacterCount(int remaining); String remainingTextFieldCharacterCount(int remaining);
/// The default semantics label for a [RefreshIndicator].
String get refreshIndicatorSemanticLabel;
/// The `MaterialLocalizations` from the closest [Localizations] instance /// The `MaterialLocalizations` from the closest [Localizations] instance
/// that encloses the given context. /// that encloses the given context.
/// ///
...@@ -698,6 +701,9 @@ class DefaultMaterialLocalizations implements MaterialLocalizations { ...@@ -698,6 +701,9 @@ class DefaultMaterialLocalizations implements MaterialLocalizations {
@override @override
String get collapsedIconTapHint => 'Expand'; String get collapsedIconTapHint => 'Expand';
@override
String get refreshIndicatorSemanticLabel => 'Refresh';
/// Creates an object that provides US English resource values for the material /// Creates an object that provides US English resource values for the material
/// library widgets. /// library widgets.
/// ///
......
...@@ -7,6 +7,8 @@ import 'dart:math' as math; ...@@ -7,6 +7,8 @@ import 'dart:math' as math;
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'debug.dart';
import 'material_localizations.dart';
import 'progress_indicator.dart'; import 'progress_indicator.dart';
import 'theme.dart'; import 'theme.dart';
...@@ -85,6 +87,11 @@ class RefreshIndicator extends StatefulWidget { ...@@ -85,6 +87,11 @@ class RefreshIndicator extends StatefulWidget {
/// The [onRefresh], [child], and [notificationPredicate] arguments must be /// The [onRefresh], [child], and [notificationPredicate] arguments must be
/// non-null. The default /// non-null. The default
/// [displacement] is 40.0 logical pixels. /// [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({ const RefreshIndicator({
Key key, Key key,
@required this.child, @required this.child,
...@@ -93,6 +100,8 @@ class RefreshIndicator extends StatefulWidget { ...@@ -93,6 +100,8 @@ class RefreshIndicator extends StatefulWidget {
this.color, this.color,
this.backgroundColor, this.backgroundColor,
this.notificationPredicate = defaultScrollNotificationPredicate, this.notificationPredicate = defaultScrollNotificationPredicate,
this.semanticsLabel,
this.semanticsValue,
}) : assert(child != null), }) : assert(child != null),
assert(onRefresh != null), assert(onRefresh != null),
assert(notificationPredicate != null), assert(notificationPredicate != null),
...@@ -131,6 +140,15 @@ class RefreshIndicator extends StatefulWidget { ...@@ -131,6 +140,15 @@ class RefreshIndicator extends StatefulWidget {
/// else for more complicated layouts. /// else for more complicated layouts.
final ScrollNotificationPredicate notificationPredicate; 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 @override
RefreshIndicatorState createState() => RefreshIndicatorState(); RefreshIndicatorState createState() => RefreshIndicatorState();
} }
...@@ -391,6 +409,7 @@ class RefreshIndicatorState extends State<RefreshIndicator> with TickerProviderS ...@@ -391,6 +409,7 @@ class RefreshIndicatorState extends State<RefreshIndicator> with TickerProviderS
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
assert(debugCheckHasMaterialLocalizations(context));
final Widget child = NotificationListener<ScrollNotification>( final Widget child = NotificationListener<ScrollNotification>(
key: _key, key: _key,
onNotification: _handleScrollNotification, onNotification: _handleScrollNotification,
...@@ -434,6 +453,8 @@ class RefreshIndicatorState extends State<RefreshIndicator> with TickerProviderS ...@@ -434,6 +453,8 @@ class RefreshIndicatorState extends State<RefreshIndicator> with TickerProviderS
animation: _positionController, animation: _positionController,
builder: (BuildContext context, Widget child) { builder: (BuildContext context, Widget child) {
return RefreshProgressIndicator( return RefreshProgressIndicator(
semanticsLabel: widget.semanticsLabel ?? MaterialLocalizations.of(context).refreshIndicatorSemanticLabel,
semanticsValue: widget.semanticsValue,
value: showIndeterminateIndicator ? null : _value.value, value: showIndeterminateIndicator ? null : _value.value,
valueColor: _valueColor, valueColor: _valueColor,
backgroundColor: widget.backgroundColor, backgroundColor: widget.backgroundColor,
......
...@@ -13,7 +13,8 @@ void main() { ...@@ -13,7 +13,8 @@ void main() {
// The "can be constructed" tests that follow are primarily to ensure that any // The "can be constructed" tests that follow are primarily to ensure that any
// animations started by the progress indicators are stopped at dispose() time. // 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( await tester.pumpWidget(
const Directionality( const Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
...@@ -25,9 +26,13 @@ void main() { ...@@ -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( await tester.pumpWidget(
const Directionality( const Directionality(
textDirection: TextDirection.rtl, textDirection: TextDirection.rtl,
...@@ -39,6 +44,9 @@ void main() { ...@@ -39,6 +44,9 @@ void main() {
), ),
), ),
); );
expect(tester.getSemantics(find.byType(LinearProgressIndicator)), matchesSemantics());
handle.dispose();
}); });
testWidgets('LinearProgressIndicator paint (LTR)', (WidgetTester tester) async { testWidgets('LinearProgressIndicator paint (LTR)', (WidgetTester tester) async {
...@@ -166,20 +174,34 @@ void main() { ...@@ -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( await tester.pumpWidget(
const Center( const Directionality(
child: CircularProgressIndicator(value: 0.0) 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( await tester.pumpWidget(
const Center( const Center(
child: CircularProgressIndicator(value: null) child: CircularProgressIndicator(value: null)
) )
); );
expect(tester.getSemantics(find.byType(CircularProgressIndicator)), matchesSemantics());
handle.dispose();
}); });
testWidgets('LinearProgressIndicator causes a repaint when it changes', (WidgetTester tester) async { testWidgets('LinearProgressIndicator causes a repaint when it changes', (WidgetTester tester) async {
...@@ -321,4 +343,147 @@ void main() { ...@@ -321,4 +343,147 @@ void main() {
); );
expect(tester.binding.transientCallbackCount, 0); 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() { ...@@ -23,6 +23,7 @@ Future<void> holdRefresh() {
void main() { void main() {
testWidgets('RefreshIndicator', (WidgetTester tester) async { testWidgets('RefreshIndicator', (WidgetTester tester) async {
refreshCalled = false; refreshCalled = false;
final SemanticsHandle handle = tester.ensureSemantics();
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
home: RefreshIndicator( home: RefreshIndicator(
...@@ -42,10 +43,16 @@ void main() { ...@@ -42,10 +43,16 @@ void main() {
await tester.fling(find.text('A'), const Offset(0.0, 300.0), 1000.0); await tester.fling(find.text('A'), const Offset(0.0, 300.0), 1000.0);
await tester.pump(); 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 scroll animation
await tester.pump(const Duration(seconds: 1)); // finish the indicator settle 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 await tester.pump(const Duration(seconds: 1)); // finish the indicator hide animation
expect(refreshCalled, true); expect(refreshCalled, true);
handle.dispose();
}); });
testWidgets('Refresh Indicator - nested', (WidgetTester tester) async { testWidgets('Refresh Indicator - nested', (WidgetTester tester) async {
......
...@@ -57,5 +57,6 @@ ...@@ -57,5 +57,6 @@
"collapsedIconTapHint": "توسيع", "collapsedIconTapHint": "توسيع",
"remainingTextFieldCharacterCountZero": "لا أحرف متبقية", "remainingTextFieldCharacterCountZero": "لا أحرف متبقية",
"remainingTextFieldCharacterCountOne": "حرف واحد متبقٍ", "remainingTextFieldCharacterCountOne": "حرف واحد متبقٍ",
"remainingTextFieldCharacterCountOther": "$remainingCount حرف متبقٍ" "remainingTextFieldCharacterCountOther": "$remainingCount حرف متبقٍ",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Разгъване", "collapsedIconTapHint": "Разгъване",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Остава 1 знак", "remainingTextFieldCharacterCountOne": "Остава 1 знак",
"remainingTextFieldCharacterCountOther": "Остават $remainingCount знака" "remainingTextFieldCharacterCountOther": "Остават $remainingCount знака",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -52,5 +52,6 @@ ...@@ -52,5 +52,6 @@
"collapsedIconTapHint": "Proširi", "collapsedIconTapHint": "Proširi",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Preostao je 1 znak", "remainingTextFieldCharacterCountOne": "Preostao je 1 znak",
"remainingTextFieldCharacterCountOther": "Preostalo je $remainingCount znakova" "remainingTextFieldCharacterCountOther": "Preostalo je $remainingCount znakova",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Desplega", "collapsedIconTapHint": "Desplega",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 caràcter", "remainingTextFieldCharacterCountOne": "Queda 1 caràcter",
"remainingTextFieldCharacterCountOther": "Queden $remainingCount caràcters" "remainingTextFieldCharacterCountOther": "Queden $remainingCount caràcters",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -54,5 +54,6 @@ ...@@ -54,5 +54,6 @@
"collapsedIconTapHint": "Rozbalit", "collapsedIconTapHint": "Rozbalit",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Zbývá 1 znak", "remainingTextFieldCharacterCountOne": "Zbývá 1 znak",
"remainingTextFieldCharacterCountOther": "Zbývá $remainingCount znaků" "remainingTextFieldCharacterCountOther": "Zbývá $remainingCount znaků",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Udvid", "collapsedIconTapHint": "Udvid",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Ét tegn tilbage", "remainingTextFieldCharacterCountOne": "Ét tegn tilbage",
"remainingTextFieldCharacterCountOther": "$remainingCount tegn tilbage" "remainingTextFieldCharacterCountOther": "$remainingCount tegn tilbage",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -51,5 +51,6 @@ ...@@ -51,5 +51,6 @@
"collapsedIconTapHint": "Maximieren", "collapsedIconTapHint": "Maximieren",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Noch 1 Zeichen", "remainingTextFieldCharacterCountOne": "Noch 1 Zeichen",
"remainingTextFieldCharacterCountOther": "Noch $remainingCount Zeichen" "remainingTextFieldCharacterCountOther": "Noch $remainingCount Zeichen",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Maximieren", "collapsedIconTapHint": "Maximieren",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Noch 1 Zeichen", "remainingTextFieldCharacterCountOne": "Noch 1 Zeichen",
"remainingTextFieldCharacterCountOther": "Noch $remainingCount Zeichen" "remainingTextFieldCharacterCountOther": "Noch $remainingCount Zeichen",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Ανάπτυξη", "collapsedIconTapHint": "Ανάπτυξη",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "απομένει 1 χαρακτήρας", "remainingTextFieldCharacterCountOne": "απομένει 1 χαρακτήρας",
"remainingTextFieldCharacterCountOther": "απομένουν $remainingCount χαρακτήρες" "remainingTextFieldCharacterCountOther": "απομένουν $remainingCount χαρακτήρες",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -254,5 +254,10 @@ ...@@ -254,5 +254,10 @@
"@remainingTextFieldCharacterCount": { "@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.", "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" "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 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expand", "collapsedIconTapHint": "Expand",
"remainingTextFieldCharacterCountZero": "No characters remaining", "remainingTextFieldCharacterCountZero": "No characters remaining",
"remainingTextFieldCharacterCountOne": "1 character remaining", "remainingTextFieldCharacterCountOne": "1 character remaining",
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining" "remainingTextFieldCharacterCountOther": "$remainingCount characters remaining",
"refreshIndicatorSemanticLabel": "Refresh"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expand", "collapsedIconTapHint": "Expand",
"remainingTextFieldCharacterCountZero": "No characters remaining", "remainingTextFieldCharacterCountZero": "No characters remaining",
"remainingTextFieldCharacterCountOne": "1 character remaining", "remainingTextFieldCharacterCountOne": "1 character remaining",
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining" "remainingTextFieldCharacterCountOther": "$remainingCount characters remaining",
"refreshIndicatorSemanticLabel": "Refresh"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expand", "collapsedIconTapHint": "Expand",
"remainingTextFieldCharacterCountZero": "No characters remaining", "remainingTextFieldCharacterCountZero": "No characters remaining",
"remainingTextFieldCharacterCountOne": "1 character remaining", "remainingTextFieldCharacterCountOne": "1 character remaining",
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining" "remainingTextFieldCharacterCountOther": "$remainingCount characters remaining",
"refreshIndicatorSemanticLabel": "Refresh"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expand", "collapsedIconTapHint": "Expand",
"remainingTextFieldCharacterCountZero": "No characters remaining", "remainingTextFieldCharacterCountZero": "No characters remaining",
"remainingTextFieldCharacterCountOne": "1 character remaining", "remainingTextFieldCharacterCountOne": "1 character remaining",
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining" "remainingTextFieldCharacterCountOther": "$remainingCount characters remaining",
"refreshIndicatorSemanticLabel": "Refresh"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expand", "collapsedIconTapHint": "Expand",
"remainingTextFieldCharacterCountZero": "No characters remaining", "remainingTextFieldCharacterCountZero": "No characters remaining",
"remainingTextFieldCharacterCountOne": "1 character remaining", "remainingTextFieldCharacterCountOne": "1 character remaining",
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining" "remainingTextFieldCharacterCountOther": "$remainingCount characters remaining",
"refreshIndicatorSemanticLabel": "Refresh"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expand", "collapsedIconTapHint": "Expand",
"remainingTextFieldCharacterCountZero": "No characters remaining", "remainingTextFieldCharacterCountZero": "No characters remaining",
"remainingTextFieldCharacterCountOne": "1 character remaining", "remainingTextFieldCharacterCountOne": "1 character remaining",
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining" "remainingTextFieldCharacterCountOther": "$remainingCount characters remaining",
"refreshIndicatorSemanticLabel": "Refresh"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expand", "collapsedIconTapHint": "Expand",
"remainingTextFieldCharacterCountZero": "No characters remaining", "remainingTextFieldCharacterCountZero": "No characters remaining",
"remainingTextFieldCharacterCountOne": "1 character remaining", "remainingTextFieldCharacterCountOne": "1 character remaining",
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining" "remainingTextFieldCharacterCountOther": "$remainingCount characters remaining",
"refreshIndicatorSemanticLabel": "Refresh"
} }
...@@ -51,5 +51,6 @@ ...@@ -51,5 +51,6 @@
"collapsedIconTapHint": "Mostrar", "collapsedIconTapHint": "Mostrar",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter.", "remainingTextFieldCharacterCountOne": "Queda 1 carácter.",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Queda 1 carácter", "remainingTextFieldCharacterCountOne": "Queda 1 carácter",
"remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres" "remainingTextFieldCharacterCountOther": "Quedan $remainingCount caracteres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Laienda", "collapsedIconTapHint": "Laienda",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Jäänud on 1 tähemärk", "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 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "بزرگ کردن", "collapsedIconTapHint": "بزرگ کردن",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "۱ نویسه باقی مانده است", "remainingTextFieldCharacterCountOne": "۱ نویسه باقی مانده است",
"remainingTextFieldCharacterCountOther": "$remainingCount نویسه باقی مانده است" "remainingTextFieldCharacterCountOther": "$remainingCount نویسه باقی مانده است",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Laajenna", "collapsedIconTapHint": "Laajenna",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 merkki jäljellä", "remainingTextFieldCharacterCountOne": "1 merkki jäljellä",
"remainingTextFieldCharacterCountOther": "$remainingCount merkkiä jäljellä" "remainingTextFieldCharacterCountOther": "$remainingCount merkkiä jäljellä",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "I-expand", "collapsedIconTapHint": "I-expand",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 character ang natitira", "remainingTextFieldCharacterCountOne": "1 character ang natitira",
"remainingTextFieldCharacterCountOther": "$remainingCount na character ang natitira" "remainingTextFieldCharacterCountOther": "$remainingCount na character ang natitira",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -51,5 +51,6 @@ ...@@ -51,5 +51,6 @@
"collapsedIconTapHint": "Développer", "collapsedIconTapHint": "Développer",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 caractère restant", "remainingTextFieldCharacterCountOne": "1 caractère restant",
"remainingTextFieldCharacterCountOther": "$remainingCount caractères restants" "remainingTextFieldCharacterCountOther": "$remainingCount caractères restants",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Maximieren", "collapsedIconTapHint": "Maximieren",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Noch 1 Zeichen", "remainingTextFieldCharacterCountOne": "Noch 1 Zeichen",
"remainingTextFieldCharacterCountOther": "Noch $remainingCount Zeichen" "remainingTextFieldCharacterCountOther": "Noch $remainingCount Zeichen",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -54,5 +54,6 @@ ...@@ -54,5 +54,6 @@
"collapsedIconTapHint": "הרחבה", "collapsedIconTapHint": "הרחבה",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "נותר תו אחד", "remainingTextFieldCharacterCountOne": "נותר תו אחד",
"remainingTextFieldCharacterCountOther": "נותרו $remainingCount תווים" "remainingTextFieldCharacterCountOther": "נותרו $remainingCount תווים",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "बड़ा करें", "collapsedIconTapHint": "बड़ा करें",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "एक वर्ण अाैर डाला जा सकता है", "remainingTextFieldCharacterCountOne": "एक वर्ण अाैर डाला जा सकता है",
"remainingTextFieldCharacterCountOther": "$remainingCount वर्ण अाैर डाले जा सकते हैं" "remainingTextFieldCharacterCountOther": "$remainingCount वर्ण अाैर डाले जा सकते हैं",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -52,5 +52,6 @@ ...@@ -52,5 +52,6 @@
"collapsedIconTapHint": "Proširi", "collapsedIconTapHint": "Proširi",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Preostao je 1 znak", "remainingTextFieldCharacterCountOne": "Preostao je 1 znak",
"remainingTextFieldCharacterCountOther": "Preostalo je $remainingCount znakova" "remainingTextFieldCharacterCountOther": "Preostalo je $remainingCount znakova",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Kibontás", "collapsedIconTapHint": "Kibontás",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 karakter maradt", "remainingTextFieldCharacterCountOne": "1 karakter maradt",
"remainingTextFieldCharacterCountOther": "$remainingCount karakter maradt" "remainingTextFieldCharacterCountOther": "$remainingCount karakter maradt",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Luaskan", "collapsedIconTapHint": "Luaskan",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Sisa 1 karakter", "remainingTextFieldCharacterCountOne": "Sisa 1 karakter",
"remainingTextFieldCharacterCountOther": "Sisa $remainingCount karakter" "remainingTextFieldCharacterCountOther": "Sisa $remainingCount karakter",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Espandi", "collapsedIconTapHint": "Espandi",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 carattere rimanente", "remainingTextFieldCharacterCountOne": "1 carattere rimanente",
"remainingTextFieldCharacterCountOther": "$remainingCount caratteri rimanenti" "remainingTextFieldCharacterCountOther": "$remainingCount caratteri rimanenti",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "展開", "collapsedIconTapHint": "展開",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "残り 1 文字(半角相当)", "remainingTextFieldCharacterCountOne": "残り 1 文字(半角相当)",
"remainingTextFieldCharacterCountOther": "残り $remainingCount 文字(半角相当)" "remainingTextFieldCharacterCountOther": "残り $remainingCount 文字(半角相当)",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "ពង្រីក", "collapsedIconTapHint": "ពង្រីក",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "នៅសល់​ 1 តួ​ទៀត", "remainingTextFieldCharacterCountOne": "នៅសល់​ 1 តួ​ទៀត",
"remainingTextFieldCharacterCountOther": "នៅសល់ $remainingCount តួ​ទៀត" "remainingTextFieldCharacterCountOther": "នៅសល់ $remainingCount តួ​ទៀត",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "펼치기", "collapsedIconTapHint": "펼치기",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1자 남음", "remainingTextFieldCharacterCountOne": "1자 남음",
"remainingTextFieldCharacterCountOther": "$remainingCount자 남음" "remainingTextFieldCharacterCountOther": "$remainingCount자 남음",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -54,5 +54,6 @@ ...@@ -54,5 +54,6 @@
"collapsedIconTapHint": "Išskleisti", "collapsedIconTapHint": "Išskleisti",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Liko 1 simbolis", "remainingTextFieldCharacterCountOne": "Liko 1 simbolis",
"remainingTextFieldCharacterCountOther": "Liko $remainingCount simbolių" "remainingTextFieldCharacterCountOther": "Liko $remainingCount simbolių",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -51,5 +51,6 @@ ...@@ -51,5 +51,6 @@
"collapsedIconTapHint": "Izvērst", "collapsedIconTapHint": "Izvērst",
"remainingTextFieldCharacterCountZero": "Nav atlikusi neviena rakstzīme.", "remainingTextFieldCharacterCountZero": "Nav atlikusi neviena rakstzīme.",
"remainingTextFieldCharacterCountOne": "Atlikusi 1 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 @@ ...@@ -51,5 +51,6 @@
"collapsedIconTapHint": "Expand", "collapsedIconTapHint": "Expand",
"remainingTextFieldCharacterCountZero": "No characters remaining", "remainingTextFieldCharacterCountZero": "No characters remaining",
"remainingTextFieldCharacterCountOne": "1 character remaining", "remainingTextFieldCharacterCountOne": "1 character remaining",
"remainingTextFieldCharacterCountOther": "$remainingCount characters remaining" "remainingTextFieldCharacterCountOther": "$remainingCount characters remaining",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -51,5 +51,6 @@ ...@@ -51,5 +51,6 @@
"collapsedIconTapHint": "Kembangkan", "collapsedIconTapHint": "Kembangkan",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 aksara lagi", "remainingTextFieldCharacterCountOne": "1 aksara lagi",
"remainingTextFieldCharacterCountOther": "$remainingCount aksara lagi" "remainingTextFieldCharacterCountOther": "$remainingCount aksara lagi",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Vis", "collapsedIconTapHint": "Vis",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 tegn gjenstår", "remainingTextFieldCharacterCountOne": "1 tegn gjenstår",
"remainingTextFieldCharacterCountOther": "$remainingCount tegn gjenstår" "remainingTextFieldCharacterCountOther": "$remainingCount tegn gjenstår",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Uitvouwen", "collapsedIconTapHint": "Uitvouwen",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 teken resterend", "remainingTextFieldCharacterCountOne": "1 teken resterend",
"remainingTextFieldCharacterCountOther": "$remainingCount tekens resterend" "remainingTextFieldCharacterCountOther": "$remainingCount tekens resterend",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -54,5 +54,6 @@ ...@@ -54,5 +54,6 @@
"collapsedIconTapHint": "Rozwiń", "collapsedIconTapHint": "Rozwiń",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Jeszcze 1 znak", "remainingTextFieldCharacterCountOne": "Jeszcze 1 znak",
"remainingTextFieldCharacterCountOther": "Jeszcze $remainingCount znaku" "remainingTextFieldCharacterCountOther": "Jeszcze $remainingCount znaku",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -49,5 +49,6 @@ ...@@ -49,5 +49,6 @@
"collapsedIconTapHint": "TBD", "collapsedIconTapHint": "TBD",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "TBD", "remainingTextFieldCharacterCountOne": "TBD",
"remainingTextFieldCharacterCountOther": "TBD" "remainingTextFieldCharacterCountOther": "TBD",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -52,5 +52,6 @@ ...@@ -52,5 +52,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 caractere restante", "remainingTextFieldCharacterCountOne": "1 caractere restante",
"remainingTextFieldCharacterCountOther": "$remainingCount caracteres restantes" "remainingTextFieldCharacterCountOther": "$remainingCount caracteres restantes",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Expandir", "collapsedIconTapHint": "Expandir",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Resta 1 caráter", "remainingTextFieldCharacterCountOne": "Resta 1 caráter",
"remainingTextFieldCharacterCountOther": "Restam $remainingCount carateres" "remainingTextFieldCharacterCountOther": "Restam $remainingCount carateres",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -53,5 +53,6 @@ ...@@ -53,5 +53,6 @@
"collapsedIconTapHint": "Extindeți", "collapsedIconTapHint": "Extindeți",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "un caracter rămas", "remainingTextFieldCharacterCountOne": "un caracter rămas",
"remainingTextFieldCharacterCountOther": "$remainingCount de caractere rămase" "remainingTextFieldCharacterCountOther": "$remainingCount de caractere rămase",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -55,5 +55,6 @@ ...@@ -55,5 +55,6 @@
"collapsedIconTapHint": "Развернуть", "collapsedIconTapHint": "Развернуть",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Остался 1 символ", "remainingTextFieldCharacterCountOne": "Остался 1 символ",
"remainingTextFieldCharacterCountOther": "Осталось $remainingCount символа" "remainingTextFieldCharacterCountOther": "Осталось $remainingCount символа",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -54,5 +54,6 @@ ...@@ -54,5 +54,6 @@
"collapsedIconTapHint": "Rozbaliť", "collapsedIconTapHint": "Rozbaliť",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Zostáva 1 znak", "remainingTextFieldCharacterCountOne": "Zostáva 1 znak",
"remainingTextFieldCharacterCountOther": "Zostáva $remainingCount znakov" "remainingTextFieldCharacterCountOther": "Zostáva $remainingCount znakov",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -54,5 +54,6 @@ ...@@ -54,5 +54,6 @@
"collapsedIconTapHint": "Razširiti", "collapsedIconTapHint": "Razširiti",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Še 1 znak", "remainingTextFieldCharacterCountOne": "Še 1 znak",
"remainingTextFieldCharacterCountOther": "Še $remainingCount znakov" "remainingTextFieldCharacterCountOther": "Še $remainingCount znakov",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -52,5 +52,6 @@ ...@@ -52,5 +52,6 @@
"collapsedIconTapHint": "Прошири", "collapsedIconTapHint": "Прошири",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Преостао је 1 знак", "remainingTextFieldCharacterCountOne": "Преостао је 1 знак",
"remainingTextFieldCharacterCountOther": "Преостало је $remainingCount знакова" "remainingTextFieldCharacterCountOther": "Преостало је $remainingCount знакова",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -52,5 +52,6 @@ ...@@ -52,5 +52,6 @@
"collapsedIconTapHint": "Proširi", "collapsedIconTapHint": "Proširi",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Preostao je 1 znak", "remainingTextFieldCharacterCountOne": "Preostao je 1 znak",
"remainingTextFieldCharacterCountOther": "Preostalo je $remainingCount znakova" "remainingTextFieldCharacterCountOther": "Preostalo je $remainingCount znakova",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Utöka", "collapsedIconTapHint": "Utöka",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 tecken kvar", "remainingTextFieldCharacterCountOne": "1 tecken kvar",
"remainingTextFieldCharacterCountOther": "$remainingCount tecken kvar" "remainingTextFieldCharacterCountOther": "$remainingCount tecken kvar",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "ขยาย", "collapsedIconTapHint": "ขยาย",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "เหลือ 1 อักขระ", "remainingTextFieldCharacterCountOne": "เหลือ 1 อักขระ",
"remainingTextFieldCharacterCountOther": "เหลือ $remainingCount อักขระ" "remainingTextFieldCharacterCountOther": "เหลือ $remainingCount อักขระ",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "I-expand", "collapsedIconTapHint": "I-expand",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 character ang natitira", "remainingTextFieldCharacterCountOne": "1 character ang natitira",
"remainingTextFieldCharacterCountOther": "$remainingCount na character ang natitira" "remainingTextFieldCharacterCountOther": "$remainingCount na character ang natitira",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Genişlet", "collapsedIconTapHint": "Genişlet",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 karakter kaldı", "remainingTextFieldCharacterCountOne": "1 karakter kaldı",
"remainingTextFieldCharacterCountOther": "$remainingCount karakter kaldı" "remainingTextFieldCharacterCountOther": "$remainingCount karakter kaldı",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -54,5 +54,6 @@ ...@@ -54,5 +54,6 @@
"collapsedIconTapHint": "Розгорнути", "collapsedIconTapHint": "Розгорнути",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Залишився 1 символ", "remainingTextFieldCharacterCountOne": "Залишився 1 символ",
"remainingTextFieldCharacterCountOther": "Залишилося $remainingCount символу" "remainingTextFieldCharacterCountOther": "Залишилося $remainingCount символу",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "پھیلائیں", "collapsedIconTapHint": "پھیلائیں",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "1 حرف باقی ہے", "remainingTextFieldCharacterCountOne": "1 حرف باقی ہے",
"remainingTextFieldCharacterCountOther": "$remainingCount حروف باقی ہیں" "remainingTextFieldCharacterCountOther": "$remainingCount حروف باقی ہیں",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "Mở rộng", "collapsedIconTapHint": "Mở rộng",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "Còn lại 1 ký tự", "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 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "展开", "collapsedIconTapHint": "展开",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "还可输入 1 个字符", "remainingTextFieldCharacterCountOne": "还可输入 1 个字符",
"remainingTextFieldCharacterCountOther": "还可输入 $remainingCount 个字符" "remainingTextFieldCharacterCountOther": "还可输入 $remainingCount 个字符",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "展開", "collapsedIconTapHint": "展開",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "還可輸入 1 個字元", "remainingTextFieldCharacterCountOne": "還可輸入 1 個字元",
"remainingTextFieldCharacterCountOther": "還可輸入 $remainingCount 個字元" "remainingTextFieldCharacterCountOther": "還可輸入 $remainingCount 個字元",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -50,5 +50,6 @@ ...@@ -50,5 +50,6 @@
"collapsedIconTapHint": "展開", "collapsedIconTapHint": "展開",
"remainingTextFieldCharacterCountZero": "TBD", "remainingTextFieldCharacterCountZero": "TBD",
"remainingTextFieldCharacterCountOne": "還可輸入 1 個字元", "remainingTextFieldCharacterCountOne": "還可輸入 1 個字元",
"remainingTextFieldCharacterCountOther": "還可輸入 $remainingCount 個字元" "remainingTextFieldCharacterCountOther": "還可輸入 $remainingCount 個字元",
"refreshIndicatorSemanticLabel": "TBD"
} }
...@@ -40,6 +40,7 @@ void main() { ...@@ -40,6 +40,7 @@ void main() {
expect(localizations.alertDialogLabel, isNotNull); expect(localizations.alertDialogLabel, isNotNull);
expect(localizations.collapsedIconTapHint, isNotNull); expect(localizations.collapsedIconTapHint, isNotNull);
expect(localizations.expandedIconTapHint, isNotNull); expect(localizations.expandedIconTapHint, isNotNull);
expect(localizations.refreshIndicatorSemanticLabel, isNotNull);
expect(localizations.remainingTextFieldCharacterCount(0), isNotNull); expect(localizations.remainingTextFieldCharacterCount(0), isNotNull);
expect(localizations.remainingTextFieldCharacterCount(1), 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