Merge in the flutter gallery (#176)
Former-commit-id: 563e7e6d96deae9e15737fcd9066820639227f16
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..25cf59c
--- /dev/null
+++ b/README.md
@@ -0,0 +1,30 @@
+# Flutter Gallery
+
+Flutter Gallery is a resource to help developers evaluate and use Flutter.
+It is a collection of material design widgets, behaviors, and vignettes
+implemented with Flutter. We often get asked how one can see Flutter in
+action, and this gallery demonstrates what Flutter provides and how it
+behaves in the wild.
+
+## Supported Platforms
+
+The Flutter Gallery application has been built to support multiple platforms. This includes:
+
+* Android
+* iOS
+* web
+* macOS
+* Linux
+* Windows
+
+That being said, extra steps must be taken to [enable Desktop support](https://github.com/flutter/flutter/wiki/Desktop-shells#tooling).
+
+Additionally, the UI adapts between mobile and desktop layouts regardless of the platform it runs on. This is determined based on window size as outlined in [adaptive.dart](https://github.com/material-components/material-components-flutter-gallery/blob/master/gallery/lib/layout/adaptive.dart).
+
+## To include a new splash animation
+
+1. Convert your animation to a `.gif` file. Ideally, use a background color of `0xFF030303` to ensure the animation blends into the background of the app.
+
+2. Add your new `.gif` file to the assets directory under `assets/splash_effects`. Ensure the name follows the format `splash_effect_$num.gif`. The number should be the next number after the current largest number in the repository.
+
+3. Update the map `_effectDurations` in [splash.dart](https://github.com/material-components/material-components-flutter-gallery/blob/master/gallery/lib/pages/splash.dart) to include the number of the new `.gif` as well as its estimated duration. The duration is used to determine how long to display the splash animation at launch.
diff --git a/codeviewer_cli/.gitignore b/codeviewer_cli/.gitignore
new file mode 100644
index 0000000..50602ac
--- /dev/null
+++ b/codeviewer_cli/.gitignore
@@ -0,0 +1,11 @@
+# Files and directories created by pub
+.dart_tool/
+.packages
+# Remove the following pattern if you wish to check in your lock file
+pubspec.lock
+
+# Conventional directory for build outputs
+build/
+
+# Directory created by dartdoc
+doc/api/
diff --git a/codeviewer_cli/CHANGELOG.md b/codeviewer_cli/CHANGELOG.md
new file mode 100644
index 0000000..532bcd2
--- /dev/null
+++ b/codeviewer_cli/CHANGELOG.md
@@ -0,0 +1,3 @@
+## 1.0.0
+
+- Initial version
diff --git a/codeviewer_cli/README.md b/codeviewer_cli/README.md
new file mode 100644
index 0000000..e68f347
--- /dev/null
+++ b/codeviewer_cli/README.md
@@ -0,0 +1,55 @@
+A command-line application to highlight dart source code.
+
+## Overview
+
+Code segments are highlighted before the app is compiled.
+This is done because the highlighting process can take 300ms to finish, creating a noticeable delay when the demo switches to code page.
+
+The highlighter takes all files in the `gallery/lib/demos/` folder and scans each.
+Highlighted code widgets are stored in the `gallery/lib/codeviewer/code_segments.dart` file.
+Under the root directory, run `make update-code-segments` to run the highlighter.
+
+Wrap a block of code with lines `// BEGIN yourDemoName` and `// END` to mark it for highlighting. The block in between, as well as any copyright notice and imports at the beginning of the file, are automatically taken and highlighted, and stored as `static TextSpan yourDemoName(BuildContext context)` in `gallery/lib/codeviewer/code_segments.dart`.
+To display the code, go to `gallery/lib/data/demos.dart`, and add `code: CodeSegments.yourDemoName,` to your `GalleryDemoConfiguration` object.
+
+## Multiple blocks of code
+
+Use the following method to join multiple blocks of code into a single segment:
+```
+// BEGIN yourDemo#2
+a();
+// END
+b();
+// BEGIN yourDemo#1
+c();
+// END
+```
+The generated code will be
+```
+c();
+a();
+```
+
+Code blocks can nest or overlap. In these cases, specify which file(s) to `END`.
+
+The following source file
+```
+// BEGIN demoOne
+a();
+// BEGIN demoTwo
+b();
+// END demoOne
+c();
+// END demoTwo
+```
+will create the following segments:
+(demoOne)
+```
+a();
+b();
+```
+(demoTwo)
+```
+b();
+c();
+```
diff --git a/codeviewer_cli/analysis_options.yaml b/codeviewer_cli/analysis_options.yaml
new file mode 100644
index 0000000..4f4d26b
--- /dev/null
+++ b/codeviewer_cli/analysis_options.yaml
@@ -0,0 +1,39 @@
+# Defines a default set of lint rules enforced for
+# projects at Google. For details and rationale,
+# see https://github.com/dart-lang/pedantic#enabled-lints.
+include: package:pedantic/analysis_options.yaml
+
+# For lint rules and documentation, see http://dart-lang.github.io/linter/lints.
+# Uncomment to specify additional rules.
+# linter:
+# rules:
+# - camel_case_types
+
+analyzer:
+# exclude:
+# - path/to/excluded/files/**
+
+linter:
+ rules:
+ - avoid_types_on_closure_parameters
+ - avoid_void_async
+ - await_only_futures
+ - camel_case_types
+ - cancel_subscriptions
+ - close_sinks
+ - constant_identifier_names
+ - control_flow_in_finally
+ - empty_statements
+ - hash_and_equals
+ - implementation_imports
+ - non_constant_identifier_names
+ - package_api_docs
+ - package_names
+ - package_prefixed_library_names
+ - test_types_in_equals
+ - throw_in_finally
+ - unnecessary_brace_in_string_interps
+ - unnecessary_getters_setters
+ - unnecessary_new
+ - unnecessary_statements
+ - directives_ordering
diff --git a/codeviewer_cli/bin/main.dart b/codeviewer_cli/bin/main.dart
new file mode 100644
index 0000000..f7c63aa
--- /dev/null
+++ b/codeviewer_cli/bin/main.dart
@@ -0,0 +1,12 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:codeviewer_cli/segment_generator.dart';
+
+main(List<String> arguments) {
+ writeSegments(
+ sourceDirectoryPath: '../gallery/lib/demos',
+ targetFilePath: '../gallery/lib/codeviewer/code_segments.dart',
+ );
+}
diff --git a/codeviewer_cli/lib/prehighlighter.dart b/codeviewer_cli/lib/prehighlighter.dart
new file mode 100644
index 0000000..09c3a65
--- /dev/null
+++ b/codeviewer_cli/lib/prehighlighter.dart
@@ -0,0 +1,412 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:string_scanner/string_scanner.dart';
+
+abstract class SyntaxPrehighlighter {
+ List<CodeSpan> format(String src);
+}
+
+class DartSyntaxPrehighlighter extends SyntaxPrehighlighter {
+ DartSyntaxPrehighlighter() {
+ _spans = <_HighlightSpan>[];
+ }
+
+ static const List<String> _keywords = <String>[
+ 'abstract',
+ 'as',
+ 'assert',
+ 'async',
+ 'await',
+ 'break',
+ 'case',
+ 'catch',
+ 'class',
+ 'const',
+ 'continue',
+ 'default',
+ 'deferred',
+ 'do',
+ 'dynamic',
+ 'else',
+ 'enum',
+ 'export',
+ 'external',
+ 'extends',
+ 'factory',
+ 'false',
+ 'final',
+ 'finally',
+ 'for',
+ 'get',
+ 'if',
+ 'implements',
+ 'import',
+ 'in',
+ 'is',
+ 'library',
+ 'new',
+ 'null',
+ 'operator',
+ 'part',
+ 'rethrow',
+ 'return',
+ 'set',
+ 'static',
+ 'super',
+ 'switch',
+ 'sync',
+ 'this',
+ 'throw',
+ 'true',
+ 'try',
+ 'typedef',
+ 'var',
+ 'void',
+ 'while',
+ 'with',
+ 'yield',
+ ];
+
+ static const List<String> _builtInTypes = <String>[
+ 'int',
+ 'double',
+ 'num',
+ 'bool',
+ ];
+
+ String _src;
+ StringScanner _scanner;
+
+ List<_HighlightSpan> _spans;
+
+ @override
+ List<CodeSpan> format(String src) {
+ _src = src;
+ _scanner = StringScanner(_src);
+
+ if (_generateSpans()) {
+ // Successfully parsed the code
+ final List<CodeSpan> formattedText = <CodeSpan>[];
+ int currentPosition = 0;
+
+ for (_HighlightSpan span in _spans) {
+ if (currentPosition != span.start) {
+ formattedText
+ .add(CodeSpan(text: _src.substring(currentPosition, span.start)));
+ }
+
+ formattedText
+ .add(CodeSpan(type: span.type, text: span.textForSpan(_src)));
+
+ currentPosition = span.end;
+ }
+
+ if (currentPosition != _src.length) {
+ formattedText
+ .add(CodeSpan(text: _src.substring(currentPosition, _src.length)));
+ }
+
+ return formattedText;
+ } else {
+ // Parsing failed, return with only basic formatting
+ return [CodeSpan(type: _HighlightType.base, text: src)];
+ }
+ }
+
+ bool _generateSpans() {
+ int lastLoopPosition = _scanner.position;
+
+ while (!_scanner.isDone) {
+ // Skip White space
+ _scanner.scan(RegExp(r'\s+'));
+
+ // Block comments
+ if (_scanner.scan(RegExp(r'/\*(.|\n)*\*/'))) {
+ _spans.add(_HighlightSpan(
+ _HighlightType.comment,
+ _scanner.lastMatch.start,
+ _scanner.lastMatch.end,
+ ));
+ continue;
+ }
+
+ // Line comments
+ if (_scanner.scan('//')) {
+ final int startComment = _scanner.lastMatch.start;
+
+ bool eof = false;
+ int endComment;
+ if (_scanner.scan(RegExp(r'.*\n'))) {
+ endComment = _scanner.lastMatch.end - 1;
+ } else {
+ eof = true;
+ endComment = _src.length;
+ }
+
+ _spans.add(_HighlightSpan(
+ _HighlightType.comment,
+ startComment,
+ endComment,
+ ));
+
+ if (eof) {
+ break;
+ }
+
+ continue;
+ }
+
+ // Raw r"String"
+ if (_scanner.scan(RegExp(r'r".*"'))) {
+ _spans.add(_HighlightSpan(
+ _HighlightType.string,
+ _scanner.lastMatch.start,
+ _scanner.lastMatch.end,
+ ));
+ continue;
+ }
+
+ // Raw r'String'
+ if (_scanner.scan(RegExp(r"r'.*'"))) {
+ _spans.add(_HighlightSpan(
+ _HighlightType.string,
+ _scanner.lastMatch.start,
+ _scanner.lastMatch.end,
+ ));
+ continue;
+ }
+
+ // Multiline """String"""
+ if (_scanner.scan(RegExp(r'"""(?:[^"\\]|\\(.|\n))*"""'))) {
+ _spans.add(_HighlightSpan(
+ _HighlightType.string,
+ _scanner.lastMatch.start,
+ _scanner.lastMatch.end,
+ ));
+ continue;
+ }
+
+ // Multiline '''String'''
+ if (_scanner.scan(RegExp(r"'''(?:[^'\\]|\\(.|\n))*'''"))) {
+ _spans.add(_HighlightSpan(
+ _HighlightType.string,
+ _scanner.lastMatch.start,
+ _scanner.lastMatch.end,
+ ));
+ continue;
+ }
+
+ // "String"
+ if (_scanner.scan(RegExp(r'"(?:[^"\\]|\\.)*"'))) {
+ _spans.add(_HighlightSpan(
+ _HighlightType.string,
+ _scanner.lastMatch.start,
+ _scanner.lastMatch.end,
+ ));
+ continue;
+ }
+
+ // 'String'
+ if (_scanner.scan(RegExp(r"'(?:[^'\\]|\\.)*'"))) {
+ _spans.add(_HighlightSpan(
+ _HighlightType.string,
+ _scanner.lastMatch.start,
+ _scanner.lastMatch.end,
+ ));
+ continue;
+ }
+
+ // Double
+ if (_scanner.scan(RegExp(r'\d+\.\d+'))) {
+ _spans.add(_HighlightSpan(
+ _HighlightType.number,
+ _scanner.lastMatch.start,
+ _scanner.lastMatch.end,
+ ));
+ continue;
+ }
+
+ // Integer
+ if (_scanner.scan(RegExp(r'\d+'))) {
+ _spans.add(_HighlightSpan(_HighlightType.number,
+ _scanner.lastMatch.start, _scanner.lastMatch.end));
+ continue;
+ }
+
+ // Punctuation
+ if (_scanner.scan(RegExp(r'[\[\]{}().!=<>&\|\?\+\-\*/%\^~;:,]'))) {
+ _spans.add(_HighlightSpan(
+ _HighlightType.punctuation,
+ _scanner.lastMatch.start,
+ _scanner.lastMatch.end,
+ ));
+ continue;
+ }
+
+ // Meta data
+ if (_scanner.scan(RegExp(r'@\w+'))) {
+ _spans.add(_HighlightSpan(
+ _HighlightType.keyword,
+ _scanner.lastMatch.start,
+ _scanner.lastMatch.end,
+ ));
+ continue;
+ }
+
+ // Words
+ if (_scanner.scan(RegExp(r'\w+'))) {
+ _HighlightType type;
+
+ String word = _scanner.lastMatch[0];
+ if (word.startsWith('_')) {
+ word = word.substring(1);
+ }
+
+ if (_keywords.contains(word)) {
+ type = _HighlightType.keyword;
+ } else if (_builtInTypes.contains(word)) {
+ type = _HighlightType.keyword;
+ } else if (_firstLetterIsUpperCase(word)) {
+ type = _HighlightType.klass;
+ } else if (word.length >= 2 &&
+ word.startsWith('k') &&
+ _firstLetterIsUpperCase(word.substring(1))) {
+ type = _HighlightType.constant;
+ }
+
+ if (type != null) {
+ _spans.add(_HighlightSpan(
+ type,
+ _scanner.lastMatch.start,
+ _scanner.lastMatch.end,
+ ));
+ }
+ }
+
+ // Check if this loop did anything
+ if (lastLoopPosition == _scanner.position) {
+ // Failed to parse this file, abort gracefully
+ return false;
+ }
+ lastLoopPosition = _scanner.position;
+ }
+
+ _simplify();
+ return true;
+ }
+
+ void _simplify() {
+ for (int i = _spans.length - 2; i >= 0; i -= 1) {
+ if (_spans[i].type == _spans[i + 1].type &&
+ _spans[i].end == _spans[i + 1].start) {
+ _spans[i] = _HighlightSpan(
+ _spans[i].type,
+ _spans[i].start,
+ _spans[i + 1].end,
+ );
+ _spans.removeAt(i + 1);
+ }
+ }
+ }
+
+ bool _firstLetterIsUpperCase(String str) {
+ if (str.isNotEmpty) {
+ final String first = str.substring(0, 1);
+ return first == first.toUpperCase();
+ }
+ return false;
+ }
+}
+
+enum _HighlightType {
+ number,
+ comment,
+ keyword,
+ string,
+ punctuation,
+ klass,
+ constant,
+ base,
+}
+
+class _HighlightSpan {
+ _HighlightSpan(this.type, this.start, this.end);
+ final _HighlightType type;
+ final int start;
+ final int end;
+
+ String textForSpan(String src) {
+ return src.substring(start, end);
+ }
+}
+
+class CodeSpan {
+ CodeSpan({this.type = _HighlightType.base, this.text});
+
+ final _HighlightType type;
+ final String text;
+
+ @override
+ String toString() {
+ return 'TextSpan('
+ 'style: codeStyle.${_styleNameOf(type)}, '
+ "text: '${_escape(text)}'"
+ ')';
+ }
+}
+
+String _styleNameOf(_HighlightType type) {
+ switch (type) {
+ case _HighlightType.number:
+ return 'numberStyle';
+ case _HighlightType.comment:
+ return 'commentStyle';
+ case _HighlightType.keyword:
+ return 'keywordStyle';
+ case _HighlightType.string:
+ return 'stringStyle';
+ case _HighlightType.punctuation:
+ return 'punctuationStyle';
+ case _HighlightType.klass:
+ return 'classStyle';
+ case _HighlightType.constant:
+ return 'constantStyle';
+ case _HighlightType.base:
+ return 'baseStyle';
+ }
+ return '';
+}
+
+String _escape(String text) {
+ StringBuffer escapedText = StringBuffer();
+
+ for (final char in text.runes) {
+ if (char < 0x20 ||
+ char >= 0x7F ||
+ char == 0x22 ||
+ char == 0x24 ||
+ char == 0x27 ||
+ char == 0x5C) {
+ if (char <= 0xffff) {
+ escapedText.write("\\u${_encodeAndPad(char)}");
+ } else {
+ escapedText.write("\\u{${_encode(char)}}");
+ }
+ } else {
+ escapedText.write(String.fromCharCode(char));
+ }
+ }
+
+ return escapedText.toString();
+}
+
+String _encode(int charCode) {
+ return charCode.toRadixString(16);
+}
+
+String _encodeAndPad(int charCode) {
+ String encoded = _encode(charCode);
+ return '0' * (4 - encoded.length) + encoded;
+}
diff --git a/codeviewer_cli/lib/segment_generator.dart b/codeviewer_cli/lib/segment_generator.dart
new file mode 100644
index 0000000..258a3bd
--- /dev/null
+++ b/codeviewer_cli/lib/segment_generator.dart
@@ -0,0 +1,266 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'dart:convert';
+import 'dart:io';
+import 'prehighlighter.dart';
+
+const _globalPrologue =
+ '''// This file is automatically generated by codeviewer_cli.
+// Do not edit this file.
+
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+import 'package:gallery/codeviewer/code_style.dart';
+
+class CodeSegments {
+''';
+
+const _globalEpilogue = '}\n';
+
+final Pattern beginSubsegment = RegExp(r'//\s+BEGIN');
+final Pattern endSubsegment = RegExp(r'//\s+END');
+
+enum _FileReadStatus {
+ comments,
+ imports,
+ finished,
+}
+
+/// Returns the new status of the scanner whose previous status was
+/// [oldStatus], after scanning the line [line].
+_FileReadStatus _updatedStatus(_FileReadStatus oldStatus, String line) {
+ _FileReadStatus lineStatus;
+ if (line.trim().startsWith('//')) {
+ lineStatus = _FileReadStatus.comments;
+ } else if (line.trim().startsWith('import')) {
+ lineStatus = _FileReadStatus.imports;
+ } else {
+ lineStatus = _FileReadStatus.finished;
+ }
+
+ _FileReadStatus newStatus;
+ switch (oldStatus) {
+ case _FileReadStatus.comments:
+ newStatus =
+ (line.trim().isEmpty || lineStatus == _FileReadStatus.comments)
+ ? _FileReadStatus.comments
+ : lineStatus;
+ break;
+ case _FileReadStatus.imports:
+ newStatus = (line.trim().isEmpty || lineStatus == _FileReadStatus.imports)
+ ? _FileReadStatus.imports
+ : _FileReadStatus.finished;
+ break;
+ case _FileReadStatus.finished:
+ newStatus = oldStatus;
+ break;
+ }
+ return newStatus;
+}
+
+Map<String, String> _createSegments(String sourceDirectoryPath) {
+ List<File> files = Directory(sourceDirectoryPath)
+ .listSync(recursive: true)
+ .whereType<File>()
+ .toList();
+
+ Map<String, StringBuffer> subsegments = {};
+ Map<String, String> subsegmentPrologues = {};
+
+ Set<String> appearedSubsegments = Set();
+
+ for (final file in files) {
+ // Process file.
+
+ String content = file.readAsStringSync();
+ List<String> lines = LineSplitter().convert(content);
+
+ _FileReadStatus status = _FileReadStatus.comments;
+
+ StringBuffer prologue = StringBuffer();
+
+ Set<String> activeSubsegments = Set();
+
+ for (final line in lines) {
+ // Update status.
+
+ status = _updatedStatus(status, line);
+
+ if (status != _FileReadStatus.finished) {
+ prologue.writeln(line);
+ }
+
+ // Process run commands.
+
+ if (line.trim().startsWith(beginSubsegment)) {
+ String argumentString = line.replaceFirst(beginSubsegment, '').trim();
+ List<String> arguments =
+ argumentString.isEmpty ? [] : argumentString.split(RegExp(r'\s+'));
+
+ for (final argument in arguments) {
+ if (activeSubsegments.contains(argument)) {
+ throw PreformatterException(
+ 'BEGIN $argument is used twice in file ${file.path}');
+ } else if (appearedSubsegments.contains(argument)) {
+ throw PreformatterException('BEGIN $argument is used twice');
+ } else {
+ activeSubsegments.add(argument);
+ appearedSubsegments.add(argument);
+ subsegments[argument] = StringBuffer();
+ subsegmentPrologues[argument] = prologue.toString();
+ }
+ }
+ } else if (line.trim().startsWith(endSubsegment)) {
+ String argumentString = line.replaceFirst(endSubsegment, '').trim();
+ List<String> arguments =
+ argumentString.isEmpty ? [] : argumentString.split(RegExp(r'\s+'));
+
+ if (arguments.isEmpty && activeSubsegments.length == 1) {
+ arguments.add(activeSubsegments.first);
+ }
+
+ for (final argument in arguments) {
+ if (activeSubsegments.contains(argument)) {
+ activeSubsegments.remove(argument);
+ } else {
+ throw PreformatterException(
+ 'END $argument is used without a paired BEGIN in ${file.path}');
+ }
+ }
+ } else {
+ // Simple line.
+
+ for (final name in activeSubsegments) {
+ subsegments[name].writeln(line);
+ }
+ }
+ }
+
+ if (activeSubsegments.isNotEmpty) {
+ throw PreformatterException('File ${file.path} has unpaired BEGIN');
+ }
+ }
+
+ Map<String, List<TaggedString>> segments = {};
+ Map<String, String> segmentPrologues = {};
+
+ // Sometimes a code segment is made up of subsegments. They are marked by
+ // names with a "#" symbol in it, such as "bottomSheetDemoModal#1" and
+ // "bottomSheetDemoModal#2".
+ // The following code groups the subsegments by order into segments.
+ subsegments.forEach((key, value) {
+ String name;
+ double order;
+
+ if (key.contains('#')) {
+ List<String> parts = key.split('#');
+ name = parts[0];
+ order = double.parse(parts[1]);
+ } else {
+ name = key;
+ order = 0;
+ }
+
+ if (!segments.containsKey(name)) {
+ segments[name] = [];
+ }
+ segments[name].add(
+ TaggedString(
+ text: value.toString(),
+ order: order,
+ ),
+ );
+
+ segmentPrologues[name] = subsegmentPrologues[key];
+ });
+
+ segments.forEach((key, value) {
+ value.sort((ts1, ts2) => (ts1.order - ts2.order).sign.round());
+ });
+
+ Map<String, String> answer = {};
+
+ for (final name in segments.keys) {
+ StringBuffer buffer = StringBuffer();
+
+ buffer.write(segmentPrologues[name].trim());
+ buffer.write('\n\n');
+
+ for (final ts in segments[name]) {
+ buffer.write(ts.text.trim());
+ buffer.write('\n\n');
+ }
+
+ answer[name] = buffer.toString();
+ }
+
+ return answer;
+}
+
+/// A string [text] together with a number [order], for sorting purposes.
+/// Used to store different subsegments of a code segment.
+/// The [order] of each subsegment is tagged with the code in order to be
+/// sorted in the desired order.
+class TaggedString {
+ TaggedString({this.text, this.order});
+
+ final String text;
+ final double order;
+}
+
+void _formatSegments(Map<String, String> segments, String targetFilePath) {
+ File targetFile = File(targetFilePath);
+ IOSink output = targetFile.openWrite();
+
+ output.write(_globalPrologue);
+
+ for (final name in segments.keys) {
+ String code = segments[name];
+
+ output.writeln(' static TextSpan $name (BuildContext context) {');
+ output.writeln(' final CodeStyle codeStyle = CodeStyle.of(context);');
+ output.writeln(' return TextSpan(children: [');
+
+ List<CodeSpan> codeSpans = DartSyntaxPrehighlighter().format(code);
+
+ for (final span in codeSpans) {
+ output.write(' ');
+ output.write(span.toString());
+ output.write(',\n');
+ }
+
+ output.write(' ]); }\n');
+ }
+
+ output.write(_globalEpilogue);
+
+ output.close();
+}
+
+/// Collect code segments, highlight, and write to file.
+///
+/// [writeSegments] walks through the directory specified by
+/// [sourceDirectoryPath] and reads every file in it,
+/// collects code segments marked by "// BEGIN <segment_name>" and "// END",
+/// highlights them, and writes to the file specified by
+/// [targetFilePath].
+///
+/// The output file is a dart source file with a class "CodeSegments" and
+/// static methods of type TextSpan(BuildContext context).
+/// Each method generates a widget that displays a segment of code.
+///
+/// The target file is overwritten.
+void writeSegments({String sourceDirectoryPath, String targetFilePath}) {
+ Map<String, String> segments = _createSegments(sourceDirectoryPath);
+ _formatSegments(segments, targetFilePath);
+}
+
+class PreformatterException implements Exception {
+ PreformatterException(this.cause);
+ String cause;
+}
diff --git a/codeviewer_cli/pubspec.yaml b/codeviewer_cli/pubspec.yaml
new file mode 100644
index 0000000..a904c8b
--- /dev/null
+++ b/codeviewer_cli/pubspec.yaml
@@ -0,0 +1,12 @@
+name: codeviewer_cli
+description: A command-line application to highlight dart source code.
+
+environment:
+ sdk: '>=2.4.0 <3.0.0'
+
+dependencies:
+ string_scanner: 1.0.5
+
+dev_dependencies:
+ pedantic: 1.8.0
+ test: ^1.5.0
diff --git a/gallery/.gitignore b/gallery/.gitignore
new file mode 100644
index 0000000..24b006e
--- /dev/null
+++ b/gallery/.gitignore
@@ -0,0 +1,79 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+.firebase/
+.flutter-plugins-dependencies
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+**/doc/api/
+.dart_tool/
+.flutter-plugins
+.flutter-plugins-dependencies
+.packages
+.pub-cache/
+.pub/
+/build/
+
+# Android related
+**/android/**/gradle-wrapper.jar
+**/android/.gradle
+**/android/captures/
+**/android/gradlew
+**/android/gradlew.bat
+**/android/local.properties
+**/android/**/GeneratedPluginRegistrant.java
+
+# iOS/XCode related
+**/ios/**/*.mode1v3
+**/ios/**/*.mode2v3
+**/ios/**/*.moved-aside
+**/ios/**/*.pbxuser
+**/ios/**/*.perspectivev3
+**/ios/**/*sync/
+**/ios/**/.sconsign.dblite
+**/ios/**/.tags*
+**/ios/**/.vagrant/
+**/ios/**/DerivedData/
+**/ios/**/Icon?
+**/ios/**/Pods/
+**/ios/**/.symlinks/
+**/ios/**/profile
+**/ios/**/xcuserdata
+**/ios/.generated/
+**/ios/Flutter/App.framework
+**/ios/Flutter/Flutter.framework
+**/ios/Flutter/Generated.xcconfig
+**/ios/Flutter/app.flx
+**/ios/Flutter/app.zip
+**/ios/Flutter/flutter_assets/
+**/ios/Flutter/flutter_export_environment.sh
+**/ios/ServiceDefinitions.json
+**/ios/Runner/GeneratedPluginRegistrant.*
+
+# Web related
+lib/generated_plugin_registrant.dart
+
+# Exceptions to above rules.
+!**/ios/**/default.mode1v3
+!**/ios/**/default.mode2v3
+!**/ios/**/default.pbxuser
+!**/ios/**/default.perspectivev3
+!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
diff --git a/gallery/.metadata b/gallery/.metadata
new file mode 100644
index 0000000..9ce83ab
--- /dev/null
+++ b/gallery/.metadata
@@ -0,0 +1,10 @@
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled and should not be manually edited.
+
+version:
+ revision: f5733f7a62ebc7c2ba324a2b410cd81215956b7d
+ channel: master
+
+project_type: app
diff --git a/gallery/Makefile b/gallery/Makefile
new file mode 100644
index 0000000..488991a
--- /dev/null
+++ b/gallery/Makefile
@@ -0,0 +1,58 @@
+ROOT := $(shell git rev-parse --show-toplevel)
+FLUTTER := $(shell which flutter)
+FLUTTER_BIN_DIR := $(shell dirname $(FLUTTER))
+FLUTTER_DIR := $(FLUTTER_BIN_DIR:/bin=)
+DART := $(FLUTTER_BIN_DIR)/cache/dart-sdk/bin/dart
+
+.PHONY: analyze
+analyze:
+ $(FLUTTER) analyze
+
+.PHONY: format
+format:
+ $(FLUTTER) format .
+
+.PHONY: test
+test:
+ $(FLUTTER) test
+
+.PHONY: build-web
+build-web:
+ $(FLUTTER) build web
+
+.PHONY: fetch-master
+fetch-master:
+ $(shell git fetch origin master)
+
+.PHONY: master-branch-check
+master-branch-check: fetch-master
+ ifneq ($(shell git rev-parse --abbrev-ref HEAD),master)
+ $(error Not on master branch, please checkout master)
+ endif
+ ifneq ($(shell git rev-parse HEAD),$(shell git rev-parse origin/master))
+ $(error Your master branch is not up to date with origin/master, please pull before deploying)
+ endif
+
+
+.PHONY: deploy
+deploy: master-branch-check build-web
+ cp $(ROOT)/gallery/web/favicon.ico $(ROOT)/gallery/build/web/
+ firebase deploy
+
+.PHONY: gen-l10n
+gen-l10n:
+ $(DART) $(FLUTTER_DIR)/dev/tools/localization/bin/gen_l10n.dart \
+ --template-arb-file=intl_en_US.arb \
+ --output-localization-file=gallery_localizations.dart \
+ --output-class=GalleryLocalizations
+
+.PHONY: l10n
+l10n: gen-l10n format
+ cd $(ROOT)/l10n_cli/ && $(FLUTTER) pub get
+ $(DART) $(ROOT)/l10n_cli/bin/main.dart
+
+.PHONY: update-code-segments
+update-code-segments:
+ cd $(ROOT)/codeviewer_cli/ && pub get
+ $(DART) $(ROOT)/codeviewer_cli/bin/main.dart
+ $(FLUTTER) format $(ROOT)/gallery/lib/codeviewer/code_segments.dart
diff --git a/gallery/analysis_options.yaml b/gallery/analysis_options.yaml
new file mode 100644
index 0000000..82ce871
--- /dev/null
+++ b/gallery/analysis_options.yaml
@@ -0,0 +1,33 @@
+include: package:pedantic/analysis_options.1.8.0.yaml
+
+analyzer:
+ exclude:
+ - lib/l10n/messages_*.dart
+ strong-mode:
+ implicit-casts: false
+ implicit-dynamic: false
+
+linter:
+ rules:
+ - avoid_types_on_closure_parameters
+ - avoid_void_async
+ - await_only_futures
+ - camel_case_types
+ - cancel_subscriptions
+ - close_sinks
+ - constant_identifier_names
+ - control_flow_in_finally
+ - empty_statements
+ - hash_and_equals
+ - implementation_imports
+ - non_constant_identifier_names
+ - package_api_docs
+ - package_names
+ - package_prefixed_library_names
+ - test_types_in_equals
+ - throw_in_finally
+ - unnecessary_brace_in_string_interps
+ - unnecessary_getters_setters
+ - unnecessary_new
+ - unnecessary_statements
+ - directives_ordering
diff --git a/gallery/android/.gitignore b/gallery/android/.gitignore
new file mode 100644
index 0000000..b1238cc
--- /dev/null
+++ b/gallery/android/.gitignore
@@ -0,0 +1,12 @@
+gradle-wrapper.jar
+/.gradle
+/captures/
+/gradlew
+/gradlew.bat
+/local.properties
+GeneratedPluginRegistrant.java
+
+# Visual Studio Code related
+.classpath
+.project
+.settings/
diff --git a/gallery/android/app/build.gradle b/gallery/android/app/build.gradle
new file mode 100644
index 0000000..67bc907
--- /dev/null
+++ b/gallery/android/app/build.gradle
@@ -0,0 +1,67 @@
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+ localPropertiesFile.withReader('UTF-8') { reader ->
+ localProperties.load(reader)
+ }
+}
+
+def flutterRoot = localProperties.getProperty('flutter.sdk')
+if (flutterRoot == null) {
+ throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
+}
+
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+ flutterVersionCode = '1'
+}
+
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+ flutterVersionName = '1.0'
+}
+
+apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
+
+android {
+ compileSdkVersion 28
+
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ }
+
+ lintOptions {
+ disable 'InvalidPackage'
+ }
+
+ defaultConfig {
+ // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+ applicationId "com.example.gallery"
+ minSdkVersion 16
+ targetSdkVersion 28
+ versionCode flutterVersionCode.toInteger()
+ versionName flutterVersionName
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ // TODO: Add your own signing config for the release build.
+ // Signing with the debug keys for now, so `flutter run --release` works.
+ signingConfig signingConfigs.debug
+ }
+ }
+}
+
+flutter {
+ source '../..'
+}
+
+dependencies {
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ testImplementation 'junit:junit:4.12'
+ androidTestImplementation 'androidx.test:runner:1.1.0'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
+}
diff --git a/gallery/android/app/src/debug/AndroidManifest.xml b/gallery/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 0000000..ef5f37d
--- /dev/null
+++ b/gallery/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,7 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.example.gallery">
+ <!-- Flutter needs it to communicate with the running application
+ to allow setting breakpoints, to provide hot reload, etc.
+ -->
+ <uses-permission android:name="android.permission.INTERNET"/>
+</manifest>
diff --git a/gallery/android/app/src/main/AndroidManifest.xml b/gallery/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..306e9c7
--- /dev/null
+++ b/gallery/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,33 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.example.gallery">
+
+ <!-- io.flutter.app.FlutterApplication is an android.app.Application that
+ calls FlutterMain.startInitialization(this); in its onCreate method.
+ In most cases you can leave this as-is, but you if you want to provide
+ additional functionality it is fine to subclass or reimplement
+ FlutterApplication and put your custom class here. -->
+ <application
+ android:name="io.flutter.app.FlutterApplication"
+ android:label="Flutter Gallery"
+ android:icon="@mipmap/ic_launcher">
+ <activity
+ android:name=".MainActivity"
+ android:launchMode="singleTop"
+ android:theme="@style/LaunchTheme"
+ android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
+ android:hardwareAccelerated="true"
+ android:windowSoftInputMode="adjustResize">
+ <!-- This keeps the window background of the activity showing
+ until Flutter renders its first frame. It can be removed if
+ there is no splash screen (such as the default splash screen
+ defined in @style/LaunchTheme). -->
+ <meta-data
+ android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
+ android:value="true" />
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER"/>
+ </intent-filter>
+ </activity>
+ </application>
+</manifest>
diff --git a/gallery/android/app/src/main/ic_launcher-web.png b/gallery/android/app/src/main/ic_launcher-web.png
new file mode 100644
index 0000000..e3f586a
--- /dev/null
+++ b/gallery/android/app/src/main/ic_launcher-web.png
Binary files differ
diff --git a/gallery/android/app/src/main/kotlin/com/example/gallery/MainActivity.kt b/gallery/android/app/src/main/kotlin/com/example/gallery/MainActivity.kt
new file mode 100644
index 0000000..5e77c29
--- /dev/null
+++ b/gallery/android/app/src/main/kotlin/com/example/gallery/MainActivity.kt
@@ -0,0 +1,13 @@
+package com.example.gallery
+
+import android.os.Bundle
+
+import io.flutter.app.FlutterActivity
+import io.flutter.plugins.GeneratedPluginRegistrant
+
+class MainActivity: FlutterActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ GeneratedPluginRegistrant.registerWith(this)
+ }
+}
diff --git a/gallery/android/app/src/main/res/drawable/launch_background.xml b/gallery/android/app/src/main/res/drawable/launch_background.xml
new file mode 100644
index 0000000..3110d52
--- /dev/null
+++ b/gallery/android/app/src/main/res/drawable/launch_background.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Modify this file to customize your launch splash screen -->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:drawable="@color/backgroundColor" />
+
+ <!-- You can insert your own image assets here -->
+ <!-- <item>
+ <bitmap
+ android:gravity="center"
+ android:src="@mipmap/launch_image" />
+ </item> -->
+</layer-list>
diff --git a/gallery/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/gallery/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..4ae7d12
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@mipmap/ic_launcher_background"/>
+ <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
+</adaptive-icon>
\ No newline at end of file
diff --git a/gallery/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/gallery/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..4ae7d12
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@mipmap/ic_launcher_background"/>
+ <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
+</adaptive-icon>
\ No newline at end of file
diff --git a/gallery/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/gallery/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..2d843a6
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png b/gallery/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png
new file mode 100644
index 0000000..8800ae3
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/gallery/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..6d0464a
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/gallery/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 0000000..23622dd
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/gallery/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..f8a9aed
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png b/gallery/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png
new file mode 100644
index 0000000..0233efd
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/gallery/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..0b35e69
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/gallery/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 0000000..8532fdb
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/gallery/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..0da4124
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png b/gallery/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png
new file mode 100644
index 0000000..1b03ae0
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/gallery/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..ae5d600
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/gallery/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..ed20f27
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/gallery/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..00b5fa2
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/gallery/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
new file mode 100644
index 0000000..f3f6a57
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/gallery/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..8d54c88
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/gallery/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..15a950f
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/gallery/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..7cf4b7d
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/gallery/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
new file mode 100644
index 0000000..907043d
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/gallery/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..a7cd5bb
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/gallery/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..03a781d
--- /dev/null
+++ b/gallery/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/gallery/android/app/src/main/res/values/styles.xml b/gallery/android/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..17933f5
--- /dev/null
+++ b/gallery/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
+ <!-- Show a splash screen on the activity. Automatically removed when
+ Flutter draws its first frame -->
+ <item name="android:windowBackground">@drawable/launch_background</item>
+ </style>
+ <color name="backgroundColor">#030303</color>
+</resources>
diff --git a/gallery/android/app/src/profile/AndroidManifest.xml b/gallery/android/app/src/profile/AndroidManifest.xml
new file mode 100644
index 0000000..ef5f37d
--- /dev/null
+++ b/gallery/android/app/src/profile/AndroidManifest.xml
@@ -0,0 +1,7 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.example.gallery">
+ <!-- Flutter needs it to communicate with the running application
+ to allow setting breakpoints, to provide hot reload, etc.
+ -->
+ <uses-permission android:name="android.permission.INTERNET"/>
+</manifest>
diff --git a/gallery/android/build.gradle b/gallery/android/build.gradle
new file mode 100644
index 0000000..b7faad8
--- /dev/null
+++ b/gallery/android/build.gradle
@@ -0,0 +1,31 @@
+buildscript {
+ ext.kotlin_version = '1.2.71'
+ repositories {
+ google()
+ jcenter()
+ }
+
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.2.1'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ jcenter()
+ }
+}
+
+rootProject.buildDir = '../build'
+subprojects {
+ project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
+ project.evaluationDependsOn(':app')
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
diff --git a/gallery/android/gradle.properties b/gallery/android/gradle.properties
new file mode 100644
index 0000000..2324ab5
--- /dev/null
+++ b/gallery/android/gradle.properties
@@ -0,0 +1,5 @@
+org.gradle.jvmargs=-Xmx1536M
+
+android.enableR8=true
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/gallery/android/gradle/wrapper/gradle-wrapper.properties b/gallery/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..2819f02
--- /dev/null
+++ b/gallery/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
diff --git a/gallery/android/settings.gradle b/gallery/android/settings.gradle
new file mode 100644
index 0000000..5a2f14f
--- /dev/null
+++ b/gallery/android/settings.gradle
@@ -0,0 +1,15 @@
+include ':app'
+
+def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
+
+def plugins = new Properties()
+def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
+if (pluginsFile.exists()) {
+ pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
+}
+
+plugins.each { name, path ->
+ def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
+ include ":$name"
+ project(":$name").projectDir = pluginDirectory
+}
diff --git a/gallery/assets/crane/destinations/2.0x/eat_0.jpg b/gallery/assets/crane/destinations/2.0x/eat_0.jpg
new file mode 100644
index 0000000..e673cb7
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/eat_0.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/eat_1.jpg b/gallery/assets/crane/destinations/2.0x/eat_1.jpg
new file mode 100644
index 0000000..7868814
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/eat_1.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/eat_10.jpg b/gallery/assets/crane/destinations/2.0x/eat_10.jpg
new file mode 100644
index 0000000..0f91457
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/eat_10.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/eat_2.jpg b/gallery/assets/crane/destinations/2.0x/eat_2.jpg
new file mode 100644
index 0000000..c6afc57
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/eat_2.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/eat_3.jpg b/gallery/assets/crane/destinations/2.0x/eat_3.jpg
new file mode 100644
index 0000000..2346eec
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/eat_3.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/eat_4.jpg b/gallery/assets/crane/destinations/2.0x/eat_4.jpg
new file mode 100644
index 0000000..f68dd57
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/eat_4.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/eat_5.jpg b/gallery/assets/crane/destinations/2.0x/eat_5.jpg
new file mode 100644
index 0000000..17c85e3
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/eat_5.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/eat_6.jpg b/gallery/assets/crane/destinations/2.0x/eat_6.jpg
new file mode 100644
index 0000000..17aa099
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/eat_6.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/eat_7.jpg b/gallery/assets/crane/destinations/2.0x/eat_7.jpg
new file mode 100644
index 0000000..8392e07
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/eat_7.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/eat_8.jpg b/gallery/assets/crane/destinations/2.0x/eat_8.jpg
new file mode 100644
index 0000000..b3e0286
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/eat_8.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/eat_9.jpg b/gallery/assets/crane/destinations/2.0x/eat_9.jpg
new file mode 100644
index 0000000..b9f36b8
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/eat_9.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/fly_0.jpg b/gallery/assets/crane/destinations/2.0x/fly_0.jpg
new file mode 100644
index 0000000..48e91c0
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/fly_0.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/fly_1.jpg b/gallery/assets/crane/destinations/2.0x/fly_1.jpg
new file mode 100644
index 0000000..0deb60b
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/fly_1.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/fly_10.jpg b/gallery/assets/crane/destinations/2.0x/fly_10.jpg
new file mode 100644
index 0000000..ea424cd
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/fly_10.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/fly_11.jpg b/gallery/assets/crane/destinations/2.0x/fly_11.jpg
new file mode 100644
index 0000000..f333d6c
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/fly_11.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/fly_12.jpg b/gallery/assets/crane/destinations/2.0x/fly_12.jpg
new file mode 100644
index 0000000..7e4b934
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/fly_12.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/fly_13.jpg b/gallery/assets/crane/destinations/2.0x/fly_13.jpg
new file mode 100644
index 0000000..aac190a
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/fly_13.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/fly_2.jpg b/gallery/assets/crane/destinations/2.0x/fly_2.jpg
new file mode 100644
index 0000000..fa7cf2d
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/fly_2.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/fly_3.jpg b/gallery/assets/crane/destinations/2.0x/fly_3.jpg
new file mode 100644
index 0000000..970a7ed
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/fly_3.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/fly_4.jpg b/gallery/assets/crane/destinations/2.0x/fly_4.jpg
new file mode 100644
index 0000000..0658809
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/fly_4.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/fly_5.jpg b/gallery/assets/crane/destinations/2.0x/fly_5.jpg
new file mode 100644
index 0000000..d273dc0
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/fly_5.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/fly_6.jpg b/gallery/assets/crane/destinations/2.0x/fly_6.jpg
new file mode 100644
index 0000000..c150d8b
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/fly_6.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/fly_7.jpg b/gallery/assets/crane/destinations/2.0x/fly_7.jpg
new file mode 100644
index 0000000..1efbe28
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/fly_7.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/fly_8.jpg b/gallery/assets/crane/destinations/2.0x/fly_8.jpg
new file mode 100644
index 0000000..edc7da2
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/fly_8.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/fly_9.jpg b/gallery/assets/crane/destinations/2.0x/fly_9.jpg
new file mode 100644
index 0000000..29821e8
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/fly_9.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/sleep_0.jpg b/gallery/assets/crane/destinations/2.0x/sleep_0.jpg
new file mode 100644
index 0000000..0658809
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/sleep_0.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/sleep_1.jpg b/gallery/assets/crane/destinations/2.0x/sleep_1.jpg
new file mode 100644
index 0000000..48e91c0
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/sleep_1.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/sleep_10.jpg b/gallery/assets/crane/destinations/2.0x/sleep_10.jpg
new file mode 100644
index 0000000..ea424cd
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/sleep_10.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/sleep_11.jpg b/gallery/assets/crane/destinations/2.0x/sleep_11.jpg
new file mode 100644
index 0000000..5551265
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/sleep_11.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/sleep_2.jpg b/gallery/assets/crane/destinations/2.0x/sleep_2.jpg
new file mode 100644
index 0000000..970a7ed
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/sleep_2.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/sleep_3.jpg b/gallery/assets/crane/destinations/2.0x/sleep_3.jpg
new file mode 100644
index 0000000..29821e8
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/sleep_3.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/sleep_4.jpg b/gallery/assets/crane/destinations/2.0x/sleep_4.jpg
new file mode 100644
index 0000000..d273dc0
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/sleep_4.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/sleep_5.jpg b/gallery/assets/crane/destinations/2.0x/sleep_5.jpg
new file mode 100644
index 0000000..0deb60b
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/sleep_5.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/sleep_6.jpg b/gallery/assets/crane/destinations/2.0x/sleep_6.jpg
new file mode 100644
index 0000000..7e4b934
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/sleep_6.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/sleep_7.jpg b/gallery/assets/crane/destinations/2.0x/sleep_7.jpg
new file mode 100644
index 0000000..19cd9f6
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/sleep_7.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/sleep_8.jpg b/gallery/assets/crane/destinations/2.0x/sleep_8.jpg
new file mode 100644
index 0000000..8b0e05f
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/sleep_8.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/2.0x/sleep_9.jpg b/gallery/assets/crane/destinations/2.0x/sleep_9.jpg
new file mode 100644
index 0000000..f333d6c
--- /dev/null
+++ b/gallery/assets/crane/destinations/2.0x/sleep_9.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/eat_0.jpg b/gallery/assets/crane/destinations/3.0x/eat_0.jpg
new file mode 100644
index 0000000..7e0ce7c
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/eat_0.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/eat_1.jpg b/gallery/assets/crane/destinations/3.0x/eat_1.jpg
new file mode 100644
index 0000000..d36a98c
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/eat_1.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/eat_10.jpg b/gallery/assets/crane/destinations/3.0x/eat_10.jpg
new file mode 100644
index 0000000..f6036ca
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/eat_10.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/eat_2.jpg b/gallery/assets/crane/destinations/3.0x/eat_2.jpg
new file mode 100644
index 0000000..95709ff
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/eat_2.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/eat_3.jpg b/gallery/assets/crane/destinations/3.0x/eat_3.jpg
new file mode 100644
index 0000000..cb8077b
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/eat_3.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/eat_4.jpg b/gallery/assets/crane/destinations/3.0x/eat_4.jpg
new file mode 100644
index 0000000..60d2bb8
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/eat_4.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/eat_5.jpg b/gallery/assets/crane/destinations/3.0x/eat_5.jpg
new file mode 100644
index 0000000..3d55f7a
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/eat_5.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/eat_6.jpg b/gallery/assets/crane/destinations/3.0x/eat_6.jpg
new file mode 100644
index 0000000..e53f900
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/eat_6.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/eat_7.jpg b/gallery/assets/crane/destinations/3.0x/eat_7.jpg
new file mode 100644
index 0000000..46a0836
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/eat_7.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/eat_8.jpg b/gallery/assets/crane/destinations/3.0x/eat_8.jpg
new file mode 100644
index 0000000..807a347
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/eat_8.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/eat_9.jpg b/gallery/assets/crane/destinations/3.0x/eat_9.jpg
new file mode 100644
index 0000000..d6c32b0
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/eat_9.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/fly_0.jpg b/gallery/assets/crane/destinations/3.0x/fly_0.jpg
new file mode 100644
index 0000000..cba1b54
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/fly_0.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/fly_1.jpg b/gallery/assets/crane/destinations/3.0x/fly_1.jpg
new file mode 100644
index 0000000..d86aed5
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/fly_1.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/fly_10.jpg b/gallery/assets/crane/destinations/3.0x/fly_10.jpg
new file mode 100644
index 0000000..7fe3463
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/fly_10.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/fly_11.jpg b/gallery/assets/crane/destinations/3.0x/fly_11.jpg
new file mode 100644
index 0000000..e47bdfe
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/fly_11.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/fly_12.jpg b/gallery/assets/crane/destinations/3.0x/fly_12.jpg
new file mode 100644
index 0000000..d8df0c9
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/fly_12.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/fly_13.jpg b/gallery/assets/crane/destinations/3.0x/fly_13.jpg
new file mode 100644
index 0000000..69372ec
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/fly_13.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/fly_2.jpg b/gallery/assets/crane/destinations/3.0x/fly_2.jpg
new file mode 100644
index 0000000..32585fa
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/fly_2.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/fly_3.jpg b/gallery/assets/crane/destinations/3.0x/fly_3.jpg
new file mode 100644
index 0000000..5d970aa
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/fly_3.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/fly_4.jpg b/gallery/assets/crane/destinations/3.0x/fly_4.jpg
new file mode 100644
index 0000000..d3e848b
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/fly_4.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/fly_5.jpg b/gallery/assets/crane/destinations/3.0x/fly_5.jpg
new file mode 100644
index 0000000..c984ce1
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/fly_5.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/fly_6.jpg b/gallery/assets/crane/destinations/3.0x/fly_6.jpg
new file mode 100644
index 0000000..53e56af
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/fly_6.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/fly_7.jpg b/gallery/assets/crane/destinations/3.0x/fly_7.jpg
new file mode 100644
index 0000000..585a44a
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/fly_7.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/fly_8.jpg b/gallery/assets/crane/destinations/3.0x/fly_8.jpg
new file mode 100644
index 0000000..ceeaef1
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/fly_8.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/fly_9.jpg b/gallery/assets/crane/destinations/3.0x/fly_9.jpg
new file mode 100644
index 0000000..bc12d0f
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/fly_9.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/sleep_0.jpg b/gallery/assets/crane/destinations/3.0x/sleep_0.jpg
new file mode 100644
index 0000000..d3e848b
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/sleep_0.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/sleep_1.jpg b/gallery/assets/crane/destinations/3.0x/sleep_1.jpg
new file mode 100644
index 0000000..cba1b54
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/sleep_1.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/sleep_10.jpg b/gallery/assets/crane/destinations/3.0x/sleep_10.jpg
new file mode 100644
index 0000000..7fe3463
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/sleep_10.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/sleep_11.jpg b/gallery/assets/crane/destinations/3.0x/sleep_11.jpg
new file mode 100644
index 0000000..8324309
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/sleep_11.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/sleep_2.jpg b/gallery/assets/crane/destinations/3.0x/sleep_2.jpg
new file mode 100644
index 0000000..5d970aa
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/sleep_2.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/sleep_3.jpg b/gallery/assets/crane/destinations/3.0x/sleep_3.jpg
new file mode 100644
index 0000000..bc12d0f
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/sleep_3.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/sleep_4.jpg b/gallery/assets/crane/destinations/3.0x/sleep_4.jpg
new file mode 100644
index 0000000..c984ce1
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/sleep_4.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/sleep_5.jpg b/gallery/assets/crane/destinations/3.0x/sleep_5.jpg
new file mode 100644
index 0000000..d86aed5
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/sleep_5.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/sleep_6.jpg b/gallery/assets/crane/destinations/3.0x/sleep_6.jpg
new file mode 100644
index 0000000..d8df0c9
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/sleep_6.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/sleep_7.jpg b/gallery/assets/crane/destinations/3.0x/sleep_7.jpg
new file mode 100644
index 0000000..29c83b4
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/sleep_7.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/sleep_8.jpg b/gallery/assets/crane/destinations/3.0x/sleep_8.jpg
new file mode 100644
index 0000000..41d45d3
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/sleep_8.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/3.0x/sleep_9.jpg b/gallery/assets/crane/destinations/3.0x/sleep_9.jpg
new file mode 100644
index 0000000..e47bdfe
--- /dev/null
+++ b/gallery/assets/crane/destinations/3.0x/sleep_9.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/eat_0.jpg b/gallery/assets/crane/destinations/eat_0.jpg
new file mode 100644
index 0000000..564ff88
--- /dev/null
+++ b/gallery/assets/crane/destinations/eat_0.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/eat_1.jpg b/gallery/assets/crane/destinations/eat_1.jpg
new file mode 100644
index 0000000..496c3e3
--- /dev/null
+++ b/gallery/assets/crane/destinations/eat_1.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/eat_10.jpg b/gallery/assets/crane/destinations/eat_10.jpg
new file mode 100644
index 0000000..d230466
--- /dev/null
+++ b/gallery/assets/crane/destinations/eat_10.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/eat_2.jpg b/gallery/assets/crane/destinations/eat_2.jpg
new file mode 100644
index 0000000..ec3f532
--- /dev/null
+++ b/gallery/assets/crane/destinations/eat_2.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/eat_3.jpg b/gallery/assets/crane/destinations/eat_3.jpg
new file mode 100644
index 0000000..441200d
--- /dev/null
+++ b/gallery/assets/crane/destinations/eat_3.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/eat_4.jpg b/gallery/assets/crane/destinations/eat_4.jpg
new file mode 100644
index 0000000..e9c23e2
--- /dev/null
+++ b/gallery/assets/crane/destinations/eat_4.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/eat_5.jpg b/gallery/assets/crane/destinations/eat_5.jpg
new file mode 100644
index 0000000..fb3233c
--- /dev/null
+++ b/gallery/assets/crane/destinations/eat_5.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/eat_6.jpg b/gallery/assets/crane/destinations/eat_6.jpg
new file mode 100644
index 0000000..78229c9
--- /dev/null
+++ b/gallery/assets/crane/destinations/eat_6.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/eat_7.jpg b/gallery/assets/crane/destinations/eat_7.jpg
new file mode 100644
index 0000000..073642f
--- /dev/null
+++ b/gallery/assets/crane/destinations/eat_7.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/eat_8.jpg b/gallery/assets/crane/destinations/eat_8.jpg
new file mode 100644
index 0000000..f5015f1
--- /dev/null
+++ b/gallery/assets/crane/destinations/eat_8.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/eat_9.jpg b/gallery/assets/crane/destinations/eat_9.jpg
new file mode 100644
index 0000000..0da6288
--- /dev/null
+++ b/gallery/assets/crane/destinations/eat_9.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/fly_0.jpg b/gallery/assets/crane/destinations/fly_0.jpg
new file mode 100644
index 0000000..7bb5aa9
--- /dev/null
+++ b/gallery/assets/crane/destinations/fly_0.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/fly_1.jpg b/gallery/assets/crane/destinations/fly_1.jpg
new file mode 100644
index 0000000..5fc5af7
--- /dev/null
+++ b/gallery/assets/crane/destinations/fly_1.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/fly_10.jpg b/gallery/assets/crane/destinations/fly_10.jpg
new file mode 100644
index 0000000..b6de95d
--- /dev/null
+++ b/gallery/assets/crane/destinations/fly_10.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/fly_11.jpg b/gallery/assets/crane/destinations/fly_11.jpg
new file mode 100644
index 0000000..6bb5ba3
--- /dev/null
+++ b/gallery/assets/crane/destinations/fly_11.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/fly_12.jpg b/gallery/assets/crane/destinations/fly_12.jpg
new file mode 100644
index 0000000..77ae7d7
--- /dev/null
+++ b/gallery/assets/crane/destinations/fly_12.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/fly_13.jpg b/gallery/assets/crane/destinations/fly_13.jpg
new file mode 100644
index 0000000..5b05a7a
--- /dev/null
+++ b/gallery/assets/crane/destinations/fly_13.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/fly_2.jpg b/gallery/assets/crane/destinations/fly_2.jpg
new file mode 100644
index 0000000..dd46463
--- /dev/null
+++ b/gallery/assets/crane/destinations/fly_2.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/fly_3.jpg b/gallery/assets/crane/destinations/fly_3.jpg
new file mode 100644
index 0000000..2e8dc5a
--- /dev/null
+++ b/gallery/assets/crane/destinations/fly_3.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/fly_4.jpg b/gallery/assets/crane/destinations/fly_4.jpg
new file mode 100644
index 0000000..ea88f1a
--- /dev/null
+++ b/gallery/assets/crane/destinations/fly_4.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/fly_5.jpg b/gallery/assets/crane/destinations/fly_5.jpg
new file mode 100644
index 0000000..f399137
--- /dev/null
+++ b/gallery/assets/crane/destinations/fly_5.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/fly_6.jpg b/gallery/assets/crane/destinations/fly_6.jpg
new file mode 100644
index 0000000..d81eeab
--- /dev/null
+++ b/gallery/assets/crane/destinations/fly_6.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/fly_7.jpg b/gallery/assets/crane/destinations/fly_7.jpg
new file mode 100644
index 0000000..bdcecb0
--- /dev/null
+++ b/gallery/assets/crane/destinations/fly_7.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/fly_8.jpg b/gallery/assets/crane/destinations/fly_8.jpg
new file mode 100644
index 0000000..828b113
--- /dev/null
+++ b/gallery/assets/crane/destinations/fly_8.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/fly_9.jpg b/gallery/assets/crane/destinations/fly_9.jpg
new file mode 100644
index 0000000..e03d231
--- /dev/null
+++ b/gallery/assets/crane/destinations/fly_9.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/sleep_0.jpg b/gallery/assets/crane/destinations/sleep_0.jpg
new file mode 100644
index 0000000..ea88f1a
--- /dev/null
+++ b/gallery/assets/crane/destinations/sleep_0.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/sleep_1.jpg b/gallery/assets/crane/destinations/sleep_1.jpg
new file mode 100644
index 0000000..7bb5aa9
--- /dev/null
+++ b/gallery/assets/crane/destinations/sleep_1.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/sleep_10.jpg b/gallery/assets/crane/destinations/sleep_10.jpg
new file mode 100644
index 0000000..b6de95d
--- /dev/null
+++ b/gallery/assets/crane/destinations/sleep_10.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/sleep_11.jpg b/gallery/assets/crane/destinations/sleep_11.jpg
new file mode 100644
index 0000000..0bd5678
--- /dev/null
+++ b/gallery/assets/crane/destinations/sleep_11.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/sleep_2.jpg b/gallery/assets/crane/destinations/sleep_2.jpg
new file mode 100644
index 0000000..2e8dc5a
--- /dev/null
+++ b/gallery/assets/crane/destinations/sleep_2.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/sleep_3.jpg b/gallery/assets/crane/destinations/sleep_3.jpg
new file mode 100644
index 0000000..e03d231
--- /dev/null
+++ b/gallery/assets/crane/destinations/sleep_3.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/sleep_4.jpg b/gallery/assets/crane/destinations/sleep_4.jpg
new file mode 100644
index 0000000..f399137
--- /dev/null
+++ b/gallery/assets/crane/destinations/sleep_4.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/sleep_5.jpg b/gallery/assets/crane/destinations/sleep_5.jpg
new file mode 100644
index 0000000..5fc5af7
--- /dev/null
+++ b/gallery/assets/crane/destinations/sleep_5.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/sleep_6.jpg b/gallery/assets/crane/destinations/sleep_6.jpg
new file mode 100644
index 0000000..77ae7d7
--- /dev/null
+++ b/gallery/assets/crane/destinations/sleep_6.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/sleep_7.jpg b/gallery/assets/crane/destinations/sleep_7.jpg
new file mode 100644
index 0000000..d6d6308
--- /dev/null
+++ b/gallery/assets/crane/destinations/sleep_7.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/sleep_8.jpg b/gallery/assets/crane/destinations/sleep_8.jpg
new file mode 100644
index 0000000..e27d463
--- /dev/null
+++ b/gallery/assets/crane/destinations/sleep_8.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations/sleep_9.jpg b/gallery/assets/crane/destinations/sleep_9.jpg
new file mode 100644
index 0000000..6bb5ba3
--- /dev/null
+++ b/gallery/assets/crane/destinations/sleep_9.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations_cropped_source/eat_0.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/eat_0.jpg.REMOVED.git-id
new file mode 100644
index 0000000..e9abbeb
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/eat_0.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+7209082c413a7875be6692d04aa76daa7f7b57cd
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/eat_1.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/eat_1.jpg.REMOVED.git-id
new file mode 100644
index 0000000..d6aa540
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/eat_1.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+e5699aef15018b67171c25fcaab8cddb54d4f88f
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/eat_10.jpg b/gallery/assets/crane/destinations_cropped_source/eat_10.jpg
new file mode 100644
index 0000000..a7d0b92
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/eat_10.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations_cropped_source/eat_2.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/eat_2.jpg.REMOVED.git-id
new file mode 100644
index 0000000..2839f52
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/eat_2.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+0655073c4175942e837999713d4cf28bf8a4da65
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/eat_3.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/eat_3.jpg.REMOVED.git-id
new file mode 100644
index 0000000..b16cd56
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/eat_3.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+1f4f6db81be240f816702ce02d5ca0c5b7e39e63
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/eat_4.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/eat_4.jpg.REMOVED.git-id
new file mode 100644
index 0000000..1574711
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/eat_4.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+034f5c5adec730efa5dcf156dad301547cb59fb7
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/eat_5.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/eat_5.jpg.REMOVED.git-id
new file mode 100644
index 0000000..7fb9a1f
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/eat_5.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+cdffbed3b168aa35ac950d9ef4cba58e985d4ab1
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/eat_6.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/eat_6.jpg.REMOVED.git-id
new file mode 100644
index 0000000..53156a8
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/eat_6.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+1833d052c5e3d15e851307304a0a413c589a1b56
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/eat_7.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/eat_7.jpg.REMOVED.git-id
new file mode 100644
index 0000000..41335f0
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/eat_7.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+e354496efbf9d167b9c025f0c7ed8bebd84ed2fa
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/eat_8.jpg b/gallery/assets/crane/destinations_cropped_source/eat_8.jpg
new file mode 100644
index 0000000..8dab516
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/eat_8.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations_cropped_source/eat_9.jpg b/gallery/assets/crane/destinations_cropped_source/eat_9.jpg
new file mode 100644
index 0000000..bb5132f
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/eat_9.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations_cropped_source/fly_0.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/fly_0.jpg.REMOVED.git-id
new file mode 100644
index 0000000..0bf60df
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/fly_0.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+1a90678b9ed8cf8b3f2c735113a49eb851e6e965
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/fly_1.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/fly_1.jpg.REMOVED.git-id
new file mode 100644
index 0000000..4fecb6f
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/fly_1.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+4bb636b7f7c6c2f23878b1153188889eea1a05f5
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/fly_10.jpg b/gallery/assets/crane/destinations_cropped_source/fly_10.jpg
new file mode 100644
index 0000000..4676bcf
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/fly_10.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations_cropped_source/fly_11.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/fly_11.jpg.REMOVED.git-id
new file mode 100644
index 0000000..af24b3b
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/fly_11.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+374cf785f0c60b03d986fbc4ad211007c301b3e1
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/fly_12.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/fly_12.jpg.REMOVED.git-id
new file mode 100644
index 0000000..1eb8684
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/fly_12.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+3288ea9bd8b593449f1556b37a67bb22be16a964
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/fly_13.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/fly_13.jpg.REMOVED.git-id
new file mode 100644
index 0000000..2839c47
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/fly_13.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+60f8535425c5d2c1b0d274c73a794900c441352f
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/fly_2.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/fly_2.jpg.REMOVED.git-id
new file mode 100644
index 0000000..e962178
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/fly_2.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+0d6fa013d0f02fd6c936cc15a200a920b35ad9fb
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/fly_3.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/fly_3.jpg.REMOVED.git-id
new file mode 100644
index 0000000..019701f
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/fly_3.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+71e6de638554b2f4ba39f57ab1a362695979f738
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/fly_4.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/fly_4.jpg.REMOVED.git-id
new file mode 100644
index 0000000..f4d6708
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/fly_4.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+8a216092615cf8f40191252eb48c11e2c6844d13
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/fly_5.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/fly_5.jpg.REMOVED.git-id
new file mode 100644
index 0000000..d89b33d
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/fly_5.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+35c532a0d88577d5f04445fea0920455b62f5485
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/fly_6.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/fly_6.jpg.REMOVED.git-id
new file mode 100644
index 0000000..5f2f8f0
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/fly_6.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+b30ee45fa2806198d4f8f7fcd9af33c845e14481
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/fly_7.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/fly_7.jpg.REMOVED.git-id
new file mode 100644
index 0000000..4c64e83
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/fly_7.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+44707353b6a74da949e5d831dc53f3be4dab6984
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/fly_8.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/fly_8.jpg.REMOVED.git-id
new file mode 100644
index 0000000..8990709
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/fly_8.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+f478b64290b2a94766f513331a84a8fe2a31bf61
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/fly_9.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/fly_9.jpg.REMOVED.git-id
new file mode 100644
index 0000000..24784fb
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/fly_9.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+8e4ca1e71c28ede3d886a6bb624004099eb87966
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/sleep_0.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/sleep_0.jpg.REMOVED.git-id
new file mode 100644
index 0000000..f4d6708
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/sleep_0.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+8a216092615cf8f40191252eb48c11e2c6844d13
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/sleep_1.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/sleep_1.jpg.REMOVED.git-id
new file mode 100644
index 0000000..0bf60df
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/sleep_1.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+1a90678b9ed8cf8b3f2c735113a49eb851e6e965
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/sleep_10.jpg b/gallery/assets/crane/destinations_cropped_source/sleep_10.jpg
new file mode 100644
index 0000000..4676bcf
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/sleep_10.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations_cropped_source/sleep_11.jpg b/gallery/assets/crane/destinations_cropped_source/sleep_11.jpg
new file mode 100644
index 0000000..84ddb69
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/sleep_11.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations_cropped_source/sleep_2.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/sleep_2.jpg.REMOVED.git-id
new file mode 100644
index 0000000..019701f
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/sleep_2.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+71e6de638554b2f4ba39f57ab1a362695979f738
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/sleep_3.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/sleep_3.jpg.REMOVED.git-id
new file mode 100644
index 0000000..24784fb
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/sleep_3.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+8e4ca1e71c28ede3d886a6bb624004099eb87966
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/sleep_4.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/sleep_4.jpg.REMOVED.git-id
new file mode 100644
index 0000000..d89b33d
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/sleep_4.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+35c532a0d88577d5f04445fea0920455b62f5485
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/sleep_5.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/sleep_5.jpg.REMOVED.git-id
new file mode 100644
index 0000000..4fecb6f
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/sleep_5.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+4bb636b7f7c6c2f23878b1153188889eea1a05f5
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/sleep_6.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/sleep_6.jpg.REMOVED.git-id
new file mode 100644
index 0000000..1eb8684
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/sleep_6.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+3288ea9bd8b593449f1556b37a67bb22be16a964
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/sleep_7.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/sleep_7.jpg.REMOVED.git-id
new file mode 100644
index 0000000..383c10e
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/sleep_7.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+817cfa4f7ee74a6cc59a45ddc6dc9503bc952ad2
\ No newline at end of file
diff --git a/gallery/assets/crane/destinations_cropped_source/sleep_8.jpg b/gallery/assets/crane/destinations_cropped_source/sleep_8.jpg
new file mode 100644
index 0000000..68a5720
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/sleep_8.jpg
Binary files differ
diff --git a/gallery/assets/crane/destinations_cropped_source/sleep_9.jpg.REMOVED.git-id b/gallery/assets/crane/destinations_cropped_source/sleep_9.jpg.REMOVED.git-id
new file mode 100644
index 0000000..af24b3b
--- /dev/null
+++ b/gallery/assets/crane/destinations_cropped_source/sleep_9.jpg.REMOVED.git-id
@@ -0,0 +1 @@
+374cf785f0c60b03d986fbc4ad211007c301b3e1
\ No newline at end of file
diff --git a/gallery/assets/crane/logo/2.0x/logo.png b/gallery/assets/crane/logo/2.0x/logo.png
new file mode 100644
index 0000000..11a55d9
--- /dev/null
+++ b/gallery/assets/crane/logo/2.0x/logo.png
Binary files differ
diff --git a/gallery/assets/crane/logo/3.0x/logo.png b/gallery/assets/crane/logo/3.0x/logo.png
new file mode 100644
index 0000000..a54f9fa
--- /dev/null
+++ b/gallery/assets/crane/logo/3.0x/logo.png
Binary files differ
diff --git a/gallery/assets/crane/logo/logo.png b/gallery/assets/crane/logo/logo.png
new file mode 100644
index 0000000..44545b0
--- /dev/null
+++ b/gallery/assets/crane/logo/logo.png
Binary files differ
diff --git a/gallery/assets/crane/logo/outline_logo.png b/gallery/assets/crane/logo/outline_logo.png
new file mode 100644
index 0000000..903c244
--- /dev/null
+++ b/gallery/assets/crane/logo/outline_logo.png
Binary files differ
diff --git a/gallery/assets/demos/1.5x/bottom_navigation_background.png b/gallery/assets/demos/1.5x/bottom_navigation_background.png
new file mode 100644
index 0000000..308c3b7
--- /dev/null
+++ b/gallery/assets/demos/1.5x/bottom_navigation_background.png
Binary files differ
diff --git a/gallery/assets/demos/2.0x/bottom_navigation_background.png b/gallery/assets/demos/2.0x/bottom_navigation_background.png
new file mode 100644
index 0000000..e8ac9e3
--- /dev/null
+++ b/gallery/assets/demos/2.0x/bottom_navigation_background.png
Binary files differ
diff --git a/gallery/assets/demos/3.0x/bottom_navigation_background.png b/gallery/assets/demos/3.0x/bottom_navigation_background.png
new file mode 100644
index 0000000..794dbb0
--- /dev/null
+++ b/gallery/assets/demos/3.0x/bottom_navigation_background.png
Binary files differ
diff --git a/gallery/assets/demos/4.0x/bottom_navigation_background.png b/gallery/assets/demos/4.0x/bottom_navigation_background.png
new file mode 100644
index 0000000..e3d1d4b
--- /dev/null
+++ b/gallery/assets/demos/4.0x/bottom_navigation_background.png
Binary files differ
diff --git a/gallery/assets/demos/bottom_navigation_background.png b/gallery/assets/demos/bottom_navigation_background.png
new file mode 100644
index 0000000..b1386f5
--- /dev/null
+++ b/gallery/assets/demos/bottom_navigation_background.png
Binary files differ
diff --git a/gallery/assets/icons/cupertino/1.5x/cupertino.png b/gallery/assets/icons/cupertino/1.5x/cupertino.png
new file mode 100644
index 0000000..51677b7
--- /dev/null
+++ b/gallery/assets/icons/cupertino/1.5x/cupertino.png
Binary files differ
diff --git a/gallery/assets/icons/cupertino/2.0x/cupertino.png b/gallery/assets/icons/cupertino/2.0x/cupertino.png
new file mode 100644
index 0000000..f3c22a2
--- /dev/null
+++ b/gallery/assets/icons/cupertino/2.0x/cupertino.png
Binary files differ
diff --git a/gallery/assets/icons/cupertino/3.0x/cupertino.png b/gallery/assets/icons/cupertino/3.0x/cupertino.png
new file mode 100644
index 0000000..be1bac9
--- /dev/null
+++ b/gallery/assets/icons/cupertino/3.0x/cupertino.png
Binary files differ
diff --git a/gallery/assets/icons/cupertino/4.0x/cupertino.png b/gallery/assets/icons/cupertino/4.0x/cupertino.png
new file mode 100644
index 0000000..063c83a
--- /dev/null
+++ b/gallery/assets/icons/cupertino/4.0x/cupertino.png
Binary files differ
diff --git a/gallery/assets/icons/cupertino/cupertino.png b/gallery/assets/icons/cupertino/cupertino.png
new file mode 100644
index 0000000..98357b4
--- /dev/null
+++ b/gallery/assets/icons/cupertino/cupertino.png
Binary files differ
diff --git a/gallery/assets/icons/material/1.5x/material.png b/gallery/assets/icons/material/1.5x/material.png
new file mode 100644
index 0000000..19c35b3
--- /dev/null
+++ b/gallery/assets/icons/material/1.5x/material.png
Binary files differ
diff --git a/gallery/assets/icons/material/2.0x/material.png b/gallery/assets/icons/material/2.0x/material.png
new file mode 100644
index 0000000..a339f4d
--- /dev/null
+++ b/gallery/assets/icons/material/2.0x/material.png
Binary files differ
diff --git a/gallery/assets/icons/material/3.0x/material.png b/gallery/assets/icons/material/3.0x/material.png
new file mode 100644
index 0000000..b18c4bd
--- /dev/null
+++ b/gallery/assets/icons/material/3.0x/material.png
Binary files differ
diff --git a/gallery/assets/icons/material/4.0x/material.png b/gallery/assets/icons/material/4.0x/material.png
new file mode 100644
index 0000000..eb7ae15
--- /dev/null
+++ b/gallery/assets/icons/material/4.0x/material.png
Binary files differ
diff --git a/gallery/assets/icons/material/material.png b/gallery/assets/icons/material/material.png
new file mode 100644
index 0000000..973f716
--- /dev/null
+++ b/gallery/assets/icons/material/material.png
Binary files differ
diff --git a/gallery/assets/icons/reference/1.5x/reference.png b/gallery/assets/icons/reference/1.5x/reference.png
new file mode 100644
index 0000000..84079a0
--- /dev/null
+++ b/gallery/assets/icons/reference/1.5x/reference.png
Binary files differ
diff --git a/gallery/assets/icons/reference/2.0x/reference.png b/gallery/assets/icons/reference/2.0x/reference.png
new file mode 100644
index 0000000..4842cfd
--- /dev/null
+++ b/gallery/assets/icons/reference/2.0x/reference.png
Binary files differ
diff --git a/gallery/assets/icons/reference/3.0x/reference.png b/gallery/assets/icons/reference/3.0x/reference.png
new file mode 100644
index 0000000..5894b89
--- /dev/null
+++ b/gallery/assets/icons/reference/3.0x/reference.png
Binary files differ
diff --git a/gallery/assets/icons/reference/4.0x/reference.png b/gallery/assets/icons/reference/4.0x/reference.png
new file mode 100644
index 0000000..dcc08d7
--- /dev/null
+++ b/gallery/assets/icons/reference/4.0x/reference.png
Binary files differ
diff --git a/gallery/assets/icons/reference/reference.png b/gallery/assets/icons/reference/reference.png
new file mode 100644
index 0000000..e6ca484
--- /dev/null
+++ b/gallery/assets/icons/reference/reference.png
Binary files differ
diff --git a/gallery/assets/icons/settings/settings_dark.flr b/gallery/assets/icons/settings/settings_dark.flr
new file mode 100644
index 0000000..dcce9b6
--- /dev/null
+++ b/gallery/assets/icons/settings/settings_dark.flr
Binary files differ
diff --git a/gallery/assets/icons/settings/settings_light.flr b/gallery/assets/icons/settings/settings_light.flr
new file mode 100644
index 0000000..5ab6dfb
--- /dev/null
+++ b/gallery/assets/icons/settings/settings_light.flr
@@ -0,0 +1,2274 @@
+{
+ "version": 24,
+ "artboards": [
+ {
+ "name": "settings_light",
+ "translation": [
+ 353.5321960449219,
+ 408.1772766113281
+ ],
+ "width": 86,
+ "height": 86,
+ "origin": [
+ 0,
+ 0
+ ],
+ "clipContents": true,
+ "color": [
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "nodes": [
+ {
+ "name": "Precomp_Container",
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Dot_Outer",
+ "parent": 0,
+ "translation": [
+ 23,
+ 33
+ ],
+ "rotation": 1.5707963267948966,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Dot_InOut",
+ "parent": 1,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shapes_Container",
+ "parent": 2,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Container_Outer",
+ "parent": 3,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 2,
+ 2
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shape",
+ "parent": 4,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "isVisible": true,
+ "blendMode": 3,
+ "drawOrder": 11,
+ "transformAffectsStroke": true,
+ "type": "shape"
+ },
+ {
+ "name": "Color",
+ "parent": 5,
+ "opacity": 1,
+ "color": [
+ 0.1411764770746231,
+ 0.11764705926179886,
+ 0.1882352977991104,
+ 1
+ ],
+ "fillRule": 1,
+ "type": "colorFill"
+ },
+ {
+ "name": "Path",
+ "parent": 5,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "bones": [],
+ "isVisible": true,
+ "isClosed": false,
+ "points": [
+ {
+ "pointType": 2,
+ "translation": [
+ -2,
+ 0
+ ],
+ "in": [
+ -2,
+ 0
+ ],
+ "out": [
+ -2,
+ -1.100000023841858
+ ]
+ },
+ {
+ "pointType": 2,
+ "translation": [
+ 0,
+ -2
+ ],
+ "in": [
+ -1.100000023841858,
+ -2
+ ],
+ "out": [
+ 1.100000023841858,
+ -2
+ ]
+ },
+ {
+ "pointType": 2,
+ "translation": [
+ 2,
+ 0
+ ],
+ "in": [
+ 2,
+ -1.100000023841858
+ ],
+ "out": [
+ 2,
+ 1.100000023841858
+ ]
+ },
+ {
+ "pointType": 2,
+ "translation": [
+ 0,
+ 2
+ ],
+ "in": [
+ 1.100000023841858,
+ 2
+ ],
+ "out": [
+ -1.100000023841858,
+ 2
+ ]
+ },
+ {
+ "pointType": 2,
+ "translation": [
+ -2,
+ 0
+ ],
+ "in": [
+ -2,
+ 1.100000023841858
+ ],
+ "out": [
+ -2,
+ 0
+ ]
+ }
+ ],
+ "type": "path"
+ },
+ {
+ "name": "mask_Outer",
+ "parent": 0,
+ "translation": [
+ 22.5,
+ 33
+ ],
+ "rotation": 1.5610050296912081,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "mask_Anchor",
+ "parent": 8,
+ "translation": [
+ 0,
+ -18.5
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "mask_InOut",
+ "parent": 9,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shapes_Container",
+ "parent": 10,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Container_Outer",
+ "parent": 11,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 2,
+ 2
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shape",
+ "parent": 12,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "isVisible": false,
+ "blendMode": 3,
+ "drawOrder": 8,
+ "transformAffectsStroke": true,
+ "type": "shape"
+ },
+ {
+ "name": "Gradient Fill",
+ "parent": 13,
+ "opacity": 1,
+ "numColorStops": 3,
+ "colorStops": [
+ 1,
+ 0.3490000069141388,
+ 0.5139999985694885,
+ 1,
+ 0,
+ 1,
+ 0.4309999942779541,
+ 0.5139999985694885,
+ 1,
+ 0.5,
+ 1,
+ 0.5139999985694885,
+ 0.5139999985694885,
+ 1,
+ 1
+ ],
+ "start": [
+ 0,
+ 12
+ ],
+ "end": [
+ 0,
+ -12
+ ],
+ "fillRule": 1,
+ "type": "gradientFill"
+ },
+ {
+ "name": "Rectangle Path",
+ "parent": 13,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "width": 6,
+ "height": 24,
+ "cornerRadius": 4,
+ "type": "rectangle"
+ },
+ {
+ "name": "Gradient Rectangle_Outer",
+ "parent": 0,
+ "translation": [
+ 22.5,
+ 33
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Gradient Rectangle_Anchor",
+ "parent": 16,
+ "translation": [
+ 0,
+ -18.5
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "_Parenter",
+ "parent": 17,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Gradient Rectangle_InOut",
+ "parent": 18,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shapes_Container",
+ "parent": 19,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Container_Outer",
+ "parent": 20,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 2,
+ 2
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shape",
+ "parent": 21,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "isVisible": true,
+ "blendMode": 3,
+ "drawOrder": 7,
+ "transformAffectsStroke": true,
+ "type": "shape"
+ },
+ {
+ "name": "Gradient Fill",
+ "parent": 22,
+ "opacity": 1,
+ "numColorStops": 3,
+ "colorStops": [
+ 1,
+ 0.3490000069141388,
+ 0.5139999985694885,
+ 1,
+ 0,
+ 1,
+ 0.4309999942779541,
+ 0.5139999985694885,
+ 1,
+ 0.5,
+ 1,
+ 0.5139999985694885,
+ 0.5139999985694885,
+ 1,
+ 1
+ ],
+ "start": [
+ 0,
+ 12
+ ],
+ "end": [
+ 0,
+ -12
+ ],
+ "fillRule": 1,
+ "type": "gradientFill"
+ },
+ {
+ "name": "Rectangle Path",
+ "parent": 22,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "width": 6,
+ "height": 24,
+ "cornerRadius": 4,
+ "type": "rectangle"
+ },
+ {
+ "name": "mask line_Outer",
+ "parent": 18,
+ "translation": [
+ 0,
+ 20
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "mask line_Anchor",
+ "parent": 25,
+ "translation": [
+ 0,
+ 18
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "mask line_InOut",
+ "parent": 26,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 0,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shapes_Container",
+ "parent": 27,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Container_Outer",
+ "parent": 28,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 2,
+ 2
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shape",
+ "parent": 29,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "isVisible": false,
+ "blendMode": 3,
+ "drawOrder": 10,
+ "transformAffectsStroke": true,
+ "type": "shape"
+ },
+ {
+ "name": "Color",
+ "parent": 30,
+ "opacity": 1,
+ "color": [
+ 0,
+ 0,
+ 0,
+ 1
+ ],
+ "fillRule": 1,
+ "type": "colorFill"
+ },
+ {
+ "name": "Rectangle Path",
+ "parent": 30,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "width": 4,
+ "height": 24,
+ "cornerRadius": 4,
+ "type": "rectangle"
+ },
+ {
+ "name": "line_Outer",
+ "parent": 18,
+ "translation": [
+ 0,
+ -18
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "line_Anchor",
+ "parent": 33,
+ "translation": [
+ 0,
+ 18
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "line_InOut",
+ "parent": 34,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 0,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shapes_Container",
+ "parent": 35,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Container_Outer",
+ "parent": 36,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 2,
+ 2
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shape",
+ "parent": 37,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "isVisible": true,
+ "blendMode": 3,
+ "drawOrder": 9,
+ "transformAffectsStroke": true,
+ "type": "shape"
+ },
+ {
+ "name": "Color",
+ "parent": 38,
+ "opacity": 1,
+ "color": [
+ 0.1411764770746231,
+ 0.11764705926179886,
+ 0.1882352977991104,
+ 1
+ ],
+ "fillRule": 1,
+ "type": "colorFill"
+ },
+ {
+ "name": "Rectangle Path",
+ "parent": 38,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "width": 4,
+ "height": 24,
+ "cornerRadius": 4,
+ "type": "rectangle"
+ },
+ {
+ "name": "Gradient Rectangle_Outer",
+ "parent": 0,
+ "translation": [
+ 59,
+ 53
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Gradient Rectangle_Anchor",
+ "parent": 41,
+ "translation": [
+ 0,
+ 18
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "_Parenter",
+ "parent": 42,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Gradient Rectangle_InOut",
+ "parent": 43,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shapes_Container",
+ "parent": 44,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Container_Outer",
+ "parent": 45,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 2,
+ 2
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shape",
+ "parent": 46,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "isVisible": true,
+ "blendMode": 3,
+ "drawOrder": 2,
+ "transformAffectsStroke": true,
+ "type": "shape"
+ },
+ {
+ "name": "Gradient Fill",
+ "parent": 47,
+ "opacity": 1,
+ "numColorStops": 3,
+ "colorStops": [
+ 0.10999999940395355,
+ 0.8669999837875366,
+ 0.7839999794960022,
+ 1,
+ 0,
+ 0.054999999701976776,
+ 0.7570000290870667,
+ 0.7429999709129333,
+ 1,
+ 0.5,
+ 0,
+ 0.6470000147819519,
+ 0.7020000219345093,
+ 1,
+ 1
+ ],
+ "start": [
+ 0,
+ 12
+ ],
+ "end": [
+ 0,
+ -12
+ ],
+ "fillRule": 1,
+ "type": "gradientFill"
+ },
+ {
+ "name": "Rectangle Path",
+ "parent": 47,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "width": 6,
+ "height": 24,
+ "cornerRadius": 4,
+ "type": "rectangle"
+ },
+ {
+ "name": "Dot_Outer",
+ "parent": 43,
+ "translation": [
+ 0,
+ -18
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Dot_InOut",
+ "parent": 50,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shapes_Container",
+ "parent": 51,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Container_Outer",
+ "parent": 52,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 2,
+ 2
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shape",
+ "parent": 53,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "isVisible": true,
+ "blendMode": 3,
+ "drawOrder": 6,
+ "transformAffectsStroke": true,
+ "type": "shape"
+ },
+ {
+ "name": "Color",
+ "parent": 54,
+ "opacity": 1,
+ "color": [
+ 0.1411764770746231,
+ 0.11764705926179886,
+ 0.1882352977991104,
+ 1
+ ],
+ "fillRule": 1,
+ "type": "colorFill"
+ },
+ {
+ "name": "Path",
+ "parent": 54,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "bones": [],
+ "isVisible": true,
+ "isClosed": false,
+ "points": [
+ {
+ "pointType": 2,
+ "translation": [
+ 2,
+ 0
+ ],
+ "in": [
+ 2,
+ 0
+ ],
+ "out": [
+ 2,
+ 1.1100000143051147
+ ]
+ },
+ {
+ "pointType": 2,
+ "translation": [
+ 0,
+ 2
+ ],
+ "in": [
+ 1.100000023841858,
+ 2
+ ],
+ "out": [
+ -1.1100000143051147,
+ 2
+ ]
+ },
+ {
+ "pointType": 2,
+ "translation": [
+ -2,
+ 0
+ ],
+ "in": [
+ -2,
+ 1.1100000143051147
+ ],
+ "out": [
+ -2,
+ -1.100000023841858
+ ]
+ },
+ {
+ "pointType": 2,
+ "translation": [
+ 0,
+ -2
+ ],
+ "in": [
+ -1.1100000143051147,
+ -2
+ ],
+ "out": [
+ 1.100000023841858,
+ -2
+ ]
+ },
+ {
+ "pointType": 2,
+ "translation": [
+ 2,
+ 0
+ ],
+ "in": [
+ 2,
+ -1.100000023841858
+ ],
+ "out": [
+ 2,
+ 0
+ ]
+ }
+ ],
+ "type": "path"
+ },
+ {
+ "name": "mask line_Outer",
+ "parent": 43,
+ "translation": [
+ 0,
+ -56
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "mask line_Anchor",
+ "parent": 57,
+ "translation": [
+ 0,
+ 18
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "mask line_InOut",
+ "parent": 58,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 0,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shapes_Container",
+ "parent": 59,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Container_Outer",
+ "parent": 60,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 2,
+ 2
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shape",
+ "parent": 61,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "isVisible": false,
+ "blendMode": 3,
+ "drawOrder": 5,
+ "transformAffectsStroke": true,
+ "type": "shape"
+ },
+ {
+ "name": "Color",
+ "parent": 62,
+ "opacity": 1,
+ "color": [
+ 0,
+ 0,
+ 0,
+ 1
+ ],
+ "fillRule": 1,
+ "type": "colorFill"
+ },
+ {
+ "name": "Rectangle Path",
+ "parent": 62,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "width": 4,
+ "height": 24,
+ "cornerRadius": 4,
+ "type": "rectangle"
+ },
+ {
+ "name": "line_Outer",
+ "parent": 43,
+ "translation": [
+ 0,
+ -18
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "line_Anchor",
+ "parent": 65,
+ "translation": [
+ 0,
+ 18
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "line_InOut",
+ "parent": 66,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 0,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shapes_Container",
+ "parent": 67,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Container_Outer",
+ "parent": 68,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 2,
+ 2
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shape",
+ "parent": 69,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "isVisible": true,
+ "blendMode": 3,
+ "drawOrder": 4,
+ "transformAffectsStroke": true,
+ "type": "shape"
+ },
+ {
+ "name": "Color",
+ "parent": 70,
+ "opacity": 1,
+ "color": [
+ 0.1411764770746231,
+ 0.11764705926179886,
+ 0.1882352977991104,
+ 1
+ ],
+ "fillRule": 1,
+ "type": "colorFill"
+ },
+ {
+ "name": "Rectangle Path",
+ "parent": 70,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "width": 4,
+ "height": 24,
+ "cornerRadius": 4,
+ "type": "rectangle"
+ },
+ {
+ "name": "mask_Outer",
+ "parent": 43,
+ "translation": [
+ 0,
+ -18
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "mask_Anchor",
+ "parent": 73,
+ "translation": [
+ 0,
+ 18
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "mask_InOut",
+ "parent": 74,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shapes_Container",
+ "parent": 75,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Container_Outer",
+ "parent": 76,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 2,
+ 2
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shape",
+ "parent": 77,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "isVisible": false,
+ "blendMode": 3,
+ "drawOrder": 3,
+ "transformAffectsStroke": true,
+ "type": "shape"
+ },
+ {
+ "name": "Color",
+ "parent": 78,
+ "opacity": 1,
+ "color": [
+ 0,
+ 0,
+ 0,
+ 1
+ ],
+ "fillRule": 1,
+ "type": "colorFill"
+ },
+ {
+ "name": "Rectangle Path",
+ "parent": 78,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "width": 6,
+ "height": 24,
+ "cornerRadius": 4,
+ "type": "rectangle"
+ },
+ {
+ "name": "Rectangle_Outer",
+ "parent": 0,
+ "translation": [
+ 65,
+ 19
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shapes_Container",
+ "parent": 81,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Container_Outer",
+ "parent": 82,
+ "translation": [
+ 16.395999908447266,
+ -27.8700008392334
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "type": "node"
+ },
+ {
+ "name": "Shape",
+ "parent": 83,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "isVisible": false,
+ "blendMode": 3,
+ "drawOrder": 1,
+ "transformAffectsStroke": true,
+ "type": "shape"
+ },
+ {
+ "name": "Color",
+ "parent": 84,
+ "opacity": 1,
+ "color": [
+ 1,
+ 1,
+ 1,
+ 1
+ ],
+ "fillRule": 1,
+ "type": "colorFill"
+ },
+ {
+ "name": "Rectangle Path",
+ "parent": 84,
+ "translation": [
+ 0,
+ 0
+ ],
+ "rotation": 0,
+ "scale": [
+ 1,
+ 1
+ ],
+ "opacity": 1,
+ "isCollapsed": false,
+ "clips": [],
+ "width": 161.209,
+ "height": 168.261,
+ "cornerRadius": 20,
+ "type": "rectangle"
+ }
+ ],
+ "animations": [
+ {
+ "name": "Animations",
+ "fps": 60,
+ "duration": 2,
+ "isLooping": false,
+ "keyed": [
+ {
+ "component": 2,
+ "opacity": [
+ [
+ {
+ "time": 0,
+ "interpolatorType": 0,
+ "value": 1
+ },
+ {
+ "time": 1.0166666666666666,
+ "interpolatorType": 1,
+ "value": 0
+ }
+ ]
+ ]
+ },
+ {
+ "component": 8,
+ "posX": [
+ [
+ {
+ "time": 1,
+ "interpolatorType": 2,
+ "cubicX1": 0.3330000042915344,
+ "cubicY1": 0,
+ "cubicX2": 0.6669999957084656,
+ "cubicY2": 1,
+ "value": 22.5
+ },
+ {
+ "time": 1.2166666666666666,
+ "interpolatorType": 2,
+ "cubicX1": 1,
+ "cubicY1": 1,
+ "cubicX2": 0,
+ "cubicY2": 0,
+ "value": 70.5
+ }
+ ]
+ ],
+ "posY": [
+ [
+ {
+ "time": 1,
+ "interpolatorType": 2,
+ "cubicX1": 0.3330000042915344,
+ "cubicY1": 0,
+ "cubicX2": 0.6669999957084656,
+ "cubicY2": 1,
+ "value": 33
+ },
+ {
+ "time": 1.2166666666666666,
+ "interpolatorType": 2,
+ "cubicX1": 1,
+ "cubicY1": 1,
+ "cubicX2": 0,
+ "cubicY2": 0,
+ "value": 33
+ }
+ ]
+ ]
+ },
+ {
+ "component": 10,
+ "opacity": [
+ [
+ {
+ "time": 0,
+ "interpolatorType": 0,
+ "value": 1
+ },
+ {
+ "time": 1.2166666666666666,
+ "interpolatorType": 1,
+ "value": 0
+ }
+ ]
+ ]
+ },
+ {
+ "component": 16,
+ "posX": [
+ [
+ {
+ "time": 1.2166666666666666,
+ "interpolatorType": 2,
+ "cubicX1": 0.3330000042915344,
+ "cubicY1": 0,
+ "cubicX2": 0.6669999957084656,
+ "cubicY2": 1,
+ "value": 22.5
+ },
+ {
+ "time": 1.3666666666666667,
+ "interpolatorType": 2,
+ "cubicX1": 1,
+ "cubicY1": 1,
+ "cubicX2": 0,
+ "cubicY2": 0,
+ "value": 27.5
+ }
+ ]
+ ],
+ "posY": [
+ [
+ {
+ "time": 1.2166666666666666,
+ "interpolatorType": 2,
+ "cubicX1": 0.3330000042915344,
+ "cubicY1": 0,
+ "cubicX2": 0.6669999957084656,
+ "cubicY2": 1,
+ "value": 33
+ },
+ {
+ "time": 1.3666666666666667,
+ "interpolatorType": 2,
+ "cubicX1": 1,
+ "cubicY1": 1,
+ "cubicX2": 0,
+ "cubicY2": 0,
+ "value": 47.75
+ }
+ ]
+ ],
+ "rotation": [
+ [
+ {
+ "time": 1.2166666666666666,
+ "interpolatorType": 2,
+ "cubicX1": 0.3330000042915344,
+ "cubicY1": 0,
+ "cubicX2": 0.6669999957084656,
+ "cubicY2": 1,
+ "value": 1.5707963267948966
+ },
+ {
+ "time": 1.3666666666666667,
+ "interpolatorType": 1,
+ "value": 0.8028514559173916
+ }
+ ]
+ ]
+ },
+ {
+ "component": 19,
+ "opacity": [
+ [
+ {
+ "time": 0,
+ "interpolatorType": 0,
+ "value": 1
+ },
+ {
+ "time": 1.4333333333333333,
+ "interpolatorType": 1,
+ "value": 0
+ }
+ ]
+ ]
+ },
+ {
+ "component": 25,
+ "posX": [
+ [
+ {
+ "time": 1,
+ "interpolatorType": 2,
+ "cubicX1": 0.16699999570846558,
+ "cubicY1": 0,
+ "cubicX2": 0.8330000042915344,
+ "cubicY2": 1,
+ "value": 0
+ },
+ {
+ "time": 1.1666666666666667,
+ "interpolatorType": 2,
+ "cubicX1": 1,
+ "cubicY1": 1,
+ "cubicX2": 0,
+ "cubicY2": 0,
+ "value": 0
+ }
+ ]
+ ],
+ "posY": [
+ [
+ {
+ "time": 1,
+ "interpolatorType": 2,
+ "cubicX1": 0.16699999570846558,
+ "cubicY1": 0,
+ "cubicX2": 0.8330000042915344,
+ "cubicY2": 1,
+ "value": 20
+ },
+ {
+ "time": 1.1666666666666667,
+ "interpolatorType": 2,
+ "cubicX1": 1,
+ "cubicY1": 1,
+ "cubicX2": 0,
+ "cubicY2": 0,
+ "value": -18
+ }
+ ]
+ ]
+ },
+ {
+ "component": 27,
+ "opacity": [
+ [
+ {
+ "time": 0.9997222222222223,
+ "interpolatorType": 0,
+ "value": 0
+ },
+ {
+ "time": 1,
+ "interpolatorType": 0,
+ "value": 1
+ },
+ {
+ "time": 60,
+ "interpolatorType": 1,
+ "value": 0
+ }
+ ]
+ ]
+ },
+ {
+ "component": 35,
+ "opacity": [
+ [
+ {
+ "time": 0.9997222222222223,
+ "interpolatorType": 0,
+ "value": 0
+ },
+ {
+ "time": 1,
+ "interpolatorType": 0,
+ "value": 1
+ },
+ {
+ "time": 60,
+ "interpolatorType": 1,
+ "value": 0
+ }
+ ]
+ ]
+ },
+ {
+ "component": 41,
+ "posX": [
+ [
+ {
+ "time": 1.2166666666666666,
+ "interpolatorType": 2,
+ "cubicX1": 0.3330000042915344,
+ "cubicY1": 0,
+ "cubicX2": 0.6669999957084656,
+ "cubicY2": 1,
+ "value": 59
+ },
+ {
+ "time": 1.3666666666666667,
+ "interpolatorType": 2,
+ "cubicX1": 1,
+ "cubicY1": 1,
+ "cubicX2": 0,
+ "cubicY2": 0,
+ "value": 54
+ }
+ ]
+ ],
+ "posY": [
+ [
+ {
+ "time": 1.2166666666666666,
+ "interpolatorType": 2,
+ "cubicX1": 0.3330000042915344,
+ "cubicY1": 0,
+ "cubicX2": 0.6669999957084656,
+ "cubicY2": 1,
+ "value": 53
+ },
+ {
+ "time": 1.3666666666666667,
+ "interpolatorType": 2,
+ "cubicX1": 1,
+ "cubicY1": 1,
+ "cubicX2": 0,
+ "cubicY2": 0,
+ "value": 48
+ }
+ ]
+ ],
+ "rotation": [
+ [
+ {
+ "time": 1.2166666666666666,
+ "interpolatorType": 2,
+ "cubicX1": 0.3330000042915344,
+ "cubicY1": 0,
+ "cubicX2": 0.6669999957084656,
+ "cubicY2": 1,
+ "value": 1.5707963267948966
+ },
+ {
+ "time": 1.3666666666666667,
+ "interpolatorType": 1,
+ "value": 2.3387411976724017
+ }
+ ]
+ ]
+ },
+ {
+ "component": 44,
+ "opacity": [
+ [
+ {
+ "time": 0,
+ "interpolatorType": 0,
+ "value": 1
+ },
+ {
+ "time": 1.4333333333333333,
+ "interpolatorType": 1,
+ "value": 0
+ }
+ ]
+ ]
+ },
+ {
+ "component": 51,
+ "opacity": [
+ [
+ {
+ "time": 0,
+ "interpolatorType": 0,
+ "value": 1
+ },
+ {
+ "time": 1.0166666666666666,
+ "interpolatorType": 1,
+ "value": 0
+ }
+ ]
+ ]
+ },
+ {
+ "component": 57,
+ "posX": [
+ [
+ {
+ "time": 1,
+ "interpolatorType": 2,
+ "cubicX1": 0.3330000042915344,
+ "cubicY1": 0,
+ "cubicX2": 0.6669999957084656,
+ "cubicY2": 1,
+ "value": 0
+ },
+ {
+ "time": 1.1666666666666667,
+ "interpolatorType": 2,
+ "cubicX1": 1,
+ "cubicY1": 1,
+ "cubicX2": 0,
+ "cubicY2": 0,
+ "value": 0
+ }
+ ]
+ ],
+ "posY": [
+ [
+ {
+ "time": 1,
+ "interpolatorType": 2,
+ "cubicX1": 0.3330000042915344,
+ "cubicY1": 0,
+ "cubicX2": 0.6669999957084656,
+ "cubicY2": 1,
+ "value": -56
+ },
+ {
+ "time": 1.1666666666666667,
+ "interpolatorType": 2,
+ "cubicX1": 1,
+ "cubicY1": 1,
+ "cubicX2": 0,
+ "cubicY2": 0,
+ "value": -18
+ }
+ ]
+ ]
+ },
+ {
+ "component": 59,
+ "opacity": [
+ [
+ {
+ "time": 0.9997222222222223,
+ "interpolatorType": 0,
+ "value": 0
+ },
+ {
+ "time": 1,
+ "interpolatorType": 0,
+ "value": 1
+ },
+ {
+ "time": 60,
+ "interpolatorType": 1,
+ "value": 0
+ }
+ ]
+ ]
+ },
+ {
+ "component": 67,
+ "opacity": [
+ [
+ {
+ "time": 0.9997222222222223,
+ "interpolatorType": 0,
+ "value": 0
+ },
+ {
+ "time": 1,
+ "interpolatorType": 0,
+ "value": 1
+ },
+ {
+ "time": 60,
+ "interpolatorType": 1,
+ "value": 0
+ }
+ ]
+ ]
+ },
+ {
+ "component": 73,
+ "posX": [
+ [
+ {
+ "time": 1,
+ "interpolatorType": 2,
+ "cubicX1": 0.3330000042915344,
+ "cubicY1": 0,
+ "cubicX2": 0.6669999957084656,
+ "cubicY2": 1,
+ "value": 0
+ },
+ {
+ "time": 1.2166666666666666,
+ "interpolatorType": 2,
+ "cubicX1": 1,
+ "cubicY1": 1,
+ "cubicX2": 0,
+ "cubicY2": 0,
+ "value": 0
+ }
+ ]
+ ],
+ "posY": [
+ [
+ {
+ "time": 1,
+ "interpolatorType": 2,
+ "cubicX1": 0.3330000042915344,
+ "cubicY1": 0,
+ "cubicX2": 0.6669999957084656,
+ "cubicY2": 1,
+ "value": -18
+ },
+ {
+ "time": 1.2166666666666666,
+ "interpolatorType": 2,
+ "cubicX1": 1,
+ "cubicY1": 1,
+ "cubicX2": 0,
+ "cubicY2": 0,
+ "value": 30
+ }
+ ]
+ ]
+ },
+ {
+ "component": 75,
+ "opacity": [
+ [
+ {
+ "time": 0,
+ "interpolatorType": 0,
+ "value": 1
+ },
+ {
+ "time": 1.2333333333333334,
+ "interpolatorType": 1,
+ "value": 0
+ }
+ ]
+ ]
+ }
+ ],
+ "animationStart": 0,
+ "animationEnd": 60,
+ "type": "animation"
+ }
+ ],
+ "type": "artboard"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/gallery/assets/logo/1.5x/flutter_logo.png b/gallery/assets/logo/1.5x/flutter_logo.png
new file mode 100644
index 0000000..28b7eb9
--- /dev/null
+++ b/gallery/assets/logo/1.5x/flutter_logo.png
Binary files differ
diff --git a/gallery/assets/logo/1.5x/flutter_logo_color.png b/gallery/assets/logo/1.5x/flutter_logo_color.png
new file mode 100644
index 0000000..9eba79c
--- /dev/null
+++ b/gallery/assets/logo/1.5x/flutter_logo_color.png
Binary files differ
diff --git a/gallery/assets/logo/2.0x/flutter_logo.png b/gallery/assets/logo/2.0x/flutter_logo.png
new file mode 100644
index 0000000..dc1d3d1
--- /dev/null
+++ b/gallery/assets/logo/2.0x/flutter_logo.png
Binary files differ
diff --git a/gallery/assets/logo/2.0x/flutter_logo_color.png b/gallery/assets/logo/2.0x/flutter_logo_color.png
new file mode 100644
index 0000000..c54d6ee
--- /dev/null
+++ b/gallery/assets/logo/2.0x/flutter_logo_color.png
Binary files differ
diff --git a/gallery/assets/logo/3.0x/flutter_logo.png b/gallery/assets/logo/3.0x/flutter_logo.png
new file mode 100644
index 0000000..da48917
--- /dev/null
+++ b/gallery/assets/logo/3.0x/flutter_logo.png
Binary files differ
diff --git a/gallery/assets/logo/3.0x/flutter_logo_color.png b/gallery/assets/logo/3.0x/flutter_logo_color.png
new file mode 100644
index 0000000..0059ea6
--- /dev/null
+++ b/gallery/assets/logo/3.0x/flutter_logo_color.png
Binary files differ
diff --git a/gallery/assets/logo/4.0x/flutter_logo.png b/gallery/assets/logo/4.0x/flutter_logo.png
new file mode 100644
index 0000000..0e93874
--- /dev/null
+++ b/gallery/assets/logo/4.0x/flutter_logo.png
Binary files differ
diff --git a/gallery/assets/logo/4.0x/flutter_logo_color.png b/gallery/assets/logo/4.0x/flutter_logo_color.png
new file mode 100644
index 0000000..3c6e643
--- /dev/null
+++ b/gallery/assets/logo/4.0x/flutter_logo_color.png
Binary files differ
diff --git a/gallery/assets/logo/flutter_logo.png b/gallery/assets/logo/flutter_logo.png
new file mode 100644
index 0000000..3c0256e
--- /dev/null
+++ b/gallery/assets/logo/flutter_logo.png
Binary files differ
diff --git a/gallery/assets/logo/flutter_logo_color.png b/gallery/assets/logo/flutter_logo_color.png
new file mode 100644
index 0000000..64d0fc0
--- /dev/null
+++ b/gallery/assets/logo/flutter_logo_color.png
Binary files differ
diff --git a/gallery/assets/splash_effects/splash_effect_1.gif.REMOVED.git-id b/gallery/assets/splash_effects/splash_effect_1.gif.REMOVED.git-id
new file mode 100644
index 0000000..b5d8080
--- /dev/null
+++ b/gallery/assets/splash_effects/splash_effect_1.gif.REMOVED.git-id
@@ -0,0 +1 @@
+6c6fc37bf952d735f8776212a50984fce9e961a6
\ No newline at end of file
diff --git a/gallery/assets/splash_effects/splash_effect_10.gif.REMOVED.git-id b/gallery/assets/splash_effects/splash_effect_10.gif.REMOVED.git-id
new file mode 100644
index 0000000..00f2888
--- /dev/null
+++ b/gallery/assets/splash_effects/splash_effect_10.gif.REMOVED.git-id
@@ -0,0 +1 @@
+bea4f99005aa6ce70b4efcd295426c2a47958abc
\ No newline at end of file
diff --git a/gallery/assets/splash_effects/splash_effect_2.gif b/gallery/assets/splash_effects/splash_effect_2.gif
new file mode 100755
index 0000000..af6e817
--- /dev/null
+++ b/gallery/assets/splash_effects/splash_effect_2.gif
Binary files differ
diff --git a/gallery/assets/splash_effects/splash_effect_3.gif.REMOVED.git-id b/gallery/assets/splash_effects/splash_effect_3.gif.REMOVED.git-id
new file mode 100644
index 0000000..0f3c55d
--- /dev/null
+++ b/gallery/assets/splash_effects/splash_effect_3.gif.REMOVED.git-id
@@ -0,0 +1 @@
+8d6f6fb7b620c76a7e24f182d727e5ac25465f77
\ No newline at end of file
diff --git a/gallery/assets/splash_effects/splash_effect_4.gif.REMOVED.git-id b/gallery/assets/splash_effects/splash_effect_4.gif.REMOVED.git-id
new file mode 100644
index 0000000..b70a681
--- /dev/null
+++ b/gallery/assets/splash_effects/splash_effect_4.gif.REMOVED.git-id
@@ -0,0 +1 @@
+8c39ce0fa46ea4e6beb05a47d998197f2cc142b8
\ No newline at end of file
diff --git a/gallery/assets/splash_effects/splash_effect_5.gif.REMOVED.git-id b/gallery/assets/splash_effects/splash_effect_5.gif.REMOVED.git-id
new file mode 100644
index 0000000..a710827
--- /dev/null
+++ b/gallery/assets/splash_effects/splash_effect_5.gif.REMOVED.git-id
@@ -0,0 +1 @@
+c496a465cc2bac5f816c8048370216bb5eb0aee1
\ No newline at end of file
diff --git a/gallery/assets/splash_effects/splash_effect_6.gif b/gallery/assets/splash_effects/splash_effect_6.gif
new file mode 100755
index 0000000..29d94cc
--- /dev/null
+++ b/gallery/assets/splash_effects/splash_effect_6.gif
Binary files differ
diff --git a/gallery/assets/splash_effects/splash_effect_7.gif b/gallery/assets/splash_effects/splash_effect_7.gif
new file mode 100755
index 0000000..972cdf4
--- /dev/null
+++ b/gallery/assets/splash_effects/splash_effect_7.gif
Binary files differ
diff --git a/gallery/assets/splash_effects/splash_effect_8.gif.REMOVED.git-id b/gallery/assets/splash_effects/splash_effect_8.gif.REMOVED.git-id
new file mode 100644
index 0000000..2fd13da
--- /dev/null
+++ b/gallery/assets/splash_effects/splash_effect_8.gif.REMOVED.git-id
@@ -0,0 +1 @@
+280f61573f52cc2b1162c5d84bbfb200ec4eb3dd
\ No newline at end of file
diff --git a/gallery/assets/splash_effects/splash_effect_9.gif.REMOVED.git-id b/gallery/assets/splash_effects/splash_effect_9.gif.REMOVED.git-id
new file mode 100644
index 0000000..92965b9
--- /dev/null
+++ b/gallery/assets/splash_effects/splash_effect_9.gif.REMOVED.git-id
@@ -0,0 +1 @@
+c99a626e06a6cf3da9067f5fe932da40502ccc06
\ No newline at end of file
diff --git a/gallery/assets/studies/1.5x/crane_card.png b/gallery/assets/studies/1.5x/crane_card.png
new file mode 100644
index 0000000..958d498
--- /dev/null
+++ b/gallery/assets/studies/1.5x/crane_card.png
Binary files differ
diff --git a/gallery/assets/studies/1.5x/crane_card_dark.png b/gallery/assets/studies/1.5x/crane_card_dark.png
new file mode 100644
index 0000000..9f59586
--- /dev/null
+++ b/gallery/assets/studies/1.5x/crane_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/1.5x/rally_card.png b/gallery/assets/studies/1.5x/rally_card.png
new file mode 100644
index 0000000..75aa3c3
--- /dev/null
+++ b/gallery/assets/studies/1.5x/rally_card.png
Binary files differ
diff --git a/gallery/assets/studies/1.5x/rally_card_dark.png b/gallery/assets/studies/1.5x/rally_card_dark.png
new file mode 100644
index 0000000..dd9f2a1
--- /dev/null
+++ b/gallery/assets/studies/1.5x/rally_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/1.5x/shrine_card.png b/gallery/assets/studies/1.5x/shrine_card.png
new file mode 100644
index 0000000..f8e6c97
--- /dev/null
+++ b/gallery/assets/studies/1.5x/shrine_card.png
Binary files differ
diff --git a/gallery/assets/studies/1.5x/shrine_card_dark.png b/gallery/assets/studies/1.5x/shrine_card_dark.png
new file mode 100644
index 0000000..8be90bc
--- /dev/null
+++ b/gallery/assets/studies/1.5x/shrine_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/1.5x/starter_card.png b/gallery/assets/studies/1.5x/starter_card.png
new file mode 100644
index 0000000..db8cca7
--- /dev/null
+++ b/gallery/assets/studies/1.5x/starter_card.png
Binary files differ
diff --git a/gallery/assets/studies/1.5x/starter_card_dark.png b/gallery/assets/studies/1.5x/starter_card_dark.png
new file mode 100644
index 0000000..1d2e413
--- /dev/null
+++ b/gallery/assets/studies/1.5x/starter_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/2.0x/crane_card.png b/gallery/assets/studies/2.0x/crane_card.png
new file mode 100644
index 0000000..a1bd8a9
--- /dev/null
+++ b/gallery/assets/studies/2.0x/crane_card.png
Binary files differ
diff --git a/gallery/assets/studies/2.0x/crane_card_dark.png b/gallery/assets/studies/2.0x/crane_card_dark.png
new file mode 100644
index 0000000..1d8bbd9
--- /dev/null
+++ b/gallery/assets/studies/2.0x/crane_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/2.0x/rally_card.png b/gallery/assets/studies/2.0x/rally_card.png
new file mode 100644
index 0000000..2c005fa
--- /dev/null
+++ b/gallery/assets/studies/2.0x/rally_card.png
Binary files differ
diff --git a/gallery/assets/studies/2.0x/rally_card_dark.png b/gallery/assets/studies/2.0x/rally_card_dark.png
new file mode 100644
index 0000000..bd88df3
--- /dev/null
+++ b/gallery/assets/studies/2.0x/rally_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/2.0x/shrine_card.png b/gallery/assets/studies/2.0x/shrine_card.png
new file mode 100644
index 0000000..6e9f30d
--- /dev/null
+++ b/gallery/assets/studies/2.0x/shrine_card.png
Binary files differ
diff --git a/gallery/assets/studies/2.0x/shrine_card_dark.png b/gallery/assets/studies/2.0x/shrine_card_dark.png
new file mode 100644
index 0000000..44a98dc
--- /dev/null
+++ b/gallery/assets/studies/2.0x/shrine_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/2.0x/starter_card.png b/gallery/assets/studies/2.0x/starter_card.png
new file mode 100644
index 0000000..26dc249
--- /dev/null
+++ b/gallery/assets/studies/2.0x/starter_card.png
Binary files differ
diff --git a/gallery/assets/studies/2.0x/starter_card_dark.png b/gallery/assets/studies/2.0x/starter_card_dark.png
new file mode 100644
index 0000000..ed20b98
--- /dev/null
+++ b/gallery/assets/studies/2.0x/starter_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/3.0x/crane_card.png b/gallery/assets/studies/3.0x/crane_card.png
new file mode 100644
index 0000000..998536b
--- /dev/null
+++ b/gallery/assets/studies/3.0x/crane_card.png
Binary files differ
diff --git a/gallery/assets/studies/3.0x/crane_card_dark.png b/gallery/assets/studies/3.0x/crane_card_dark.png
new file mode 100644
index 0000000..a4bfed0
--- /dev/null
+++ b/gallery/assets/studies/3.0x/crane_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/3.0x/rally_card.png b/gallery/assets/studies/3.0x/rally_card.png
new file mode 100644
index 0000000..fb38f6a
--- /dev/null
+++ b/gallery/assets/studies/3.0x/rally_card.png
Binary files differ
diff --git a/gallery/assets/studies/3.0x/rally_card_dark.png b/gallery/assets/studies/3.0x/rally_card_dark.png
new file mode 100644
index 0000000..0dd8cd9
--- /dev/null
+++ b/gallery/assets/studies/3.0x/rally_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/3.0x/shrine_card.png b/gallery/assets/studies/3.0x/shrine_card.png
new file mode 100644
index 0000000..765bc74
--- /dev/null
+++ b/gallery/assets/studies/3.0x/shrine_card.png
Binary files differ
diff --git a/gallery/assets/studies/3.0x/shrine_card_dark.png b/gallery/assets/studies/3.0x/shrine_card_dark.png
new file mode 100644
index 0000000..92fec6d
--- /dev/null
+++ b/gallery/assets/studies/3.0x/shrine_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/3.0x/starter_card.png b/gallery/assets/studies/3.0x/starter_card.png
new file mode 100644
index 0000000..e1472c7
--- /dev/null
+++ b/gallery/assets/studies/3.0x/starter_card.png
Binary files differ
diff --git a/gallery/assets/studies/3.0x/starter_card_dark.png b/gallery/assets/studies/3.0x/starter_card_dark.png
new file mode 100644
index 0000000..d8df908
--- /dev/null
+++ b/gallery/assets/studies/3.0x/starter_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/4.0x/crane_card.png b/gallery/assets/studies/4.0x/crane_card.png
new file mode 100644
index 0000000..c007668
--- /dev/null
+++ b/gallery/assets/studies/4.0x/crane_card.png
Binary files differ
diff --git a/gallery/assets/studies/4.0x/crane_card_dark.png b/gallery/assets/studies/4.0x/crane_card_dark.png
new file mode 100644
index 0000000..b398153
--- /dev/null
+++ b/gallery/assets/studies/4.0x/crane_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/4.0x/rally_card.png b/gallery/assets/studies/4.0x/rally_card.png
new file mode 100644
index 0000000..e6c20d6
--- /dev/null
+++ b/gallery/assets/studies/4.0x/rally_card.png
Binary files differ
diff --git a/gallery/assets/studies/4.0x/rally_card_dark.png b/gallery/assets/studies/4.0x/rally_card_dark.png
new file mode 100644
index 0000000..646e240
--- /dev/null
+++ b/gallery/assets/studies/4.0x/rally_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/4.0x/shrine_card.png b/gallery/assets/studies/4.0x/shrine_card.png
new file mode 100644
index 0000000..b365424
--- /dev/null
+++ b/gallery/assets/studies/4.0x/shrine_card.png
Binary files differ
diff --git a/gallery/assets/studies/4.0x/shrine_card_dark.png b/gallery/assets/studies/4.0x/shrine_card_dark.png
new file mode 100644
index 0000000..ef03b03
--- /dev/null
+++ b/gallery/assets/studies/4.0x/shrine_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/4.0x/starter_card.png b/gallery/assets/studies/4.0x/starter_card.png
new file mode 100644
index 0000000..c7b7ddf
--- /dev/null
+++ b/gallery/assets/studies/4.0x/starter_card.png
Binary files differ
diff --git a/gallery/assets/studies/4.0x/starter_card_dark.png b/gallery/assets/studies/4.0x/starter_card_dark.png
new file mode 100644
index 0000000..1f4f944
--- /dev/null
+++ b/gallery/assets/studies/4.0x/starter_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/crane_card.png b/gallery/assets/studies/crane_card.png
new file mode 100644
index 0000000..1a1d517
--- /dev/null
+++ b/gallery/assets/studies/crane_card.png
Binary files differ
diff --git a/gallery/assets/studies/crane_card_dark.png b/gallery/assets/studies/crane_card_dark.png
new file mode 100644
index 0000000..f710b74
--- /dev/null
+++ b/gallery/assets/studies/crane_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/rally_card.png b/gallery/assets/studies/rally_card.png
new file mode 100644
index 0000000..40765a2
--- /dev/null
+++ b/gallery/assets/studies/rally_card.png
Binary files differ
diff --git a/gallery/assets/studies/rally_card_dark.png b/gallery/assets/studies/rally_card_dark.png
new file mode 100644
index 0000000..8a2e50e
--- /dev/null
+++ b/gallery/assets/studies/rally_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/shrine_card.png b/gallery/assets/studies/shrine_card.png
new file mode 100644
index 0000000..6f87eb9
--- /dev/null
+++ b/gallery/assets/studies/shrine_card.png
Binary files differ
diff --git a/gallery/assets/studies/shrine_card_dark.png b/gallery/assets/studies/shrine_card_dark.png
new file mode 100644
index 0000000..f9bd3ea
--- /dev/null
+++ b/gallery/assets/studies/shrine_card_dark.png
Binary files differ
diff --git a/gallery/assets/studies/starter_card.png b/gallery/assets/studies/starter_card.png
new file mode 100644
index 0000000..200998d
--- /dev/null
+++ b/gallery/assets/studies/starter_card.png
Binary files differ
diff --git a/gallery/assets/studies/starter_card_dark.png b/gallery/assets/studies/starter_card_dark.png
new file mode 100644
index 0000000..74707b0
--- /dev/null
+++ b/gallery/assets/studies/starter_card_dark.png
Binary files differ
diff --git a/gallery/fonts/GalleryIcons.ttf b/gallery/fonts/GalleryIcons.ttf
new file mode 100644
index 0000000..53c5d2d
--- /dev/null
+++ b/gallery/fonts/GalleryIcons.ttf
Binary files differ
diff --git a/gallery/fonts/Montserrat-Bold.ttf b/gallery/fonts/Montserrat-Bold.ttf
new file mode 100755
index 0000000..221819b
--- /dev/null
+++ b/gallery/fonts/Montserrat-Bold.ttf
Binary files differ
diff --git a/gallery/fonts/Montserrat-Medium.ttf b/gallery/fonts/Montserrat-Medium.ttf
new file mode 100755
index 0000000..6e079f6
--- /dev/null
+++ b/gallery/fonts/Montserrat-Medium.ttf
Binary files differ
diff --git a/gallery/fonts/Montserrat-Regular.ttf b/gallery/fonts/Montserrat-Regular.ttf
new file mode 100755
index 0000000..8d443d5
--- /dev/null
+++ b/gallery/fonts/Montserrat-Regular.ttf
Binary files differ
diff --git a/gallery/fonts/Montserrat-SemiBold.ttf b/gallery/fonts/Montserrat-SemiBold.ttf
new file mode 100755
index 0000000..f8a43f2
--- /dev/null
+++ b/gallery/fonts/Montserrat-SemiBold.ttf
Binary files differ
diff --git a/gallery/fonts/Oswald-Medium.ttf b/gallery/fonts/Oswald-Medium.ttf
new file mode 100755
index 0000000..1070c14
--- /dev/null
+++ b/gallery/fonts/Oswald-Medium.ttf
Binary files differ
diff --git a/gallery/fonts/Oswald-SemiBold.ttf b/gallery/fonts/Oswald-SemiBold.ttf
new file mode 100755
index 0000000..8c69d46
--- /dev/null
+++ b/gallery/fonts/Oswald-SemiBold.ttf
Binary files differ
diff --git a/gallery/fonts/Raleway-Light.ttf b/gallery/fonts/Raleway-Light.ttf
new file mode 100755
index 0000000..b5ec486
--- /dev/null
+++ b/gallery/fonts/Raleway-Light.ttf
Binary files differ
diff --git a/gallery/fonts/Raleway-Medium.ttf b/gallery/fonts/Raleway-Medium.ttf
new file mode 100755
index 0000000..070ac76
--- /dev/null
+++ b/gallery/fonts/Raleway-Medium.ttf
Binary files differ
diff --git a/gallery/fonts/Raleway-Regular.ttf b/gallery/fonts/Raleway-Regular.ttf
new file mode 100755
index 0000000..746c242
--- /dev/null
+++ b/gallery/fonts/Raleway-Regular.ttf
Binary files differ
diff --git a/gallery/fonts/Raleway-SemiBold.ttf b/gallery/fonts/Raleway-SemiBold.ttf
new file mode 100755
index 0000000..34db420
--- /dev/null
+++ b/gallery/fonts/Raleway-SemiBold.ttf
Binary files differ
diff --git a/gallery/fonts/RobotoMono-Regular.ttf b/gallery/fonts/RobotoMono-Regular.ttf
new file mode 100755
index 0000000..5919b5d
--- /dev/null
+++ b/gallery/fonts/RobotoMono-Regular.ttf
Binary files differ
diff --git a/gallery/fonts/Rubik-Bold.ttf b/gallery/fonts/Rubik-Bold.ttf
new file mode 100755
index 0000000..4e77930
--- /dev/null
+++ b/gallery/fonts/Rubik-Bold.ttf
Binary files differ
diff --git a/gallery/fonts/Rubik-Medium.ttf b/gallery/fonts/Rubik-Medium.ttf
new file mode 100755
index 0000000..9e358b2
--- /dev/null
+++ b/gallery/fonts/Rubik-Medium.ttf
Binary files differ
diff --git a/gallery/fonts/Rubik-Regular.ttf b/gallery/fonts/Rubik-Regular.ttf
new file mode 100755
index 0000000..52b59ca
--- /dev/null
+++ b/gallery/fonts/Rubik-Regular.ttf
Binary files differ
diff --git a/gallery/ios/.gitignore b/gallery/ios/.gitignore
new file mode 100644
index 0000000..e96ef60
--- /dev/null
+++ b/gallery/ios/.gitignore
@@ -0,0 +1,32 @@
+*.mode1v3
+*.mode2v3
+*.moved-aside
+*.pbxuser
+*.perspectivev3
+**/*sync/
+.sconsign.dblite
+.tags*
+**/.vagrant/
+**/DerivedData/
+Icon?
+**/Pods/
+**/.symlinks/
+profile
+xcuserdata
+**/.generated/
+Flutter/App.framework
+Flutter/Flutter.framework
+Flutter/Flutter.podspec
+Flutter/Generated.xcconfig
+Flutter/app.flx
+Flutter/app.zip
+Flutter/flutter_assets/
+Flutter/flutter_export_environment.sh
+ServiceDefinitions.json
+Runner/GeneratedPluginRegistrant.*
+
+# Exceptions to above rules.
+!default.mode1v3
+!default.mode2v3
+!default.pbxuser
+!default.perspectivev3
diff --git a/gallery/ios/Flutter/AppFrameworkInfo.plist b/gallery/ios/Flutter/AppFrameworkInfo.plist
new file mode 100644
index 0000000..6b4c0f7
--- /dev/null
+++ b/gallery/ios/Flutter/AppFrameworkInfo.plist
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>$(DEVELOPMENT_LANGUAGE)</string>
+ <key>CFBundleExecutable</key>
+ <string>App</string>
+ <key>CFBundleIdentifier</key>
+ <string>io.flutter.flutter.app</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>App</string>
+ <key>CFBundlePackageType</key>
+ <string>FMWK</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>MinimumOSVersion</key>
+ <string>8.0</string>
+</dict>
+</plist>
diff --git a/gallery/ios/Flutter/Debug.xcconfig b/gallery/ios/Flutter/Debug.xcconfig
new file mode 100644
index 0000000..e8efba1
--- /dev/null
+++ b/gallery/ios/Flutter/Debug.xcconfig
@@ -0,0 +1,2 @@
+#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
+#include "Generated.xcconfig"
diff --git a/gallery/ios/Flutter/Release.xcconfig b/gallery/ios/Flutter/Release.xcconfig
new file mode 100644
index 0000000..399e934
--- /dev/null
+++ b/gallery/ios/Flutter/Release.xcconfig
@@ -0,0 +1,2 @@
+#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
+#include "Generated.xcconfig"
diff --git a/gallery/ios/Podfile b/gallery/ios/Podfile
new file mode 100644
index 0000000..b30a428
--- /dev/null
+++ b/gallery/ios/Podfile
@@ -0,0 +1,90 @@
+# Uncomment this line to define a global platform for your project
+# platform :ios, '9.0'
+
+# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
+ENV['COCOAPODS_DISABLE_STATS'] = 'true'
+
+project 'Runner', {
+ 'Debug' => :debug,
+ 'Profile' => :release,
+ 'Release' => :release,
+}
+
+def parse_KV_file(file, separator='=')
+ file_abs_path = File.expand_path(file)
+ if !File.exists? file_abs_path
+ return [];
+ end
+ generated_key_values = {}
+ skip_line_start_symbols = ["#", "/"]
+ File.foreach(file_abs_path) do |line|
+ next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
+ plugin = line.split(pattern=separator)
+ if plugin.length == 2
+ podname = plugin[0].strip()
+ path = plugin[1].strip()
+ podpath = File.expand_path("#{path}", file_abs_path)
+ generated_key_values[podname] = podpath
+ else
+ puts "Invalid plugin specification: #{line}"
+ end
+ end
+ generated_key_values
+end
+
+target 'Runner' do
+ use_frameworks!
+ use_modular_headers!
+
+ # Flutter Pod
+
+ copied_flutter_dir = File.join(__dir__, 'Flutter')
+ copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework')
+ copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec')
+ unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path)
+ # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.
+ # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
+ # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.
+
+ generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig')
+ unless File.exist?(generated_xcode_build_settings_path)
+ raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
+ end
+ generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path)
+ cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR'];
+
+ unless File.exist?(copied_framework_path)
+ FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir)
+ end
+ unless File.exist?(copied_podspec_path)
+ FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir)
+ end
+ end
+
+ # Keep pod path relative so it can be checked into Podfile.lock.
+ pod 'Flutter', :path => 'Flutter'
+
+ # Plugin Pods
+
+ # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
+ # referring to absolute paths on developers' machines.
+ system('rm -rf .symlinks')
+ system('mkdir -p .symlinks/plugins')
+ plugin_pods = parse_KV_file('../.flutter-plugins')
+ plugin_pods.each do |name, path|
+ symlink = File.join('.symlinks', 'plugins', name)
+ File.symlink(path, symlink)
+ pod name, :path => File.join(symlink, 'ios')
+ end
+end
+
+# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system.
+install! 'cocoapods', :disable_input_output_paths => true
+
+post_install do |installer|
+ installer.pods_project.targets.each do |target|
+ target.build_configurations.each do |config|
+ config.build_settings['ENABLE_BITCODE'] = 'NO'
+ end
+ end
+end
diff --git a/gallery/ios/Podfile.lock b/gallery/ios/Podfile.lock
new file mode 100644
index 0000000..99d0c8e
--- /dev/null
+++ b/gallery/ios/Podfile.lock
@@ -0,0 +1,40 @@
+PODS:
+ - Flutter (1.0.0)
+ - shared_preferences (0.0.1):
+ - Flutter
+ - url_launcher (0.0.1):
+ - Flutter
+ - url_launcher_fde (0.0.1):
+ - Flutter
+ - url_launcher_web (0.0.1):
+ - Flutter
+
+DEPENDENCIES:
+ - Flutter (from `Flutter`)
+ - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
+ - url_launcher (from `.symlinks/plugins/url_launcher/ios`)
+ - url_launcher_fde (from `.symlinks/plugins/url_launcher_fde/ios`)
+ - url_launcher_web (from `.symlinks/plugins/url_launcher_web/ios`)
+
+EXTERNAL SOURCES:
+ Flutter:
+ :path: Flutter
+ shared_preferences:
+ :path: ".symlinks/plugins/shared_preferences/ios"
+ url_launcher:
+ :path: ".symlinks/plugins/url_launcher/ios"
+ url_launcher_fde:
+ :path: ".symlinks/plugins/url_launcher_fde/ios"
+ url_launcher_web:
+ :path: ".symlinks/plugins/url_launcher_web/ios"
+
+SPEC CHECKSUMS:
+ Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
+ shared_preferences: 430726339841afefe5142b9c1f50cb6bd7793e01
+ url_launcher: a1c0cc845906122c4784c542523d8cacbded5626
+ url_launcher_fde: 57842a92168588f04dfa4a86edfe5756a6c13d5f
+ url_launcher_web: e5527357f037c87560776e36436bf2b0288b965c
+
+PODFILE CHECKSUM: 1b66dae606f75376c5f2135a8290850eeb09ae83
+
+COCOAPODS: 1.7.5
diff --git a/gallery/ios/Runner.xcodeproj/project.pbxproj b/gallery/ios/Runner.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..9d4f3f7
--- /dev/null
+++ b/gallery/ios/Runner.xcodeproj/project.pbxproj
@@ -0,0 +1,594 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
+ 1C16F239376F6C80B132A33C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82C68F4BB1F1929638511152 /* Pods_Runner.framework */; };
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
+ 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
+ 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
+ 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
+ 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
+ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
+ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */,
+ 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */,
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
+ 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
+ 2776FF3A047989BDE50E86C4 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
+ 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = "<group>"; };
+ 7099545BF450814D783405D1 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
+ 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
+ 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
+ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
+ 82C68F4BB1F1929638511152 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
+ 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
+ 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = "<group>"; };
+ 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
+ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+ 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
+ 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ CB5FD4B19ACF8C4DC8C8B160 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 97C146EB1CF9000F007C117D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */,
+ 3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
+ 1C16F239376F6C80B132A33C /* Pods_Runner.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 83B2F410E85B6D706A0FD46E /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 7099545BF450814D783405D1 /* Pods-Runner.debug.xcconfig */,
+ 2776FF3A047989BDE50E86C4 /* Pods-Runner.release.xcconfig */,
+ CB5FD4B19ACF8C4DC8C8B160 /* Pods-Runner.profile.xcconfig */,
+ );
+ path = Pods;
+ sourceTree = "<group>";
+ };
+ 9740EEB11CF90186004384FC /* Flutter */ = {
+ isa = PBXGroup;
+ children = (
+ 3B80C3931E831B6300D905FE /* App.framework */,
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
+ 9740EEBA1CF902C7004384FC /* Flutter.framework */,
+ 9740EEB21CF90195004384FC /* Debug.xcconfig */,
+ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
+ 9740EEB31CF90195004384FC /* Generated.xcconfig */,
+ );
+ name = Flutter;
+ sourceTree = "<group>";
+ };
+ 97C146E51CF9000F007C117D = {
+ isa = PBXGroup;
+ children = (
+ 9740EEB11CF90186004384FC /* Flutter */,
+ 97C146F01CF9000F007C117D /* Runner */,
+ 97C146EF1CF9000F007C117D /* Products */,
+ 83B2F410E85B6D706A0FD46E /* Pods */,
+ C397B63AC3DDF596E6C35A58 /* Frameworks */,
+ );
+ sourceTree = "<group>";
+ };
+ 97C146EF1CF9000F007C117D /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 97C146EE1CF9000F007C117D /* Runner.app */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 97C146F01CF9000F007C117D /* Runner */ = {
+ isa = PBXGroup;
+ children = (
+ 97C146FA1CF9000F007C117D /* Main.storyboard */,
+ 97C146FD1CF9000F007C117D /* Assets.xcassets */,
+ 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
+ 97C147021CF9000F007C117D /* Info.plist */,
+ 97C146F11CF9000F007C117D /* Supporting Files */,
+ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
+ 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
+ 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
+ 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
+ );
+ path = Runner;
+ sourceTree = "<group>";
+ };
+ 97C146F11CF9000F007C117D /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ );
+ name = "Supporting Files";
+ sourceTree = "<group>";
+ };
+ C397B63AC3DDF596E6C35A58 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 82C68F4BB1F1929638511152 /* Pods_Runner.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 97C146ED1CF9000F007C117D /* Runner */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
+ buildPhases = (
+ C9464825360F4145681B135C /* [CP] Check Pods Manifest.lock */,
+ 9740EEB61CF901F6004384FC /* Run Script */,
+ 97C146EA1CF9000F007C117D /* Sources */,
+ 97C146EB1CF9000F007C117D /* Frameworks */,
+ 97C146EC1CF9000F007C117D /* Resources */,
+ 9705A1C41CF9048500538489 /* Embed Frameworks */,
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
+ 320E612254713BB76BD8472F /* [CP] Embed Pods Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = Runner;
+ productName = Runner;
+ productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 97C146E61CF9000F007C117D /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1020;
+ ORGANIZATIONNAME = "The Chromium Authors";
+ TargetAttributes = {
+ 97C146ED1CF9000F007C117D = {
+ CreatedOnToolsVersion = 7.3.1;
+ DevelopmentTeam = EQHXZ8M8AV;
+ LastSwiftMigration = 0910;
+ ProvisioningStyle = Manual;
+ };
+ };
+ };
+ buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 97C146E51CF9000F007C117D;
+ productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 97C146ED1CF9000F007C117D /* Runner */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 97C146EC1CF9000F007C117D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
+ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
+ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 320E612254713BB76BD8472F /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Thin Binary";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin";
+ };
+ 9740EEB61CF901F6004384FC /* Run Script */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Run Script";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
+ };
+ C9464825360F4145681B135C /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 97C146EA1CF9000F007C117D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 97C146FB1CF9000F007C117D /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "<group>";
+ };
+ 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 97C147001CF9000F007C117D /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "<group>";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 249021D3217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Profile;
+ };
+ 249021D4217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_STYLE = Manual;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = EQHXZ8M8AV;
+ ENABLE_BITCODE = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.gallery;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "Google Development";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 4.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Profile;
+ };
+ 97C147031CF9000F007C117D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 97C147041CF9000F007C117D /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 97C147061CF9000F007C117D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_STYLE = Manual;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = EQHXZ8M8AV;
+ ENABLE_BITCODE = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.gallery;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "Google Development";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 4.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Debug;
+ };
+ 97C147071CF9000F007C117D /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_STYLE = Manual;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = EQHXZ8M8AV;
+ ENABLE_BITCODE = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.gallery;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "Google Development";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 4.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147031CF9000F007C117D /* Debug */,
+ 97C147041CF9000F007C117D /* Release */,
+ 249021D3217E4FDB00AE95B9 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147061CF9000F007C117D /* Debug */,
+ 97C147071CF9000F007C117D /* Release */,
+ 249021D4217E4FDB00AE95B9 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 97C146E61CF9000F007C117D /* Project object */;
+}
diff --git a/gallery/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/gallery/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..1d526a1
--- /dev/null
+++ b/gallery/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+ version = "1.0">
+ <FileRef
+ location = "group:Runner.xcodeproj">
+ </FileRef>
+</Workspace>
diff --git a/gallery/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/gallery/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
new file mode 100644
index 0000000..a28140c
--- /dev/null
+++ b/gallery/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+ LastUpgradeVersion = "1020"
+ version = "1.3">
+ <BuildAction
+ parallelizeBuildables = "YES"
+ buildImplicitDependencies = "YES">
+ <BuildActionEntries>
+ <BuildActionEntry
+ buildForTesting = "YES"
+ buildForRunning = "YES"
+ buildForProfiling = "YES"
+ buildForArchiving = "YES"
+ buildForAnalyzing = "YES">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "97C146ED1CF9000F007C117D"
+ BuildableName = "Runner.app"
+ BlueprintName = "Runner"
+ ReferencedContainer = "container:Runner.xcodeproj">
+ </BuildableReference>
+ </BuildActionEntry>
+ </BuildActionEntries>
+ </BuildAction>
+ <TestAction
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ shouldUseLaunchSchemeArgsEnv = "YES">
+ <Testables>
+ </Testables>
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "97C146ED1CF9000F007C117D"
+ BuildableName = "Runner.app"
+ BlueprintName = "Runner"
+ ReferencedContainer = "container:Runner.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </TestAction>
+ <LaunchAction
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ launchStyle = "0"
+ useCustomWorkingDirectory = "NO"
+ ignoresPersistentStateOnLaunch = "NO"
+ debugDocumentVersioning = "YES"
+ debugServiceExtension = "internal"
+ allowLocationSimulation = "YES">
+ <BuildableProductRunnable
+ runnableDebuggingMode = "0">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "97C146ED1CF9000F007C117D"
+ BuildableName = "Runner.app"
+ BlueprintName = "Runner"
+ ReferencedContainer = "container:Runner.xcodeproj">
+ </BuildableReference>
+ </BuildableProductRunnable>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </LaunchAction>
+ <ProfileAction
+ buildConfiguration = "Profile"
+ shouldUseLaunchSchemeArgsEnv = "YES"
+ savedToolIdentifier = ""
+ useCustomWorkingDirectory = "NO"
+ debugDocumentVersioning = "YES">
+ <BuildableProductRunnable
+ runnableDebuggingMode = "0">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "97C146ED1CF9000F007C117D"
+ BuildableName = "Runner.app"
+ BlueprintName = "Runner"
+ ReferencedContainer = "container:Runner.xcodeproj">
+ </BuildableReference>
+ </BuildableProductRunnable>
+ </ProfileAction>
+ <AnalyzeAction
+ buildConfiguration = "Debug">
+ </AnalyzeAction>
+ <ArchiveAction
+ buildConfiguration = "Release"
+ revealArchiveInOrganizer = "YES">
+ </ArchiveAction>
+</Scheme>
diff --git a/gallery/ios/Runner.xcworkspace/contents.xcworkspacedata b/gallery/ios/Runner.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..21a3cc1
--- /dev/null
+++ b/gallery/ios/Runner.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+ version = "1.0">
+ <FileRef
+ location = "group:Runner.xcodeproj">
+ </FileRef>
+ <FileRef
+ location = "group:Pods/Pods.xcodeproj">
+ </FileRef>
+</Workspace>
diff --git a/gallery/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/gallery/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/gallery/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IDEDidComputeMac32BitWarning</key>
+ <true/>
+</dict>
+</plist>
diff --git a/gallery/ios/Runner/AppDelegate.swift b/gallery/ios/Runner/AppDelegate.swift
new file mode 100644
index 0000000..70693e4
--- /dev/null
+++ b/gallery/ios/Runner/AppDelegate.swift
@@ -0,0 +1,13 @@
+import UIKit
+import Flutter
+
+@UIApplicationMain
+@objc class AppDelegate: FlutterAppDelegate {
+ override func application(
+ _ application: UIApplication,
+ didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
+ ) -> Bool {
+ GeneratedPluginRegistrant.register(with: self)
+ return super.application(application, didFinishLaunchingWithOptions: launchOptions)
+ }
+}
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..00a53b7
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,122 @@
+{
+ "images" : [
+ {
+ "size" : "20x20",
+ "idiom" : "iphone",
+ "filename" : "icon_20_2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "iphone",
+ "filename" : "icon_20_3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "icon_29.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "icon_29_2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "icon_29_3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "icon_40_2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "icon_40_3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "icon_60_2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "icon_60_3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "ipad",
+ "filename" : "icon_20.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "ipad",
+ "filename" : "icon_20_2x-1.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "icon_29-1.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "icon_29_2x-1.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "icon_40.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "icon_40_2x-1.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "icon_76.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "icon_76_2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "83.5x83.5",
+ "idiom" : "ipad",
+ "filename" : "icon_835_2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "1024x1024",
+ "idiom" : "ios-marketing",
+ "filename" : "app_icon.png",
+ "scale" : "1x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon.png
new file mode 100644
index 0000000..2426008
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20.png
new file mode 100644
index 0000000..fb1973f
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20_2x-1.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20_2x-1.png
new file mode 100644
index 0000000..66946f8
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20_2x-1.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20_2x.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20_2x.png
new file mode 100644
index 0000000..66946f8
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20_2x.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20_3x.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20_3x.png
new file mode 100644
index 0000000..c5d6fde
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20_3x.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29-1.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29-1.png
new file mode 100644
index 0000000..bb26a90
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29-1.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29.png
new file mode 100644
index 0000000..bb26a90
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29_2x-1.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29_2x-1.png
new file mode 100644
index 0000000..7af5e05
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29_2x-1.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29_2x.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29_2x.png
new file mode 100644
index 0000000..7af5e05
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29_2x.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29_3x.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29_3x.png
new file mode 100644
index 0000000..b9d0e34
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29_3x.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40.png
new file mode 100644
index 0000000..66946f8
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40_2x-1.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40_2x-1.png
new file mode 100644
index 0000000..c26f0a0
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40_2x-1.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40_2x.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40_2x.png
new file mode 100644
index 0000000..c26f0a0
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40_2x.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40_3x.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40_3x.png
new file mode 100644
index 0000000..9fbce28
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40_3x.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_60_2x.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_60_2x.png
new file mode 100644
index 0000000..9fbce28
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_60_2x.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_60_3x.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_60_3x.png
new file mode 100644
index 0000000..995c67d
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_60_3x.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_76.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_76.png
new file mode 100644
index 0000000..0814ac5
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_76.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_76_2x.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_76_2x.png
new file mode 100644
index 0000000..c97bcdf
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_76_2x.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_835_2x.png b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_835_2x.png
new file mode 100644
index 0000000..1b5647e
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_835_2x.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
new file mode 100644
index 0000000..0bedcf2
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
diff --git a/gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
new file mode 100644
index 0000000..9da19ea
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
new file mode 100644
index 0000000..9da19ea
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
new file mode 100644
index 0000000..9da19ea
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
Binary files differ
diff --git a/gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
new file mode 100644
index 0000000..89c2725
--- /dev/null
+++ b/gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
@@ -0,0 +1,5 @@
+# Launch Screen Assets
+
+You can customize the launch screen with your own desired assets by replacing the image files in this directory.
+
+You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
\ No newline at end of file
diff --git a/gallery/ios/Runner/Base.lproj/LaunchScreen.storyboard b/gallery/ios/Runner/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 0000000..e2b5573
--- /dev/null
+++ b/gallery/ios/Runner/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14868" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
+ <device id="retina6_1" orientation="portrait" appearance="light"/>
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14824"/>
+ <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+ </dependencies>
+ <scenes>
+ <!--View Controller-->
+ <scene sceneID="EHf-IW-A2E">
+ <objects>
+ <viewController id="01J-lp-oVM" sceneMemberID="viewController">
+ <layoutGuides>
+ <viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
+ <viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
+ </layoutGuides>
+ <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
+ <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
+ <rect key="frame" x="207" y="448" width="0.5" height="0.5"/>
+ </imageView>
+ </subviews>
+ <color key="backgroundColor" red="0.011764705882352941" green="0.011764705882352941" blue="0.011764705882352941" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+ <constraints>
+ <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
+ <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
+ </constraints>
+ </view>
+ </viewController>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
+ </objects>
+ <point key="canvasLocation" x="76.811594202898561" y="251.11607142857142"/>
+ </scene>
+ </scenes>
+ <resources>
+ <image name="LaunchImage" width="0.5" height="0.5"/>
+ </resources>
+</document>
diff --git a/gallery/ios/Runner/Base.lproj/Main.storyboard b/gallery/ios/Runner/Base.lproj/Main.storyboard
new file mode 100644
index 0000000..f3c2851
--- /dev/null
+++ b/gallery/ios/Runner/Base.lproj/Main.storyboard
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
+ </dependencies>
+ <scenes>
+ <!--Flutter View Controller-->
+ <scene sceneID="tne-QT-ifu">
+ <objects>
+ <viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
+ <layoutGuides>
+ <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
+ <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
+ </layoutGuides>
+ <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
+ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+ </view>
+ </viewController>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
+ </objects>
+ </scene>
+ </scenes>
+</document>
diff --git a/gallery/ios/Runner/Info.plist b/gallery/ios/Runner/Info.plist
new file mode 100644
index 0000000..da17cc5
--- /dev/null
+++ b/gallery/ios/Runner/Info.plist
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>$(DEVELOPMENT_LANGUAGE)</string>
+ <key>CFBundleExecutable</key>
+ <string>$(EXECUTABLE_NAME)</string>
+ <key>CFBundleIdentifier</key>
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>Flutter Gallery</string>
+ <key>CFBundleLocalizations</key>
+ <array>
+ <string>en</string>
+ <string>af</string>
+ <string>am</string>
+ <string>ar_EG</string>
+ <string>ar_JO</string>
+ <string>ar_MA</string>
+ <string>ar_SA</string>
+ <string>ar_XB</string>
+ <string>ar</string>
+ <string>as</string>
+ <string>az</string>
+ <string>be</string>
+ <string>bg</string>
+ <string>bn</string>
+ <string>bs</string>
+ <string>ca</string>
+ <string>cs</string>
+ <string>da</string>
+ <string>de_AT</string>
+ <string>de_CH</string>
+ <string>de</string>
+ <string>el</string>
+ <string>en_AU</string>
+ <string>en_CA</string>
+ <string>en_GB</string>
+ <string>en_IE</string>
+ <string>en_IN</string>
+ <string>en_NZ</string>
+ <string>en_SG</string>
+ <string>en_XA</string>
+ <string>en_XC</string>
+ <string>en_ZA</string>
+ <string>es_419</string>
+ <string>es_AR</string>
+ <string>es_BO</string>
+ <string>es_CL</string>
+ <string>es_CO</string>
+ <string>es_CR</string>
+ <string>es_DO</string>
+ <string>es_EC</string>
+ <string>es_GT</string>
+ <string>es_HN</string>
+ <string>es_MX</string>
+ <string>es_NI</string>
+ <string>es_PA</string>
+ <string>es_PE</string>
+ <string>es_PR</string>
+ <string>es_PY</string>
+ <string>es_SV</string>
+ <string>es_US</string>
+ <string>es_UY</string>
+ <string>es_VE</string>
+ <string>es</string>
+ <string>et</string>
+ <string>eu</string>
+ <string>fa</string>
+ <string>fi</string>
+ <string>fil</string>
+ <string>fr_CA</string>
+ <string>fr_CH</string>
+ <string>fr</string>
+ <string>gl</string>
+ <string>gsw</string>
+ <string>gu</string>
+ <string>he</string>
+ <string>hi</string>
+ <string>hr</string>
+ <string>hu</string>
+ <string>hy</string>
+ <string>id</string>
+ <string>in</string>
+ <string>is</string>
+ <string>it</string>
+ <string>iw</string>
+ <string>ja</string>
+ <string>ka</string>
+ <string>kk</string>
+ <string>km</string>
+ <string>kn</string>
+ <string>ko</string>
+ <string>ky</string>
+ <string>ln</string>
+ <string>lo</string>
+ <string>lt</string>
+ <string>lv</string>
+ <string>mk</string>
+ <string>ml</string>
+ <string>mn</string>
+ <string>mo</string>
+ <string>mr</string>
+ <string>ms</string>
+ <string>my</string>
+ <string>nb</string>
+ <string>ne</string>
+ <string>nl</string>
+ <string>no</string>
+ <string>or</string>
+ <string>pa</string>
+ <string>pl</string>
+ <string>pt_BR</string>
+ <string>pt_PT</string>
+ <string>pt</string>
+ <string>ro</string>
+ <string>ru</string>
+ <string>si</string>
+ <string>sk</string>
+ <string>sl</string>
+ <string>sq</string>
+ <string>sr_Latn</string>
+ <string>sr</string>
+ <string>sv</string>
+ <string>sw</string>
+ <string>ta</string>
+ <string>te</string>
+ <string>th</string>
+ <string>tl</string>
+ <string>tr</string>
+ <string>uk</string>
+ <string>ur</string>
+ <string>uz</string>
+ <string>vi</string>
+ <string>zh_CN</string>
+ <string>zh_HK</string>
+ <string>zh_TW</string>
+ <string>zh</string>
+ <string>zu</string>
+ </array>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>$(FLUTTER_BUILD_NAME)</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>$(FLUTTER_BUILD_NUMBER)</string>
+ <key>LSRequiresIPhoneOS</key>
+ <true/>
+ <key>UILaunchStoryboardName</key>
+ <string>LaunchScreen</string>
+ <key>UIMainStoryboardFile</key>
+ <string>Main</string>
+ <key>UISupportedInterfaceOrientations</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+ <key>UISupportedInterfaceOrientations~ipad</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationPortraitUpsideDown</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+ <key>UIViewControllerBasedStatusBarAppearance</key>
+ <false/>
+</dict>
+</plist>
diff --git a/gallery/ios/Runner/Runner-Bridging-Header.h b/gallery/ios/Runner/Runner-Bridging-Header.h
new file mode 100644
index 0000000..7335fdf
--- /dev/null
+++ b/gallery/ios/Runner/Runner-Bridging-Header.h
@@ -0,0 +1 @@
+#import "GeneratedPluginRegistrant.h"
\ No newline at end of file
diff --git a/gallery/lib/codeviewer/code_displayer.dart b/gallery/lib/codeviewer/code_displayer.dart
new file mode 100644
index 0000000..1e87874
--- /dev/null
+++ b/gallery/lib/codeviewer/code_displayer.dart
@@ -0,0 +1,7 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+
+typedef TextSpan CodeDisplayer(BuildContext context);
diff --git a/gallery/lib/codeviewer/code_segments.dart b/gallery/lib/codeviewer/code_segments.dart
new file mode 100644
index 0000000..193add6
--- /dev/null
+++ b/gallery/lib/codeviewer/code_segments.dart
@@ -0,0 +1,12362 @@
+// This file is automatically generated by codeviewer_cli.
+// Do not edit this file.
+
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+import 'package:gallery/codeviewer/code_style.dart';
+
+class CodeSegments {
+ static TextSpan cupertinoSegmentedControlDemo(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/cupertino.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.classStyle, text: 'CupertinoSegmentedControlDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatefulWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(
+ style: codeStyle.classStyle,
+ text: '_CupertinoSegmentedControlDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' createState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(
+ style: codeStyle.classStyle,
+ text: '_CupertinoSegmentedControlDemoState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.classStyle,
+ text: '_CupertinoSegmentedControlDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'State'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(
+ style: codeStyle.classStyle, text: 'CupertinoSegmentedControlDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.baseStyle, text: ' currentSegment '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '0'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' onValueChanged'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.baseStyle, text: ' newValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a currentSegment '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' newValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' localizations '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' segmentedControlMaxWidth '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '500.0'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' children '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.numberStyle, text: '0'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'localizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsIndigo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.numberStyle, text: '1'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'localizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsTeal'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.numberStyle, text: '2'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'localizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsCyan'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '};'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoPageScaffold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a navigationBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoNavigationBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a middle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a localizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: 'demoCupertinoSegmentedControlTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'DefaultTextStyle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'textTheme\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'textStyle\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'copyWith'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'fontSize'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '13'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'SafeArea'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ListView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'SizedBox'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'height'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '16'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'SizedBox'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a width'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' segmentedControlMaxWidth'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoSegmentedControl'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a onValueChanged'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' onValueChanged'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a groupValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' currentSegment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'SizedBox'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a width'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' segmentedControlMaxWidth'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Padding'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a padding'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'EdgeInsets'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'all'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.numberStyle, text: '16'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.classStyle,
+ text: 'CupertinoSlidingSegmentedControl'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>('),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a onValueChanged'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' onValueChanged'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a groupValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' currentSegment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Container'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a padding'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'EdgeInsets'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'all'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.numberStyle, text: '16'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a height'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '300'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a alignment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Alignment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: 'currentSegment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan cupertinoAlertDemo(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/cupertino.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/data/gallery_options.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'enum'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AlertDemoType'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a alert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a alertTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a alertButtons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a alertButtonsOnly'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a actionSheet'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoAlertDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatefulWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoAlertDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '({'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Key'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@required'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'type'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '})'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'super'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AlertDemoType'),
+ TextSpan(style: codeStyle.baseStyle, text: ' type'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_CupertinoAlertDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' createState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_CupertinoAlertDemoState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_CupertinoAlertDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'State'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoAlertDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' lastSelectedValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'switch'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'widget'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'type'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AlertDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'alert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoCupertinoAlertTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AlertDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'alertTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: 'demoCupertinoAlertWithTitleTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AlertDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'alertButtons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: 'demoCupertinoAlertButtonsTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AlertDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'alertButtonsOnly'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: 'demoCupertinoAlertButtonsOnlyTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AlertDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'actionSheet'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: 'demoCupertinoActionSheetTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _showDemoDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '({'),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '})'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a showCupertinoDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a builder'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ApplyTextOptions'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'then'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a lastSelectedValue '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _showDemoActionSheet'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '({'),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '})'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ApplyTextOptions'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a data'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a showCupertinoModalPopup'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a builder'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'then'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a lastSelectedValue '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _onAlertPress'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a _showDemoDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoAlertDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'dialogDiscardTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a actions'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoDialogAction'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertDiscard'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a isDestructiveAction'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Navigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' rootNavigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'pop'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertDiscard'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoDialogAction'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertCancel'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a isDefaultAction'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Navigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' rootNavigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'pop'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertCancel'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _onAlertWithTitlePress'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a _showDemoDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoAlertDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertLocationTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a content'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: 'cupertinoAlertLocationDescription'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a actions'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoDialogAction'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertDontAllow'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Navigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' rootNavigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'pop'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertDontAllow'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoDialogAction'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertAllow'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Navigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' rootNavigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'pop'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertAllow'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _onAlertWithButtonsPress'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a _showDemoDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoDessertDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: 'cupertinoAlertFavoriteDessert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a content'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: 'cupertinoAlertDessertDescription'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _onAlertButtonsOnlyPress'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a _showDemoDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoDessertDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _onActionSheetPress'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a _showDemoActionSheet'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoActionSheet'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: 'cupertinoAlertFavoriteDessert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a message'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: 'cupertinoAlertDessertDescription'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a actions'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoActionSheetAction'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertCheesecake'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Navigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' rootNavigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'pop'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertCheesecake'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoActionSheetAction'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertTiramisu'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Navigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' rootNavigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'pop'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertTiramisu'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoActionSheetAction'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertApplePie'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Navigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' rootNavigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'pop'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertApplePie'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a cancelButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoActionSheetAction'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertCancel'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a isDefaultAction'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Navigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' rootNavigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'pop'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertCancel'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoPageScaffold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a navigationBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoNavigationBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'middle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '_title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '))),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Builder'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a builder'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Column'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Expanded'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'filled'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoShowAlert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'switch'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'widget'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'type'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AlertDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'alert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a _onAlertPress'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'break'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AlertDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'alertTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a _onAlertWithTitlePress'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'break'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AlertDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'alertButtons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a _onAlertWithButtonsPress'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'break'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AlertDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'alertButtonsOnly'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a _onAlertButtonsOnlyPress'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'break'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AlertDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'actionSheet'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a _onActionSheetPress'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'break'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'lastSelectedValue '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Padding'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a padding'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'EdgeInsets'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'all'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.numberStyle, text: '16'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'dialogSelectedOption'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'lastSelectedValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'textStyle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a textAlign'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextAlign'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoDessertDialog'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoDessertDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '({'),
+ TextSpan(style: codeStyle.classStyle, text: 'Key'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'content'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '})'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'super'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' content'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoAlertDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a content'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' content'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a actions'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoDialogAction'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertCheesecake'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Navigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' rootNavigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'pop'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertCheesecake'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoDialogAction'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertTiramisu'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Navigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' rootNavigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'pop'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertTiramisu'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoDialogAction'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertApplePie'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Navigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' rootNavigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'pop'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertApplePie'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoDialogAction'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: 'cupertinoAlertChocolateBrownie'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Navigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' rootNavigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'pop'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: 'cupertinoAlertChocolateBrownie'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoDialogAction'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertCancel'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a isDestructiveAction'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Navigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' rootNavigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'pop'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoAlertCancel'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan cupertinoButtonDemo(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/cupertino.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoButtonDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoPageScaffold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a navigationBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoNavigationBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a middle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoCupertinoButtonsTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Column'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a mainAxisAlignment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'MainAxisAlignment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cupertinoButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'SizedBox'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'height'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '16'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'filled'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: 'cupertinoButtonWithBackground'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan selectionControlsDemoCheckbox(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_CheckboxDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatefulWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_CheckboxDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' createState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_CheckboxDemoState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_CheckboxDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'State'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: '_CheckboxDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'bool'),
+ TextSpan(style: codeStyle.baseStyle, text: ' checkboxValueA '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'bool'),
+ TextSpan(style: codeStyle.baseStyle, text: ' checkboxValueB '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'false'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'bool'),
+ TextSpan(style: codeStyle.baseStyle, text: ' checkboxValueC'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Row'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a mainAxisSize'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'MainAxisSize'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'min'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Checkbox'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' checkboxValueA'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onChanged'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a checkboxValueA '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Checkbox'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' checkboxValueB'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onChanged'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a checkboxValueB '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Checkbox'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' checkboxValueC'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a tristate'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onChanged'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a checkboxValueC '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan selectionControlsDemoRadio(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_RadioDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatefulWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_RadioDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' createState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_RadioDemoState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_RadioDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'State'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: '_RadioDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.baseStyle, text: ' radioValue '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '0'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' handleRadioValueChanged'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.baseStyle, text: ' value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a radioValue '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Row'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a mainAxisSize'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'MainAxisSize'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'min'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'for'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.baseStyle, text: ' index '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '0'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: ' index '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '3'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '++'),
+ TextSpan(style: codeStyle.baseStyle, text: 'index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Radio'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a groupValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' radioValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a onChanged'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' handleRadioValueChanged'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan selectionControlsDemoSwitches(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_SwitchDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatefulWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_SwitchDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' createState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_SwitchDemoState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_SwitchDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'State'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: '_SwitchDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'bool'),
+ TextSpan(style: codeStyle.baseStyle, text: ' switchValue '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'false'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Switch'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' switchValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onChanged'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a switchValue '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan listDemo(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'enum'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ListDemoType'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a oneLine'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a twoLine'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ListDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ListDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '({'),
+ TextSpan(style: codeStyle.classStyle, text: 'Key'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'type'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '})'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'super'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ListDemoType'),
+ TextSpan(style: codeStyle.baseStyle, text: ' type'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Scaffold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a appBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AppBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoListsTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a body'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Scrollbar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ListView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a padding'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'EdgeInsets'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'symmetric'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'vertical'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '8'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'for'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.baseStyle, text: ' index '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '1'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: ' index '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '21'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: ' index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '++)'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'ListTile'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a leading'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ExcludeSemantics'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CircleAvatar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027\u0024index\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoBottomSheetItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a subtitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' type '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ListDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: 'twoLine\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '?'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoListsSecondary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan chipDemoAction(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027../../l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_ActionChipDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ActionChip'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a avatar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'brightness_5'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'black54'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a label'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'chipTurnOnLights'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan chipDemoChoice(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027../../l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_ChoiceChipDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatefulWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_ChoiceChipDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' createState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_ChoiceChipDemoState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_ChoiceChipDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'State'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: '_ChoiceChipDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.baseStyle, text: ' indexSelected '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '-'),
+ TextSpan(style: codeStyle.numberStyle, text: '1'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Wrap'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'ChoiceChip'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a label'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'chipSmall'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a selected'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' indexSelected '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '0'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a onSelected'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a indexSelected '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' value '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '?'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '0'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '-'),
+ TextSpan(style: codeStyle.numberStyle, text: '1'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'SizedBox'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'width'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '8'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'ChoiceChip'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a label'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'chipMedium'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a selected'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' indexSelected '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '1'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a onSelected'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a indexSelected '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' value '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '?'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '1'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '-'),
+ TextSpan(style: codeStyle.numberStyle, text: '1'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'SizedBox'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'width'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '8'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'ChoiceChip'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a label'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'chipLarge'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a selected'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' indexSelected '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '2'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a onSelected'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a indexSelected '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' value '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '?'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '2'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '-'),
+ TextSpan(style: codeStyle.numberStyle, text: '1'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan chipDemoFilter(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027../../l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_FilterChipDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatefulWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_FilterChipDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' createState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_FilterChipDemoState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_FilterChipDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'State'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: '_FilterChipDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'bool'),
+ TextSpan(style: codeStyle.baseStyle, text: ' isSelectedElevator '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'false'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'bool'),
+ TextSpan(style: codeStyle.baseStyle, text: ' isSelectedWasher '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'false'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'bool'),
+ TextSpan(style: codeStyle.baseStyle, text: ' isSelectedFireplace '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'false'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' chips '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'FilterChip'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a label'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'chipElevator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a selected'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' isSelectedElevator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onSelected'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a isSelectedElevator '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!'),
+ TextSpan(style: codeStyle.baseStyle, text: 'isSelectedElevator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'FilterChip'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a label'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'chipWasher'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a selected'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' isSelectedWasher'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onSelected'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a isSelectedWasher '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!'),
+ TextSpan(style: codeStyle.baseStyle, text: 'isSelectedWasher'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'FilterChip'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a label'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'chipFireplace'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a selected'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' isSelectedFireplace'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onSelected'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a isSelectedFireplace '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!'),
+ TextSpan(style: codeStyle.baseStyle, text: 'isSelectedFireplace'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '];'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Wrap'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'for'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' chip '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'in'),
+ TextSpan(style: codeStyle.baseStyle, text: ' chips'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Padding'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a padding'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'EdgeInsets'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'all'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.numberStyle, text: '4'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' chip'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan chipDemoInput(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027../../l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_InputChipDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'InputChip'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onDeleted'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a avatar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'directions_bike'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a size'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '20'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'black54'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a deleteIconColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'black54'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a label'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'chipBiking'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan bottomNavigationDemo(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'enum'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'BottomNavigationDemoType'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a withLabels'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a withoutLabels'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'BottomNavigationDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatefulWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'BottomNavigationDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '({'),
+ TextSpan(style: codeStyle.classStyle, text: 'Key'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@required'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'type'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '})'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'super'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'BottomNavigationDemoType'),
+ TextSpan(style: codeStyle.baseStyle, text: ' type'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_BottomNavigationDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' createState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_BottomNavigationDemoState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_BottomNavigationDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'State'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'BottomNavigationDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'with'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TickerProviderStateMixin'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _currentIndex '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '0'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'List'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: '_NavigationIconView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _navigationViews'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'switch'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'widget'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'type'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'BottomNavigationDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'withLabels'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: 'demoBottomNavigationPersistentLabels'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'BottomNavigationDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'withoutLabels'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: 'demoBottomNavigationSelectedLabel'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' didChangeDependencies'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'super'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'didChangeDependencies'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '_navigationViews '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a _navigationViews '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: '_NavigationIconView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_NavigationIconView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'add_comment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'bottomNavigationCommentsTab'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a vsync'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_NavigationIconView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'calendar_today'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'bottomNavigationCalendarTab'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a vsync'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_NavigationIconView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'account_circle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'bottomNavigationAccountTab'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a vsync'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_NavigationIconView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'alarm_on'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'bottomNavigationAlarmTab'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a vsync'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_NavigationIconView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'camera_enhance'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'bottomNavigationCameraTab'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a vsync'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '];'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a\u000a _navigationViews'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '_currentIndex'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '].'),
+ TextSpan(style: codeStyle.baseStyle, text: 'controller'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'value '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '1'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' dispose'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'for'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: '_NavigationIconView'),
+ TextSpan(style: codeStyle.baseStyle, text: ' view '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'in'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _navigationViews'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a view'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'controller'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'dispose'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'super'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'dispose'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _buildTransitionsStack'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'List'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'FadeTransition'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' transitions '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'FadeTransition'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>[];'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'for'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: '_NavigationIconView'),
+ TextSpan(style: codeStyle.baseStyle, text: ' view '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'in'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _navigationViews'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a transitions'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'add'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'view'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'transition'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '));'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// We want to have the newly animating (fading in) views on top.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a transitions'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'sort'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(('),
+ TextSpan(style: codeStyle.baseStyle, text: 'a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' b'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' aAnimation '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'opacity'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' bAnimation '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' b'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'opacity'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' aValue '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' aAnimation'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' bValue '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' bAnimation'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' aValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'compareTo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'bValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Stack'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' transitions'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' colorScheme '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorScheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'var'),
+ TextSpan(style: codeStyle.baseStyle, text: ' bottomNavigationBarItems '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(
+ style: codeStyle.baseStyle, text: ' _navigationViews\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'map'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'BottomNavigationBarItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>(('),
+ TextSpan(style: codeStyle.baseStyle, text: 'navigationView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' navigationView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'item'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'toList'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'widget'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'type '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'BottomNavigationDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'withLabels'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a bottomNavigationBarItems '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a bottomNavigationBarItems'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'sublist'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.numberStyle, text: '0'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' _navigationViews'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'length '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '-'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '2'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a _currentIndex '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a _currentIndex'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'clamp'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.numberStyle, text: '0'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' bottomNavigationBarItems'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'length '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '-'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '1'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'toInt'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Scaffold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a appBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AppBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '_title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a body'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _buildTransitionsStack'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a bottomNavigationBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'BottomNavigationBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a showUnselectedLabels'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a widget'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'type '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'BottomNavigationDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'withLabels'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a items'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' bottomNavigationBarItems'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a currentIndex'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _currentIndex'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a type'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'BottomNavigationBarType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'fixed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a selectedFontSize'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'caption'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'fontSize'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a unselectedFontSize'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'caption'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'fontSize'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onTap'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a _navigationViews'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '_currentIndex'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '].'),
+ TextSpan(style: codeStyle.baseStyle, text: 'controller'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'reverse'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a _currentIndex '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a _navigationViews'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '_currentIndex'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '].'),
+ TextSpan(style: codeStyle.baseStyle, text: 'controller'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'forward'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a selectedItemColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' colorScheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'onPrimary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a unselectedItemColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' colorScheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'onPrimary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'withOpacity'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.numberStyle, text: '0.38'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a backgroundColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' colorScheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_NavigationIconView'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_NavigationIconView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '({'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'TickerProvider'),
+ TextSpan(style: codeStyle.baseStyle, text: ' vsync'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '})'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' item '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'BottomNavigationBarItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a controller '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AnimationController'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a duration'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.constantStyle, text: 'kThemeAnimationDuration'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a vsync'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' vsync'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a _animation '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' controller'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'drive'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'CurveTween'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a curve'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Interval'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.numberStyle, text: '0.5'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '1.0'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' curve'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Curves'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'fastOutSlowIn'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '));'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'BottomNavigationBarItem'),
+ TextSpan(style: codeStyle.baseStyle, text: ' item'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AnimationController'),
+ TextSpan(style: codeStyle.baseStyle, text: ' controller'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Animation'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'double'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _animation'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'FadeTransition'),
+ TextSpan(style: codeStyle.baseStyle, text: ' transition'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'FadeTransition'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a opacity'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _animation'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Stack'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'ExcludeSemantics'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Padding'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a padding'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'EdgeInsets'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'all'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.numberStyle, text: '16'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ClipRRect'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a borderRadius'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'BorderRadius'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'circular'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.numberStyle, text: '8'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Image'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'asset'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027assets/demos/bottom_navigation_background.png\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'IconTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a data'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'IconThemeData'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'white'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a size'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '80'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Semantics'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a label'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: 'bottomNavigationContentPlaceholder'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan textFieldDemo(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/services.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/gestures.dart\u0027'),
+ TextSpan(style: codeStyle.baseStyle, text: ' show '),
+ TextSpan(style: codeStyle.classStyle, text: 'DragStartBehavior'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextFieldDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Scaffold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a appBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AppBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoTextFieldTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a body'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextFormFieldDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextFormFieldDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatefulWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextFormFieldDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '({'),
+ TextSpan(style: codeStyle.classStyle, text: 'Key'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '})'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'super'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextFormFieldDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' createState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextFormFieldDemoState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'PersonData'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' name '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' phoneNumber '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' email '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' password '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'PasswordField'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatefulWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'PasswordField'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '({'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'fieldKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'hintText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'labelText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'helperText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'onSaved'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'validator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'onFieldSubmitted'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Key'),
+ TextSpan(style: codeStyle.baseStyle, text: ' fieldKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' hintText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' labelText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' helperText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'FormFieldSetter'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' onSaved'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'FormFieldValidator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' validator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ValueChanged'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' onFieldSubmitted'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_PasswordFieldState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' createState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_PasswordFieldState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_PasswordFieldState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'State'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'PasswordField'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'bool'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _obscureText '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextFormField'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' widget'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'fieldKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a obscureText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _obscureText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a cursorColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cursorColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a maxLength'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '8'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onSaved'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' widget'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'onSaved'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a validator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' widget'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'validator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a onFieldSubmitted'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' widget'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'onFieldSubmitted'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a decoration'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'InputDecoration'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a filled'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a hintText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' widget'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'hintText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a labelText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' widget'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'labelText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a helperText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' widget'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'helperText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a suffixIcon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GestureDetector'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a dragStartBehavior'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'DragStartBehavior'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'down'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onTap'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a _obscureText '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!'),
+ TextSpan(style: codeStyle.baseStyle, text: '_obscureText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a _obscureText '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '?'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'visibility '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'visibility_off'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a semanticLabel'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: ' _obscureText\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '?'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: 'demoTextFieldShowPasswordLabel\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: 'demoTextFieldHidePasswordLabel'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextFormFieldDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'State'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'TextFormFieldDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GlobalKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'ScaffoldState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _scaffoldKey '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GlobalKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'ScaffoldState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'PersonData'),
+ TextSpan(style: codeStyle.baseStyle, text: ' person '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'PersonData'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' showInSnackBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a _scaffoldKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'currentState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'showSnackBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'SnackBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a content'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '));'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'bool'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _autoValidate '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'false'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GlobalKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'FormState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _formKey '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GlobalKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'FormState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GlobalKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'FormFieldState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _passwordFieldKey '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GlobalKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'FormFieldState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>>();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.classStyle, text: '_UsNumberTextInputFormatter'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _phoneNumberFormatter '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(
+ style: codeStyle.classStyle, text: '_UsNumberTextInputFormatter'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _handleSubmitted'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' form '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' _formKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'currentState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(!'),
+ TextSpan(style: codeStyle.baseStyle, text: 'form'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'validate'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '())'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a _autoValidate '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Start validating on every change.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a showInSnackBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoTextFieldFormErrors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'else'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a form'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'save'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a showInSnackBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: 'demoTextFieldNameHasPhoneNumber'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'person'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' person'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'phoneNumber'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '));'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _validateName'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'isEmpty'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoTextFieldNameRequired'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' nameExp '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'RegExp'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.stringStyle, text: 'r\u0027^[A-Za-z ]+\u0024\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(!'),
+ TextSpan(style: codeStyle.baseStyle, text: 'nameExp'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'hasMatch'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '))'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: 'demoTextFieldOnlyAlphabeticalChars'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _validatePhoneNumber'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' phoneExp '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'RegExp'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text:
+ 'r\u0027^\u005c(\u005cd\u005cd\u005cd\u005c) \u005cd\u005cd\u005cd\u005c-\u005cd\u005cd\u005cd\u005cd\u0024\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(!'),
+ TextSpan(style: codeStyle.baseStyle, text: 'phoneExp'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'hasMatch'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '))'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: 'demoTextFieldEnterUSPhoneNumber'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _validatePassword'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' passwordField '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' _passwordFieldKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'currentState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'passwordField'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'value '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '||'),
+ TextSpan(style: codeStyle.baseStyle, text: ' passwordField'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'isEmpty'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoTextFieldEnterPassword'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'passwordField'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'value '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!='),
+ TextSpan(style: codeStyle.baseStyle, text: ' value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: 'demoTextFieldPasswordsDoNotMatch'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' cursorColor '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cursorColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' sizedBoxSpace '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'SizedBox'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'height'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '24'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Scaffold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _scaffoldKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a body'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Form'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _formKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a autovalidate'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _autoValidate'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Scrollbar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'SingleChildScrollView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a dragStartBehavior'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'DragStartBehavior'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'down'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a padding'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'EdgeInsets'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'symmetric'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'horizontal'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '16'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Column'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a crossAxisAlignment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CrossAxisAlignment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'stretch'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a sizedBoxSpace'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextFormField'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a textCapitalization'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextCapitalization'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'words'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a cursorColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' cursorColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a decoration'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'InputDecoration'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a filled'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'person'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a hintText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: 'demoTextFieldWhatDoPeopleCallYou'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a labelText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoTextFieldNameField'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a onSaved'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a person'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'name '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a validator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _validateName'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a sizedBoxSpace'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextFormField'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a cursorColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' cursorColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a decoration'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'InputDecoration'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a filled'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'phone'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a hintText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: 'demoTextFieldWhereCanWeReachYou'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a labelText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoTextFieldPhoneNumber'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a prefixText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027+1\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a keyboardType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextInputType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'phone'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a onSaved'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a person'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'phoneNumber '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a validator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _validatePhoneNumber'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// TextInputFormatters are applied in sequence.'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a inputFormatters'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'TextInputFormatter'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(
+ style: codeStyle.classStyle, text: 'WhitelistingTextInputFormatter'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'digitsOnly'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// Fit the validating format.'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a _phoneNumberFormatter'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a sizedBoxSpace'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextFormField'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a cursorColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' cursorColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a decoration'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'InputDecoration'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a filled'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'email'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a hintText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: 'demoTextFieldYourEmailAddress'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a labelText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoTextFieldEmail'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a keyboardType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextInputType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'emailAddress'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a onSaved'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a person'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'email '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a sizedBoxSpace'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextFormField'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a cursorColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' cursorColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a decoration'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'InputDecoration'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a border'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'OutlineInputBorder'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a hintText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: 'demoTextFieldTellUsAboutYourself'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a helperText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoTextFieldKeepItShort'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a labelText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoTextFieldLifeStory'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a maxLines'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '3'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a sizedBoxSpace'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextFormField'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a cursorColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' cursorColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a keyboardType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextInputType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'number'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a decoration'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'InputDecoration'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a border'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'OutlineInputBorder'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a labelText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoTextFieldSalary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a suffixText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoTextFieldUSD'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a suffixStyle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextStyle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'green'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a maxLines'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '1'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a sizedBoxSpace'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'PasswordField'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a fieldKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _passwordFieldKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a helperText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoTextFieldNoMoreThan'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a labelText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoTextFieldPassword'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a onFieldSubmitted'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a person'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'password '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a sizedBoxSpace'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextFormField'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a cursorColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' cursorColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a decoration'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'InputDecoration'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a filled'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a labelText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoTextFieldRetypePassword'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a maxLength'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '8'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a obscureText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a validator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _validatePassword'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a sizedBoxSpace'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'RaisedButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoTextFieldSubmit'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _handleSubmitted'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a sizedBoxSpace'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoTextFieldRequiredField'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'caption'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a sizedBoxSpace'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '/// Format incoming numeric text to fit the format of (###) ###-#### ##'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.classStyle, text: '_UsNumberTextInputFormatter'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextInputFormatter'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextEditingValue'),
+ TextSpan(style: codeStyle.baseStyle, text: ' formatEditUpdate'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextEditingValue'),
+ TextSpan(style: codeStyle.baseStyle, text: ' oldValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextEditingValue'),
+ TextSpan(style: codeStyle.baseStyle, text: ' newValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' newTextLength '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' newValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'length'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' newText '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StringBuffer'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.baseStyle, text: ' selectionIndex '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' newValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'selection'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'end'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.baseStyle, text: ' usedSubstringIndex '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '0'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'newTextLength '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '1'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a newText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'write'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027(\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'newValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'selection'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'end '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '1'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' selectionIndex'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '++;'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'newTextLength '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '4'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a newText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'write'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'newValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'substring'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.numberStyle, text: '0'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' usedSubstringIndex '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '3'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '+'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027) \u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'newValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'selection'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'end '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '3'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' selectionIndex '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '+='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '2'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'newTextLength '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '7'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a newText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'write'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'newValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'substring'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.numberStyle, text: '3'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' usedSubstringIndex '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '6'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '+'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027-\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'newValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'selection'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'end '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '6'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' selectionIndex'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '++;'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'newTextLength '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '11'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a newText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'write'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'newValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'substring'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.numberStyle, text: '6'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' usedSubstringIndex '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '10'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '+'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027 \u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'newValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'selection'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'end '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '10'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' selectionIndex'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '++;'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.commentStyle, text: '// Dump the rest.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'newTextLength '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>='),
+ TextSpan(style: codeStyle.baseStyle, text: ' usedSubstringIndex'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a newText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'write'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'newValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'substring'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'usedSubstringIndex'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '));'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextEditingValue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' newText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'toString'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a selection'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextSelection'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'collapsed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'offset'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' selectionIndex'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan dialogDemo(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/data/gallery_options.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'enum'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'DialogDemoType'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a alert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a alertTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a simple'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a fullscreen'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'DialogDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'DialogDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '({'),
+ TextSpan(style: codeStyle.classStyle, text: 'Key'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@required'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'type'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '})'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'super'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GlobalKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'ScaffoldState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _scaffoldKey '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GlobalKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'ScaffoldState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'DialogDemoType'),
+ TextSpan(style: codeStyle.baseStyle, text: ' type'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'switch'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'type'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'DialogDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'alert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoAlertDialogTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'DialogDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'alertTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoAlertTitleDialogTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'DialogDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'simple'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoSimpleDialogTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'DialogDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'fullscreen'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoFullscreenDialogTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Future'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _showDemoDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'T'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>({'),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '})'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'async'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ApplyTextOptions'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a data'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'T'),
+ TextSpan(style: codeStyle.baseStyle, text: ' value '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'await'),
+ TextSpan(style: codeStyle.baseStyle, text: ' showDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'T'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a builder'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// The value passed to Navigator.pop() or null.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '&&'),
+ TextSpan(style: codeStyle.baseStyle, text: ' value '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'is'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a _scaffoldKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'currentState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'showSnackBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'SnackBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a content'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'dialogSelectedOption'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'value'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '));'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _showAlertDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ThemeData'),
+ TextSpan(style: codeStyle.baseStyle, text: ' theme '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextStyle'),
+ TextSpan(style: codeStyle.baseStyle, text: ' dialogTextStyle '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'subhead'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'copyWith'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'caption'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a _showDemoDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AlertDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a content'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'dialogDiscardTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' dialogTextStyle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a actions'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_DialogButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'dialogCancel'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_DialogButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'dialogDiscard'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _showAlertDialogWithTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ThemeData'),
+ TextSpan(style: codeStyle.baseStyle, text: ' theme '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextStyle'),
+ TextSpan(style: codeStyle.baseStyle, text: ' dialogTextStyle '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'subhead'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'copyWith'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'caption'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a _showDemoDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AlertDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'dialogLocationTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a content'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'dialogLocationDescription'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' dialogTextStyle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a actions'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_DialogButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'dialogDisagree'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_DialogButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'dialogAgree'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _showSimpleDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ThemeData'),
+ TextSpan(style: codeStyle.baseStyle, text: ' theme '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a _showDemoDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'SimpleDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'dialogSetBackup'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_DialogDemoItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'account_circle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorScheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle, text: '\u0027username@gmail.com\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_DialogDemoItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'account_circle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorScheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'secondary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle, text: '\u0027user02@gmail.com\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_DialogDemoItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'add_circle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'dialogAddAccount'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'disabledColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Scaffold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _scaffoldKey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a appBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AppBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '_title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a body'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'RaisedButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'dialogShow'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'switch'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'type'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'DialogDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'alert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a _showAlertDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'break'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'DialogDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'alertTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a _showAlertDialogWithTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'break'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'DialogDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'simple'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a _showSimpleDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'break'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'case'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'DialogDemoType'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'fullscreen'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Navigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'push'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'MaterialPageRoute'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a builder'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_FullScreenDialogDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a fullscreenDialog'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'break'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_DialogButton'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_DialogButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '({'),
+ TextSpan(style: codeStyle.classStyle, text: 'Key'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '})'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'super'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'FlatButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Navigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' rootNavigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'pop'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_DialogDemoItem'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_DialogDemoItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '({'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Key'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '})'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'super'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'IconData'),
+ TextSpan(style: codeStyle.baseStyle, text: ' icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Color'),
+ TextSpan(style: codeStyle.baseStyle, text: ' color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'SimpleDialogOption'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Navigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' rootNavigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'pop'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Row'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a mainAxisAlignment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'MainAxisAlignment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'start'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a crossAxisAlignment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CrossAxisAlignment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' size'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '36'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Flexible'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Padding'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a padding'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'EdgeInsetsDirectional'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'only'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'start'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '16'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_FullScreenDialogDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ThemeData'),
+ TextSpan(style: codeStyle.baseStyle, text: ' theme '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Remove the MediaQuery padding because the demo is rendered inside of a'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// different page that already accounts for this padding.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'MediaQuery'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'removePadding'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a removeTop'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a removeBottom'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ApplyTextOptions'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Scaffold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a appBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AppBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'dialogFullscreenTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a actions'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'FlatButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'dialogFullscreenSave'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'body1'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'copyWith'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorScheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'onPrimary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Navigator'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'pop'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a body'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'dialogFullscreenDescription'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan bottomSheetDemoModal(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_BottomSheetContent'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Container'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a height'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '300'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Column'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Container'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a height'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '70'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoBottomSheetHeader'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a textAlign'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextAlign'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Divider'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Expanded'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ListView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'builder'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a itemCount'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '21'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a itemBuilder'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ListTile'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoBottomSheetItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_ModalBottomSheetDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _showModalBottomSheet'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a showModalBottomSheet'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a builder'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_BottomSheetContent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'RaisedButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a _showModalBottomSheet'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoBottomSheetButtonText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan bottomSheetDemoPersistent(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_BottomSheetContent'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Container'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a height'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '300'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Column'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Container'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a height'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '70'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoBottomSheetHeader'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a textAlign'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextAlign'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Divider'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Expanded'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ListView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'builder'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a itemCount'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '21'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a itemBuilder'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ListTile'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoBottomSheetItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_PersistentBottomSheetDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatefulWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(
+ style: codeStyle.classStyle, text: '_PersistentBottomSheetDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' createState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(
+ style: codeStyle.classStyle, text: '_PersistentBottomSheetDemoState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.classStyle, text: '_PersistentBottomSheetDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'State'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: '_PersistentBottomSheetDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'VoidCallback'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _showBottomSheetCallback'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' initState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'super'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'initState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a _showBottomSheetCallback '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' _showPersistentBottomSheet'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _showPersistentBottomSheet'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Disable the show bottom sheet button.'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a _showBottomSheetCallback '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Scaffold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'showBottomSheet'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_BottomSheetContent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a elevation'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '25'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'closed\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'whenComplete'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'mounted'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Re-enable the bottom sheet button.'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a _showBottomSheetCallback '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' _showPersistentBottomSheet'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'RaisedButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _showBottomSheetCallback'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoBottomSheetButtonText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan tabsDemo(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TabsDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'List'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' tabs '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsRed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsOrange'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsGreen'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsBlue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsIndigo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsPurple'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '];'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'DefaultTabController'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a length'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' tabs'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'length'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Scaffold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a appBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AppBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoTabsTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a bottom'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TabBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a isScrollable'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a tabs'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'for'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' tab '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'in'),
+ TextSpan(style: codeStyle.baseStyle, text: ' tabs'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Tab'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' tab'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a body'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TabBarView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'for'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' tab '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'in'),
+ TextSpan(style: codeStyle.baseStyle, text: ' tabs'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'tab'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan buttonDemoFlat(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_FlatButtonDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Column'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a mainAxisSize'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'MainAxisSize'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'min'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'FlatButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'buttonText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'SizedBox'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'height'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '12'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'FlatButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'add'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' size'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '18'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a label'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'buttonText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan buttonDemoRaised(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_RaisedButtonDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Column'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a mainAxisSize'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'MainAxisSize'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'min'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'RaisedButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'buttonText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'SizedBox'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'height'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '12'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'RaisedButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'add'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' size'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '18'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a label'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'buttonText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan buttonDemoOutline(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_OutlineButtonDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Column'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a mainAxisSize'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'MainAxisSize'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'min'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'OutlineButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// TODO: Should update to OutlineButton follow material spec.'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a highlightedBorderColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorScheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'onSurface'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'withOpacity'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.numberStyle, text: '0.12'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'buttonText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'SizedBox'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'height'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '12'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'OutlineButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// TODO: Should update to OutlineButton follow material spec.'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a highlightedBorderColor'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorScheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'onSurface'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'withOpacity'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.numberStyle, text: '0.12'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'add'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' size'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '18'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a label'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'buttonText'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan buttonDemoToggle(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_ToggleButtonsDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatefulWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_ToggleButtonsDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' createState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_ToggleButtonsDemoState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_ToggleButtonsDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'State'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: '_ToggleButtonsDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' isSelected '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'bool'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>['),
+ TextSpan(style: codeStyle.keywordStyle, text: 'false'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'false'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'false'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '];'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ToggleButtons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'ac_unit'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'call'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cake'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a isSelected'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: 'index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ']'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!'),
+ TextSpan(style: codeStyle.baseStyle, text: 'isSelected'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: 'index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '];'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a isSelected'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' isSelected'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan buttonDemoFloating(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_FloatingActionButtonDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Column'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a mainAxisSize'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'MainAxisSize'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'min'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'FloatingActionButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'add'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a tooltip'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'buttonTextCreate'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'SizedBox'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'height'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '20'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'FloatingActionButton'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'extended'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Icon'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'Icons'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'add'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a label'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'buttonTextCreate'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a onPressed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan typographyDemo(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_TextStyleItem'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_TextStyleItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '({'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Key'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@required'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@required'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@required'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '})'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'assert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'name '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'assert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'style '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'assert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'text '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'super'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextStyle'),
+ TextSpan(style: codeStyle.baseStyle, text: ' style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Padding'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a padding'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'EdgeInsets'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'symmetric'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'horizontal'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '8'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' vertical'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '16'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Row'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a crossAxisAlignment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CrossAxisAlignment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'SizedBox'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a width'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '72'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'caption'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Expanded'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TypographyDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' styleItems '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_TextStyleItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Display 4\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'display4'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Light 96sp\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_TextStyleItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Display 3\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'display3'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Light 60sp\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_TextStyleItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Display 2\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'display2'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Regular 48sp\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_TextStyleItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Display 1\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'display1'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Regular 34sp\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_TextStyleItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Headline\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'headline'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Regular 24sp\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_TextStyleItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Title\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Medium 20sp\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_TextStyleItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Subhead\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'subhead'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Regular 16sp\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_TextStyleItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Subtitle\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'subtitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Medium 14sp\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_TextStyleItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Body 1\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'body1'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Regular 16sp\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_TextStyleItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Body 2\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'body2'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Regular 14sp\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_TextStyleItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Button\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'button'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027MEDIUM (ALL CAPS) 14sp\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_TextStyleItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Caption\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'caption'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Regular 12sp\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_TextStyleItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Overline\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'overline'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027REGULAR (ALL CAPS) 10sp\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '];'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Scaffold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a appBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AppBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoTypographyTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a body'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Scrollbar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ListView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' styleItems'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
+ static TextSpan colorsDemo(BuildContext context) {
+ final CodeStyle codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:gallery/l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'double'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.constantStyle, text: 'kColorItemHeight'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '48'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '({'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'threshold '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '900'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '})'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'assert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'name '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'assert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'primary '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'assert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'threshold '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'MaterialColor'),
+ TextSpan(style: codeStyle.baseStyle, text: ' primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'MaterialAccentColor'),
+ TextSpan(style: codeStyle.baseStyle, text: ' accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Titles for indices > threshold are white, otherwise black.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.baseStyle, text: ' threshold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.classStyle, text: 'List'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _allPalettes'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsRed'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'red'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'redAccent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a threshold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '300'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsPink'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'pink'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'pinkAccent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a threshold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '200'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsPurple'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'purple'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'purpleAccent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a threshold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '200'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsDeepPurple'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'deepPurple'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'deepPurpleAccent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a threshold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '200'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsIndigo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'indigo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'indigoAccent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a threshold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '200'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsBlue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'blue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'blueAccent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a threshold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '400'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsLightBlue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'lightBlue'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'lightBlueAccent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a threshold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '500'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsCyan'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cyan'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'cyanAccent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a threshold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '600'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsTeal'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'teal'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'tealAccent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a threshold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '400'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsGreen'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'green'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'greenAccent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a threshold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '500'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsLightGreen'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'lightGreen'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'lightGreenAccent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a threshold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '600'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsLime'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'lime'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'limeAccent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a threshold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '800'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsYellow'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'yellow'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'yellowAccent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsAmber'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'amber'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'amberAccent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsOrange'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'orange'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'orangeAccent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a threshold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '700'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsDeepOrange'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'deepOrange'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'deepOrangeAccent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a threshold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '400'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsBrown'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'brown'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a threshold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '200'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsGrey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'grey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a threshold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '500'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colorsBlueGrey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'blueGrey'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a threshold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '500'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '];'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_ColorItem'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_ColorItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '({'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Key'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@required'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@required'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'prefix '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '})'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'assert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'index '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'assert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'color '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'assert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'prefix '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'super'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.baseStyle, text: ' index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Color'),
+ TextSpan(style: codeStyle.baseStyle, text: ' color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' prefix'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'get'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _colorString '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text:
+ '\u0022#\u0024{color.value.toRadixString(16).padLeft(8, \u00270\u0027).toUpperCase()}\u0022'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Semantics'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a container'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Container'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a height'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.constantStyle, text: 'kColorItemHeight'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a padding'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'EdgeInsets'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'symmetric'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'horizontal'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '16'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Row'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a mainAxisAlignment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'MainAxisAlignment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'spaceBetween'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a crossAxisAlignment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CrossAxisAlignment'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'center'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027\u0024prefix\u0024index\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Flexible'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '_colorString'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'PaletteTabView'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'PaletteTabView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '({'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Key'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@required'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'this'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '})'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'assert'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'colors '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'super'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_Palette'),
+ TextSpan(style: codeStyle.baseStyle, text: ' colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'static'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' primaryKeys '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.numberStyle, text: '50'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.numberStyle, text: '100'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.numberStyle, text: '200'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.numberStyle, text: '300'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.numberStyle, text: '400'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.numberStyle, text: '500'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.numberStyle, text: '600'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.numberStyle, text: '700'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.numberStyle, text: '800'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.numberStyle, text: '900'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '];'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'static'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' accentKeys '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>['),
+ TextSpan(style: codeStyle.numberStyle, text: '100'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '200'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '400'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '700'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '];'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextTheme'),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Theme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextStyle'),
+ TextSpan(style: codeStyle.baseStyle, text: ' whiteTextStyle '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'body1'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'copyWith'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'white'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextStyle'),
+ TextSpan(style: codeStyle.baseStyle, text: ' blackTextStyle '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' textTheme'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'body1'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'copyWith'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'black'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Scrollbar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ListView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a itemExtent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.constantStyle, text: 'kColorItemHeight'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'for'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'in'),
+ TextSpan(style: codeStyle.baseStyle, text: ' primaryKeys'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'DefaultTextStyle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'threshold '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '?'),
+ TextSpan(style: codeStyle.baseStyle, text: ' whiteTextStyle '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' blackTextStyle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_ColorItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'primary'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: 'key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ']),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'accent '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '!='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'null'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'for'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'in'),
+ TextSpan(style: codeStyle.baseStyle, text: ' accentKeys'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'DefaultTextStyle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a style'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'threshold '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '?'),
+ TextSpan(style: codeStyle.baseStyle, text: ' whiteTextStyle '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' blackTextStyle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: '_ColorItem'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'accent'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: 'key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a prefix'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027A\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ColorsDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatelessWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' palettes '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' _allPalettes'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'DefaultTabController'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a length'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' palettes'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'length'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Scaffold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a appBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'AppBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ').'),
+ TextSpan(style: codeStyle.baseStyle, text: 'demoColorsTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a bottom'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TabBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a isScrollable'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a tabs'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'for'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' palette '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'in'),
+ TextSpan(style: codeStyle.baseStyle, text: ' palettes'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Tab'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'name'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a body'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TabBarView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'for'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' palette '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'in'),
+ TextSpan(style: codeStyle.baseStyle, text: ' palettes'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'PaletteTabView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'colors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' palette'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+}
diff --git a/gallery/lib/codeviewer/code_style.dart b/gallery/lib/codeviewer/code_style.dart
new file mode 100644
index 0000000..24facf0
--- /dev/null
+++ b/gallery/lib/codeviewer/code_style.dart
@@ -0,0 +1,43 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+
+class CodeStyle extends InheritedWidget {
+ const CodeStyle({
+ this.baseStyle,
+ this.numberStyle,
+ this.commentStyle,
+ this.keywordStyle,
+ this.stringStyle,
+ this.punctuationStyle,
+ this.classStyle,
+ this.constantStyle,
+ @required Widget child,
+ }) : super(child: child);
+
+ final TextStyle baseStyle;
+ final TextStyle numberStyle;
+ final TextStyle commentStyle;
+ final TextStyle keywordStyle;
+ final TextStyle stringStyle;
+ final TextStyle punctuationStyle;
+ final TextStyle classStyle;
+ final TextStyle constantStyle;
+
+ static CodeStyle of(BuildContext context) {
+ return context.dependOnInheritedWidgetOfExactType<CodeStyle>();
+ }
+
+ @override
+ bool updateShouldNotify(CodeStyle oldWidget) =>
+ oldWidget.baseStyle != baseStyle ||
+ oldWidget.numberStyle != numberStyle ||
+ oldWidget.commentStyle != commentStyle ||
+ oldWidget.keywordStyle != keywordStyle ||
+ oldWidget.stringStyle != stringStyle ||
+ oldWidget.punctuationStyle != punctuationStyle ||
+ oldWidget.classStyle != classStyle ||
+ oldWidget.constantStyle != constantStyle;
+}
diff --git a/gallery/lib/constants.dart b/gallery/lib/constants.dart
new file mode 100644
index 0000000..ea962bf
--- /dev/null
+++ b/gallery/lib/constants.dart
@@ -0,0 +1,23 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Only put constants shared between files here.
+
+// height of the 'Gallery' header
+const double galleryHeaderHeight = 64;
+
+// The font size delta for display1 font.
+const double desktopDisplay1FontDelta = 16;
+
+// The width of the settingsDesktop.
+const double desktopSettingsWidth = 520;
+
+// Sentinel value for the system text scale factor option.
+const double systemTextScaleFactorOption = -1;
+
+// The splash page animation duration.
+const splashPageAnimationDurationInMilliseconds = 300;
+
+// The desktop top padding for a page's first header (e.g. Gallery, Settings)
+const firstHeaderDesktopTopPadding = 5.0;
diff --git a/gallery/lib/data/demos.dart b/gallery/lib/data/demos.dart
new file mode 100644
index 0000000..3958283
--- /dev/null
+++ b/gallery/lib/data/demos.dart
@@ -0,0 +1,531 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+import 'package:gallery/codeviewer/code_displayer.dart';
+import 'package:gallery/codeviewer/code_segments.dart';
+import 'package:gallery/data/gallery_options.dart';
+import 'package:gallery/data/icons.dart';
+import 'package:gallery/demos/cupertino/cupertino_alert_demo.dart';
+import 'package:gallery/demos/cupertino/cupertino_button_demo.dart';
+import 'package:gallery/demos/cupertino/cupertino_segmented_control_demo.dart';
+import 'package:gallery/demos/material/bottom_navigation_demo.dart';
+import 'package:gallery/demos/material/bottom_sheet_demo.dart';
+import 'package:gallery/demos/material/button_demo.dart';
+import 'package:gallery/demos/material/chip_demo.dart';
+import 'package:gallery/demos/material/dialog_demo.dart';
+import 'package:gallery/demos/material/list_demo.dart';
+import 'package:gallery/demos/material/selection_controls_demo.dart';
+import 'package:gallery/demos/material/tabs_demo.dart';
+import 'package:gallery/demos/material/text_field_demo.dart';
+import 'package:gallery/demos/reference/colors_demo.dart';
+import 'package:gallery/demos/reference/typography_demo.dart';
+import 'package:gallery/l10n/gallery_localizations.dart';
+import 'package:gallery/pages/demo.dart';
+import 'package:gallery/themes/material_demo_theme_data.dart';
+
+class GalleryDemo {
+ GalleryDemo({
+ @required this.title,
+ @required this.icon,
+ @required this.subtitle,
+ @required this.configurations,
+ }) : assert(title != null),
+ assert(icon != null),
+ assert(configurations != null && configurations.isNotEmpty);
+
+ final String title;
+ final IconData icon;
+ final String subtitle;
+ final List<GalleryDemoConfiguration> configurations;
+}
+
+class GalleryDemoConfiguration {
+ GalleryDemoConfiguration({
+ this.title,
+ this.description,
+ this.documentationUrl,
+ this.buildRoute,
+ this.code,
+ });
+
+ final String title;
+ final String description;
+ final String documentationUrl;
+ final WidgetBuilder buildRoute;
+ final CodeDisplayer code;
+}
+
+List<GalleryDemo> materialDemos(BuildContext context) {
+ return [
+ GalleryDemo(
+ title: GalleryLocalizations.of(context).demoBottomNavigationTitle,
+ icon: GalleryIcons.bottomNavigation,
+ subtitle: GalleryLocalizations.of(context).demoBottomNavigationSubtitle,
+ configurations: [
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context)
+ .demoBottomNavigationPersistentLabels,
+ description:
+ GalleryLocalizations.of(context).demoBottomNavigationDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/BottomNavigationBar-class.html',
+ buildRoute: (_) =>
+ BottomNavigationDemo(type: BottomNavigationDemoType.withLabels),
+ code: CodeSegments.bottomNavigationDemo,
+ ),
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context)
+ .demoBottomNavigationSelectedLabel,
+ description:
+ GalleryLocalizations.of(context).demoBottomNavigationDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/BottomNavigationBar-class.html',
+ buildRoute: (_) => BottomNavigationDemo(
+ type: BottomNavigationDemoType.withoutLabels),
+ code: CodeSegments.bottomNavigationDemo,
+ ),
+ ],
+ ),
+ GalleryDemo(
+ title: GalleryLocalizations.of(context).demoBottomSheetTitle,
+ icon: GalleryIcons.bottomSheets,
+ subtitle: GalleryLocalizations.of(context).demoBottomSheetSubtitle,
+ configurations: [
+ GalleryDemoConfiguration(
+ title:
+ GalleryLocalizations.of(context).demoBottomSheetPersistentTitle,
+ description: GalleryLocalizations.of(context)
+ .demoBottomSheetPersistentDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/BottomSheet-class.html',
+ buildRoute: (_) =>
+ BottomSheetDemo(type: BottomSheetDemoType.persistent),
+ code: CodeSegments.bottomSheetDemoPersistent,
+ ),
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoBottomSheetModalTitle,
+ description:
+ GalleryLocalizations.of(context).demoBottomSheetModalDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/BottomSheet-class.html',
+ buildRoute: (_) => BottomSheetDemo(type: BottomSheetDemoType.modal),
+ code: CodeSegments.bottomSheetDemoModal,
+ ),
+ ],
+ ),
+ GalleryDemo(
+ title: GalleryLocalizations.of(context).demoButtonTitle,
+ icon: GalleryIcons.genericButtons,
+ subtitle: GalleryLocalizations.of(context).demoButtonSubtitle,
+ configurations: [
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoFlatButtonTitle,
+ description:
+ GalleryLocalizations.of(context).demoFlatButtonDescription,
+ documentationUrl:
+ 'https://docs.flutter.io/flutter/material/FlatButton-class.html',
+ buildRoute: (_) => ButtonDemo(type: ButtonDemoType.flat),
+ code: CodeSegments.buttonDemoFlat,
+ ),
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoRaisedButtonTitle,
+ description:
+ GalleryLocalizations.of(context).demoRaisedButtonDescription,
+ documentationUrl:
+ 'https://docs.flutter.io/flutter/material/RaisedButton-class.html',
+ buildRoute: (_) => ButtonDemo(type: ButtonDemoType.raised),
+ code: CodeSegments.buttonDemoRaised,
+ ),
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoOutlineButtonTitle,
+ description:
+ GalleryLocalizations.of(context).demoOutlineButtonDescription,
+ documentationUrl:
+ 'https://docs.flutter.io/flutter/material/OutlineButton-class.html',
+ buildRoute: (_) => ButtonDemo(type: ButtonDemoType.outline),
+ code: CodeSegments.buttonDemoOutline,
+ ),
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoToggleButtonTitle,
+ description:
+ GalleryLocalizations.of(context).demoToggleButtonDescription,
+ documentationUrl:
+ 'https://docs.flutter.io/flutter/material/ToggleButtons-class.html',
+ buildRoute: (_) => ButtonDemo(type: ButtonDemoType.toggle),
+ code: CodeSegments.buttonDemoToggle,
+ ),
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoFloatingButtonTitle,
+ description:
+ GalleryLocalizations.of(context).demoFloatingButtonDescription,
+ documentationUrl:
+ 'https://docs.flutter.io/flutter/material/FloatingActionButton-class.html',
+ buildRoute: (_) => ButtonDemo(type: ButtonDemoType.floating),
+ code: CodeSegments.buttonDemoFloating,
+ ),
+ ],
+ ),
+ GalleryDemo(
+ title: GalleryLocalizations.of(context).demoChipTitle,
+ icon: GalleryIcons.chips,
+ subtitle: GalleryLocalizations.of(context).demoChipSubtitle,
+ configurations: [
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoActionChipTitle,
+ description:
+ GalleryLocalizations.of(context).demoActionChipDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/ActionChip-class.html',
+ buildRoute: (_) => ChipDemo(type: ChipDemoType.action),
+ code: CodeSegments.chipDemoAction,
+ ),
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoChoiceChipTitle,
+ description:
+ GalleryLocalizations.of(context).demoChoiceChipDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/ChoiceChip-class.html',
+ buildRoute: (_) => ChipDemo(type: ChipDemoType.choice),
+ code: CodeSegments.chipDemoChoice,
+ ),
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoFilterChipTitle,
+ description:
+ GalleryLocalizations.of(context).demoFilterChipDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/FilterChip-class.html',
+ buildRoute: (_) => ChipDemo(type: ChipDemoType.filter),
+ code: CodeSegments.chipDemoFilter,
+ ),
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoInputChipTitle,
+ description:
+ GalleryLocalizations.of(context).demoInputChipDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/InputChip-class.html',
+ buildRoute: (_) => ChipDemo(type: ChipDemoType.input),
+ code: CodeSegments.chipDemoInput,
+ ),
+ ],
+ ),
+ GalleryDemo(
+ title: GalleryLocalizations.of(context).demoDialogTitle,
+ icon: GalleryIcons.dialogs,
+ subtitle: GalleryLocalizations.of(context).demoDialogSubtitle,
+ configurations: [
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoAlertDialogTitle,
+ description:
+ GalleryLocalizations.of(context).demoAlertDialogDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/AlertDialog-class.html',
+ buildRoute: (_) => DialogDemo(type: DialogDemoType.alert),
+ code: CodeSegments.dialogDemo,
+ ),
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoAlertTitleDialogTitle,
+ description:
+ GalleryLocalizations.of(context).demoAlertDialogDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/AlertDialog-class.html',
+ buildRoute: (_) => DialogDemo(type: DialogDemoType.alertTitle),
+ code: CodeSegments.dialogDemo,
+ ),
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoSimpleDialogTitle,
+ description:
+ GalleryLocalizations.of(context).demoSimpleDialogDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/SimpleDialog-class.html',
+ buildRoute: (_) => DialogDemo(type: DialogDemoType.simple),
+ code: CodeSegments.dialogDemo,
+ ),
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoFullscreenDialogTitle,
+ description:
+ GalleryLocalizations.of(context).demoFullscreenDialogDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/widgets/PageRoute/fullscreenDialog.html',
+ buildRoute: (_) => DialogDemo(type: DialogDemoType.fullscreen),
+ code: CodeSegments.dialogDemo,
+ ),
+ ],
+ ),
+ GalleryDemo(
+ title: GalleryLocalizations.of(context).demoListsTitle,
+ icon: GalleryIcons.listAlt,
+ subtitle: GalleryLocalizations.of(context).demoListsSubtitle,
+ configurations: [
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoOneLineListsTitle,
+ description: GalleryLocalizations.of(context).demoListsDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/ListTile-class.html',
+ buildRoute: (context) => ListDemo(type: ListDemoType.oneLine),
+ code: CodeSegments.listDemo,
+ ),
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoTwoLineListsTitle,
+ description: GalleryLocalizations.of(context).demoListsDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/ListTile-class.html',
+ buildRoute: (context) => ListDemo(type: ListDemoType.twoLine),
+ code: CodeSegments.listDemo,
+ ),
+ ],
+ ),
+ GalleryDemo(
+ title: GalleryLocalizations.of(context).demoSelectionControlsTitle,
+ icon: GalleryIcons.checkBox,
+ subtitle: GalleryLocalizations.of(context).demoSelectionControlsSubtitle,
+ configurations: [
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context)
+ .demoSelectionControlsCheckboxTitle,
+ description: GalleryLocalizations.of(context)
+ .demoSelectionControlsCheckboxDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/Checkbox-class.html',
+ buildRoute: (context) => SelectionControlsDemo(
+ type: SelectionControlsDemoType.checkbox,
+ ),
+ code: CodeSegments.selectionControlsDemoCheckbox,
+ ),
+ GalleryDemoConfiguration(
+ title:
+ GalleryLocalizations.of(context).demoSelectionControlsRadioTitle,
+ description: GalleryLocalizations.of(context)
+ .demoSelectionControlsRadioDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/Radio-class.html',
+ buildRoute: (context) => SelectionControlsDemo(
+ type: SelectionControlsDemoType.radio,
+ ),
+ code: CodeSegments.selectionControlsDemoRadio,
+ ),
+ GalleryDemoConfiguration(
+ title:
+ GalleryLocalizations.of(context).demoSelectionControlsSwitchTitle,
+ description: GalleryLocalizations.of(context)
+ .demoSelectionControlsSwitchDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/Switch-class.html',
+ buildRoute: (context) => SelectionControlsDemo(
+ type: SelectionControlsDemoType.switches,
+ ),
+ code: CodeSegments.selectionControlsDemoSwitches,
+ ),
+ ],
+ ),
+ GalleryDemo(
+ title: GalleryLocalizations.of(context).demoTabsTitle,
+ icon: GalleryIcons.tabs,
+ subtitle: GalleryLocalizations.of(context).demoTabsSubtitle,
+ configurations: [
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoTabsTitle,
+ description: GalleryLocalizations.of(context).demoTabsDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/TabBarView-class.html',
+ buildRoute: (context) => TabsDemo(),
+ code: CodeSegments.tabsDemo,
+ ),
+ ],
+ ),
+ GalleryDemo(
+ title: GalleryLocalizations.of(context).demoTextFieldTitle,
+ icon: GalleryIcons.textFieldsAlt,
+ subtitle: GalleryLocalizations.of(context).demoTextFieldSubtitle,
+ configurations: [
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoTextFieldTitle,
+ description:
+ GalleryLocalizations.of(context).demoTextFieldDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/TextField-class.html',
+ buildRoute: (_) => TextFieldDemo(),
+ code: CodeSegments.textFieldDemo,
+ ),
+ ],
+ ),
+ ];
+}
+
+List<GalleryDemo> cupertinoDemos(BuildContext context) {
+ return [
+ GalleryDemo(
+ title: GalleryLocalizations.of(context).demoCupertinoButtonsTitle,
+ icon: GalleryIcons.genericButtons,
+ subtitle: GalleryLocalizations.of(context).demoCupertinoButtonsSubtitle,
+ configurations: [
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoCupertinoButtonsTitle,
+ description:
+ GalleryLocalizations.of(context).demoCupertinoButtonsDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/cupertino/CupertinoButton-class.html',
+ buildRoute: (_) => CupertinoButtonDemo(),
+ code: CodeSegments.cupertinoButtonDemo,
+ ),
+ ],
+ ),
+ GalleryDemo(
+ title: GalleryLocalizations.of(context).demoCupertinoAlertsTitle,
+ icon: GalleryIcons.dialogs,
+ subtitle: GalleryLocalizations.of(context).demoCupertinoAlertsSubtitle,
+ configurations: [
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoCupertinoAlertTitle,
+ description:
+ GalleryLocalizations.of(context).demoCupertinoAlertDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/cupertino/CupertinoAlertDialog-class.html',
+ buildRoute: (_) => CupertinoAlertDemo(type: AlertDemoType.alert),
+ code: CodeSegments.cupertinoAlertDemo,
+ ),
+ GalleryDemoConfiguration(
+ title:
+ GalleryLocalizations.of(context).demoCupertinoAlertWithTitleTitle,
+ description:
+ GalleryLocalizations.of(context).demoCupertinoAlertDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/cupertino/CupertinoAlertDialog-class.html',
+ buildRoute: (_) => CupertinoAlertDemo(type: AlertDemoType.alertTitle),
+ code: CodeSegments.cupertinoAlertDemo,
+ ),
+ GalleryDemoConfiguration(
+ title:
+ GalleryLocalizations.of(context).demoCupertinoAlertButtonsTitle,
+ description:
+ GalleryLocalizations.of(context).demoCupertinoAlertDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/cupertino/CupertinoAlertDialog-class.html',
+ buildRoute: (_) =>
+ CupertinoAlertDemo(type: AlertDemoType.alertButtons),
+ code: CodeSegments.cupertinoAlertDemo,
+ ),
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context)
+ .demoCupertinoAlertButtonsOnlyTitle,
+ description:
+ GalleryLocalizations.of(context).demoCupertinoAlertDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/cupertino/CupertinoAlertDialog-class.html',
+ buildRoute: (_) =>
+ CupertinoAlertDemo(type: AlertDemoType.alertButtonsOnly),
+ code: CodeSegments.cupertinoAlertDemo,
+ ),
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoCupertinoActionSheetTitle,
+ description: GalleryLocalizations.of(context)
+ .demoCupertinoActionSheetDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/cupertino/CupertinoActionSheet-class.html',
+ buildRoute: (_) =>
+ CupertinoAlertDemo(type: AlertDemoType.actionSheet),
+ code: CodeSegments.cupertinoAlertDemo,
+ ),
+ ],
+ ),
+ GalleryDemo(
+ title:
+ GalleryLocalizations.of(context).demoCupertinoSegmentedControlTitle,
+ icon: GalleryIcons.tabs,
+ subtitle: GalleryLocalizations.of(context)
+ .demoCupertinoSegmentedControlSubtitle,
+ configurations: [
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context)
+ .demoCupertinoSegmentedControlTitle,
+ description: GalleryLocalizations.of(context)
+ .demoCupertinoSegmentedControlDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/cupertino/CupertinoSegmentedControl-class.html',
+ buildRoute: (_) => CupertinoSegmentedControlDemo(),
+ code: CodeSegments.cupertinoSegmentedControlDemo,
+ ),
+ ],
+ ),
+ ];
+}
+
+List<GalleryDemo> referenceDemos(BuildContext context) {
+ return [
+ GalleryDemo(
+ title: GalleryLocalizations.of(context).demoColorsTitle,
+ icon: GalleryIcons.colors,
+ subtitle: GalleryLocalizations.of(context).demoColorsSubtitle,
+ configurations: [
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoColorsTitle,
+ description: GalleryLocalizations.of(context).demoColorsDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/MaterialColor-class.html',
+ buildRoute: (_) => ColorsDemo(),
+ code: CodeSegments.colorsDemo,
+ ),
+ ],
+ ),
+ GalleryDemo(
+ title: GalleryLocalizations.of(context).demoTypographyTitle,
+ icon: GalleryIcons.customTypography,
+ subtitle: GalleryLocalizations.of(context).demoTypographySubtitle,
+ configurations: [
+ GalleryDemoConfiguration(
+ title: GalleryLocalizations.of(context).demoTypographyTitle,
+ description:
+ GalleryLocalizations.of(context).demoTypographyDescription,
+ documentationUrl:
+ 'https://api.flutter.dev/flutter/material/TextTheme-class.html',
+ buildRoute: (_) => TypographyDemo(),
+ code: CodeSegments.typographyDemo,
+ ),
+ ],
+ ),
+ ];
+}
+
+class DemoWrapper extends StatelessWidget {
+ const DemoWrapper({Key key, this.child}) : super(key: key);
+
+ final Widget child;
+
+ @override
+ Widget build(BuildContext context) {
+ bool hasCycled = true;
+ return MaterialApp(
+ theme: MaterialDemoThemeData.themeData.copyWith(
+ platform: GalleryOptions.of(context).platform,
+ ),
+ debugShowCheckedModeBanner: false,
+ localizationsDelegates: GalleryLocalizations.localizationsDelegates,
+ supportedLocales: GalleryLocalizations.supportedLocales,
+ locale: GalleryOptions.of(context).locale,
+ // Remove the MediaQuery padding because the demo is rendered inside of a
+ // different page that already accounts for this padding.
+ home: MediaQuery.removePadding(
+ context: context,
+ removeTop: true,
+ removeBottom: true,
+ child: Focus(
+ onFocusChange: (hasFocus) {
+ if (hasFocus && hasCycled) {
+ hasCycled = !hasCycled;
+ FocusScope.of(context).requestFocus(
+ InheritedDemoFocusNodes.of(context).backButtonFocusNode);
+ }
+ },
+ child: ApplyTextOptions(
+ child: CupertinoTheme(
+ data: CupertinoThemeData().copyWith(brightness: Brightness.light),
+ child: child,
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+}
diff --git a/gallery/lib/data/gallery_options.dart b/gallery/lib/data/gallery_options.dart
new file mode 100644
index 0000000..7a2fc67
--- /dev/null
+++ b/gallery/lib/data/gallery_options.dart
@@ -0,0 +1,253 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'dart:async';
+import 'dart:io' show Platform;
+
+import 'package:flutter/foundation.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter/scheduler.dart' show timeDilation;
+import 'package:gallery/constants.dart';
+
+enum CustomTextDirection {
+ localeBased,
+ ltr,
+ rtl,
+}
+
+// See http://en.wikipedia.org/wiki/Right-to-left
+const List<String> rtlLanguages = <String>[
+ 'ar', // Arabic
+ 'fa', // Farsi
+ 'he', // Hebrew
+ 'ps', // Pashto
+ 'ur', // Urdu
+];
+
+// Fake locale to represent the system Locale option.
+const systemLocaleOption = Locale('system');
+
+Locale _deviceLocale;
+Locale get deviceLocale => _deviceLocale;
+set deviceLocale(Locale locale) {
+ if (_deviceLocale == null) {
+ _deviceLocale = locale;
+ }
+}
+
+class GalleryOptions {
+ const GalleryOptions({
+ this.themeMode,
+ double textScaleFactor,
+ this.customTextDirection,
+ Locale locale,
+ this.timeDilation,
+ this.platform,
+ }) : _textScaleFactor = textScaleFactor,
+ _locale = locale;
+
+ final ThemeMode themeMode;
+ final double _textScaleFactor;
+ final CustomTextDirection customTextDirection;
+ final Locale _locale;
+ final double timeDilation;
+ final TargetPlatform platform;
+
+ // We use a sentinel value to indicate the system text scale option. By
+ // default, return the actual text scale factor, otherwise return the
+ // sentinel value.
+ double textScaleFactor(BuildContext context, {bool useSentinel = false}) {
+ if (_textScaleFactor == systemTextScaleFactorOption) {
+ return useSentinel
+ ? systemTextScaleFactorOption
+ : MediaQuery.of(context).textScaleFactor;
+ } else {
+ return _textScaleFactor;
+ }
+ }
+
+ Locale get locale =>
+ _locale ??
+ deviceLocale ??
+ // TODO: When deviceLocale can be obtained on macOS, this won't be necessary
+ // https://github.com/flutter/flutter/issues/45343
+ (!kIsWeb && Platform.isMacOS ? Locale('en', 'US') : null);
+
+ /// Returns the text direction based on the [CustomTextDirection] setting.
+ /// If the locale cannot be determined, returns null.
+ TextDirection textDirection() {
+ switch (customTextDirection) {
+ case CustomTextDirection.localeBased:
+ final String language = locale?.languageCode?.toLowerCase();
+ if (language == null) return null;
+ return rtlLanguages.contains(language)
+ ? TextDirection.rtl
+ : TextDirection.ltr;
+ case CustomTextDirection.rtl:
+ return TextDirection.rtl;
+ default:
+ return TextDirection.ltr;
+ }
+ }
+
+ GalleryOptions copyWith({
+ ThemeMode themeMode,
+ double textScaleFactor,
+ CustomTextDirection customTextDirection,
+ Locale locale,
+ double timeDilation,
+ TargetPlatform platform,
+ }) {
+ return GalleryOptions(
+ themeMode: themeMode ?? this.themeMode,
+ textScaleFactor: textScaleFactor ?? this._textScaleFactor,
+ customTextDirection: customTextDirection ?? this.customTextDirection,
+ locale: locale ?? this.locale,
+ timeDilation: timeDilation ?? this.timeDilation,
+ platform: platform ?? this.platform,
+ );
+ }
+
+ @override
+ bool operator ==(Object other) =>
+ other is GalleryOptions &&
+ themeMode == other.themeMode &&
+ _textScaleFactor == other._textScaleFactor &&
+ customTextDirection == other.customTextDirection &&
+ locale == other.locale &&
+ timeDilation == other.timeDilation &&
+ platform == other.platform;
+
+ @override
+ int get hashCode => hashValues(
+ themeMode,
+ _textScaleFactor,
+ customTextDirection,
+ locale,
+ timeDilation,
+ platform,
+ );
+
+ static GalleryOptions of(BuildContext context) {
+ final _ModelBindingScope scope =
+ context.dependOnInheritedWidgetOfExactType<_ModelBindingScope>();
+ return scope.modelBindingState.currentModel;
+ }
+
+ static void update(BuildContext context, GalleryOptions newModel) {
+ final _ModelBindingScope scope =
+ context.dependOnInheritedWidgetOfExactType<_ModelBindingScope>();
+ scope.modelBindingState.updateModel(newModel);
+ }
+}
+
+// Applies text GalleryOptions to a widget
+class ApplyTextOptions extends StatelessWidget {
+ const ApplyTextOptions({@required this.child});
+
+ final Widget child;
+
+ @override
+ Widget build(BuildContext context) {
+ final options = GalleryOptions.of(context);
+ final textDirection = options.textDirection();
+ final textScaleFactor = options.textScaleFactor(context);
+
+ Widget widget = MediaQuery(
+ data: MediaQuery.of(context).copyWith(
+ textScaleFactor: textScaleFactor,
+ ),
+ child: child,
+ );
+ return textDirection == null
+ ? widget
+ : Directionality(
+ textDirection: textDirection,
+ child: widget,
+ );
+ }
+}
+
+// Everything below is boilerplate except code relating to time dilation.
+// See https://medium.com/flutter/managing-flutter-application-state-with-inheritedwidgets-1140452befe1
+
+class _ModelBindingScope extends InheritedWidget {
+ _ModelBindingScope({
+ Key key,
+ @required this.modelBindingState,
+ Widget child,
+ }) : assert(modelBindingState != null),
+ super(key: key, child: child);
+
+ final _ModelBindingState modelBindingState;
+
+ @override
+ bool updateShouldNotify(_ModelBindingScope oldWidget) => true;
+}
+
+class ModelBinding extends StatefulWidget {
+ ModelBinding({
+ Key key,
+ this.initialModel = const GalleryOptions(),
+ this.child,
+ }) : assert(initialModel != null),
+ super(key: key);
+
+ final GalleryOptions initialModel;
+ final Widget child;
+
+ _ModelBindingState createState() => _ModelBindingState();
+}
+
+class _ModelBindingState extends State<ModelBinding> {
+ GalleryOptions currentModel;
+ Timer _timeDilationTimer;
+
+ @override
+ void initState() {
+ super.initState();
+ currentModel = widget.initialModel;
+ }
+
+ @override
+ void dispose() {
+ _timeDilationTimer?.cancel();
+ _timeDilationTimer = null;
+ super.dispose();
+ }
+
+ void handleTimeDilation(GalleryOptions newModel) {
+ if (currentModel.timeDilation != newModel.timeDilation) {
+ _timeDilationTimer?.cancel();
+ _timeDilationTimer = null;
+ if (newModel.timeDilation > 1) {
+ // We delay the time dilation change long enough that the user can see
+ // that UI has started reacting and then we slam on the brakes so that
+ // they see that the time is in fact now dilated.
+ _timeDilationTimer = Timer(const Duration(milliseconds: 150), () {
+ timeDilation = newModel.timeDilation;
+ });
+ } else {
+ timeDilation = newModel.timeDilation;
+ }
+ }
+ }
+
+ void updateModel(GalleryOptions newModel) {
+ if (newModel != currentModel) {
+ handleTimeDilation(newModel);
+ setState(() {
+ currentModel = newModel;
+ });
+ }
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return _ModelBindingScope(
+ modelBindingState: this,
+ child: widget.child,
+ );
+ }
+}
diff --git a/gallery/lib/data/icons.dart b/gallery/lib/data/icons.dart
new file mode 100644
index 0000000..984ca23
--- /dev/null
+++ b/gallery/lib/data/icons.dart
@@ -0,0 +1,170 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+
+class GalleryIcons {
+ GalleryIcons._();
+
+ static const IconData tooltip = IconData(
+ 0xe900,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData textFieldsAlt = IconData(
+ 0xe901,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData tabs = IconData(
+ 0xe902,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData switches = IconData(
+ 0xe903,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData sliders = IconData(
+ 0xe904,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData shrine = IconData(
+ 0xe905,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData sentimentVerySatisfied = IconData(
+ 0xe906,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData refresh = IconData(
+ 0xe907,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData progressActivity = IconData(
+ 0xe908,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData phoneIphone = IconData(
+ 0xe909,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData pageControl = IconData(
+ 0xe90a,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData moreVert = IconData(
+ 0xe90b,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData menu = IconData(
+ 0xe90c,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData listAlt = IconData(
+ 0xe90d,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData gridOn = IconData(
+ 0xe90e,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData expandAll = IconData(
+ 0xe90f,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData event = IconData(
+ 0xe910,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData driveVideo = IconData(
+ 0xe911,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData dialogs = IconData(
+ 0xe912,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData dataTable = IconData(
+ 0xe913,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData customTypography = IconData(
+ 0xe914,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData colors = IconData(
+ 0xe915,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData chips = IconData(
+ 0xe916,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData checkBox = IconData(
+ 0xe917,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData cards = IconData(
+ 0xe918,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData buttons = IconData(
+ 0xe919,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData bottomSheets = IconData(
+ 0xe91a,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData bottomNavigation = IconData(
+ 0xe91b,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData animation = IconData(
+ 0xe91c,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData accountBox = IconData(
+ 0xe91d,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData snackbar = IconData(
+ 0xe91e,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData categoryMdc = IconData(
+ 0xe91f,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData cupertinoProgress = IconData(
+ 0xe920,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData cupertinoPullToRefresh = IconData(
+ 0xe921,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData cupertinoSwitch = IconData(
+ 0xe922,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData genericButtons = IconData(
+ 0xe923,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData backdrop = IconData(
+ 0xe924,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData bottomAppBar = IconData(
+ 0xe925,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData bottomSheetPersistent = IconData(
+ 0xe926,
+ fontFamily: 'GalleryIcons',
+ );
+ static const IconData listsLeaveBehind = IconData(
+ 0xe927,
+ fontFamily: 'GalleryIcons',
+ );
+}
diff --git a/gallery/lib/demos/cupertino/cupertino_alert_demo.dart b/gallery/lib/demos/cupertino/cupertino_alert_demo.dart
new file mode 100644
index 0000000..1ac4a53
--- /dev/null
+++ b/gallery/lib/demos/cupertino/cupertino_alert_demo.dart
@@ -0,0 +1,339 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/cupertino.dart';
+
+import 'package:gallery/data/gallery_options.dart';
+import 'package:gallery/l10n/gallery_localizations.dart';
+
+// BEGIN cupertinoAlertDemo
+
+enum AlertDemoType {
+ alert,
+ alertTitle,
+ alertButtons,
+ alertButtonsOnly,
+ actionSheet,
+}
+
+class CupertinoAlertDemo extends StatefulWidget {
+ const CupertinoAlertDemo({
+ Key key,
+ @required this.type,
+ }) : super(key: key);
+
+ final AlertDemoType type;
+
+ @override
+ _CupertinoAlertDemoState createState() => _CupertinoAlertDemoState();
+}
+
+class _CupertinoAlertDemoState extends State<CupertinoAlertDemo> {
+ String lastSelectedValue;
+
+ String _title(BuildContext context) {
+ switch (widget.type) {
+ case AlertDemoType.alert:
+ return GalleryLocalizations.of(context).demoCupertinoAlertTitle;
+ case AlertDemoType.alertTitle:
+ return GalleryLocalizations.of(context)
+ .demoCupertinoAlertWithTitleTitle;
+ case AlertDemoType.alertButtons:
+ return GalleryLocalizations.of(context).demoCupertinoAlertButtonsTitle;
+ case AlertDemoType.alertButtonsOnly:
+ return GalleryLocalizations.of(context)
+ .demoCupertinoAlertButtonsOnlyTitle;
+ case AlertDemoType.actionSheet:
+ return GalleryLocalizations.of(context).demoCupertinoActionSheetTitle;
+ }
+ return '';
+ }
+
+ void _showDemoDialog({BuildContext context, Widget child}) {
+ showCupertinoDialog<String>(
+ context: context,
+ builder: (context) => ApplyTextOptions(child: child),
+ ).then((value) {
+ if (value != null) {
+ setState(() {
+ lastSelectedValue = value;
+ });
+ }
+ });
+ }
+
+ void _showDemoActionSheet({BuildContext context, Widget child}) {
+ child = ApplyTextOptions(
+ child: CupertinoTheme(
+ data: CupertinoTheme.of(context),
+ child: child,
+ ),
+ );
+ showCupertinoModalPopup<String>(
+ context: context,
+ builder: (context) => child,
+ ).then((value) {
+ if (value != null) {
+ setState(() {
+ lastSelectedValue = value;
+ });
+ }
+ });
+ }
+
+ void _onAlertPress(BuildContext context) {
+ _showDemoDialog(
+ context: context,
+ child: CupertinoAlertDialog(
+ title: Text(GalleryLocalizations.of(context).dialogDiscardTitle),
+ actions: [
+ CupertinoDialogAction(
+ child: Text(
+ GalleryLocalizations.of(context).cupertinoAlertDiscard,
+ ),
+ isDestructiveAction: true,
+ onPressed: () => Navigator.of(context, rootNavigator: true).pop(
+ GalleryLocalizations.of(context).cupertinoAlertDiscard,
+ ),
+ ),
+ CupertinoDialogAction(
+ child: Text(
+ GalleryLocalizations.of(context).cupertinoAlertCancel,
+ ),
+ isDefaultAction: true,
+ onPressed: () => Navigator.of(context, rootNavigator: true).pop(
+ GalleryLocalizations.of(context).cupertinoAlertCancel,
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+
+ void _onAlertWithTitlePress(BuildContext context) {
+ _showDemoDialog(
+ context: context,
+ child: CupertinoAlertDialog(
+ title: Text(
+ GalleryLocalizations.of(context).cupertinoAlertLocationTitle,
+ ),
+ content: Text(
+ GalleryLocalizations.of(context).cupertinoAlertLocationDescription,
+ ),
+ actions: [
+ CupertinoDialogAction(
+ child: Text(
+ GalleryLocalizations.of(context).cupertinoAlertDontAllow,
+ ),
+ onPressed: () => Navigator.of(context, rootNavigator: true).pop(
+ GalleryLocalizations.of(context).cupertinoAlertDontAllow,
+ ),
+ ),
+ CupertinoDialogAction(
+ child: Text(
+ GalleryLocalizations.of(context).cupertinoAlertAllow,
+ ),
+ onPressed: () => Navigator.of(context, rootNavigator: true).pop(
+ GalleryLocalizations.of(context).cupertinoAlertAllow,
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+
+ void _onAlertWithButtonsPress(BuildContext context) {
+ _showDemoDialog(
+ context: context,
+ child: CupertinoDessertDialog(
+ title: Text(
+ GalleryLocalizations.of(context).cupertinoAlertFavoriteDessert,
+ ),
+ content: Text(
+ GalleryLocalizations.of(context).cupertinoAlertDessertDescription,
+ ),
+ ),
+ );
+ }
+
+ void _onAlertButtonsOnlyPress(BuildContext context) {
+ _showDemoDialog(
+ context: context,
+ child: const CupertinoDessertDialog(),
+ );
+ }
+
+ void _onActionSheetPress(BuildContext context) {
+ _showDemoActionSheet(
+ context: context,
+ child: CupertinoActionSheet(
+ title: Text(
+ GalleryLocalizations.of(context).cupertinoAlertFavoriteDessert,
+ ),
+ message: Text(
+ GalleryLocalizations.of(context).cupertinoAlertDessertDescription,
+ ),
+ actions: [
+ CupertinoActionSheetAction(
+ child: Text(
+ GalleryLocalizations.of(context).cupertinoAlertCheesecake,
+ ),
+ onPressed: () => Navigator.of(context, rootNavigator: true).pop(
+ GalleryLocalizations.of(context).cupertinoAlertCheesecake,
+ ),
+ ),
+ CupertinoActionSheetAction(
+ child: Text(
+ GalleryLocalizations.of(context).cupertinoAlertTiramisu,
+ ),
+ onPressed: () => Navigator.of(context, rootNavigator: true).pop(
+ GalleryLocalizations.of(context).cupertinoAlertTiramisu,
+ ),
+ ),
+ CupertinoActionSheetAction(
+ child: Text(
+ GalleryLocalizations.of(context).cupertinoAlertApplePie,
+ ),
+ onPressed: () => Navigator.of(context, rootNavigator: true).pop(
+ GalleryLocalizations.of(context).cupertinoAlertApplePie,
+ ),
+ ),
+ ],
+ cancelButton: CupertinoActionSheetAction(
+ child: Text(
+ GalleryLocalizations.of(context).cupertinoAlertCancel,
+ ),
+ isDefaultAction: true,
+ onPressed: () => Navigator.of(context, rootNavigator: true).pop(
+ GalleryLocalizations.of(context).cupertinoAlertCancel,
+ ),
+ ),
+ ),
+ );
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return CupertinoPageScaffold(
+ navigationBar: CupertinoNavigationBar(middle: Text(_title(context))),
+ child: Builder(
+ builder: (context) {
+ return Column(
+ children: [
+ Expanded(
+ child: Center(
+ child: CupertinoButton.filled(
+ child: Text(
+ GalleryLocalizations.of(context).cupertinoShowAlert,
+ ),
+ onPressed: () {
+ switch (widget.type) {
+ case AlertDemoType.alert:
+ _onAlertPress(context);
+ break;
+ case AlertDemoType.alertTitle:
+ _onAlertWithTitlePress(context);
+ break;
+ case AlertDemoType.alertButtons:
+ _onAlertWithButtonsPress(context);
+ break;
+ case AlertDemoType.alertButtonsOnly:
+ _onAlertButtonsOnlyPress(context);
+ break;
+ case AlertDemoType.actionSheet:
+ _onActionSheetPress(context);
+ break;
+ }
+ },
+ ),
+ ),
+ ),
+ if (lastSelectedValue != null)
+ Padding(
+ padding: const EdgeInsets.all(16),
+ child: Text(
+ GalleryLocalizations.of(context)
+ .dialogSelectedOption(lastSelectedValue),
+ style: CupertinoTheme.of(context).textTheme.textStyle,
+ textAlign: TextAlign.center,
+ ),
+ ),
+ ],
+ );
+ },
+ ),
+ );
+ }
+}
+
+class CupertinoDessertDialog extends StatelessWidget {
+ const CupertinoDessertDialog({Key key, this.title, this.content})
+ : super(key: key);
+
+ final Widget title;
+ final Widget content;
+
+ @override
+ Widget build(BuildContext context) {
+ return CupertinoAlertDialog(
+ title: title,
+ content: content,
+ actions: [
+ CupertinoDialogAction(
+ child: Text(
+ GalleryLocalizations.of(context).cupertinoAlertCheesecake,
+ ),
+ onPressed: () {
+ Navigator.of(context, rootNavigator: true).pop(
+ GalleryLocalizations.of(context).cupertinoAlertCheesecake,
+ );
+ },
+ ),
+ CupertinoDialogAction(
+ child: Text(
+ GalleryLocalizations.of(context).cupertinoAlertTiramisu,
+ ),
+ onPressed: () {
+ Navigator.of(context, rootNavigator: true).pop(
+ GalleryLocalizations.of(context).cupertinoAlertTiramisu,
+ );
+ },
+ ),
+ CupertinoDialogAction(
+ child: Text(
+ GalleryLocalizations.of(context).cupertinoAlertApplePie,
+ ),
+ onPressed: () {
+ Navigator.of(context, rootNavigator: true).pop(
+ GalleryLocalizations.of(context).cupertinoAlertApplePie,
+ );
+ },
+ ),
+ CupertinoDialogAction(
+ child: Text(
+ GalleryLocalizations.of(context).cupertinoAlertChocolateBrownie,
+ ),
+ onPressed: () {
+ Navigator.of(context, rootNavigator: true).pop(
+ GalleryLocalizations.of(context).cupertinoAlertChocolateBrownie,
+ );
+ },
+ ),
+ CupertinoDialogAction(
+ child: Text(
+ GalleryLocalizations.of(context).cupertinoAlertCancel,
+ ),
+ isDestructiveAction: true,
+ onPressed: () {
+ Navigator.of(context, rootNavigator: true).pop(
+ GalleryLocalizations.of(context).cupertinoAlertCancel,
+ );
+ },
+ ),
+ ],
+ );
+ }
+}
+
+// END
diff --git a/gallery/lib/demos/cupertino/cupertino_button_demo.dart b/gallery/lib/demos/cupertino/cupertino_button_demo.dart
new file mode 100644
index 0000000..8caa6c7
--- /dev/null
+++ b/gallery/lib/demos/cupertino/cupertino_button_demo.dart
@@ -0,0 +1,43 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/cupertino.dart';
+
+import 'package:gallery/l10n/gallery_localizations.dart';
+
+// BEGIN cupertinoButtonDemo
+
+class CupertinoButtonDemo extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ return CupertinoPageScaffold(
+ navigationBar: CupertinoNavigationBar(
+ middle:
+ Text(GalleryLocalizations.of(context).demoCupertinoButtonsTitle),
+ ),
+ child: Center(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ CupertinoButton(
+ child: Text(
+ GalleryLocalizations.of(context).cupertinoButton,
+ ),
+ onPressed: () {},
+ ),
+ SizedBox(height: 16),
+ CupertinoButton.filled(
+ child: Text(
+ GalleryLocalizations.of(context).cupertinoButtonWithBackground,
+ ),
+ onPressed: () {},
+ ),
+ ],
+ ),
+ ),
+ );
+ }
+}
+
+// END
diff --git a/gallery/lib/demos/cupertino/cupertino_segmented_control_demo.dart b/gallery/lib/demos/cupertino/cupertino_segmented_control_demo.dart
new file mode 100644
index 0000000..6b9a8dc
--- /dev/null
+++ b/gallery/lib/demos/cupertino/cupertino_segmented_control_demo.dart
@@ -0,0 +1,86 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+
+import 'package:gallery/l10n/gallery_localizations.dart';
+
+// BEGIN cupertinoSegmentedControlDemo
+
+class CupertinoSegmentedControlDemo extends StatefulWidget {
+ @override
+ _CupertinoSegmentedControlDemoState createState() =>
+ _CupertinoSegmentedControlDemoState();
+}
+
+class _CupertinoSegmentedControlDemoState
+ extends State<CupertinoSegmentedControlDemo> {
+ int currentSegment = 0;
+
+ void onValueChanged(int newValue) {
+ setState(() {
+ currentSegment = newValue;
+ });
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ final localizations = GalleryLocalizations.of(context);
+ final segmentedControlMaxWidth = 500.0;
+ final children = <int, Widget>{
+ 0: Text(localizations.colorsIndigo),
+ 1: Text(localizations.colorsTeal),
+ 2: Text(localizations.colorsCyan),
+ };
+
+ return CupertinoPageScaffold(
+ navigationBar: CupertinoNavigationBar(
+ middle: Text(
+ localizations.demoCupertinoSegmentedControlTitle,
+ ),
+ ),
+ child: DefaultTextStyle(
+ style: CupertinoTheme.of(context)
+ .textTheme
+ .textStyle
+ .copyWith(fontSize: 13),
+ child: SafeArea(
+ child: ListView(
+ children: [
+ const SizedBox(height: 16),
+ SizedBox(
+ width: segmentedControlMaxWidth,
+ child: CupertinoSegmentedControl<int>(
+ children: children,
+ onValueChanged: onValueChanged,
+ groupValue: currentSegment,
+ ),
+ ),
+ SizedBox(
+ width: segmentedControlMaxWidth,
+ child: Padding(
+ padding: const EdgeInsets.all(16),
+ child: CupertinoSlidingSegmentedControl<int>(
+ children: children,
+ onValueChanged: onValueChanged,
+ groupValue: currentSegment,
+ ),
+ ),
+ ),
+ Container(
+ padding: const EdgeInsets.all(16),
+ height: 300,
+ alignment: Alignment.center,
+ child: children[currentSegment],
+ ),
+ ],
+ ),
+ ),
+ ),
+ );
+ }
+}
+
+// END
diff --git a/gallery/lib/demos/material/bottom_navigation_demo.dart b/gallery/lib/demos/material/bottom_navigation_demo.dart
new file mode 100644
index 0000000..a32c55e
--- /dev/null
+++ b/gallery/lib/demos/material/bottom_navigation_demo.dart
@@ -0,0 +1,211 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+
+import 'package:gallery/l10n/gallery_localizations.dart';
+
+// BEGIN bottomNavigationDemo
+
+enum BottomNavigationDemoType {
+ withLabels,
+ withoutLabels,
+}
+
+class BottomNavigationDemo extends StatefulWidget {
+ BottomNavigationDemo({Key key, @required this.type}) : super(key: key);
+
+ final BottomNavigationDemoType type;
+
+ @override
+ _BottomNavigationDemoState createState() => _BottomNavigationDemoState();
+}
+
+class _BottomNavigationDemoState extends State<BottomNavigationDemo>
+ with TickerProviderStateMixin {
+ int _currentIndex = 0;
+ List<_NavigationIconView> _navigationViews;
+
+ String _title(BuildContext context) {
+ switch (widget.type) {
+ case BottomNavigationDemoType.withLabels:
+ return GalleryLocalizations.of(context)
+ .demoBottomNavigationPersistentLabels;
+ case BottomNavigationDemoType.withoutLabels:
+ return GalleryLocalizations.of(context)
+ .demoBottomNavigationSelectedLabel;
+ }
+ return '';
+ }
+
+ @override
+ void didChangeDependencies() {
+ super.didChangeDependencies();
+ if (_navigationViews == null) {
+ _navigationViews = <_NavigationIconView>[
+ _NavigationIconView(
+ icon: const Icon(Icons.add_comment),
+ title: GalleryLocalizations.of(context).bottomNavigationCommentsTab,
+ vsync: this,
+ ),
+ _NavigationIconView(
+ icon: const Icon(Icons.calendar_today),
+ title: GalleryLocalizations.of(context).bottomNavigationCalendarTab,
+ vsync: this,
+ ),
+ _NavigationIconView(
+ icon: const Icon(Icons.account_circle),
+ title: GalleryLocalizations.of(context).bottomNavigationAccountTab,
+ vsync: this,
+ ),
+ _NavigationIconView(
+ icon: const Icon(Icons.alarm_on),
+ title: GalleryLocalizations.of(context).bottomNavigationAlarmTab,
+ vsync: this,
+ ),
+ _NavigationIconView(
+ icon: const Icon(Icons.camera_enhance),
+ title: GalleryLocalizations.of(context).bottomNavigationCameraTab,
+ vsync: this,
+ ),
+ ];
+
+ _navigationViews[_currentIndex].controller.value = 1;
+ }
+ }
+
+ @override
+ void dispose() {
+ for (_NavigationIconView view in _navigationViews) {
+ view.controller.dispose();
+ }
+ super.dispose();
+ }
+
+ Widget _buildTransitionsStack() {
+ final List<FadeTransition> transitions = <FadeTransition>[];
+
+ for (_NavigationIconView view in _navigationViews) {
+ transitions.add(view.transition(context));
+ }
+
+ // We want to have the newly animating (fading in) views on top.
+ transitions.sort((a, b) {
+ final aAnimation = a.opacity;
+ final bAnimation = b.opacity;
+ final aValue = aAnimation.value;
+ final bValue = bAnimation.value;
+ return aValue.compareTo(bValue);
+ });
+
+ return Stack(children: transitions);
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ final colorScheme = Theme.of(context).colorScheme;
+ final textTheme = Theme.of(context).textTheme;
+
+ var bottomNavigationBarItems = _navigationViews
+ .map<BottomNavigationBarItem>((navigationView) => navigationView.item)
+ .toList();
+ if (widget.type == BottomNavigationDemoType.withLabels) {
+ bottomNavigationBarItems =
+ bottomNavigationBarItems.sublist(0, _navigationViews.length - 2);
+ _currentIndex =
+ _currentIndex.clamp(0, bottomNavigationBarItems.length - 1).toInt();
+ }
+
+ return Scaffold(
+ appBar: AppBar(
+ title: Text(_title(context)),
+ ),
+ body: Center(
+ child: _buildTransitionsStack(),
+ ),
+ bottomNavigationBar: BottomNavigationBar(
+ showUnselectedLabels:
+ widget.type == BottomNavigationDemoType.withLabels,
+ items: bottomNavigationBarItems,
+ currentIndex: _currentIndex,
+ type: BottomNavigationBarType.fixed,
+ selectedFontSize: textTheme.caption.fontSize,
+ unselectedFontSize: textTheme.caption.fontSize,
+ onTap: (index) {
+ setState(() {
+ _navigationViews[_currentIndex].controller.reverse();
+ _currentIndex = index;
+ _navigationViews[_currentIndex].controller.forward();
+ });
+ },
+ selectedItemColor: colorScheme.onPrimary,
+ unselectedItemColor: colorScheme.onPrimary.withOpacity(0.38),
+ backgroundColor: colorScheme.primary,
+ ),
+ );
+ }
+}
+
+class _NavigationIconView {
+ _NavigationIconView({
+ this.title,
+ this.icon,
+ TickerProvider vsync,
+ }) : item = BottomNavigationBarItem(
+ icon: icon,
+ title: Text(title),
+ ),
+ controller = AnimationController(
+ duration: kThemeAnimationDuration,
+ vsync: vsync,
+ ) {
+ _animation = controller.drive(CurveTween(
+ curve: const Interval(0.5, 1.0, curve: Curves.fastOutSlowIn),
+ ));
+ }
+
+ final String title;
+ final Widget icon;
+ final BottomNavigationBarItem item;
+ final AnimationController controller;
+ Animation<double> _animation;
+
+ FadeTransition transition(BuildContext context) {
+ return FadeTransition(
+ opacity: _animation,
+ child: Stack(
+ children: [
+ ExcludeSemantics(
+ child: Center(
+ child: Padding(
+ padding: const EdgeInsets.all(16),
+ child: ClipRRect(
+ borderRadius: BorderRadius.circular(8),
+ child: Image.asset(
+ 'assets/demos/bottom_navigation_background.png',
+ ),
+ ),
+ ),
+ ),
+ ),
+ Center(
+ child: IconTheme(
+ data: IconThemeData(
+ color: Colors.white,
+ size: 80,
+ ),
+ child: Semantics(
+ label: GalleryLocalizations.of(context)
+ .bottomNavigationContentPlaceholder(title),
+ child: icon,
+ ),
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+}
+
+// END
diff --git a/gallery/lib/demos/material/bottom_sheet_demo.dart b/gallery/lib/demos/material/bottom_sheet_demo.dart
new file mode 100644
index 0000000..51ce48c
--- /dev/null
+++ b/gallery/lib/demos/material/bottom_sheet_demo.dart
@@ -0,0 +1,192 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+
+import 'package:gallery/l10n/gallery_localizations.dart';
+
+enum BottomSheetDemoType {
+ persistent,
+ modal,
+}
+
+class BottomSheetDemo extends StatelessWidget {
+ BottomSheetDemo({Key key, @required this.type}) : super(key: key);
+
+ final BottomSheetDemoType type;
+
+ String _title(BuildContext context) {
+ switch (type) {
+ case BottomSheetDemoType.persistent:
+ return GalleryLocalizations.of(context).demoBottomSheetPersistentTitle;
+ case BottomSheetDemoType.modal:
+ return GalleryLocalizations.of(context).demoBottomSheetModalTitle;
+ }
+ return '';
+ }
+
+ Widget _bottomSheetDemo(BuildContext context) {
+ switch (type) {
+ case BottomSheetDemoType.persistent:
+ return _PersistentBottomSheetDemo();
+ break;
+ case BottomSheetDemoType.modal:
+ default:
+ return _ModalBottomSheetDemo();
+ break;
+ }
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ // We wrap the demo in a [Navigator] to make sure that the modal bottom
+ // sheets gets dismissed when changing demo.
+ return Navigator(
+ // Adding [ValueKey] to make sure that the widget gets rebuilt when
+ // changing type.
+ key: ValueKey(type),
+ onGenerateRoute: (settings) {
+ return MaterialPageRoute<Widget>(
+ builder: (context) => Scaffold(
+ appBar: AppBar(
+ title: Text(_title(context)),
+ automaticallyImplyLeading: false,
+ ),
+ floatingActionButton: FloatingActionButton(
+ onPressed: () {},
+ backgroundColor: Theme.of(context).colorScheme.secondary,
+ child: Icon(
+ Icons.add,
+ semanticLabel:
+ GalleryLocalizations.of(context).demoBottomSheetAddLabel,
+ ),
+ ),
+ body: _bottomSheetDemo(context),
+ ),
+ settings: settings,
+ );
+ },
+ );
+ }
+}
+
+// BEGIN bottomSheetDemoModal#1 bottomSheetDemoPersistent#1
+
+class _BottomSheetContent extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ return Container(
+ height: 300,
+ child: Column(
+ children: [
+ Container(
+ height: 70,
+ child: Center(
+ child: Text(
+ GalleryLocalizations.of(context).demoBottomSheetHeader,
+ textAlign: TextAlign.center,
+ ),
+ ),
+ ),
+ Divider(),
+ Expanded(
+ child: ListView.builder(
+ itemCount: 21,
+ itemBuilder: (context, index) {
+ return ListTile(
+ title: Text(GalleryLocalizations.of(context)
+ .demoBottomSheetItem(index)),
+ );
+ },
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+}
+
+// END bottomSheetDemoModal#1 bottomSheetDemoPersistent#1
+
+// BEGIN bottomSheetDemoModal#2
+
+class _ModalBottomSheetDemo extends StatelessWidget {
+ void _showModalBottomSheet(BuildContext context) {
+ showModalBottomSheet<void>(
+ context: context,
+ builder: (context) {
+ return _BottomSheetContent();
+ },
+ );
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Center(
+ child: RaisedButton(
+ onPressed: () {
+ _showModalBottomSheet(context);
+ },
+ child: Text(GalleryLocalizations.of(context).demoBottomSheetButtonText),
+ ),
+ );
+ }
+}
+
+// END
+
+// BEGIN bottomSheetDemoPersistent#2
+
+class _PersistentBottomSheetDemo extends StatefulWidget {
+ @override
+ _PersistentBottomSheetDemoState createState() =>
+ _PersistentBottomSheetDemoState();
+}
+
+class _PersistentBottomSheetDemoState
+ extends State<_PersistentBottomSheetDemo> {
+ VoidCallback _showBottomSheetCallback;
+
+ @override
+ void initState() {
+ super.initState();
+ _showBottomSheetCallback = _showPersistentBottomSheet;
+ }
+
+ void _showPersistentBottomSheet() {
+ setState(() {
+ // Disable the show bottom sheet button.
+ _showBottomSheetCallback = null;
+ });
+
+ Scaffold.of(context)
+ .showBottomSheet<void>(
+ (context) {
+ return _BottomSheetContent();
+ },
+ elevation: 25,
+ )
+ .closed
+ .whenComplete(() {
+ if (mounted) {
+ setState(() {
+ // Re-enable the bottom sheet button.
+ _showBottomSheetCallback = _showPersistentBottomSheet;
+ });
+ }
+ });
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Center(
+ child: RaisedButton(
+ onPressed: _showBottomSheetCallback,
+ child: Text(GalleryLocalizations.of(context).demoBottomSheetButtonText),
+ ),
+ );
+ }
+}
+
+// END
diff --git a/gallery/lib/demos/material/button_demo.dart b/gallery/lib/demos/material/button_demo.dart
new file mode 100644
index 0000000..361c379
--- /dev/null
+++ b/gallery/lib/demos/material/button_demo.dart
@@ -0,0 +1,213 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+
+import 'package:gallery/l10n/gallery_localizations.dart';
+
+enum ButtonDemoType {
+ flat,
+ raised,
+ outline,
+ toggle,
+ floating,
+}
+
+class ButtonDemo extends StatelessWidget {
+ const ButtonDemo({Key key, this.type}) : super(key: key);
+
+ final ButtonDemoType type;
+
+ String _title(BuildContext context) {
+ switch (type) {
+ case ButtonDemoType.flat:
+ return GalleryLocalizations.of(context).demoFlatButtonTitle;
+ case ButtonDemoType.raised:
+ return GalleryLocalizations.of(context).demoRaisedButtonTitle;
+ case ButtonDemoType.outline:
+ return GalleryLocalizations.of(context).demoOutlineButtonTitle;
+ case ButtonDemoType.toggle:
+ return GalleryLocalizations.of(context).demoToggleButtonTitle;
+ case ButtonDemoType.floating:
+ return GalleryLocalizations.of(context).demoFloatingButtonTitle;
+ }
+ return '';
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ Widget buttons;
+ switch (type) {
+ case ButtonDemoType.flat:
+ buttons = _FlatButtonDemo();
+ break;
+ case ButtonDemoType.raised:
+ buttons = _RaisedButtonDemo();
+ break;
+ case ButtonDemoType.outline:
+ buttons = _OutlineButtonDemo();
+ break;
+ case ButtonDemoType.toggle:
+ buttons = _ToggleButtonsDemo();
+ break;
+ case ButtonDemoType.floating:
+ buttons = _FloatingActionButtonDemo();
+ break;
+ }
+
+ return Scaffold(
+ appBar: AppBar(
+ title: Text(_title(context)),
+ ),
+ body: buttons,
+ );
+ }
+}
+
+// BEGIN buttonDemoFlat
+
+class _FlatButtonDemo extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ return Center(
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ FlatButton(
+ child: Text(GalleryLocalizations.of(context).buttonText),
+ onPressed: () {},
+ ),
+ SizedBox(height: 12),
+ FlatButton.icon(
+ icon: const Icon(Icons.add, size: 18),
+ label: Text(GalleryLocalizations.of(context).buttonText),
+ onPressed: () {},
+ ),
+ ],
+ ),
+ );
+ }
+}
+
+// END
+
+// BEGIN buttonDemoRaised
+
+class _RaisedButtonDemo extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ return Center(
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ RaisedButton(
+ child: Text(GalleryLocalizations.of(context).buttonText),
+ onPressed: () {},
+ ),
+ SizedBox(height: 12),
+ RaisedButton.icon(
+ icon: const Icon(Icons.add, size: 18),
+ label: Text(GalleryLocalizations.of(context).buttonText),
+ onPressed: () {},
+ ),
+ ],
+ ),
+ );
+ }
+}
+
+// END
+
+// BEGIN buttonDemoOutline
+
+class _OutlineButtonDemo extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ return Center(
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ OutlineButton(
+ // TODO: Should update to OutlineButton follow material spec.
+ highlightedBorderColor:
+ Theme.of(context).colorScheme.onSurface.withOpacity(0.12),
+ child: Text(GalleryLocalizations.of(context).buttonText),
+ onPressed: () {},
+ ),
+ SizedBox(height: 12),
+ OutlineButton.icon(
+ // TODO: Should update to OutlineButton follow material spec.
+ highlightedBorderColor:
+ Theme.of(context).colorScheme.onSurface.withOpacity(0.12),
+ icon: const Icon(Icons.add, size: 18),
+ label: Text(GalleryLocalizations.of(context).buttonText),
+ onPressed: () {},
+ ),
+ ],
+ ),
+ );
+ }
+}
+
+// END
+
+// BEGIN buttonDemoToggle
+
+class _ToggleButtonsDemo extends StatefulWidget {
+ @override
+ _ToggleButtonsDemoState createState() => _ToggleButtonsDemoState();
+}
+
+class _ToggleButtonsDemoState extends State<_ToggleButtonsDemo> {
+ final isSelected = <bool>[false, false, false];
+
+ @override
+ Widget build(BuildContext context) {
+ return Center(
+ child: ToggleButtons(
+ children: [
+ Icon(Icons.ac_unit),
+ Icon(Icons.call),
+ Icon(Icons.cake),
+ ],
+ onPressed: (index) {
+ setState(() {
+ isSelected[index] = !isSelected[index];
+ });
+ },
+ isSelected: isSelected,
+ ),
+ );
+ }
+}
+
+// END
+
+// BEGIN buttonDemoFloating
+
+class _FloatingActionButtonDemo extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ return Center(
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ FloatingActionButton(
+ child: const Icon(Icons.add),
+ onPressed: () {},
+ tooltip: GalleryLocalizations.of(context).buttonTextCreate,
+ ),
+ SizedBox(height: 20),
+ FloatingActionButton.extended(
+ icon: const Icon(Icons.add),
+ label: Text(GalleryLocalizations.of(context).buttonTextCreate),
+ onPressed: () {},
+ ),
+ ],
+ ),
+ );
+ }
+}
+
+// END
diff --git a/gallery/lib/demos/material/chip_demo.dart b/gallery/lib/demos/material/chip_demo.dart
new file mode 100644
index 0000000..9b4ef3f
--- /dev/null
+++ b/gallery/lib/demos/material/chip_demo.dart
@@ -0,0 +1,215 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+
+import '../../l10n/gallery_localizations.dart';
+
+enum ChipDemoType {
+ action,
+ choice,
+ filter,
+ input,
+}
+
+class ChipDemo extends StatelessWidget {
+ const ChipDemo({Key key, this.type}) : super(key: key);
+
+ final ChipDemoType type;
+
+ String _title(BuildContext context) {
+ switch (type) {
+ case ChipDemoType.action:
+ return GalleryLocalizations.of(context).demoActionChipTitle;
+ case ChipDemoType.choice:
+ return GalleryLocalizations.of(context).demoChoiceChipTitle;
+ case ChipDemoType.filter:
+ return GalleryLocalizations.of(context).demoFilterChipTitle;
+ case ChipDemoType.input:
+ return GalleryLocalizations.of(context).demoInputChipTitle;
+ }
+ return '';
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ Widget buttons;
+ switch (type) {
+ case ChipDemoType.action:
+ buttons = _ActionChipDemo();
+ break;
+ case ChipDemoType.choice:
+ buttons = _ChoiceChipDemo();
+ break;
+ case ChipDemoType.filter:
+ buttons = _FilterChipDemo();
+ break;
+ case ChipDemoType.input:
+ buttons = _InputChipDemo();
+ break;
+ }
+
+ return Scaffold(
+ appBar: AppBar(
+ title: Text(_title(context)),
+ ),
+ body: buttons,
+ );
+ }
+}
+
+// BEGIN chipDemoAction
+
+class _ActionChipDemo extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ return Center(
+ child: ActionChip(
+ onPressed: () {},
+ avatar: Icon(
+ Icons.brightness_5,
+ color: Colors.black54,
+ ),
+ label: Text(GalleryLocalizations.of(context).chipTurnOnLights),
+ ),
+ );
+ }
+}
+
+// END
+
+// BEGIN chipDemoChoice
+
+class _ChoiceChipDemo extends StatefulWidget {
+ @override
+ _ChoiceChipDemoState createState() => _ChoiceChipDemoState();
+}
+
+class _ChoiceChipDemoState extends State<_ChoiceChipDemo> {
+ int indexSelected = -1;
+
+ @override
+ Widget build(BuildContext context) {
+ return Center(
+ child: Wrap(
+ children: [
+ ChoiceChip(
+ label: Text(GalleryLocalizations.of(context).chipSmall),
+ selected: indexSelected == 0,
+ onSelected: (value) {
+ setState(() {
+ indexSelected = value ? 0 : -1;
+ });
+ },
+ ),
+ SizedBox(width: 8),
+ ChoiceChip(
+ label: Text(GalleryLocalizations.of(context).chipMedium),
+ selected: indexSelected == 1,
+ onSelected: (value) {
+ setState(() {
+ indexSelected = value ? 1 : -1;
+ });
+ },
+ ),
+ SizedBox(width: 8),
+ ChoiceChip(
+ label: Text(GalleryLocalizations.of(context).chipLarge),
+ selected: indexSelected == 2,
+ onSelected: (value) {
+ setState(() {
+ indexSelected = value ? 2 : -1;
+ });
+ },
+ ),
+ ],
+ ),
+ );
+ }
+}
+
+// END
+
+// BEGIN chipDemoFilter
+
+class _FilterChipDemo extends StatefulWidget {
+ @override
+ _FilterChipDemoState createState() => _FilterChipDemoState();
+}
+
+class _FilterChipDemoState extends State<_FilterChipDemo> {
+ bool isSelectedElevator = false;
+ bool isSelectedWasher = false;
+ bool isSelectedFireplace = false;
+
+ @override
+ Widget build(BuildContext context) {
+ final chips = <Widget>[
+ FilterChip(
+ label: Text(GalleryLocalizations.of(context).chipElevator),
+ selected: isSelectedElevator,
+ onSelected: (value) {
+ setState(() {
+ isSelectedElevator = !isSelectedElevator;
+ });
+ },
+ ),
+ FilterChip(
+ label: Text(GalleryLocalizations.of(context).chipWasher),
+ selected: isSelectedWasher,
+ onSelected: (value) {
+ setState(() {
+ isSelectedWasher = !isSelectedWasher;
+ });
+ },
+ ),
+ FilterChip(
+ label: Text(GalleryLocalizations.of(context).chipFireplace),
+ selected: isSelectedFireplace,
+ onSelected: (value) {
+ setState(() {
+ isSelectedFireplace = !isSelectedFireplace;
+ });
+ },
+ ),
+ ];
+
+ return Center(
+ child: Wrap(
+ children: [
+ for (final chip in chips)
+ Padding(
+ padding: const EdgeInsets.all(4),
+ child: chip,
+ )
+ ],
+ ),
+ );
+ }
+}
+
+// END
+
+// BEGIN chipDemoInput
+
+class _InputChipDemo extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ return Center(
+ child: InputChip(
+ onPressed: () {},
+ onDeleted: () {},
+ avatar: Icon(
+ Icons.directions_bike,
+ size: 20,
+ color: Colors.black54,
+ ),
+ deleteIconColor: Colors.black54,
+ label: Text(GalleryLocalizations.of(context).chipBiking),
+ ),
+ );
+ }
+}
+
+// END
diff --git a/gallery/lib/demos/material/dialog_demo.dart b/gallery/lib/demos/material/dialog_demo.dart
new file mode 100644
index 0000000..49615f3
--- /dev/null
+++ b/gallery/lib/demos/material/dialog_demo.dart
@@ -0,0 +1,254 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+
+import 'package:gallery/data/gallery_options.dart';
+import 'package:gallery/l10n/gallery_localizations.dart';
+
+// BEGIN dialogDemo
+
+enum DialogDemoType {
+ alert,
+ alertTitle,
+ simple,
+ fullscreen,
+}
+
+class DialogDemo extends StatelessWidget {
+ DialogDemo({Key key, @required this.type}) : super(key: key);
+
+ final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
+ final DialogDemoType type;
+
+ String _title(BuildContext context) {
+ switch (type) {
+ case DialogDemoType.alert:
+ return GalleryLocalizations.of(context).demoAlertDialogTitle;
+ case DialogDemoType.alertTitle:
+ return GalleryLocalizations.of(context).demoAlertTitleDialogTitle;
+ case DialogDemoType.simple:
+ return GalleryLocalizations.of(context).demoSimpleDialogTitle;
+ case DialogDemoType.fullscreen:
+ return GalleryLocalizations.of(context).demoFullscreenDialogTitle;
+ }
+ return '';
+ }
+
+ Future<void> _showDemoDialog<T>({BuildContext context, Widget child}) async {
+ child = ApplyTextOptions(
+ child: Theme(
+ data: Theme.of(context),
+ child: child,
+ ),
+ );
+ T value = await showDialog<T>(
+ context: context,
+ builder: (context) => child,
+ );
+ // The value passed to Navigator.pop() or null.
+ if (value != null && value is String) {
+ _scaffoldKey.currentState.showSnackBar(SnackBar(
+ content:
+ Text(GalleryLocalizations.of(context).dialogSelectedOption(value)),
+ ));
+ }
+ }
+
+ void _showAlertDialog(BuildContext context) {
+ final ThemeData theme = Theme.of(context);
+ final TextStyle dialogTextStyle =
+ theme.textTheme.subhead.copyWith(color: theme.textTheme.caption.color);
+ _showDemoDialog<String>(
+ context: context,
+ child: AlertDialog(
+ content: Text(
+ GalleryLocalizations.of(context).dialogDiscardTitle,
+ style: dialogTextStyle,
+ ),
+ actions: [
+ _DialogButton(text: GalleryLocalizations.of(context).dialogCancel),
+ _DialogButton(text: GalleryLocalizations.of(context).dialogDiscard),
+ ],
+ ),
+ );
+ }
+
+ void _showAlertDialogWithTitle(BuildContext context) {
+ final ThemeData theme = Theme.of(context);
+ final TextStyle dialogTextStyle =
+ theme.textTheme.subhead.copyWith(color: theme.textTheme.caption.color);
+ _showDemoDialog<String>(
+ context: context,
+ child: AlertDialog(
+ title: Text(GalleryLocalizations.of(context).dialogLocationTitle),
+ content: Text(
+ GalleryLocalizations.of(context).dialogLocationDescription,
+ style: dialogTextStyle,
+ ),
+ actions: [
+ _DialogButton(text: GalleryLocalizations.of(context).dialogDisagree),
+ _DialogButton(text: GalleryLocalizations.of(context).dialogAgree),
+ ],
+ ),
+ );
+ }
+
+ void _showSimpleDialog(BuildContext context) {
+ final ThemeData theme = Theme.of(context);
+ _showDemoDialog<String>(
+ context: context,
+ child: SimpleDialog(
+ title: Text(GalleryLocalizations.of(context).dialogSetBackup),
+ children: [
+ _DialogDemoItem(
+ icon: Icons.account_circle,
+ color: theme.colorScheme.primary,
+ text: 'username@gmail.com',
+ ),
+ _DialogDemoItem(
+ icon: Icons.account_circle,
+ color: theme.colorScheme.secondary,
+ text: 'user02@gmail.com',
+ ),
+ _DialogDemoItem(
+ icon: Icons.add_circle,
+ text: GalleryLocalizations.of(context).dialogAddAccount,
+ color: theme.disabledColor,
+ ),
+ ],
+ ),
+ );
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ key: _scaffoldKey,
+ appBar: AppBar(
+ title: Text(_title(context)),
+ ),
+ body: Center(
+ child: RaisedButton(
+ child: Text(GalleryLocalizations.of(context).dialogShow),
+ onPressed: () {
+ switch (type) {
+ case DialogDemoType.alert:
+ _showAlertDialog(context);
+ break;
+ case DialogDemoType.alertTitle:
+ _showAlertDialogWithTitle(context);
+ break;
+ case DialogDemoType.simple:
+ _showSimpleDialog(context);
+ break;
+ case DialogDemoType.fullscreen:
+ Navigator.push<void>(
+ context,
+ MaterialPageRoute(
+ builder: (context) => _FullScreenDialogDemo(),
+ fullscreenDialog: true,
+ ),
+ );
+ break;
+ }
+ },
+ ),
+ ),
+ );
+ }
+}
+
+class _DialogButton extends StatelessWidget {
+ const _DialogButton({Key key, this.text}) : super(key: key);
+
+ final String text;
+
+ @override
+ Widget build(BuildContext context) {
+ return FlatButton(
+ child: Text(text),
+ onPressed: () {
+ Navigator.of(context, rootNavigator: true).pop(text);
+ },
+ );
+ }
+}
+
+class _DialogDemoItem extends StatelessWidget {
+ const _DialogDemoItem({
+ Key key,
+ this.icon,
+ this.color,
+ this.text,
+ }) : super(key: key);
+
+ final IconData icon;
+ final Color color;
+ final String text;
+
+ @override
+ Widget build(BuildContext context) {
+ return SimpleDialogOption(
+ onPressed: () {
+ Navigator.of(context, rootNavigator: true).pop(text);
+ },
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Icon(icon, size: 36, color: color),
+ Flexible(
+ child: Padding(
+ padding: const EdgeInsetsDirectional.only(start: 16),
+ child: Text(text),
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+}
+
+class _FullScreenDialogDemo extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ final ThemeData theme = Theme.of(context);
+
+ // Remove the MediaQuery padding because the demo is rendered inside of a
+ // different page that already accounts for this padding.
+ return MediaQuery.removePadding(
+ context: context,
+ removeTop: true,
+ removeBottom: true,
+ child: ApplyTextOptions(
+ child: Scaffold(
+ appBar: AppBar(
+ title: Text(GalleryLocalizations.of(context).dialogFullscreenTitle),
+ actions: [
+ FlatButton(
+ child: Text(
+ GalleryLocalizations.of(context).dialogFullscreenSave,
+ style: theme.textTheme.body1.copyWith(
+ color: theme.colorScheme.onPrimary,
+ ),
+ ),
+ onPressed: () {
+ Navigator.pop(context);
+ },
+ ),
+ ],
+ ),
+ body: Center(
+ child: Text(
+ GalleryLocalizations.of(context).dialogFullscreenDescription,
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+}
+
+// END
diff --git a/gallery/lib/demos/material/list_demo.dart b/gallery/lib/demos/material/list_demo.dart
new file mode 100644
index 0000000..fe550d5
--- /dev/null
+++ b/gallery/lib/demos/material/list_demo.dart
@@ -0,0 +1,50 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+
+import 'package:gallery/l10n/gallery_localizations.dart';
+
+// BEGIN listDemo
+
+enum ListDemoType {
+ oneLine,
+ twoLine,
+}
+
+class ListDemo extends StatelessWidget {
+ const ListDemo({Key key, this.type}) : super(key: key);
+
+ final ListDemoType type;
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: AppBar(
+ title: Text(GalleryLocalizations.of(context).demoListsTitle),
+ ),
+ body: Scrollbar(
+ child: ListView(
+ padding: EdgeInsets.symmetric(vertical: 8),
+ children: [
+ for (int index = 1; index < 21; index++)
+ ListTile(
+ leading: ExcludeSemantics(
+ child: CircleAvatar(child: Text('$index')),
+ ),
+ title: Text(
+ GalleryLocalizations.of(context).demoBottomSheetItem(index),
+ ),
+ subtitle: type == ListDemoType.twoLine
+ ? Text(GalleryLocalizations.of(context).demoListsSecondary)
+ : null,
+ ),
+ ],
+ ),
+ ),
+ );
+ }
+}
+
+// END
diff --git a/gallery/lib/demos/material/selection_controls_demo.dart b/gallery/lib/demos/material/selection_controls_demo.dart
new file mode 100644
index 0000000..c2608ec
--- /dev/null
+++ b/gallery/lib/demos/material/selection_controls_demo.dart
@@ -0,0 +1,170 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+
+import 'package:gallery/l10n/gallery_localizations.dart';
+
+enum SelectionControlsDemoType {
+ checkbox,
+ radio,
+ switches,
+}
+
+class SelectionControlsDemo extends StatelessWidget {
+ SelectionControlsDemo({Key key, @required this.type}) : super(key: key);
+
+ final SelectionControlsDemoType type;
+
+ String _title(BuildContext context) {
+ switch (type) {
+ case SelectionControlsDemoType.checkbox:
+ return GalleryLocalizations.of(context)
+ .demoSelectionControlsCheckboxTitle;
+ case SelectionControlsDemoType.radio:
+ return GalleryLocalizations.of(context).demoSelectionControlsRadioTitle;
+ case SelectionControlsDemoType.switches:
+ return GalleryLocalizations.of(context)
+ .demoSelectionControlsSwitchTitle;
+ }
+ return '';
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ Widget controls;
+ switch (type) {
+ case SelectionControlsDemoType.checkbox:
+ controls = _CheckboxDemo();
+ break;
+ case SelectionControlsDemoType.radio:
+ controls = _RadioDemo();
+ break;
+ case SelectionControlsDemoType.switches:
+ controls = _SwitchDemo();
+ break;
+ }
+
+ return Scaffold(
+ appBar: AppBar(
+ title: Text(_title(context)),
+ ),
+ body: controls,
+ );
+ }
+}
+
+// BEGIN selectionControlsDemoCheckbox
+
+class _CheckboxDemo extends StatefulWidget {
+ @override
+ _CheckboxDemoState createState() => _CheckboxDemoState();
+}
+
+class _CheckboxDemoState extends State<_CheckboxDemo> {
+ bool checkboxValueA = true;
+ bool checkboxValueB = false;
+ bool checkboxValueC;
+
+ @override
+ Widget build(BuildContext context) {
+ return Center(
+ child: Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Checkbox(
+ value: checkboxValueA,
+ onChanged: (value) {
+ setState(() {
+ checkboxValueA = value;
+ });
+ },
+ ),
+ Checkbox(
+ value: checkboxValueB,
+ onChanged: (value) {
+ setState(() {
+ checkboxValueB = value;
+ });
+ },
+ ),
+ Checkbox(
+ value: checkboxValueC,
+ tristate: true,
+ onChanged: (value) {
+ setState(() {
+ checkboxValueC = value;
+ });
+ },
+ ),
+ ],
+ ),
+ );
+ }
+}
+
+// END
+
+// BEGIN selectionControlsDemoRadio
+
+class _RadioDemo extends StatefulWidget {
+ @override
+ _RadioDemoState createState() => _RadioDemoState();
+}
+
+class _RadioDemoState extends State<_RadioDemo> {
+ int radioValue = 0;
+
+ void handleRadioValueChanged(int value) {
+ setState(() {
+ radioValue = value;
+ });
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Center(
+ child: Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ for (int index = 0; index < 3; ++index)
+ Radio<int>(
+ value: index,
+ groupValue: radioValue,
+ onChanged: handleRadioValueChanged,
+ ),
+ ],
+ ),
+ );
+ }
+}
+
+// END
+
+// BEGIN selectionControlsDemoSwitches
+
+class _SwitchDemo extends StatefulWidget {
+ @override
+ _SwitchDemoState createState() => _SwitchDemoState();
+}
+
+class _SwitchDemoState extends State<_SwitchDemo> {
+ bool switchValue = false;
+
+ @override
+ Widget build(BuildContext context) {
+ return Center(
+ child: Switch(
+ value: switchValue,
+ onChanged: (value) {
+ setState(() {
+ switchValue = value;
+ });
+ },
+ ),
+ );
+ }
+}
+
+// END
diff --git a/gallery/lib/demos/material/tabs_demo.dart b/gallery/lib/demos/material/tabs_demo.dart
new file mode 100644
index 0000000..d78f52a
--- /dev/null
+++ b/gallery/lib/demos/material/tabs_demo.dart
@@ -0,0 +1,47 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+import 'package:gallery/l10n/gallery_localizations.dart';
+
+// BEGIN tabsDemo
+
+class TabsDemo extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ List<String> tabs = [
+ GalleryLocalizations.of(context).colorsRed,
+ GalleryLocalizations.of(context).colorsOrange,
+ GalleryLocalizations.of(context).colorsGreen,
+ GalleryLocalizations.of(context).colorsBlue,
+ GalleryLocalizations.of(context).colorsIndigo,
+ GalleryLocalizations.of(context).colorsPurple,
+ ];
+
+ return DefaultTabController(
+ length: tabs.length,
+ child: Scaffold(
+ appBar: AppBar(
+ title: Text(GalleryLocalizations.of(context).demoTabsTitle),
+ bottom: TabBar(
+ isScrollable: true,
+ tabs: [
+ for (final tab in tabs) Tab(text: tab),
+ ],
+ ),
+ ),
+ body: TabBarView(
+ children: [
+ for (final tab in tabs)
+ Center(
+ child: Text(tab),
+ ),
+ ],
+ ),
+ ),
+ );
+ }
+}
+
+// END
diff --git a/gallery/lib/demos/material/text_field_demo.dart b/gallery/lib/demos/material/text_field_demo.dart
new file mode 100644
index 0000000..35939a1
--- /dev/null
+++ b/gallery/lib/demos/material/text_field_demo.dart
@@ -0,0 +1,354 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+
+import 'package:flutter/services.dart';
+import 'package:flutter/gestures.dart' show DragStartBehavior;
+
+import 'package:gallery/l10n/gallery_localizations.dart';
+
+// BEGIN textFieldDemo
+
+class TextFieldDemo extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: AppBar(
+ title: Text(GalleryLocalizations.of(context).demoTextFieldTitle),
+ ),
+ body: TextFormFieldDemo(),
+ );
+ }
+}
+
+class TextFormFieldDemo extends StatefulWidget {
+ const TextFormFieldDemo({Key key}) : super(key: key);
+
+ @override
+ TextFormFieldDemoState createState() => TextFormFieldDemoState();
+}
+
+class PersonData {
+ String name = '';
+ String phoneNumber = '';
+ String email = '';
+ String password = '';
+}
+
+class PasswordField extends StatefulWidget {
+ const PasswordField({
+ this.fieldKey,
+ this.hintText,
+ this.labelText,
+ this.helperText,
+ this.onSaved,
+ this.validator,
+ this.onFieldSubmitted,
+ });
+
+ final Key fieldKey;
+ final String hintText;
+ final String labelText;
+ final String helperText;
+ final FormFieldSetter<String> onSaved;
+ final FormFieldValidator<String> validator;
+ final ValueChanged<String> onFieldSubmitted;
+
+ @override
+ _PasswordFieldState createState() => _PasswordFieldState();
+}
+
+class _PasswordFieldState extends State<PasswordField> {
+ bool _obscureText = true;
+
+ @override
+ Widget build(BuildContext context) {
+ return TextFormField(
+ key: widget.fieldKey,
+ obscureText: _obscureText,
+ cursorColor: Theme.of(context).cursorColor,
+ maxLength: 8,
+ onSaved: widget.onSaved,
+ validator: widget.validator,
+ onFieldSubmitted: widget.onFieldSubmitted,
+ decoration: InputDecoration(
+ filled: true,
+ hintText: widget.hintText,
+ labelText: widget.labelText,
+ helperText: widget.helperText,
+ suffixIcon: GestureDetector(
+ dragStartBehavior: DragStartBehavior.down,
+ onTap: () {
+ setState(() {
+ _obscureText = !_obscureText;
+ });
+ },
+ child: Icon(
+ _obscureText ? Icons.visibility : Icons.visibility_off,
+ semanticLabel: _obscureText
+ ? GalleryLocalizations.of(context)
+ .demoTextFieldShowPasswordLabel
+ : GalleryLocalizations.of(context)
+ .demoTextFieldHidePasswordLabel,
+ ),
+ ),
+ ),
+ );
+ }
+}
+
+class TextFormFieldDemoState extends State<TextFormFieldDemo> {
+ final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
+
+ PersonData person = PersonData();
+
+ void showInSnackBar(String value) {
+ _scaffoldKey.currentState.showSnackBar(SnackBar(
+ content: Text(value),
+ ));
+ }
+
+ bool _autoValidate = false;
+
+ final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
+ final GlobalKey<FormFieldState<String>> _passwordFieldKey =
+ GlobalKey<FormFieldState<String>>();
+ final _UsNumberTextInputFormatter _phoneNumberFormatter =
+ _UsNumberTextInputFormatter();
+
+ void _handleSubmitted() {
+ final form = _formKey.currentState;
+ if (!form.validate()) {
+ _autoValidate = true; // Start validating on every change.
+ showInSnackBar(
+ GalleryLocalizations.of(context).demoTextFieldFormErrors,
+ );
+ } else {
+ form.save();
+ showInSnackBar(GalleryLocalizations.of(context)
+ .demoTextFieldNameHasPhoneNumber(person.name, person.phoneNumber));
+ }
+ }
+
+ String _validateName(String value) {
+ if (value.isEmpty) {
+ return GalleryLocalizations.of(context).demoTextFieldNameRequired;
+ }
+ final nameExp = RegExp(r'^[A-Za-z ]+$');
+ if (!nameExp.hasMatch(value)) {
+ return GalleryLocalizations.of(context)
+ .demoTextFieldOnlyAlphabeticalChars;
+ }
+ return null;
+ }
+
+ String _validatePhoneNumber(String value) {
+ final phoneExp = RegExp(r'^\(\d\d\d\) \d\d\d\-\d\d\d\d$');
+ if (!phoneExp.hasMatch(value)) {
+ return GalleryLocalizations.of(context).demoTextFieldEnterUSPhoneNumber;
+ }
+ return null;
+ }
+
+ String _validatePassword(String value) {
+ final passwordField = _passwordFieldKey.currentState;
+ if (passwordField.value == null || passwordField.value.isEmpty) {
+ return GalleryLocalizations.of(context).demoTextFieldEnterPassword;
+ }
+ if (passwordField.value != value) {
+ return GalleryLocalizations.of(context).demoTextFieldPasswordsDoNotMatch;
+ }
+ return null;
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ final cursorColor = Theme.of(context).cursorColor;
+ const sizedBoxSpace = SizedBox(height: 24);
+
+ return Scaffold(
+ key: _scaffoldKey,
+ body: Form(
+ key: _formKey,
+ autovalidate: _autoValidate,
+ child: Scrollbar(
+ child: SingleChildScrollView(
+ dragStartBehavior: DragStartBehavior.down,
+ padding: const EdgeInsets.symmetric(horizontal: 16),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.stretch,
+ children: [
+ sizedBoxSpace,
+ TextFormField(
+ textCapitalization: TextCapitalization.words,
+ cursorColor: cursorColor,
+ decoration: InputDecoration(
+ filled: true,
+ icon: Icon(Icons.person),
+ hintText: GalleryLocalizations.of(context)
+ .demoTextFieldWhatDoPeopleCallYou,
+ labelText:
+ GalleryLocalizations.of(context).demoTextFieldNameField,
+ ),
+ onSaved: (value) {
+ person.name = value;
+ },
+ validator: _validateName,
+ ),
+ sizedBoxSpace,
+ TextFormField(
+ cursorColor: cursorColor,
+ decoration: InputDecoration(
+ filled: true,
+ icon: Icon(Icons.phone),
+ hintText: GalleryLocalizations.of(context)
+ .demoTextFieldWhereCanWeReachYou,
+ labelText: GalleryLocalizations.of(context)
+ .demoTextFieldPhoneNumber,
+ prefixText: '+1',
+ ),
+ keyboardType: TextInputType.phone,
+ onSaved: (value) {
+ person.phoneNumber = value;
+ },
+ validator: _validatePhoneNumber,
+ // TextInputFormatters are applied in sequence.
+ inputFormatters: <TextInputFormatter>[
+ WhitelistingTextInputFormatter.digitsOnly,
+ // Fit the validating format.
+ _phoneNumberFormatter,
+ ],
+ ),
+ sizedBoxSpace,
+ TextFormField(
+ cursorColor: cursorColor,
+ decoration: InputDecoration(
+ filled: true,
+ icon: Icon(Icons.email),
+ hintText: GalleryLocalizations.of(context)
+ .demoTextFieldYourEmailAddress,
+ labelText:
+ GalleryLocalizations.of(context).demoTextFieldEmail,
+ ),
+ keyboardType: TextInputType.emailAddress,
+ onSaved: (value) {
+ person.email = value;
+ },
+ ),
+ sizedBoxSpace,
+ TextFormField(
+ cursorColor: cursorColor,
+ decoration: InputDecoration(
+ border: OutlineInputBorder(),
+ hintText: GalleryLocalizations.of(context)
+ .demoTextFieldTellUsAboutYourself,
+ helperText: GalleryLocalizations.of(context)
+ .demoTextFieldKeepItShort,
+ labelText:
+ GalleryLocalizations.of(context).demoTextFieldLifeStory,
+ ),
+ maxLines: 3,
+ ),
+ sizedBoxSpace,
+ TextFormField(
+ cursorColor: cursorColor,
+ keyboardType: TextInputType.number,
+ decoration: InputDecoration(
+ border: OutlineInputBorder(),
+ labelText:
+ GalleryLocalizations.of(context).demoTextFieldSalary,
+ suffixText:
+ GalleryLocalizations.of(context).demoTextFieldUSD,
+ suffixStyle: TextStyle(color: Colors.green),
+ ),
+ maxLines: 1,
+ ),
+ sizedBoxSpace,
+ PasswordField(
+ fieldKey: _passwordFieldKey,
+ helperText:
+ GalleryLocalizations.of(context).demoTextFieldNoMoreThan,
+ labelText:
+ GalleryLocalizations.of(context).demoTextFieldPassword,
+ onFieldSubmitted: (value) {
+ setState(() {
+ person.password = value;
+ });
+ },
+ ),
+ sizedBoxSpace,
+ TextFormField(
+ cursorColor: cursorColor,
+ decoration: InputDecoration(
+ filled: true,
+ labelText: GalleryLocalizations.of(context)
+ .demoTextFieldRetypePassword,
+ ),
+ maxLength: 8,
+ obscureText: true,
+ validator: _validatePassword,
+ ),
+ sizedBoxSpace,
+ Center(
+ child: RaisedButton(
+ child: Text(
+ GalleryLocalizations.of(context).demoTextFieldSubmit),
+ onPressed: _handleSubmitted,
+ ),
+ ),
+ sizedBoxSpace,
+ Text(
+ GalleryLocalizations.of(context).demoTextFieldRequiredField,
+ style: Theme.of(context).textTheme.caption,
+ ),
+ sizedBoxSpace,
+ ],
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+}
+
+/// Format incoming numeric text to fit the format of (###) ###-#### ##
+class _UsNumberTextInputFormatter extends TextInputFormatter {
+ @override
+ TextEditingValue formatEditUpdate(
+ TextEditingValue oldValue,
+ TextEditingValue newValue,
+ ) {
+ final newTextLength = newValue.text.length;
+ final newText = StringBuffer();
+ int selectionIndex = newValue.selection.end;
+ int usedSubstringIndex = 0;
+ if (newTextLength >= 1) {
+ newText.write('(');
+ if (newValue.selection.end >= 1) selectionIndex++;
+ }
+ if (newTextLength >= 4) {
+ newText.write(newValue.text.substring(0, usedSubstringIndex = 3) + ') ');
+ if (newValue.selection.end >= 3) selectionIndex += 2;
+ }
+ if (newTextLength >= 7) {
+ newText.write(newValue.text.substring(3, usedSubstringIndex = 6) + '-');
+ if (newValue.selection.end >= 6) selectionIndex++;
+ }
+ if (newTextLength >= 11) {
+ newText.write(newValue.text.substring(6, usedSubstringIndex = 10) + ' ');
+ if (newValue.selection.end >= 10) selectionIndex++;
+ }
+ // Dump the rest.
+ if (newTextLength >= usedSubstringIndex) {
+ newText.write(newValue.text.substring(usedSubstringIndex));
+ }
+ return TextEditingValue(
+ text: newText.toString(),
+ selection: TextSelection.collapsed(offset: selectionIndex),
+ );
+ }
+}
+
+// END
diff --git a/gallery/lib/demos/reference/colors_demo.dart b/gallery/lib/demos/reference/colors_demo.dart
new file mode 100644
index 0000000..418e5e9
--- /dev/null
+++ b/gallery/lib/demos/reference/colors_demo.dart
@@ -0,0 +1,264 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+
+import 'package:gallery/l10n/gallery_localizations.dart';
+
+// BEGIN colorsDemo
+
+const double kColorItemHeight = 48;
+
+class _Palette {
+ _Palette({
+ this.name,
+ this.primary,
+ this.accent,
+ this.threshold = 900,
+ }) : assert(name != null),
+ assert(primary != null),
+ assert(threshold != null);
+
+ final String name;
+ final MaterialColor primary;
+ final MaterialAccentColor accent;
+ // Titles for indices > threshold are white, otherwise black.
+ final int threshold;
+}
+
+List<_Palette> _allPalettes(BuildContext context) {
+ return [
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsRed,
+ primary: Colors.red,
+ accent: Colors.redAccent,
+ threshold: 300,
+ ),
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsPink,
+ primary: Colors.pink,
+ accent: Colors.pinkAccent,
+ threshold: 200,
+ ),
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsPurple,
+ primary: Colors.purple,
+ accent: Colors.purpleAccent,
+ threshold: 200,
+ ),
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsDeepPurple,
+ primary: Colors.deepPurple,
+ accent: Colors.deepPurpleAccent,
+ threshold: 200,
+ ),
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsIndigo,
+ primary: Colors.indigo,
+ accent: Colors.indigoAccent,
+ threshold: 200,
+ ),
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsBlue,
+ primary: Colors.blue,
+ accent: Colors.blueAccent,
+ threshold: 400,
+ ),
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsLightBlue,
+ primary: Colors.lightBlue,
+ accent: Colors.lightBlueAccent,
+ threshold: 500,
+ ),
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsCyan,
+ primary: Colors.cyan,
+ accent: Colors.cyanAccent,
+ threshold: 600,
+ ),
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsTeal,
+ primary: Colors.teal,
+ accent: Colors.tealAccent,
+ threshold: 400,
+ ),
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsGreen,
+ primary: Colors.green,
+ accent: Colors.greenAccent,
+ threshold: 500),
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsLightGreen,
+ primary: Colors.lightGreen,
+ accent: Colors.lightGreenAccent,
+ threshold: 600,
+ ),
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsLime,
+ primary: Colors.lime,
+ accent: Colors.limeAccent,
+ threshold: 800,
+ ),
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsYellow,
+ primary: Colors.yellow,
+ accent: Colors.yellowAccent,
+ ),
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsAmber,
+ primary: Colors.amber,
+ accent: Colors.amberAccent,
+ ),
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsOrange,
+ primary: Colors.orange,
+ accent: Colors.orangeAccent,
+ threshold: 700,
+ ),
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsDeepOrange,
+ primary: Colors.deepOrange,
+ accent: Colors.deepOrangeAccent,
+ threshold: 400,
+ ),
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsBrown,
+ primary: Colors.brown,
+ threshold: 200,
+ ),
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsGrey,
+ primary: Colors.grey,
+ threshold: 500,
+ ),
+ _Palette(
+ name: GalleryLocalizations.of(context).colorsBlueGrey,
+ primary: Colors.blueGrey,
+ threshold: 500,
+ ),
+ ];
+}
+
+class _ColorItem extends StatelessWidget {
+ const _ColorItem({
+ Key key,
+ @required this.index,
+ @required this.color,
+ this.prefix = '',
+ }) : assert(index != null),
+ assert(color != null),
+ assert(prefix != null),
+ super(key: key);
+
+ final int index;
+ final Color color;
+ final String prefix;
+
+ String get _colorString =>
+ "#${color.value.toRadixString(16).padLeft(8, '0').toUpperCase()}";
+
+ @override
+ Widget build(BuildContext context) {
+ return Semantics(
+ container: true,
+ child: Container(
+ height: kColorItemHeight,
+ padding: const EdgeInsets.symmetric(horizontal: 16),
+ color: color,
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Text('$prefix$index'),
+ Flexible(child: Text(_colorString)),
+ ],
+ ),
+ ),
+ );
+ }
+}
+
+class PaletteTabView extends StatelessWidget {
+ PaletteTabView({
+ Key key,
+ @required this.colors,
+ }) : assert(colors != null),
+ super(key: key);
+
+ final _Palette colors;
+ static const primaryKeys = <int>[
+ 50,
+ 100,
+ 200,
+ 300,
+ 400,
+ 500,
+ 600,
+ 700,
+ 800,
+ 900
+ ];
+ static const accentKeys = <int>[100, 200, 400, 700];
+
+ @override
+ Widget build(BuildContext context) {
+ final TextTheme textTheme = Theme.of(context).textTheme;
+ final TextStyle whiteTextStyle = textTheme.body1.copyWith(
+ color: Colors.white,
+ );
+ final TextStyle blackTextStyle = textTheme.body1.copyWith(
+ color: Colors.black,
+ );
+ return Scrollbar(
+ child: ListView(
+ itemExtent: kColorItemHeight,
+ children: [
+ for (final key in primaryKeys)
+ DefaultTextStyle(
+ style: key > colors.threshold ? whiteTextStyle : blackTextStyle,
+ child: _ColorItem(index: key, color: colors.primary[key]),
+ ),
+ if (colors.accent != null)
+ for (final key in accentKeys)
+ DefaultTextStyle(
+ style: key > colors.threshold ? whiteTextStyle : blackTextStyle,
+ child: _ColorItem(
+ index: key,
+ color: colors.accent[key],
+ prefix: 'A',
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+}
+
+class ColorsDemo extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ final palettes = _allPalettes(context);
+ return DefaultTabController(
+ length: palettes.length,
+ child: Scaffold(
+ appBar: AppBar(
+ title: Text(GalleryLocalizations.of(context).demoColorsTitle),
+ bottom: TabBar(
+ isScrollable: true,
+ tabs: [
+ for (final palette in palettes) Tab(text: palette.name),
+ ],
+ ),
+ ),
+ body: TabBarView(
+ children: [
+ for (final palette in palettes) PaletteTabView(colors: palette),
+ ],
+ ),
+ ),
+ );
+ }
+}
+
+// END
diff --git a/gallery/lib/demos/reference/typography_demo.dart b/gallery/lib/demos/reference/typography_demo.dart
new file mode 100644
index 0000000..37fc466
--- /dev/null
+++ b/gallery/lib/demos/reference/typography_demo.dart
@@ -0,0 +1,127 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+
+import 'package:gallery/l10n/gallery_localizations.dart';
+
+// BEGIN typographyDemo
+
+class _TextStyleItem extends StatelessWidget {
+ const _TextStyleItem({
+ Key key,
+ @required this.name,
+ @required this.style,
+ @required this.text,
+ }) : assert(name != null),
+ assert(style != null),
+ assert(text != null),
+ super(key: key);
+
+ final String name;
+ final TextStyle style;
+ final String text;
+
+ @override
+ Widget build(BuildContext context) {
+ return Padding(
+ padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 16),
+ child: Row(
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ SizedBox(
+ width: 72,
+ child: Text(name, style: Theme.of(context).textTheme.caption),
+ ),
+ Expanded(
+ child: Text(text, style: style),
+ ),
+ ],
+ ),
+ );
+ }
+}
+
+class TypographyDemo extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ final textTheme = Theme.of(context).textTheme;
+ final styleItems = <Widget>[
+ _TextStyleItem(
+ name: 'Display 4',
+ style: textTheme.display4,
+ text: 'Light 96sp',
+ ),
+ _TextStyleItem(
+ name: 'Display 3',
+ style: textTheme.display3,
+ text: 'Light 60sp',
+ ),
+ _TextStyleItem(
+ name: 'Display 2',
+ style: textTheme.display2,
+ text: 'Regular 48sp',
+ ),
+ _TextStyleItem(
+ name: 'Display 1',
+ style: textTheme.display1,
+ text: 'Regular 34sp',
+ ),
+ _TextStyleItem(
+ name: 'Headline',
+ style: textTheme.headline,
+ text: 'Regular 24sp',
+ ),
+ _TextStyleItem(
+ name: 'Title',
+ style: textTheme.title,
+ text: 'Medium 20sp',
+ ),
+ _TextStyleItem(
+ name: 'Subhead',
+ style: textTheme.subhead,
+ text: 'Regular 16sp',
+ ),
+ _TextStyleItem(
+ name: 'Subtitle',
+ style: textTheme.subtitle,
+ text: 'Medium 14sp',
+ ),
+ _TextStyleItem(
+ name: 'Body 1',
+ style: textTheme.body1,
+ text: 'Regular 16sp',
+ ),
+ _TextStyleItem(
+ name: 'Body 2',
+ style: textTheme.body2,
+ text: 'Regular 14sp',
+ ),
+ _TextStyleItem(
+ name: 'Button',
+ style: textTheme.button,
+ text: 'MEDIUM (ALL CAPS) 14sp',
+ ),
+ _TextStyleItem(
+ name: 'Caption',
+ style: textTheme.caption,
+ text: 'Regular 12sp',
+ ),
+ _TextStyleItem(
+ name: 'Overline',
+ style: textTheme.overline,
+ text: 'REGULAR (ALL CAPS) 10sp',
+ ),
+ ];
+
+ return Scaffold(
+ appBar: AppBar(
+ title: Text(GalleryLocalizations.of(context).demoTypographyTitle),
+ ),
+ body: Scrollbar(child: ListView(children: styleItems)),
+ );
+ }
+}
+
+// END
diff --git a/gallery/lib/feature_discovery/animation.dart b/gallery/lib/feature_discovery/animation.dart
new file mode 100644
index 0000000..40358e5
--- /dev/null
+++ b/gallery/lib/feature_discovery/animation.dart
@@ -0,0 +1,247 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+
+/// Animations class to compute animation values for overlay widgets.
+///
+/// Values are loosely based on Material Design specs, which are minimal.
+class Animations {
+ final AnimationController openController;
+ final AnimationController tapController;
+ final AnimationController rippleController;
+ final AnimationController dismissController;
+
+ static const backgroundMaxOpacity = 0.96;
+ static const backgroundTapRadius = 20.0;
+ static const rippleMaxOpacity = 0.75;
+ static const tapTargetToContentDistance = 20.0;
+ static const tapTargetMaxRadius = 44.0;
+ static const tapTargetMinRadius = 20.0;
+ static const tapTargetRippleRadius = 64.0;
+
+ Animations(
+ this.openController,
+ this.tapController,
+ this.rippleController,
+ this.dismissController,
+ );
+
+ Animation<double> backgroundOpacity(FeatureDiscoveryStatus status) {
+ switch (status) {
+ case FeatureDiscoveryStatus.closed:
+ return AlwaysStoppedAnimation<double>(0);
+ case FeatureDiscoveryStatus.open:
+ return Tween<double>(begin: 0, end: backgroundMaxOpacity)
+ .animate(CurvedAnimation(
+ parent: openController,
+ curve: Interval(0, 0.5, curve: Curves.ease),
+ ));
+ case FeatureDiscoveryStatus.tap:
+ return Tween<double>(begin: backgroundMaxOpacity, end: 0)
+ .animate(CurvedAnimation(
+ parent: tapController,
+ curve: Curves.ease,
+ ));
+ case FeatureDiscoveryStatus.dismiss:
+ return Tween<double>(begin: backgroundMaxOpacity, end: 0)
+ .animate(CurvedAnimation(
+ parent: dismissController,
+ curve: Interval(0.2, 1.0, curve: Curves.ease),
+ ));
+ default:
+ return AlwaysStoppedAnimation<double>(backgroundMaxOpacity);
+ }
+ }
+
+ Animation<double> backgroundRadius(
+ FeatureDiscoveryStatus status,
+ double backgroundRadiusMax,
+ ) {
+ switch (status) {
+ case FeatureDiscoveryStatus.closed:
+ return AlwaysStoppedAnimation<double>(0);
+ case FeatureDiscoveryStatus.open:
+ return Tween<double>(begin: 0, end: backgroundRadiusMax)
+ .animate(CurvedAnimation(
+ parent: openController,
+ curve: Interval(0, 0.5, curve: Curves.ease),
+ ));
+ case FeatureDiscoveryStatus.tap:
+ return Tween<double>(
+ begin: backgroundRadiusMax,
+ end: backgroundRadiusMax + backgroundTapRadius)
+ .animate(CurvedAnimation(
+ parent: tapController,
+ curve: Curves.ease,
+ ));
+ case FeatureDiscoveryStatus.dismiss:
+ return Tween<double>(begin: backgroundRadiusMax, end: 0)
+ .animate(CurvedAnimation(
+ parent: dismissController,
+ curve: Curves.ease,
+ ));
+ default:
+ return AlwaysStoppedAnimation<double>(backgroundRadiusMax);
+ }
+ }
+
+ Animation<Offset> backgroundCenter(
+ FeatureDiscoveryStatus status,
+ Offset start,
+ Offset end,
+ ) {
+ switch (status) {
+ case FeatureDiscoveryStatus.closed:
+ return AlwaysStoppedAnimation<Offset>(start);
+ case FeatureDiscoveryStatus.open:
+ return Tween<Offset>(begin: start, end: end).animate(CurvedAnimation(
+ parent: openController,
+ curve: Interval(0, 0.5, curve: Curves.ease),
+ ));
+ case FeatureDiscoveryStatus.tap:
+ return Tween<Offset>(begin: end, end: start).animate(CurvedAnimation(
+ parent: tapController,
+ curve: Curves.ease,
+ ));
+ case FeatureDiscoveryStatus.dismiss:
+ return Tween<Offset>(begin: end, end: start).animate(CurvedAnimation(
+ parent: dismissController,
+ curve: Curves.ease,
+ ));
+ default:
+ return AlwaysStoppedAnimation<Offset>(end);
+ }
+ }
+
+ Animation<double> contentOpacity(FeatureDiscoveryStatus status) {
+ switch (status) {
+ case FeatureDiscoveryStatus.closed:
+ return AlwaysStoppedAnimation<double>(0);
+ case FeatureDiscoveryStatus.open:
+ return Tween<double>(begin: 0, end: 1.0).animate(CurvedAnimation(
+ parent: openController,
+ curve: Interval(0.4, 0.7, curve: Curves.ease),
+ ));
+ case FeatureDiscoveryStatus.tap:
+ return Tween<double>(begin: 1.0, end: 0).animate(CurvedAnimation(
+ parent: tapController,
+ curve: Interval(0, 0.4, curve: Curves.ease),
+ ));
+ case FeatureDiscoveryStatus.dismiss:
+ return Tween<double>(begin: 1.0, end: 0).animate(CurvedAnimation(
+ parent: dismissController,
+ curve: Interval(0, 0.4, curve: Curves.ease),
+ ));
+ default:
+ return AlwaysStoppedAnimation<double>(1.0);
+ }
+ }
+
+ Animation<double> rippleOpacity(FeatureDiscoveryStatus status) {
+ switch (status) {
+ case FeatureDiscoveryStatus.ripple:
+ return Tween<double>(begin: rippleMaxOpacity, end: 0)
+ .animate(CurvedAnimation(
+ parent: rippleController,
+ curve: Interval(0.3, 0.8, curve: Curves.ease),
+ ));
+ default:
+ return AlwaysStoppedAnimation<double>(0);
+ }
+ }
+
+ Animation<double> rippleRadius(FeatureDiscoveryStatus status) {
+ switch (status) {
+ case FeatureDiscoveryStatus.ripple:
+ if (rippleController.value >= 0.3 && rippleController.value <= 0.8) {
+ return Tween<double>(begin: tapTargetMaxRadius, end: 79.0)
+ .animate(CurvedAnimation(
+ parent: rippleController,
+ curve: Interval(0.3, 0.8, curve: Curves.ease),
+ ));
+ }
+ return AlwaysStoppedAnimation<double>(tapTargetMaxRadius);
+ default:
+ return AlwaysStoppedAnimation<double>(0);
+ }
+ }
+
+ Animation<double> tapTargetOpacity(FeatureDiscoveryStatus status) {
+ switch (status) {
+ case FeatureDiscoveryStatus.closed:
+ return AlwaysStoppedAnimation<double>(0);
+ case FeatureDiscoveryStatus.open:
+ return Tween<double>(begin: 0, end: 1.0).animate(CurvedAnimation(
+ parent: openController,
+ curve: Interval(0, 0.4, curve: Curves.ease),
+ ));
+ case FeatureDiscoveryStatus.tap:
+ return Tween<double>(begin: 1.0, end: 0).animate(CurvedAnimation(
+ parent: tapController,
+ curve: Interval(0.1, 0.6, curve: Curves.ease),
+ ));
+ case FeatureDiscoveryStatus.dismiss:
+ return Tween<double>(begin: 1.0, end: 0).animate(CurvedAnimation(
+ parent: dismissController,
+ curve: Interval(0.2, 0.8, curve: Curves.ease),
+ ));
+ default:
+ return AlwaysStoppedAnimation<double>(1.0);
+ }
+ }
+
+ Animation<double> tapTargetRadius(FeatureDiscoveryStatus status) {
+ switch (status) {
+ case FeatureDiscoveryStatus.closed:
+ return AlwaysStoppedAnimation<double>(tapTargetMinRadius);
+ case FeatureDiscoveryStatus.open:
+ return Tween<double>(begin: tapTargetMinRadius, end: tapTargetMaxRadius)
+ .animate(CurvedAnimation(
+ parent: openController,
+ curve: Interval(0, 0.4, curve: Curves.ease),
+ ));
+ case FeatureDiscoveryStatus.ripple:
+ if (rippleController.value < 0.3) {
+ return Tween<double>(
+ begin: tapTargetMaxRadius, end: tapTargetRippleRadius)
+ .animate(CurvedAnimation(
+ parent: rippleController,
+ curve: Interval(0, 0.3, curve: Curves.ease),
+ ));
+ } else if (rippleController.value < 0.6) {
+ return Tween<double>(
+ begin: tapTargetRippleRadius, end: tapTargetMaxRadius)
+ .animate(CurvedAnimation(
+ parent: rippleController,
+ curve: Interval(0.3, 0.6, curve: Curves.ease),
+ ));
+ }
+ return AlwaysStoppedAnimation<double>(tapTargetMaxRadius);
+ case FeatureDiscoveryStatus.tap:
+ return Tween<double>(begin: tapTargetMaxRadius, end: tapTargetMinRadius)
+ .animate(CurvedAnimation(
+ parent: tapController,
+ curve: Curves.ease,
+ ));
+ case FeatureDiscoveryStatus.dismiss:
+ return Tween<double>(begin: tapTargetMaxRadius, end: tapTargetMinRadius)
+ .animate(CurvedAnimation(
+ parent: dismissController,
+ curve: Curves.ease,
+ ));
+ default:
+ return AlwaysStoppedAnimation<double>(tapTargetMaxRadius);
+ }
+ }
+}
+
+/// Enum to indicate the current status of a [FeatureDiscovery] widget.
+enum FeatureDiscoveryStatus {
+ closed, // Overlay is closed.
+ open, // Overlay is opening.
+ ripple, // Overlay is rippling.
+ tap, // Overlay is tapped.
+ dismiss, // Overlay is being dismissed.
+}
diff --git a/gallery/lib/feature_discovery/feature_discovery.dart b/gallery/lib/feature_discovery/feature_discovery.dart
new file mode 100644
index 0000000..7fa663a
--- /dev/null
+++ b/gallery/lib/feature_discovery/feature_discovery.dart
@@ -0,0 +1,384 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/material.dart';
+import 'package:flutter/scheduler.dart';
+
+import 'package:gallery/feature_discovery/animation.dart';
+import 'package:gallery/feature_discovery/overlay.dart';
+
+/// [Widget] to enforce a global lock system for [FeatureDiscovery] widgets.
+///
+/// This widget enforces that at most one [FeatureDiscovery] widget in its
+/// widget tree is shown at a time.
+///
+/// Users wanting to use [FeatureDiscovery] need to put this controller
+/// above [FeatureDiscovery] widgets in the widget tree.
+class FeatureDiscoveryController extends StatefulWidget {
+ final Widget child;
+
+ FeatureDiscoveryController(this.child);
+
+ static _FeatureDiscoveryControllerState of(BuildContext context) {
+ final matchResult =
+ context.findAncestorStateOfType<_FeatureDiscoveryControllerState>();
+ if (matchResult != null) {
+ return matchResult;
+ }
+
+ throw FlutterError(
+ 'FeatureDiscoveryController.of() called with a context that does not '
+ 'contain a FeatureDiscoveryController.\n The context used was:\n '
+ '$context');
+ }
+
+ @override
+ _FeatureDiscoveryControllerState createState() =>
+ _FeatureDiscoveryControllerState();
+}
+
+class _FeatureDiscoveryControllerState
+ extends State<FeatureDiscoveryController> {
+ bool _isLocked = false;
+
+ /// Flag to indicate whether a [FeatureDiscovery] widget descendant is
+ /// currently showing its overlay or not.
+ ///
+ /// If true, then no other [FeatureDiscovery] widget should display its
+ /// overlay.
+ bool get isLocked => _isLocked;
+
+ /// Lock the controller.
+ ///
+ /// Note we do not [setState] here because this function will be called
+ /// by the first [FeatureDiscovery] ready to show its overlay, and any
+ /// additional [FeatureDiscovery] widgets wanting to show their overlays
+ /// will already be scheduled to be built, so the lock change will be caught
+ /// in their builds.
+ void lock() => _isLocked = true;
+
+ /// Unlock the controller.
+ void unlock() => setState(() => _isLocked = false);
+
+ @override
+ void didChangeDependencies() {
+ super.didChangeDependencies();
+ assert(
+ context.findAncestorStateOfType<_FeatureDiscoveryControllerState>() ==
+ null,
+ 'There should not be another ancestor of type '
+ 'FeatureDiscoveryController in the widget tree.',
+ );
+ }
+
+ @override
+ Widget build(BuildContext context) => widget.child;
+}
+
+/// Widget that highlights the [child] with an overlay.
+///
+/// This widget loosely follows the guidelines set forth in the Material Specs:
+/// https://material.io/archive/guidelines/growth-communications/feature-discovery.html.
+class FeatureDiscovery extends StatefulWidget {
+ /// Title to be displayed in the overlay.
+ final String title;
+
+ /// Description to be displayed in the overlay.
+ final String description;
+
+ /// Icon to be promoted.
+ final Icon child;
+
+ /// Flag to indicate whether to show the overlay or not anchored to the
+ /// [child].
+ final bool showOverlay;
+
+ /// Callback invoked when the user dismisses an overlay.
+ final void Function() onDismiss;
+
+ /// Callback invoked when the user taps on the tap target of an overlay.
+ final void Function() onTap;
+
+ /// Color with which to fill the outer circle.
+ final Color color;
+
+ @visibleForTesting
+ static final overlayKey = Key('overlay key');
+
+ @visibleForTesting
+ static final gestureDetectorKey = Key('gesture detector key');
+
+ FeatureDiscovery({
+ @required this.title,
+ @required this.description,
+ @required this.child,
+ @required this.showOverlay,
+ this.onDismiss,
+ this.onTap,
+ this.color,
+ }) {
+ assert(title != null);
+ assert(description != null);
+ assert(child != null);
+ assert(showOverlay != null);
+ }
+
+ @override
+ _FeatureDiscoveryState createState() => _FeatureDiscoveryState();
+}
+
+class _FeatureDiscoveryState extends State<FeatureDiscovery>
+ with TickerProviderStateMixin {
+ bool showOverlay = false;
+ FeatureDiscoveryStatus status = FeatureDiscoveryStatus.closed;
+
+ AnimationController openController;
+ AnimationController rippleController;
+ AnimationController tapController;
+ AnimationController dismissController;
+
+ Animations animations;
+ OverlayEntry overlay;
+
+ Widget buildOverlay(BuildContext ctx, Offset center) {
+ debugCheckHasMediaQuery(ctx);
+ debugCheckHasDirectionality(ctx);
+
+ final deviceSize = MediaQuery.of(ctx).size;
+ final color = widget.color ?? Theme.of(ctx).primaryColor;
+
+ // Wrap in transparent [Material] to enable widgets that require one.
+ return Material(
+ key: FeatureDiscovery.overlayKey,
+ type: MaterialType.transparency,
+ child: Stack(
+ children: <Widget>[
+ GestureDetector(
+ key: FeatureDiscovery.gestureDetectorKey,
+ onTap: dismiss,
+ child: Container(
+ width: double.infinity,
+ height: double.infinity,
+ color: Colors.transparent,
+ ),
+ ),
+ Background(
+ animations: animations,
+ status: status,
+ color: color,
+ center: center,
+ deviceSize: deviceSize,
+ textDirection: Directionality.of(ctx),
+ ),
+ Content(
+ animations: animations,
+ status: status,
+ center: center,
+ deviceSize: deviceSize,
+ title: widget.title,
+ description: widget.description,
+ textTheme: Theme.of(ctx).textTheme,
+ ),
+ Ripple(
+ animations: animations,
+ status: status,
+ center: center,
+ ),
+ TapTarget(
+ animations: animations,
+ status: status,
+ center: center,
+ child: widget.child,
+ onTap: tap,
+ ),
+ ],
+ ),
+ );
+ }
+
+ /// Method to handle user tap on [TapTarget].
+ ///
+ /// Tapping will stop any active controller and start the [tapController].
+ void tap() {
+ openController.stop();
+ rippleController.stop();
+ dismissController.stop();
+ tapController.forward(from: 0.0);
+ }
+
+ /// Method to handle user dismissal.
+ ///
+ /// Dismissal will stop any active controller and start the
+ /// [dismissController].
+ void dismiss() {
+ openController.stop();
+ rippleController.stop();
+ tapController.stop();
+ dismissController.forward(from: 0.0);
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return LayoutBuilder(builder: (ctx, _) {
+ if (overlay != null) {
+ SchedulerBinding.instance.addPostFrameCallback((_) {
+ // [OverlayEntry] needs to be explicitly rebuilt when necessary.
+ overlay.markNeedsBuild();
+ });
+ } else {
+ if (showOverlay && !FeatureDiscoveryController.of(ctx).isLocked) {
+ final entry = OverlayEntry(
+ builder: (_) => buildOverlay(ctx, getOverlayCenter(ctx)),
+ );
+
+ // Lock [FeatureDiscoveryController] early in order to prevent
+ // another [FeatureDiscovery] widget from trying to show its
+ // overlay while the post frame callback and set state are not
+ // complete.
+ FeatureDiscoveryController.of(ctx).lock();
+
+ SchedulerBinding.instance.addPostFrameCallback((_) {
+ setState(() {
+ overlay = entry;
+ status = FeatureDiscoveryStatus.closed;
+ openController.forward(from: 0.0);
+ });
+ Overlay.of(context).insert(entry);
+ });
+ }
+ }
+ return widget.child;
+ });
+ }
+
+ /// Compute the center position of the overlay.
+ Offset getOverlayCenter(BuildContext parentCtx) {
+ final box = parentCtx.findRenderObject() as RenderBox;
+ final size = box.size;
+ final topLeftPosition = box.localToGlobal(Offset.zero);
+ final centerPosition = Offset(
+ topLeftPosition.dx + size.width / 2,
+ topLeftPosition.dy + size.height / 2,
+ );
+ return centerPosition;
+ }
+
+ @override
+ void initState() {
+ super.initState();
+
+ initAnimationControllers();
+ initAnimations();
+ showOverlay = widget.showOverlay;
+ }
+
+ void initAnimationControllers() {
+ openController = AnimationController(
+ duration: const Duration(milliseconds: 500),
+ vsync: this,
+ )
+ ..addListener(() {
+ setState(() {});
+ })
+ ..addStatusListener((animationStatus) {
+ if (animationStatus == AnimationStatus.forward) {
+ setState(() => status = FeatureDiscoveryStatus.open);
+ } else if (animationStatus == AnimationStatus.completed) {
+ rippleController.forward(from: 0.0);
+ }
+ });
+
+ rippleController = AnimationController(
+ duration: const Duration(milliseconds: 1000),
+ vsync: this,
+ )
+ ..addListener(() {
+ setState(() {});
+ })
+ ..addStatusListener((animationStatus) {
+ if (animationStatus == AnimationStatus.forward) {
+ setState(() => status = FeatureDiscoveryStatus.ripple);
+ } else if (animationStatus == AnimationStatus.completed) {
+ rippleController.forward(from: 0.0);
+ }
+ });
+
+ tapController = AnimationController(
+ duration: const Duration(milliseconds: 250),
+ vsync: this,
+ )
+ ..addListener(() {
+ setState(() {});
+ })
+ ..addStatusListener((animationStatus) {
+ if (animationStatus == AnimationStatus.forward) {
+ setState(() => status = FeatureDiscoveryStatus.tap);
+ } else if (animationStatus == AnimationStatus.completed) {
+ widget.onTap?.call();
+ cleanUponOverlayClose();
+ }
+ });
+
+ dismissController = AnimationController(
+ duration: const Duration(milliseconds: 250),
+ vsync: this,
+ )
+ ..addListener(() {
+ setState(() {});
+ })
+ ..addStatusListener((animationStatus) {
+ if (animationStatus == AnimationStatus.forward) {
+ setState(() => status = FeatureDiscoveryStatus.dismiss);
+ } else if (animationStatus == AnimationStatus.completed) {
+ widget.onDismiss?.call();
+ cleanUponOverlayClose();
+ }
+ });
+ }
+
+ void initAnimations() {
+ assert(openController != null);
+ assert(rippleController != null);
+ assert(tapController != null);
+ assert(dismissController != null);
+
+ animations = Animations(
+ openController,
+ tapController,
+ rippleController,
+ dismissController,
+ );
+ }
+
+ /// Clean up once overlay has been dismissed or tap target has been tapped.
+ ///
+ /// This is called upon [tapController] and [dismissController] end.
+ void cleanUponOverlayClose() {
+ FeatureDiscoveryController.of(context).unlock();
+ setState(() {
+ status = FeatureDiscoveryStatus.closed;
+ showOverlay = false;
+ overlay?.remove();
+ overlay = null;
+ });
+ }
+
+ @override
+ void didUpdateWidget(FeatureDiscovery oldWidget) {
+ super.didUpdateWidget(oldWidget);
+ if (widget.showOverlay != oldWidget.showOverlay) {
+ showOverlay = widget.showOverlay;
+ }
+ }
+
+ @override
+ void dispose() {
+ overlay?.remove();
+ openController?.dispose();
+ rippleController?.dispose();
+ tapController?.dispose();
+ dismissController?.dispose();
+ super.dispose();
+ }
+}
diff --git a/gallery/lib/feature_discovery/overlay.dart b/gallery/lib/feature_discovery/overlay.dart
new file mode 100644
index 0000000..e363186
--- /dev/null
+++ b/gallery/lib/feature_discovery/overlay.dart
@@ -0,0 +1,401 @@
+// Copyright 2019 The Flutter team. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'dart:math';
+
+import 'package:flutter/material.dart';
+
+import 'package:gallery/feature_discovery/animation.dart';
+
+const contentHeight = 80.0;
+const contentWidth = 300.0;
+const contentHorizontalPadding = 40.0;
+const tapTargetRadius = 44.0;
+const tapTargetToContentDistance = 20.0;
+const gutterHeight = 88.0;
+
+/// Background of the overlay.
+class Background extends StatelessWidget {
+ /// Animations.
+ final Animations animations;
+
+ /// Overlay center position.
+ final Offset center;
+
+ /// Color of the background.
+ final Color color;
+
+ /// Device size.
+ final Size deviceSize;
+
+ /// Status of the parent overlay.
+ final FeatureDiscoveryStatus status;
+
+ /// Directionality of content.
+ final TextDirection textDirection;
+
+ static const horizontalShift = 20.0;
+ static const padding = 40.0;
+
+ Background({
+ @required this.animations,
+ @required this.center,
+ @required this.color,
+ @required this.deviceSize,
+ @required this.status,
+ @required this.textDirection,
+ }) {
+ assert(animations != null);
+ assert(center != null);
+ assert(color != null);
+ assert(deviceSize != null);
+ assert(status != null);
+ assert(textDirection != null);
+ }
+
+ /// Compute the center position of the background.
+ ///
+ /// If [center] is near the top or bottom edges of the screen, then
+ /// background is centered there.
+ /// Otherwise, background center is calculated and upon opening, animated
+ /// from [center] to the new calculated position.
+ Offset get centerPosition {
+ if (_isNearTopOrBottomEdges(center, deviceSize)) {
+ return center;
+ } else {
+ final start = center;
+
+ // dy of centerPosition is calculated to be the furthest point in
+ // [Content] from the [center].
+ double endY;
+ if (_isOnTopHalfOfScreen(center, deviceSize)) {
+ endY = center.dy -
+ tapTargetRadius -
+ tapTargetToContentDistance -
+ contentHeight;
+ if (endY < 0.0) {
+ endY = center.dy + tapTargetRadius + tapTargetToContentDistance;
+ }
+ } else {
+ endY = center.dy + tapTargetRadius + tapTargetToContentDistance;
+ if (endY + contentHeight > deviceSize.height) {
+ endY = center.dy -
+ tapTargetRadius -
+ tapTargetToContentDistance -
+ contentHeight;
+ }
+ }
+
+ // Horizontal background center shift based on whether the tap target is
+ // on the left, center, or right side of the screen.
+ double shift;
+ if (_isOnLeftHalfOfScreen(center, deviceSize)) {
+ shift = horizontalShift;
+ } else if (center.dx == deviceSize.width / 2) {
+ shift = textDirection == TextDirection.ltr
+ ? -horizontalShift
+ : horizontalShift;
+ } else {
+ shift = -horizontalShift;
+ }
+
+ // dx of centerPosition is calculated to be the middle point of the
+ // [Content] bounds shifted by [horizontalShift].
+ final textBounds = _getContentBounds(deviceSize, center);
+ final left = min(textBounds.left, center.dx - 88.0);
+ final right = max(textBounds.right, center.dx + 88.0);
+ final endX = (left + right) / 2 + shift;
+ final end = Offset(endX, endY);
+
+ return animations.backgroundCenter(status, start, end).value;
+ }
+ }
+
+ /// Compute the radius.
+ ///
+ /// Radius is a function of the greatest distance from [center] to one of
+ /// the corners of [Content].
+ double get radius {
+ final textBounds = _getContentBounds(deviceSize, center);
+ final textRadius = _maxDistance(center, textBounds) + padding;
+ if (_isNearTopOrBottomEdges(center, deviceSize)) {
+ return animations.backgroundRadius(status, textRadius).value;
+ } else {
+ // Scale down radius if icon is towards the middle of the screen.
+ return animations.backgroundRadius(status, textRadius).value * 0.8;
+ }
+ }
+
+ double get opacity => animations.backgroundOpacity(status).value;
+
+ @override
+ Widget build(BuildContext context) {
+ return Positioned(
+ left: centerPosition.dx,
+ top: centerPosition.dy,
+ child: FractionalTranslation(
+ translation: Offset(-0.5, -0.5),
+ child: Opacity(
+ opacity: opacity,
+ child: Container(
+ height: radius * 2,
+ width: radius * 2,
+ decoration: BoxDecoration(
+ shape: BoxShape.circle,
+ color: color,
+ ),
+ ),
+ ),
+ ));
+ }
+
+ /// Compute the maximum distance from [point] to the four corners of [bounds].
+ double _maxDistance(Offset point, Rect bounds) {
+ double distance(double x1, double y1, double x2, double y2) {
+ return sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
+ }
+
+ final tl = distance(point.dx, point.dy, bounds.left, bounds.top);
+ final tr = distance(point.dx, point.dy, bounds.right, bounds.top);
+ final bl = distance(point.dx, point.dy, bounds.left, bounds.bottom);
+ final br = distance(point.dx, point.dy, bounds.right, bounds.bottom);
+ return max(tl, max(tr, max(bl, br)));
+ }
+}
+
+/// Widget that represents the text to show in the overlay.
+class Content extends StatelessWidget {
+ /// Animations.
+ final Animations animations;
+
+ /// Overlay center position.
+ final Offset center;
+
+ /// Description.
+ final String description;
+
+ /// Device size.
+ final Size deviceSize;
+
+ /// Status of the parent overlay.
+ final FeatureDiscoveryStatus status;
+
+ /// Title.
+ final String title;
+
+ /// [TextTheme] to use for drawing the [title] and the [description].
+ final TextTheme textTheme;
+
+ Content({
+ @required this.animations,
+ @required this.center,
+ @required this.description,
+ @required this.deviceSize,
+ @required this.status,
+ @required this.title,
+ @required this.textTheme,
+ }) {
+ assert(animations != null);
+ assert(center != null);
+ assert(description != null);
+ assert(deviceSize != null);
+ assert(status != null);
+ assert(title != null);
+ assert(textTheme != null);
+ }
+
+ double get opacity => animations.contentOpacity(status).value;
+
+ @override
+ Widget build(BuildContext context) {
+ final position = _getContentBounds(deviceSize, center);
+
+ return Positioned(
+ left: position.left,
+ height: position.bottom - position.top,
+ width: position.right - position.left,
+ top: position.top,
+ child: Opacity(
+ opacity: opacity,
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: <Widget>[
+ _buildTitle(textTheme),
+ SizedBox(height: 12.0),
+ _buildDescription(textTheme),
+ ],
+ ),
+ ),
+ );
+ }
+
+ Widget _buildTitle(TextTheme theme) {
+ return Text(
+ title,
+ maxLines: 1,
+ overflow: TextOverflow.ellipsis,
+ style: theme.title.copyWith(color: Colors.white),
+ );
+ }
+
+ Widget _buildDescription(TextTheme theme) {
+ return Text(
+ description,
+ maxLines: 2,
+ overflow: TextOverflow.ellipsis,
+ style: theme.subhead.copyWith(color: Colors.white70),
+ );
+ }
+}
+
+/// Widget that represents the ripple effect of [TapTarget].
+class Ripple extends StatelessWidget {
+ /// Animations.
+ final Animations animations;
+
+ /// Overlay center position.
+ final Offset center;
+
+ /// Status of the parent overlay.
+ final FeatureDiscoveryStatus status;
+
+ Ripple({
+ @required this.animations,
+ @required this.center,
+ @required this.status,
+ }) {
+ assert(animations != null);
+ assert(center != null);
+ assert(status != null);
+ }
+
+ double get radius => animations.rippleRadius(status).value;
+ double get opacity => animations.rippleOpacity(status).value;
+
+ @override
+ Widget build(BuildContext context) {
+ return Positioned(
+ left: center.dx,
+ top: center.dy,
+ child: FractionalTranslation(
+ translation: Offset(-0.5, -0.5),
+ child: Opacity(
+ opacity: opacity,
+ child: Container(
+ height: radius * 2,
+ width: radius * 2,
+ decoration: BoxDecoration(
+ color: Colors.white,
+ shape: BoxShape.circle,
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+}
+
+/// Wrapper widget around [child] representing the anchor of the overlay.
+class TapTarget extends StatelessWidget {
+ /// Animations.
+ final Animations animations;
+
+ /// Device size.
+ final Offset center;
+
+ /// Status of the parent overlay.
+ final FeatureDiscoveryStatus status;
+
+ /// Callback invoked when the user taps on the [TapTarget].
+ final void Function() onTap;
+
+ /// Child widget that will be promoted by the overlay.
+ final Icon child;
+
+ TapTarget({
+ @required this.animations,
+ @required this.center,
+ @required this.status,
+ @required this.onTap,
+ @required this.child,
+ }) {
+ assert(animations != null);
+ assert(center != null);
+ assert(status != null);
+ assert(onTap != null);
+ assert(child != null);
+ }
+
+ double get radius => animations.tapTargetRadius(status).value;
+ double get opacity => animations.tapTargetOpacity(status).value;
+
+ @override
+ Widget build(BuildContext context) {
+ return Positioned(
+ left: center.dx,
+ top: center.dy,
+ child: FractionalTranslation(
+ translation: Offset(-0.5, -0.5),
+ child: InkWell(
+ onTap: onTap,
+ child: Opacity(
+ opacity: opacity,
+ child: Container(
+ height: radius * 2,
+ width: radius * 2,
+ decoration: BoxDecoration(
+ color: Colors.white,
+ shape: BoxShape.circle,
+ ),
+ child: child,
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+}
+
+/// Method to compute the bounds of the content.
+///
+/// This is exposed so it can be used for calculating the background radius
+/// and center and for laying out the content.
+Rect _getContentBounds(Size deviceSize, Offset overlayCenter) {
+ double top;
+ if (_isOnTopHalfOfScreen(overlayCenter, deviceSize)) {
+ top = overlayCenter.dy -
+ tapTargetRadius -
+ tapTargetToContentDistance -
+ contentHeight;
+ if (top < 0) {
+ top = overlayCenter.dy + tapTargetRadius + tapTargetToContentDistance;
+ }
+ } else {
+ top = overlayCenter.dy + tapTargetRadius + tapTargetToContentDistance;
+ if (top + contentHeight > deviceSize.height) {
+ top = overlayCenter.dy -
+ tapTargetRadius -
+ tapTargetToContentDistance -
+ contentHeight;
+ }
+ }
+
+ final left = max(contentHorizontalPadding, overlayCenter.dx - contentWidth);
+ final right =
+ min(deviceSize.width - contentHorizontalPadding, left + contentWidth);
+ return Rect.fromLTRB(left, top, right, top + contentHeight);
+}
+
+bool _isNearTopOrBottomEdges(Offset position, Size deviceSize) {
+ return position.dy <= gutterHeight ||
+ (deviceSize.height - position.dy) <= gutterHeight;
+}
+
+bool _isOnTopHalfOfScreen(Offset position, Size deviceSize) {
+ return position.dy < (deviceSize.height / 2.0);
+}
+
+bool _isOnLeftHalfOfScreen(Offset position, Size deviceSize) {
+ return position.dx < (deviceSize.width / 2.0);
+}
diff --git a/gallery/lib/l10n/README.md b/gallery/lib/l10n/README.md
new file mode 100644
index 0000000..334bf65
--- /dev/null
+++ b/gallery/lib/l10n/README.md
@@ -0,0 +1,87 @@
+# Localization
+
+## Generating New Locale Messages
+
+When adding new strings to be localized, update `intl_en_US.arb`, which
+is used by this project as the template. When creating new entries, they
+have to be in the following format:
+
+```arb
+ "dartGetterVariableName": "english translation of the message",
+ "@dartGetterVariableName": {
+ "description": "description that the localizations delegate will use."
+ },
+```
+
+In this example, `dartGetterVariableName` should be the Dart method/property
+name that you will be using in your localizations delegate.
+
+After adding the new message in `intl_en_US.arb`, it can be used in the app by
+regenerating the GalleryLocalizations delegate and the `messages_*.dart` files.
+This allows use of the English message through your localizations delegate in
+the application code immediately without having to wait for the translations
+to be completed.
+
+To generate `GalleryLocalizations`, from `gallery/` run:
+```
+make l10n
+```
+
+For more details on what `make l10n` runs, you can read below under Generate GalleryLocalizations.
+
+The current supported locales list is sorted alphabetically. So after running the script, update
+`gallery_localizations.dart` to move the `en_US` locale to the top of the list.
+
+## Generate GalleryLocalizations
+To generate GalleryLocalizations, from `gallery/` run:
+
+```dart
+dart ${YOUR_FLUTTER_PATH}/dev/tools/localization/bin/gen_l10n.dart \
+ --template-arb-file=intl_en_US.arb \
+ --output-localization-file=gallery_localizations.dart \
+ --output-class=GalleryLocalizations
+```
+
+From `gallery/`, run `dart ../l10n_cli/bin/main.dart`, which will generate
+`intl_en_US.xml`. This will be used by the internal translation console to
+generate messages in the different locales.
+
+Run the formatter to make the Flutter analyzer happy:
+```
+flutter format .
+```
+
+## Generating New Locale Arb Files
+
+Use the internal tool to create the `intl_<locale>.arb` files once the
+translations are ready.
+
+## Generating Flutter Localization Files
+
+If new translations are ready and the `intl_<locale>.arb` files are already
+available, run the following commands to generate all necessary
+`messages_<locale>.dart` files and the `localizations_delegate.dart` file:
+
+```
+make gen-l10n
+make format
+```
+
+which is equal to
+
+```dart
+dart ${YOUR_FLUTTER_PATH}/dev/tools/localization/bin/gen_l10n.dart \
+ --template-arb-file=intl_en_US.arb \
+ --output-localization-file=gallery_localizations.dart \
+ --output-class=GalleryLocalizations
+
+flutter format .
+```
+
+This ensures the generated `.dart` files updated with the latest translations.
+
+Run the formatter to make the Flutter analyzer happy:
+```
+flutter format .
+```
+
diff --git a/gallery/lib/l10n/gallery_localizations.dart b/gallery/lib/l10n/gallery_localizations.dart
new file mode 100644
index 0000000..31c3986
--- /dev/null
+++ b/gallery/lib/l10n/gallery_localizations.dart
@@ -0,0 +1,3496 @@
+import 'dart:async';
+
+import 'package:flutter/widgets.dart';
+import 'package:flutter_localizations/flutter_localizations.dart';
+import 'package:intl/intl.dart';
+
+import 'messages_all.dart';
+
+/// Callers can lookup localized strings with an instance of GalleryLocalizations returned
+/// by `GalleryLocalizations.of(context)`.
+///
+/// Applications need to include `GalleryLocalizations.delegate()` in their app's
+/// localizationDelegates list, and the locales they support in the app's
+/// supportedLocales list. For example:
+///
+/// ```
+/// import 'l10n/gallery_localizations.dart';
+///
+/// return MaterialApp(
+/// localizationsDelegates: GalleryLocalizations.localizationsDelegates,
+/// supportedLocales: GalleryLocalizations.supportedLocales,
+/// home: MyApplicationHome(),
+/// );
+/// ```
+///
+/// ## Update pubspec.yaml
+///
+/// Please make sure to update your pubspec.yaml to include the following
+/// packages:
+///
+/// ```
+/// dependencies:
+/// # Internationalization support.
+/// flutter_localizations:
+/// sdk: flutter
+/// intl: 0.16.0
+/// intl_translation: 0.17.7
+///
+/// # rest of dependencies
+/// ```
+///
+/// ## iOS Applications
+///
+/// iOS applications define key application metadata, including supported
+/// locales, in an Info.plist file that is built into the application bundle.
+/// To configure the locales supported by your app, you’ll need to edit this
+/// file.
+///
+/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file.
+/// Then, in the Project Navigator, open the Info.plist file under the Runner
+/// project’s Runner folder.
+///
+/// Next, select the Information Property List item, select Add Item from the
+/// Editor menu, then select Localizations from the pop-up menu.
+///
+/// Select and expand the newly-created Localizations item then, for each
+/// locale your application supports, add a new item and select the locale
+/// you wish to add from the pop-up menu in the Value field. This list should
+/// be consistent with the languages listed in the GalleryLocalizations.supportedLocales
+/// property.
+class GalleryLocalizations {
+ GalleryLocalizations(Locale locale)
+ : _localeName = Intl.canonicalizedLocale(locale.toString());
+
+ final String _localeName;
+
+ static Future<GalleryLocalizations> load(Locale locale) {
+ return initializeMessages(locale.toString())
+ .then<GalleryLocalizations>((_) => GalleryLocalizations(locale));
+ }
+
+ static GalleryLocalizations of(BuildContext context) {
+ return Localizations.of<GalleryLocalizations>(
+ context, GalleryLocalizations);
+ }
+
+ static const LocalizationsDelegate<GalleryLocalizations> delegate =
+ _GalleryLocalizationsDelegate();
+
+ /// A list of this localizations delegate along with the default localizations
+ /// delegates.
+ ///
+ /// Returns a list of localizations delegates containing this delegate along with
+ /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate,
+ /// and GlobalWidgetsLocalizations.delegate.
+ static const List<LocalizationsDelegate<dynamic>> localizationsDelegates =
+ <LocalizationsDelegate<dynamic>>[
+ delegate,
+ GlobalMaterialLocalizations.delegate,
+ GlobalCupertinoLocalizations.delegate,
+ GlobalWidgetsLocalizations.delegate,
+ ];
+
+ /// A list of this localizations delegate's supported locales.
+ static const List<Locale> supportedLocales = <Locale>[
+ Locale('en', 'US'),
+ Locale('af'),
+ Locale('am'),
+ Locale('ar'),
+ Locale('ar', 'EG'),
+ Locale('ar', 'JO'),
+ Locale('ar', 'MA'),
+ Locale('ar', 'SA'),
+ Locale('as'),
+ Locale('az'),
+ Locale('be'),
+ Locale('bg'),
+ Locale('bn'),
+ Locale('bs'),
+ Locale('ca'),
+ Locale('cs'),
+ Locale('da'),
+ Locale('de'),
+ Locale('de', 'AT'),
+ Locale('de', 'CH'),
+ Locale('el'),
+ Locale('en', 'AU'),
+ Locale('en', 'CA'),
+ Locale('en', 'GB'),
+ Locale('en', 'IE'),
+ Locale('en', 'IN'),
+ Locale('en', 'NZ'),
+ Locale('en', 'SG'),
+ Locale('en', 'ZA'),
+ Locale('es'),
+ Locale('es', '419'),
+ Locale('es', 'AR'),
+ Locale('es', 'BO'),
+ Locale('es', 'CL'),
+ Locale('es', 'CO'),
+ Locale('es', 'CR'),
+ Locale('es', 'DO'),
+ Locale('es', 'EC'),
+ Locale('es', 'GT'),
+ Locale('es', 'HN'),
+ Locale('es', 'MX'),
+ Locale('es', 'NI'),
+ Locale('es', 'PA'),
+ Locale('es', 'PE'),
+ Locale('es', 'PR'),
+ Locale('es', 'PY'),
+ Locale('es', 'SV'),
+ Locale('es', 'US'),
+ Locale('es', 'UY'),
+ Locale('es', 'VE'),
+ Locale('et'),
+ Locale('eu'),
+ Locale('fa'),
+ Locale('fi'),
+ Locale('fil'),
+ Locale('fr'),
+ Locale('fr', 'CA'),
+ Locale('fr', 'CH'),
+ Locale('gl'),
+ Locale('gsw'),
+ Locale('gu'),
+ Locale('he'),
+ Locale('hi'),
+ Locale('hr'),
+ Locale('hu'),
+ Locale('hy'),
+ Locale('id'),
+ Locale('is'),
+ Locale('it'),
+ Locale('ja'),
+ Locale('ka'),
+ Locale('kk'),
+ Locale('km'),
+ Locale('kn'),
+ Locale('ko'),
+ Locale('ky'),
+ Locale('lo'),
+ Locale('lt'),
+ Locale('lv'),
+ Locale('mk'),
+ Locale('ml'),
+ Locale('mn'),
+ Locale('mr'),
+ Locale('ms'),
+ Locale('my'),
+ Locale('nb'),
+ Locale('ne'),
+ Locale('nl'),
+ Locale('or'),
+ Locale('pa'),
+ Locale('pl'),
+ Locale('pt'),
+ Locale('pt', 'BR'),
+ Locale('pt', 'PT'),
+ Locale('ro'),
+ Locale('ru'),
+ Locale('si'),
+ Locale('sk'),
+ Locale('sl'),
+ Locale('sq'),
+ Locale('sr'),
+ Locale('sr'),
+ Locale('sv'),
+ Locale('sw'),
+ Locale('ta'),
+ Locale('te'),
+ Locale('th'),
+ Locale('tl'),
+ Locale('tr'),
+ Locale('uk'),
+ Locale('ur'),
+ Locale('uz'),
+ Locale('vi'),
+ Locale('zh'),
+ Locale('zh', 'CN'),
+ Locale('zh', 'HK'),
+ Locale('zh', 'TW'),
+ Locale('zu'),
+ ];
+
+ String aboutDialogDescription(Object value) {
+ return Intl.message(
+ r'To see the source code for this app, please visit the $value.',
+ locale: _localeName,
+ name: 'aboutDialogDescription',
+ desc: r'A description about how to view the source code for this app.',
+ args: <Object>[value]);
+ }
+
+ String get aboutFlutterSamplesRepo {
+ return Intl.message(r'Flutter samples Github repo',
+ locale: _localeName,
+ name: 'aboutFlutterSamplesRepo',
+ desc: r'Represents a link to the Flutter samples github repository.');
+ }
+
+ String get bottomNavigationAccountTab {
+ return Intl.message(r'Account',
+ locale: _localeName,
+ name: 'bottomNavigationAccountTab',
+ desc: r'Title for Account tab of bottom navigation.');
+ }
+
+ String get bottomNavigationAlarmTab {
+ return Intl.message(r'Alarm',
+ locale: _localeName,
+ name: 'bottomNavigationAlarmTab',
+ desc: r'Title for Alarm tab of bottom navigation.');
+ }
+
+ String get bottomNavigationCalendarTab {
+ return Intl.message(r'Calendar',
+ locale: _localeName,
+ name: 'bottomNavigationCalendarTab',
+ desc: r'Title for Calendar tab of bottom navigation.');
+ }
+
+ String get bottomNavigationCameraTab {
+ return Intl.message(r'Camera',
+ locale: _localeName,
+ name: 'bottomNavigationCameraTab',
+ desc: r'Title for Camera tab of bottom navigation.');
+ }
+
+ String get bottomNavigationCommentsTab {
+ return Intl.message(r'Comments',
+ locale: _localeName,
+ name: 'bottomNavigationCommentsTab',
+ desc: r'Title for Comments tab of bottom navigation.');
+ }
+
+ String bottomNavigationContentPlaceholder(Object title) {
+ return Intl.message(r'Placeholder for $title tab',
+ locale: _localeName,
+ name: 'bottomNavigationContentPlaceholder',
+ desc:
+ r'Accessibility label for the content placeholder in the bottom navigation demo',
+ args: <Object>[title]);
+ }
+
+ String get buttonText {
+ return Intl.message(r'BUTTON',
+ locale: _localeName,
+ name: 'buttonText',
+ desc: r'Text for a generic button.');
+ }
+
+ String get buttonTextCreate {
+ return Intl.message(r'Create',
+ locale: _localeName,
+ name: 'buttonTextCreate',
+ desc: r'Tooltip text for a create button.');
+ }
+
+ String get chipBiking {
+ return Intl.message(r'Biking',
+ locale: _localeName,
+ name: 'chipBiking',
+ desc: r'A chip component to that indicates a biking selection.');
+ }
+
+ String get chipElevator {
+ return Intl.message(r'Elevator',
+ locale: _localeName,
+ name: 'chipElevator',
+ desc: r'A chip component to filter selection by elevators.');
+ }
+
+ String get chipFireplace {
+ return Intl.message(r'Fireplace',
+ locale: _localeName,
+ name: 'chipFireplace',
+ desc: r'A chip component to filter selection by fireplaces.');
+ }
+
+ String get chipLarge {
+ return Intl.message(r'Large',
+ locale: _localeName,
+ name: 'chipLarge',
+ desc: r'A chip component to select a large size.');
+ }
+
+ String get chipMedium {
+ return Intl.message(r'Medium',
+ locale: _localeName,
+ name: 'chipMedium',
+ desc: r'A chip component to select a medium size.');
+ }
+
+ String get chipSmall {
+ return Intl.message(r'Small',
+ locale: _localeName,
+ name: 'chipSmall',
+ desc: r'A chip component to select a small size.');
+ }
+
+ String get chipTurnOnLights {
+ return Intl.message(r'Turn on lights',
+ locale: _localeName,
+ name: 'chipTurnOnLights',
+ desc: r'A chip component to turn on the lights.');
+ }
+
+ String get chipWasher {
+ return Intl.message(r'Washer',
+ locale: _localeName,
+ name: 'chipWasher',
+ desc: r'A chip component to filter selection by washers.');
+ }
+
+ String get colorsAmber {
+ return Intl.message(r'AMBER',
+ locale: _localeName,
+ name: 'colorsAmber',
+ desc: r'Tab title for the color amber.');
+ }
+
+ String get colorsBlue {
+ return Intl.message(r'BLUE',
+ locale: _localeName,
+ name: 'colorsBlue',
+ desc: r'Tab title for the color blue.');
+ }
+
+ String get colorsBlueGrey {
+ return Intl.message(r'BLUE GREY',
+ locale: _localeName,
+ name: 'colorsBlueGrey',
+ desc: r'Tab title for the color blue grey.');
+ }
+
+ String get colorsBrown {
+ return Intl.message(r'BROWN',
+ locale: _localeName,
+ name: 'colorsBrown',
+ desc: r'Tab title for the color brown.');
+ }
+
+ String get colorsCyan {
+ return Intl.message(r'CYAN',
+ locale: _localeName,
+ name: 'colorsCyan',
+ desc: r'Tab title for the color cyan.');
+ }
+
+ String get colorsDeepOrange {
+ return Intl.message(r'DEEP ORANGE',
+ locale: _localeName,
+ name: 'colorsDeepOrange',
+ desc: r'Tab title for the color deep orange.');
+ }
+
+ String get colorsDeepPurple {
+ return Intl.message(r'DEEP PURPLE',
+ locale: _localeName,
+ name: 'colorsDeepPurple',
+ desc: r'Tab title for the color deep purple.');
+ }
+
+ String get colorsGreen {
+ return Intl.message(r'GREEN',
+ locale: _localeName,
+ name: 'colorsGreen',
+ desc: r'Tab title for the color green.');
+ }
+
+ String get colorsGrey {
+ return Intl.message(r'GREY',
+ locale: _localeName,
+ name: 'colorsGrey',
+ desc: r'Tab title for the color grey.');
+ }
+
+ String get colorsIndigo {
+ return Intl.message(r'INDIGO',
+ locale: _localeName,
+ name: 'colorsIndigo',
+ desc: r'Tab title for the color indigo.');
+ }
+
+ String get colorsLightBlue {
+ return Intl.message(r'LIGHT BLUE',
+ locale: _localeName,
+ name: 'colorsLightBlue',
+ desc: r'Tab title for the color light blue.');
+ }
+
+ String get colorsLightGreen {
+ return Intl.message(r'LIGHT GREEN',
+ locale: _localeName,
+ name: 'colorsLightGreen',
+ desc: r'Tab title for the color light green.');
+ }
+
+ String get colorsLime {
+ return Intl.message(r'LIME',
+ locale: _localeName,
+ name: 'colorsLime',
+ desc: r'Tab title for the color lime.');
+ }
+
+ String get colorsOrange {
+ return Intl.message(r'ORANGE',
+ locale: _localeName,
+ name: 'colorsOrange',
+ desc: r'Tab title for the color orange.');
+ }
+
+ String get colorsPink {
+ return Intl.message(r'PINK',
+ locale: _localeName,
+ name: 'colorsPink',
+ desc: r'Tab title for the color pink.');
+ }
+
+ String get colorsPurple {
+ return Intl.message(r'PURPLE',
+ locale: _localeName,
+ name: 'colorsPurple',
+ desc: r'Tab title for the color purple.');
+ }
+
+ String get colorsRed {
+ return Intl.message(r'RED',
+ locale: _localeName,
+ name: 'colorsRed',
+ desc: r'Tab title for the color red.');
+ }
+
+ String get colorsTeal {
+ return Intl.message(r'TEAL',
+ locale: _localeName,
+ name: 'colorsTeal',
+ desc: r'Tab title for the color teal.');
+ }
+
+ String get colorsYellow {
+ return Intl.message(r'YELLOW',
+ locale: _localeName,
+ name: 'colorsYellow',
+ desc: r'Tab title for the color yellow.');
+ }
+
+ String get craneDescription {
+ return Intl.message(r'A personalized travel app',
+ locale: _localeName,
+ name: 'craneDescription',
+ desc: r'Study description for Crane.');
+ }
+
+ String get craneEat {
+ return Intl.message(r'EAT',
+ locale: _localeName, name: 'craneEat', desc: r'Title for EAT tab.');
+ }
+
+ String get craneEat0 {
+ return Intl.message(r'Naples, Italy',
+ locale: _localeName, name: 'craneEat0', desc: r'Label for city.');
+ }
+
+ String get craneEat0SemanticLabel {
+ return Intl.message(r'Pizza in a wood-fired oven',
+ locale: _localeName,
+ name: 'craneEat0SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneEat1 {
+ return Intl.message(r'Dallas, United States',
+ locale: _localeName, name: 'craneEat1', desc: r'Label for city.');
+ }
+
+ String get craneEat10 {
+ return Intl.message(r'Lisbon, Portugal',
+ locale: _localeName, name: 'craneEat10', desc: r'Label for city.');
+ }
+
+ String get craneEat10SemanticLabel {
+ return Intl.message(r'Woman holding huge pastrami sandwich',
+ locale: _localeName,
+ name: 'craneEat10SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneEat1SemanticLabel {
+ return Intl.message(r'Empty bar with diner-style stools',
+ locale: _localeName,
+ name: 'craneEat1SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneEat2 {
+ return Intl.message(r'Córdoba, Argentina',
+ locale: _localeName, name: 'craneEat2', desc: r'Label for city.');
+ }
+
+ String get craneEat2SemanticLabel {
+ return Intl.message(r'Burger',
+ locale: _localeName,
+ name: 'craneEat2SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneEat3 {
+ return Intl.message(r'Portland, United States',
+ locale: _localeName, name: 'craneEat3', desc: r'Label for city.');
+ }
+
+ String get craneEat3SemanticLabel {
+ return Intl.message(r'Korean taco',
+ locale: _localeName,
+ name: 'craneEat3SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneEat4 {
+ return Intl.message(r'Paris, France',
+ locale: _localeName, name: 'craneEat4', desc: r'Label for city.');
+ }
+
+ String get craneEat4SemanticLabel {
+ return Intl.message(r'Chocolate dessert',
+ locale: _localeName,
+ name: 'craneEat4SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneEat5 {
+ return Intl.message(r'Seoul, South Korea',
+ locale: _localeName, name: 'craneEat5', desc: r'Label for city.');
+ }
+
+ String get craneEat5SemanticLabel {
+ return Intl.message(r'Artsy restaurant seating area',
+ locale: _localeName,
+ name: 'craneEat5SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneEat6 {
+ return Intl.message(r'Seattle, United States',
+ locale: _localeName, name: 'craneEat6', desc: r'Label for city.');
+ }
+
+ String get craneEat6SemanticLabel {
+ return Intl.message(r'Shrimp dish',
+ locale: _localeName,
+ name: 'craneEat6SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneEat7 {
+ return Intl.message(r'Nashville, United States',
+ locale: _localeName, name: 'craneEat7', desc: r'Label for city.');
+ }
+
+ String get craneEat7SemanticLabel {
+ return Intl.message(r'Bakery entrance',
+ locale: _localeName,
+ name: 'craneEat7SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneEat8 {
+ return Intl.message(r'Atlanta, United States',
+ locale: _localeName, name: 'craneEat8', desc: r'Label for city.');
+ }
+
+ String get craneEat8SemanticLabel {
+ return Intl.message(r'Plate of crawfish',
+ locale: _localeName,
+ name: 'craneEat8SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneEat9 {
+ return Intl.message(r'Madrid, Spain',
+ locale: _localeName, name: 'craneEat9', desc: r'Label for city.');
+ }
+
+ String get craneEat9SemanticLabel {
+ return Intl.message(r'Cafe counter with pastries',
+ locale: _localeName,
+ name: 'craneEat9SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String craneEatRestaurants(int totalRestaurants) {
+ return Intl.plural(totalRestaurants,
+ locale: _localeName,
+ name: 'craneEatRestaurants',
+ desc: r'Text indicating the number of restaurants. Always plural.',
+ args: <Object>[totalRestaurants],
+ zero: 'No Restaurants',
+ one: '1 Restaurant',
+ other: '$totalRestaurants Restaurants');
+ }
+
+ String get craneEatSubhead {
+ return Intl.message(r'Explore Restaurants by Destination',
+ locale: _localeName,
+ name: 'craneEatSubhead',
+ desc: r'Subhead for EAT tab.');
+ }
+
+ String get craneFly {
+ return Intl.message(r'FLY',
+ locale: _localeName, name: 'craneFly', desc: r'Title for FLY tab.');
+ }
+
+ String get craneFly0 {
+ return Intl.message(r'Aspen, United States',
+ locale: _localeName, name: 'craneFly0', desc: r'Label for city.');
+ }
+
+ String get craneFly0SemanticLabel {
+ return Intl.message(r'Chalet in a snowy landscape with evergreen trees',
+ locale: _localeName,
+ name: 'craneFly0SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneFly1 {
+ return Intl.message(r'Big Sur, United States',
+ locale: _localeName, name: 'craneFly1', desc: r'Label for city.');
+ }
+
+ String get craneFly10 {
+ return Intl.message(r'Cairo, Egypt',
+ locale: _localeName, name: 'craneFly10', desc: r'Label for city.');
+ }
+
+ String get craneFly10SemanticLabel {
+ return Intl.message(r'Al-Azhar Mosque towers during sunset',
+ locale: _localeName,
+ name: 'craneFly10SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneFly11 {
+ return Intl.message(r'Lisbon, Portugal',
+ locale: _localeName, name: 'craneFly11', desc: r'Label for city.');
+ }
+
+ String get craneFly11SemanticLabel {
+ return Intl.message(r'Brick lighthouse at sea',
+ locale: _localeName,
+ name: 'craneFly11SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneFly12 {
+ return Intl.message(r'Napa, United States',
+ locale: _localeName, name: 'craneFly12', desc: r'Label for city.');
+ }
+
+ String get craneFly12SemanticLabel {
+ return Intl.message(r'Pool with palm trees',
+ locale: _localeName,
+ name: 'craneFly12SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneFly13 {
+ return Intl.message(r'Bali, Indonesia',
+ locale: _localeName, name: 'craneFly13', desc: r'Label for city.');
+ }
+
+ String get craneFly13SemanticLabel {
+ return Intl.message(r'Sea-side pool with palm trees',
+ locale: _localeName,
+ name: 'craneFly13SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneFly1SemanticLabel {
+ return Intl.message(r'Tent in a field',
+ locale: _localeName,
+ name: 'craneFly1SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneFly2 {
+ return Intl.message(r'Khumbu Valley, Nepal',
+ locale: _localeName, name: 'craneFly2', desc: r'Label for city.');
+ }
+
+ String get craneFly2SemanticLabel {
+ return Intl.message(r'Prayer flags in front of snowy mountain',
+ locale: _localeName,
+ name: 'craneFly2SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneFly3 {
+ return Intl.message(r'Machu Picchu, Peru',
+ locale: _localeName, name: 'craneFly3', desc: r'Label for city.');
+ }
+
+ String get craneFly3SemanticLabel {
+ return Intl.message(r'Machu Picchu citadel',
+ locale: _localeName,
+ name: 'craneFly3SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneFly4 {
+ return Intl.message(r'Malé, Maldives',
+ locale: _localeName, name: 'craneFly4', desc: r'Label for city.');
+ }
+
+ String get craneFly4SemanticLabel {
+ return Intl.message(r'Overwater bungalows',
+ locale: _localeName,
+ name: 'craneFly4SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneFly5 {
+ return Intl.message(r'Vitznau, Switzerland',
+ locale: _localeName, name: 'craneFly5', desc: r'Label for city.');
+ }
+
+ String get craneFly5SemanticLabel {
+ return Intl.message(r'Lake-side hotel in front of mountains',
+ locale: _localeName,
+ name: 'craneFly5SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneFly6 {
+ return Intl.message(r'Mexico City, Mexico',
+ locale: _localeName, name: 'craneFly6', desc: r'Label for city.');
+ }
+
+ String get craneFly6SemanticLabel {
+ return Intl.message(r'Aerial view of Palacio de Bellas Artes',
+ locale: _localeName,
+ name: 'craneFly6SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneFly7 {
+ return Intl.message(r'Mount Rushmore, United States',
+ locale: _localeName, name: 'craneFly7', desc: r'Label for city.');
+ }
+
+ String get craneFly7SemanticLabel {
+ return Intl.message(r'Mount Rushmore',
+ locale: _localeName,
+ name: 'craneFly7SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneFly8 {
+ return Intl.message(r'Singapore',
+ locale: _localeName, name: 'craneFly8', desc: r'Label for city.');
+ }
+
+ String get craneFly8SemanticLabel {
+ return Intl.message(r'Supertree Grove',
+ locale: _localeName,
+ name: 'craneFly8SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneFly9 {
+ return Intl.message(r'Havana, Cuba',
+ locale: _localeName, name: 'craneFly9', desc: r'Label for city.');
+ }
+
+ String get craneFly9SemanticLabel {
+ return Intl.message(r'Man leaning on an antique blue car',
+ locale: _localeName,
+ name: 'craneFly9SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String craneFlyStops(int numberOfStops) {
+ return Intl.plural(numberOfStops,
+ locale: _localeName,
+ name: 'craneFlyStops',
+ desc:
+ r'Label indicating if a flight is nonstop or how many layovers it includes.',
+ args: <Object>[numberOfStops],
+ zero: 'Nonstop',
+ one: '1 stop',
+ other: '$numberOfStops stops');
+ }
+
+ String get craneFlySubhead {
+ return Intl.message(r'Explore Flights by Destination',
+ locale: _localeName,
+ name: 'craneFlySubhead',
+ desc: r'Subhead for FLY tab.');
+ }
+
+ String get craneFormDate {
+ return Intl.message(r'Select Date',
+ locale: _localeName,
+ name: 'craneFormDate',
+ desc: r'Form field label to select a date.');
+ }
+
+ String get craneFormDates {
+ return Intl.message(r'Select Dates',
+ locale: _localeName,
+ name: 'craneFormDates',
+ desc: r'Form field label to select multiple dates.');
+ }
+
+ String get craneFormDestination {
+ return Intl.message(r'Choose Destination',
+ locale: _localeName,
+ name: 'craneFormDestination',
+ desc: r'Form field label to choose a travel destination.');
+ }
+
+ String get craneFormDiners {
+ return Intl.message(r'Diners',
+ locale: _localeName,
+ name: 'craneFormDiners',
+ desc: r'Form field label to enter the number of diners.');
+ }
+
+ String get craneFormLocation {
+ return Intl.message(r'Select Location',
+ locale: _localeName,
+ name: 'craneFormLocation',
+ desc: r'Form field label to select a location.');
+ }
+
+ String get craneFormOrigin {
+ return Intl.message(r'Choose Origin',
+ locale: _localeName,
+ name: 'craneFormOrigin',
+ desc: r'Form field label to choose a travel origin.');
+ }
+
+ String get craneFormTime {
+ return Intl.message(r'Select Time',
+ locale: _localeName,
+ name: 'craneFormTime',
+ desc: r'Form field label to select a time.');
+ }
+
+ String get craneFormTravelers {
+ return Intl.message(r'Travelers',
+ locale: _localeName,
+ name: 'craneFormTravelers',
+ desc: r'Form field label to select the number of travellers.');
+ }
+
+ String get craneSleep {
+ return Intl.message(r'SLEEP',
+ locale: _localeName, name: 'craneSleep', desc: r'Title for SLEEP tab.');
+ }
+
+ String get craneSleep0 {
+ return Intl.message(r'Malé, Maldives',
+ locale: _localeName, name: 'craneSleep0', desc: r'Label for city.');
+ }
+
+ String get craneSleep0SemanticLabel {
+ return Intl.message(r'Overwater bungalows',
+ locale: _localeName,
+ name: 'craneSleep0SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneSleep1 {
+ return Intl.message(r'Aspen, United States',
+ locale: _localeName, name: 'craneSleep1', desc: r'Label for city.');
+ }
+
+ String get craneSleep10 {
+ return Intl.message(r'Cairo, Egypt',
+ locale: _localeName, name: 'craneSleep10', desc: r'Label for city.');
+ }
+
+ String get craneSleep10SemanticLabel {
+ return Intl.message(r'Al-Azhar Mosque towers during sunset',
+ locale: _localeName,
+ name: 'craneSleep10SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneSleep11 {
+ return Intl.message(r'Taipei, Taiwan',
+ locale: _localeName, name: 'craneSleep11', desc: r'Label for city.');
+ }
+
+ String get craneSleep11SemanticLabel {
+ return Intl.message(r'Taipei 101 skyscraper',
+ locale: _localeName,
+ name: 'craneSleep11SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneSleep1SemanticLabel {
+ return Intl.message(r'Chalet in a snowy landscape with evergreen trees',
+ locale: _localeName,
+ name: 'craneSleep1SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneSleep2 {
+ return Intl.message(r'Machu Picchu, Peru',
+ locale: _localeName, name: 'craneSleep2', desc: r'Label for city.');
+ }
+
+ String get craneSleep2SemanticLabel {
+ return Intl.message(r'Machu Picchu citadel',
+ locale: _localeName,
+ name: 'craneSleep2SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneSleep3 {
+ return Intl.message(r'Havana, Cuba',
+ locale: _localeName, name: 'craneSleep3', desc: r'Label for city.');
+ }
+
+ String get craneSleep3SemanticLabel {
+ return Intl.message(r'Man leaning on an antique blue car',
+ locale: _localeName,
+ name: 'craneSleep3SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneSleep4 {
+ return Intl.message(r'Vitznau, Switzerland',
+ locale: _localeName, name: 'craneSleep4', desc: r'Label for city.');
+ }
+
+ String get craneSleep4SemanticLabel {
+ return Intl.message(r'Lake-side hotel in front of mountains',
+ locale: _localeName,
+ name: 'craneSleep4SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneSleep5 {
+ return Intl.message(r'Big Sur, United States',
+ locale: _localeName, name: 'craneSleep5', desc: r'Label for city.');
+ }
+
+ String get craneSleep5SemanticLabel {
+ return Intl.message(r'Tent in a field',
+ locale: _localeName,
+ name: 'craneSleep5SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneSleep6 {
+ return Intl.message(r'Napa, United States',
+ locale: _localeName, name: 'craneSleep6', desc: r'Label for city.');
+ }
+
+ String get craneSleep6SemanticLabel {
+ return Intl.message(r'Pool with palm trees',
+ locale: _localeName,
+ name: 'craneSleep6SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneSleep7 {
+ return Intl.message(r'Porto, Portugal',
+ locale: _localeName, name: 'craneSleep7', desc: r'Label for city.');
+ }
+
+ String get craneSleep7SemanticLabel {
+ return Intl.message(r'Colorful apartments at Riberia Square',
+ locale: _localeName,
+ name: 'craneSleep7SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneSleep8 {
+ return Intl.message(r'Tulum, Mexico',
+ locale: _localeName, name: 'craneSleep8', desc: r'Label for city.');
+ }
+
+ String get craneSleep8SemanticLabel {
+ return Intl.message(r'Mayan ruins on a cliff above a beach',
+ locale: _localeName,
+ name: 'craneSleep8SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String get craneSleep9 {
+ return Intl.message(r'Lisbon, Portugal',
+ locale: _localeName, name: 'craneSleep9', desc: r'Label for city.');
+ }
+
+ String get craneSleep9SemanticLabel {
+ return Intl.message(r'Brick lighthouse at sea',
+ locale: _localeName,
+ name: 'craneSleep9SemanticLabel',
+ desc: r'Semantic label for an image.');
+ }
+
+ String craneSleepProperties(int totalProperties) {
+ return Intl.plural(totalProperties,
+ locale: _localeName,
+ name: 'craneSleepProperties',
+ desc:
+ r'Text indicating the number of available properties (temporary rentals). Always plural.',
+ args: <Object>[totalProperties],
+ zero: 'No Available Properties',
+ one: '1 Available Properties',
+ other: '$totalProperties Available Properties');
+ }
+
+ String get craneSleepSubhead {
+ return Intl.message(r'Explore Properties by Destination',
+ locale: _localeName,
+ name: 'craneSleepSubhead',
+ desc: r'Subhead for SLEEP tab.');
+ }
+
+ String get cupertinoAlertAllow {
+ return Intl.message(r'Allow',
+ locale: _localeName,
+ name: 'cupertinoAlertAllow',
+ desc: r'iOS-style alert allow option.');
+ }
+
+ String get cupertinoAlertApplePie {
+ return Intl.message(r'Apple Pie',
+ locale: _localeName,
+ name: 'cupertinoAlertApplePie',
+ desc: r'iOS-style alert apple pie option.');
+ }
+
+ String get cupertinoAlertCancel {
+ return Intl.message(r'Cancel',
+ locale: _localeName,
+ name: 'cupertinoAlertCancel',
+ desc: r'iOS-style alert cancel option.');
+ }
+
+ String get cupertinoAlertCheesecake {
+ return Intl.message(r'Cheesecake',
+ locale: _localeName,
+ name: 'cupertinoAlertCheesecake',
+ desc: r'iOS-style alert cheesecake option.');
+ }
+
+ String get cupertinoAlertChocolateBrownie {
+ return Intl.message(r'Chocolate Brownie',
+ locale: _localeName,
+ name: 'cupertinoAlertChocolateBrownie',
+ desc: r'iOS-style alert chocolate brownie option.');
+ }
+
+ String get cupertinoAlertDessertDescription {
+ return Intl.message(
+ r'Please select your favorite type of dessert from the list below. Your selection will be used to customize the suggested list of eateries in your area.',
+ locale: _localeName,
+ name: 'cupertinoAlertDessertDescription',
+ desc: r'iOS-style alert description for selecting favorite dessert.');
+ }
+
+ String get cupertinoAlertDiscard {
+ return Intl.message(r'Discard',
+ locale: _localeName,
+ name: 'cupertinoAlertDiscard',
+ desc: r'iOS-style alert discard option.');
+ }
+
+ String get cupertinoAlertDontAllow {
+ return Intl.message(r'Don' "'" r't Allow',
+ locale: _localeName,
+ name: 'cupertinoAlertDontAllow',
+ desc: r'iOS-style alert don' "'" r't allow option.');
+ }
+
+ String get cupertinoAlertFavoriteDessert {
+ return Intl.message(r'Select Favorite Dessert',
+ locale: _localeName,
+ name: 'cupertinoAlertFavoriteDessert',
+ desc: r'iOS-style alert title for selecting favorite dessert.');
+ }
+
+ String get cupertinoAlertLocationDescription {
+ return Intl.message(
+ r'Your current location will be displayed on the map and used for directions, nearby search results, and estimated travel times.',
+ locale: _localeName,
+ name: 'cupertinoAlertLocationDescription',
+ desc: r'iOS-style alert description for location permission.');
+ }
+
+ String get cupertinoAlertLocationTitle {
+ return Intl.message(
+ r'Allow "Maps" to access your location while you are using the app?',
+ locale: _localeName,
+ name: 'cupertinoAlertLocationTitle',
+ desc: r'iOS-style alert title for location permission.');
+ }
+
+ String get cupertinoAlertTiramisu {
+ return Intl.message(r'Tiramisu',
+ locale: _localeName,
+ name: 'cupertinoAlertTiramisu',
+ desc: r'iOS-style alert tiramisu option.');
+ }
+
+ String get cupertinoButton {
+ return Intl.message(r'Button',
+ locale: _localeName,
+ name: 'cupertinoButton',
+ desc: r'Button text for a generic iOS-style button.');
+ }
+
+ String get cupertinoButtonWithBackground {
+ return Intl.message(r'With Background',
+ locale: _localeName,
+ name: 'cupertinoButtonWithBackground',
+ desc: r'Button text for a iOS-style button with a filled background.');
+ }
+
+ String get cupertinoShowAlert {
+ return Intl.message(r'Show Alert',
+ locale: _localeName,
+ name: 'cupertinoShowAlert',
+ desc: r'Button text to show iOS-style alert.');
+ }
+
+ String get demoActionChipDescription {
+ return Intl.message(
+ r'Action chips are a set of options which trigger an action related to primary content. Action chips should appear dynamically and contextually in a UI.',
+ locale: _localeName,
+ name: 'demoActionChipDescription',
+ desc: r'Description for the action chip component demo.');
+ }
+
+ String get demoActionChipTitle {
+ return Intl.message(r'Action Chip',
+ locale: _localeName,
+ name: 'demoActionChipTitle',
+ desc: r'Title for the action chip component demo.');
+ }
+
+ String get demoAlertDialogDescription {
+ return Intl.message(
+ r'An alert dialog informs the user about situations that require acknowledgement. An alert dialog has an optional title and an optional list of actions.',
+ locale: _localeName,
+ name: 'demoAlertDialogDescription',
+ desc: r'Description for the alert dialog component demo.');
+ }
+
+ String get demoAlertDialogTitle {
+ return Intl.message(r'Alert',
+ locale: _localeName,
+ name: 'demoAlertDialogTitle',
+ desc: r'Title for the alert dialog component demo.');
+ }
+
+ String get demoAlertTitleDialogTitle {
+ return Intl.message(r'Alert With Title',
+ locale: _localeName,
+ name: 'demoAlertTitleDialogTitle',
+ desc: r'Title for the alert dialog with title component demo.');
+ }
+
+ String get demoBottomNavigationDescription {
+ return Intl.message(
+ r'Bottom navigation bars display three to five destinations at the bottom of a screen. Each destination is represented by an icon and an optional text label. When a bottom navigation icon is tapped, the user is taken to the top-level navigation destination associated with that icon.',
+ locale: _localeName,
+ name: 'demoBottomNavigationDescription',
+ desc:
+ r'Description for the material bottom navigation component demo.');
+ }
+
+ String get demoBottomNavigationPersistentLabels {
+ return Intl.message(r'Persistent labels',
+ locale: _localeName,
+ name: 'demoBottomNavigationPersistentLabels',
+ desc: r'Option title for bottom navigation with persistent labels.');
+ }
+
+ String get demoBottomNavigationSelectedLabel {
+ return Intl.message(r'Selected label',
+ locale: _localeName,
+ name: 'demoBottomNavigationSelectedLabel',
+ desc:
+ r'Option title for bottom navigation with only a selected label.');
+ }
+
+ String get demoBottomNavigationSubtitle {
+ return Intl.message(r'Bottom navigation with cross-fading views',
+ locale: _localeName,
+ name: 'demoBottomNavigationSubtitle',
+ desc: r'Subtitle for the material bottom navigation component demo.');
+ }
+
+ String get demoBottomNavigationTitle {
+ return Intl.message(r'Bottom navigation',
+ locale: _localeName,
+ name: 'demoBottomNavigationTitle',
+ desc: r'Title for the material bottom navigation component demo.');
+ }
+
+ String get demoBottomSheetAddLabel {
+ return Intl.message(r'Add',
+ locale: _localeName,
+ name: 'demoBottomSheetAddLabel',
+ desc: r'Semantic label for add icon.');
+ }
+
+ String get demoBottomSheetButtonText {
+ return Intl.message(r'SHOW BOTTOM SHEET',
+ locale: _localeName,
+ name: 'demoBottomSheetButtonText',
+ desc: r'Button text to show bottom sheet.');
+ }
+
+ String get demoBottomSheetHeader {
+ return Intl.message(r'Header',
+ locale: _localeName,
+ name: 'demoBottomSheetHeader',
+ desc: r'Generic header placeholder.');
+ }
+
+ String demoBottomSheetItem(Object value) {
+ return Intl.message(r'Item $value',
+ locale: _localeName,
+ name: 'demoBottomSheetItem',
+ desc: r'Generic item placeholder.',
+ args: <Object>[value]);
+ }
+
+ String get demoBottomSheetModalDescription {
+ return Intl.message(
+ r'A modal bottom sheet is an alternative to a menu or a dialog and prevents the user from interacting with the rest of the app.',
+ locale: _localeName,
+ name: 'demoBottomSheetModalDescription',
+ desc: r'Description for modal bottom sheet demo.');
+ }
+
+ String get demoBottomSheetModalTitle {
+ return Intl.message(r'Modal bottom sheet',
+ locale: _localeName,
+ name: 'demoBottomSheetModalTitle',
+ desc: r'Title for modal bottom sheet demo.');
+ }
+
+ String get demoBottomSheetPersistentDescription {
+ return Intl.message(
+ r'A persistent bottom sheet shows information that supplements the primary content of the app. A persistent bottom sheet remains visible even when the user interacts with other parts of the app.',
+ locale: _localeName,
+ name: 'demoBottomSheetPersistentDescription',
+ desc: r'Description for persistent bottom sheet demo.');
+ }
+
+ String get demoBottomSheetPersistentTitle {
+ return Intl.message(r'Persistent bottom sheet',
+ locale: _localeName,
+ name: 'demoBottomSheetPersistentTitle',
+ desc: r'Title for persistent bottom sheet demo.');
+ }
+
+ String get demoBottomSheetSubtitle {
+ return Intl.message(r'Persistent and modal bottom sheets',
+ locale: _localeName,
+ name: 'demoBottomSheetSubtitle',
+ desc: r'Description for bottom sheet demo.');
+ }
+
+ String get demoBottomSheetTitle {
+ return Intl.message(r'Bottom sheet',
+ locale: _localeName,
+ name: 'demoBottomSheetTitle',
+ desc: r'Title for bottom sheet demo.');
+ }
+
+ String get demoBottomTextFieldsTitle {
+ return Intl.message(r'Text fields',
+ locale: _localeName,
+ name: 'demoBottomTextFieldsTitle',
+ desc: r'Title for text fields demo.');
+ }
+
+ String get demoButtonSubtitle {
+ return Intl.message(r'Flat, raised, outline, and more',
+ locale: _localeName,
+ name: 'demoButtonSubtitle',
+ desc: r'Subtitle for the material buttons component demo.');
+ }
+
+ String get demoButtonTitle {
+ return Intl.message(r'Buttons',
+ locale: _localeName,
+ name: 'demoButtonTitle',
+ desc: r'Title for the material buttons component demo.');
+ }
+
+ String get demoChipSubtitle {
+ return Intl.message(
+ r'Compact elements that represent an input, attribute, or action',
+ locale: _localeName,
+ name: 'demoChipSubtitle',
+ desc: r'Subtitle for the material chips component demo.');
+ }
+
+ String get demoChipTitle {
+ return Intl.message(r'Chips',
+ locale: _localeName,
+ name: 'demoChipTitle',
+ desc: r'Title for the material chips component demo.');
+ }
+
+ String get demoChoiceChipDescription {
+ return Intl.message(
+ r'Choice chips represent a single choice from a set. Choice chips contain related descriptive text or categories.',
+ locale: _localeName,
+ name: 'demoChoiceChipDescription',
+ desc: r'Description for the choice chip component demo.');
+ }
+
+ String get demoChoiceChipTitle {
+ return Intl.message(r'Choice Chip',
+ locale: _localeName,
+ name: 'demoChoiceChipTitle',
+ desc: r'Title for the choice chip component demo.');
+ }
+
+ String get demoCodeTooltip {
+ return Intl.message(r'Code Sample',
+ locale: _localeName,
+ name: 'demoCodeTooltip',
+ desc: r'Tooltip for code sample button in a demo.');
+ }
+
+ String get demoCodeViewerCopiedToClipboardMessage {
+ return Intl.message(r'Copied to clipboard.',
+ locale: _localeName,
+ name: 'demoCodeViewerCopiedToClipboardMessage',
+ desc:
+ r'A message displayed to the user after clicking the COPY ALL button, if the text is successfully copied to the clipboard.');
+ }
+
+ String get demoCodeViewerCopyAll {
+ return Intl.message(r'COPY ALL',
+ locale: _localeName,
+ name: 'demoCodeViewerCopyAll',
+ desc: r'Caption for a button to copy all text.');
+ }
+
+ String demoCodeViewerFailedToCopyToClipboardMessage(Object error) {
+ return Intl.message(r'Failed to copy to clipboard: $error',
+ locale: _localeName,
+ name: 'demoCodeViewerFailedToCopyToClipboardMessage',
+ desc:
+ r'A message displayed to the user after clicking the COPY ALL button, if the text CANNOT be copied to the clipboard.',
+ args: <Object>[error]);
+ }
+
+ String get demoColorsDescription {
+ return Intl.message(
+ r'Color and color swatch constants which represent Material Design'
+ "'"
+ r's color palette.',
+ locale: _localeName,
+ name: 'demoColorsDescription',
+ desc:
+ r'Description for the colors demo. Material Design should remain capitalized.');
+ }
+
+ String get demoColorsSubtitle {
+ return Intl.message(r'All of the predefined colors',
+ locale: _localeName,
+ name: 'demoColorsSubtitle',
+ desc: r'Subtitle for the colors demo.');
+ }
+
+ String get demoColorsTitle {
+ return Intl.message(r'Colors',
+ locale: _localeName,
+ name: 'demoColorsTitle',
+ desc: r'Title for the colors demo.');
+ }
+
+ String get demoCupertinoActionSheetDescription {
+ return Intl.message(
+ r'An action sheet is a specific style of alert that presents the user with a set of two or more choices related to the current context. An action sheet can have a title, an additional message, and a list of actions.',
+ locale: _localeName,
+ name: 'demoCupertinoActionSheetDescription',
+ desc: r'Description for the cupertino action sheet component demo.');
+ }
+
+ String get demoCupertinoActionSheetTitle {
+ return Intl.message(r'Action Sheet',
+ locale: _localeName,
+ name: 'demoCupertinoActionSheetTitle',
+ desc: r'Title for the cupertino action sheet component demo.');
+ }
+
+ String get demoCupertinoAlertButtonsOnlyTitle {
+ return Intl.message(r'Alert Buttons Only',
+ locale: _localeName,
+ name: 'demoCupertinoAlertButtonsOnlyTitle',
+ desc: r'Title for the cupertino alert buttons only component demo.');
+ }
+
+ String get demoCupertinoAlertButtonsTitle {
+ return Intl.message(r'Alert With Buttons',
+ locale: _localeName,
+ name: 'demoCupertinoAlertButtonsTitle',
+ desc: r'Title for the cupertino alert with buttons component demo.');
+ }
+
+ String get demoCupertinoAlertDescription {
+ return Intl.message(
+ r'An alert dialog informs the user about situations that require acknowledgement. An alert dialog has an optional title, optional content, and an optional list of actions. The title is displayed above the content and the actions are displayed below the content.',
+ locale: _localeName,
+ name: 'demoCupertinoAlertDescription',
+ desc: r'Description for the cupertino alert component demo.');
+ }
+
+ String get demoCupertinoAlertTitle {
+ return Intl.message(r'Alert',
+ locale: _localeName,
+ name: 'demoCupertinoAlertTitle',
+ desc: r'Title for the cupertino alert component demo.');
+ }
+
+ String get demoCupertinoAlertWithTitleTitle {
+ return Intl.message(r'Alert With Title',
+ locale: _localeName,
+ name: 'demoCupertinoAlertWithTitleTitle',
+ desc: r'Title for the cupertino alert with title component demo.');
+ }
+
+ String get demoCupertinoAlertsSubtitle {
+ return Intl.message(r'iOS-style alert dialogs',
+ locale: _localeName,
+ name: 'demoCupertinoAlertsSubtitle',
+ desc: r'Subtitle for the cupertino alerts component demo.');
+ }
+
+ String get demoCupertinoAlertsTitle {
+ return Intl.message(r'Alerts',
+ locale: _localeName,
+ name: 'demoCupertinoAlertsTitle',
+ desc: r'Title for the cupertino alerts component demo.');
+ }
+
+ String get demoCupertinoButtonsDescription {
+ return Intl.message(
+ r'An iOS-style button. It takes in text and/or an icon that fades out and in on touch. May optionally have a background.',
+ locale: _localeName,
+ name: 'demoCupertinoButtonsDescription',
+ desc: r'Description for the cupertino buttons component demo.');
+ }
+
+ String get demoCupertinoButtonsSubtitle {
+ return Intl.message(r'iOS-style buttons',
+ locale: _localeName,
+ name: 'demoCupertinoButtonsSubtitle',
+ desc: r'Subtitle for the cupertino buttons component demo.');
+ }
+
+ String get demoCupertinoButtonsTitle {
+ return Intl.message(r'Buttons',
+ locale: _localeName,
+ name: 'demoCupertinoButtonsTitle',
+ desc: r'Title for the cupertino buttons component demo.');
+ }
+
+ String get demoCupertinoSegmentedControlDescription {
+ return Intl.message(
+ r'Used to select between a number of mutually exclusive options. When one option in the segmented control is selected, the other options in the segmented control cease to be selected.',
+ locale: _localeName,
+ name: 'demoCupertinoSegmentedControlDescription',
+ desc:
+ r'Description for the cupertino segmented control component demo.');
+ }
+
+ String get demoCupertinoSegmentedControlSubtitle {
+ return Intl.message(r'iOS-style segmented control',
+ locale: _localeName,
+ name: 'demoCupertinoSegmentedControlSubtitle',
+ desc: r'Subtitle for the cupertino segmented control component demo.');
+ }
+
+ String get demoCupertinoSegmentedControlTitle {
+ return Intl.message(r'Segmented Control',
+ locale: _localeName,
+ name: 'demoCupertinoSegmentedControlTitle',
+ desc: r'Title for the cupertino segmented control component demo.');
+ }
+
+ String get demoDialogSubtitle {
+ return Intl.message(r'Simple, alert, and fullscreen',
+ locale: _localeName,
+ name: 'demoDialogSubtitle',
+ desc: r'Subtitle for the material dialog component demo.');
+ }
+
+ String get demoDialogTitle {
+ return Intl.message(r'Dialogs',
+ locale: _localeName,
+ name: 'demoDialogTitle',
+ desc: r'Title for the material dialog component demo.');
+ }
+
+ String get demoDocumentationTooltip {
+ return Intl.message(r'API Documentation',
+ locale: _localeName,
+ name: 'demoDocumentationTooltip',
+ desc: r'Tooltip for API documentation button in a demo.');
+ }
+
+ String get demoFilterChipDescription {
+ return Intl.message(
+ r'Filter chips use tags or descriptive words as a way to filter content.',
+ locale: _localeName,
+ name: 'demoFilterChipDescription',
+ desc: r'Description for the filter chip component demo.');
+ }
+
+ String get demoFilterChipTitle {
+ return Intl.message(r'Filter Chip',
+ locale: _localeName,
+ name: 'demoFilterChipTitle',
+ desc: r'Title for the filter chip component demo.');
+ }
+
+ String get demoFlatButtonDescription {
+ return Intl.message(
+ r'A flat button displays an ink splash on press but does not lift. Use flat buttons on toolbars, in dialogs and inline with padding',
+ locale: _localeName,
+ name: 'demoFlatButtonDescription',
+ desc: r'Description for the flat button component demo.');
+ }
+
+ String get demoFlatButtonTitle {
+ return Intl.message(r'Flat Button',
+ locale: _localeName,
+ name: 'demoFlatButtonTitle',
+ desc: r'Title for the flat button component demo.');
+ }
+
+ String get demoFloatingButtonDescription {
+ return Intl.message(
+ r'A floating action button is a circular icon button that hovers over content to promote a primary action in the application.',
+ locale: _localeName,
+ name: 'demoFloatingButtonDescription',
+ desc: r'Description for the floating action button component demo.');
+ }
+
+ String get demoFloatingButtonTitle {
+ return Intl.message(r'Floating Action Button',
+ locale: _localeName,
+ name: 'demoFloatingButtonTitle',
+ desc: r'Title for the floating action button component demo.');
+ }
+
+ String get demoFullscreenDialogDescription {
+ return Intl.message(
+ r'The fullscreenDialog property specifies whether the incoming page is a fullscreen modal dialog',
+ locale: _localeName,
+ name: 'demoFullscreenDialogDescription',
+ desc: r'Description for the fullscreen dialog component demo.');
+ }
+
+ String get demoFullscreenDialogTitle {
+ return Intl.message(r'Fullscreen',
+ locale: _localeName,
+ name: 'demoFullscreenDialogTitle',
+ desc: r'Title for the fullscreen dialog component demo.');
+ }
+
+ String get demoFullscreenTooltip {
+ return Intl.message(r'Full Screen',
+ locale: _localeName,
+ name: 'demoFullscreenTooltip',
+ desc: r'Tooltip for Full Screen button in a demo.');
+ }
+
+ String get demoInfoTooltip {
+ return Intl.message(r'Info',
+ locale: _localeName,
+ name: 'demoInfoTooltip',
+ desc: r'Tooltip for info button in a demo.');
+ }
+
+ String get demoInputChipDescription {
+ return Intl.message(
+ r'Input chips represent a complex piece of information, such as an entity (person, place, or thing) or conversational text, in a compact form.',
+ locale: _localeName,
+ name: 'demoInputChipDescription',
+ desc: r'Description for the input chip component demo.');
+ }
+
+ String get demoInputChipTitle {
+ return Intl.message(r'Input Chip',
+ locale: _localeName,
+ name: 'demoInputChipTitle',
+ desc: r'Title for the input chip component demo.');
+ }
+
+ String get demoInvalidURL {
+ return Intl.message(r'Couldn' "'" r't display URL:',
+ locale: _localeName,
+ name: 'demoInvalidURL',
+ desc: r'Error message when opening the URL for a demo.');
+ }
+
+ String get demoListsDescription {
+ return Intl.message(
+ r'A single fixed-height row that typically contains some text as well as a leading or trailing icon.',
+ locale: _localeName,
+ name: 'demoListsDescription',
+ desc:
+ r'Description for lists demo. This describes what a single row in a list consists of.');
+ }
+
+ String get demoListsSecondary {
+ return Intl.message(r'Secondary text',
+ locale: _localeName,
+ name: 'demoListsSecondary',
+ desc: r'Text that appears in the second line of a list item.');
+ }
+
+ String get demoListsSubtitle {
+ return Intl.message(r'Scrolling list layouts',
+ locale: _localeName,
+ name: 'demoListsSubtitle',
+ desc: r'Subtitle for lists demo.');
+ }
+
+ String get demoListsTitle {
+ return Intl.message(r'Lists',
+ locale: _localeName,
+ name: 'demoListsTitle',
+ desc: r'Title for lists demo.');
+ }
+
+ String get demoOneLineListsTitle {
+ return Intl.message(r'One Line',
+ locale: _localeName,
+ name: 'demoOneLineListsTitle',
+ desc: r'Title for lists demo with only one line of text per row.');
+ }
+
+ String get demoOptionsFeatureDescription {
+ return Intl.message(r'Tap here to view available options for this demo.',
+ locale: _localeName,
+ name: 'demoOptionsFeatureDescription',
+ desc:
+ r'Description for an alert that explains what the options button does.');
+ }
+
+ String get demoOptionsFeatureTitle {
+ return Intl.message(r'View options',
+ locale: _localeName,
+ name: 'demoOptionsFeatureTitle',
+ desc:
+ r'Title for an alert that explains what the options button does.');
+ }
+
+ String get demoOptionsTooltip {
+ return Intl.message(r'Options',
+ locale: _localeName,
+ name: 'demoOptionsTooltip',
+ desc: r'Tooltip for options button in a demo.');
+ }
+
+ String get demoOutlineButtonDescription {
+ return Intl.message(
+ r'Outline buttons become opaque and elevate when pressed. They are often paired with raised buttons to indicate an alternative, secondary action.',
+ locale: _localeName,
+ name: 'demoOutlineButtonDescription',
+ desc: r'Description for the outline button component demo.');
+ }
+
+ String get demoOutlineButtonTitle {
+ return Intl.message(r'Outline Button',
+ locale: _localeName,
+ name: 'demoOutlineButtonTitle',
+ desc: r'Title for the outline button component demo.');
+ }
+
+ String get demoRaisedButtonDescription {
+ return Intl.message(
+ r'Raised buttons add dimension to mostly flat layouts. They emphasize functions on busy or wide spaces.',
+ locale: _localeName,
+ name: 'demoRaisedButtonDescription',
+ desc: r'Description for the raised button component demo.');
+ }
+
+ String get demoRaisedButtonTitle {
+ return Intl.message(r'Raised Button',
+ locale: _localeName,
+ name: 'demoRaisedButtonTitle',
+ desc: r'Title for the raised button component demo.');
+ }
+
+ String get demoSelectionControlsCheckboxDescription {
+ return Intl.message(
+ r'Checkboxes allow the user to select multiple options from a set. A normal checkbox'
+ "'"
+ r's value is true or false and a tristate checkbox'
+ "'"
+ r's value can also be null.',
+ locale: _localeName,
+ name: 'demoSelectionControlsCheckboxDescription',
+ desc: r'Description for the checkbox (selection controls) demo.');
+ }
+
+ String get demoSelectionControlsCheckboxTitle {
+ return Intl.message(r'Checkbox',
+ locale: _localeName,
+ name: 'demoSelectionControlsCheckboxTitle',
+ desc: r'Title for the checkbox (selection controls) demo.');
+ }
+
+ String get demoSelectionControlsRadioDescription {
+ return Intl.message(
+ r'Radio buttons allow the user to select one option from a set. Use radio buttons for exclusive selection if you think that the user needs to see all available options side-by-side.',
+ locale: _localeName,
+ name: 'demoSelectionControlsRadioDescription',
+ desc: r'Description for the radio button (selection controls) demo.');
+ }
+
+ String get demoSelectionControlsRadioTitle {
+ return Intl.message(r'Radio',
+ locale: _localeName,
+ name: 'demoSelectionControlsRadioTitle',
+ desc: r'Title for the radio button (selection controls) demo.');
+ }
+
+ String get demoSelectionControlsSubtitle {
+ return Intl.message(r'Checkboxes, radio buttons, and switches',
+ locale: _localeName,
+ name: 'demoSelectionControlsSubtitle',
+ desc: r'Subtitle for selection controls demo.');
+ }
+
+ String get demoSelectionControlsSwitchDescription {
+ return Intl.message(
+ r'On/off switches toggle the state of a single settings option. The option that the switch controls, as well as the state it’s in, should be made clear from the corresponding inline label.',
+ locale: _localeName,
+ name: 'demoSelectionControlsSwitchDescription',
+ desc: r'Description for the switches (selection controls) demo.');
+ }
+
+ String get demoSelectionControlsSwitchTitle {
+ return Intl.message(r'Switch',
+ locale: _localeName,
+ name: 'demoSelectionControlsSwitchTitle',
+ desc: r'Title for the switches (selection controls) demo.');
+ }
+
+ String get demoSelectionControlsTitle {
+ return Intl.message(r'Selection controls',
+ locale: _localeName,
+ name: 'demoSelectionControlsTitle',
+ desc: r'Title for selection controls demo.');
+ }
+
+ String get demoSimpleDialogDescription {
+ return Intl.message(
+ r'A simple dialog offers the user a choice between several options. A simple dialog has an optional title that is displayed above the choices.',
+ locale: _localeName,
+ name: 'demoSimpleDialogDescription',
+ desc: r'Description for the simple dialog component demo.');
+ }
+
+ String get demoSimpleDialogTitle {
+ return Intl.message(r'Simple',
+ locale: _localeName,
+ name: 'demoSimpleDialogTitle',
+ desc: r'Title for the simple dialog component demo.');
+ }
+
+ String get demoTabsDescription {
+ return Intl.message(
+ r'Tabs organize content across different screens, data sets, and other interactions.',
+ locale: _localeName,
+ name: 'demoTabsDescription',
+ desc: r'Description for tabs demo.');
+ }
+
+ String get demoTabsSubtitle {
+ return Intl.message(r'Tabs with independently scrollable views',
+ locale: _localeName,
+ name: 'demoTabsSubtitle',
+ desc: r'Subtitle for tabs demo.');
+ }
+
+ String get demoTabsTitle {
+ return Intl.message(r'Tabs',
+ locale: _localeName,
+ name: 'demoTabsTitle',
+ desc: r'Title for tabs demo.');
+ }
+
+ String get demoTextFieldDescription {
+ return Intl.message(
+ r'Text fields allow users to enter text into a UI. They typically appear in forms and dialogs.',
+ locale: _localeName,
+ name: 'demoTextFieldDescription',
+ desc: r'Description for text fields demo.');
+ }
+
+ String get demoTextFieldEmail {
+ return Intl.message(r'E-mail',
+ locale: _localeName,
+ name: 'demoTextFieldEmail',
+ desc: r'The label for an email address input field');
+ }
+
+ String get demoTextFieldEnterPassword {
+ return Intl.message(r'Please enter a password.',
+ locale: _localeName,
+ name: 'demoTextFieldEnterPassword',
+ desc: r'Error that shows up if password is not given.');
+ }
+
+ String get demoTextFieldEnterUSPhoneNumber {
+ return Intl.message(r'(###) ###-#### - Enter a US phone number.',
+ locale: _localeName,
+ name: 'demoTextFieldEnterUSPhoneNumber',
+ desc:
+ r'Error that shows up if non-valid non-US phone number is given.');
+ }
+
+ String get demoTextFieldFormErrors {
+ return Intl.message(r'Please fix the errors in red before submitting.',
+ locale: _localeName,
+ name: 'demoTextFieldFormErrors',
+ desc: r'Text that shows up on form errors.');
+ }
+
+ String get demoTextFieldHidePasswordLabel {
+ return Intl.message(r'Hide password',
+ locale: _localeName,
+ name: 'demoTextFieldHidePasswordLabel',
+ desc: r'Label for hide password icon.');
+ }
+
+ String get demoTextFieldKeepItShort {
+ return Intl.message(r'Keep it short, this is just a demo.',
+ locale: _localeName,
+ name: 'demoTextFieldKeepItShort',
+ desc: r'Helper text for biography/life story input field.');
+ }
+
+ String get demoTextFieldLifeStory {
+ return Intl.message(r'Life story',
+ locale: _localeName,
+ name: 'demoTextFieldLifeStory',
+ desc: r'The label for for biography/life story input field.');
+ }
+
+ String get demoTextFieldNameField {
+ return Intl.message(r'Name*',
+ locale: _localeName,
+ name: 'demoTextFieldNameField',
+ desc:
+ r'The label for a name input field that is required (hence the star).');
+ }
+
+ String demoTextFieldNameHasPhoneNumber(Object name, Object phoneNumber) {
+ return Intl.message(r'$name phone number is $phoneNumber',
+ locale: _localeName,
+ name: 'demoTextFieldNameHasPhoneNumber',
+ desc:
+ r'Text that shows up when valid phone number and name is submitted in form.',
+ args: <Object>[name, phoneNumber]);
+ }
+
+ String get demoTextFieldNameRequired {
+ return Intl.message(r'Name is required.',
+ locale: _localeName,
+ name: 'demoTextFieldNameRequired',
+ desc:
+ r'Shows up as submission error if name is not given in the form.');
+ }
+
+ String get demoTextFieldNoMoreThan {
+ return Intl.message(r'No more than 8 characters.',
+ locale: _localeName,
+ name: 'demoTextFieldNoMoreThan',
+ desc: r'Helper text for password input field.');
+ }
+
+ String get demoTextFieldOnlyAlphabeticalChars {
+ return Intl.message(r'Please enter only alphabetical characters.',
+ locale: _localeName,
+ name: 'demoTextFieldOnlyAlphabeticalChars',
+ desc: r'Error that shows if non-alphabetical characters are given.');
+ }
+
+ String get demoTextFieldPassword {
+ return Intl.message(r'Password*',
+ locale: _localeName,
+ name: 'demoTextFieldPassword',
+ desc:
+ r'Label for password input field, that is required (hence the star).');
+ }
+
+ String get demoTextFieldPasswordsDoNotMatch {
+ return Intl.message(r'The passwords don' "'" r't match',
+ locale: _localeName,
+ name: 'demoTextFieldPasswordsDoNotMatch',
+ desc:
+ r'Error that shows up, if the re-typed password does not match the already given password.');
+ }
+
+ String get demoTextFieldPhoneNumber {
+ return Intl.message(r'Phone number*',
+ locale: _localeName,
+ name: 'demoTextFieldPhoneNumber',
+ desc:
+ r'The label for a phone number input field that is required (hence the star).');
+ }
+
+ String get demoTextFieldRequiredField {
+ return Intl.message(r'* indicates required field',
+ locale: _localeName,
+ name: 'demoTextFieldRequiredField',
+ desc:
+ r'Helper text to indicate that * means that it is a required field.');
+ }
+
+ String get demoTextFieldRetypePassword {
+ return Intl.message(r'Re-type password*',
+ locale: _localeName,
+ name: 'demoTextFieldRetypePassword',
+ desc: r'Label for repeat password input field.');
+ }
+
+ String get demoTextFieldSalary {
+ return Intl.message(r'Salary',
+ locale: _localeName,
+ name: 'demoTextFieldSalary',
+ desc: r'The label for salary input field.');
+ }
+
+ String get demoTextFieldShowPasswordLabel {
+ return Intl.message(r'Show password',
+ locale: _localeName,
+ name: 'demoTextFieldShowPasswordLabel',
+ desc: r'Label for show password icon.');
+ }
+
+ String get demoTextFieldSubmit {
+ return Intl.message(r'SUBMIT',
+ locale: _localeName,
+ name: 'demoTextFieldSubmit',
+ desc: r'The submit button text for form.');
+ }
+
+ String get demoTextFieldSubtitle {
+ return Intl.message(r'Single line of editable text and numbers',
+ locale: _localeName,
+ name: 'demoTextFieldSubtitle',
+ desc: r'Description for text fields demo.');
+ }
+
+ String get demoTextFieldTellUsAboutYourself {
+ return Intl.message(
+ r'Tell us about yourself (e.g., write down what you do or what hobbies you have)',
+ locale: _localeName,
+ name: 'demoTextFieldTellUsAboutYourself',
+ desc: r'The placeholder text for biography/life story input field.');
+ }
+
+ String get demoTextFieldTitle {
+ return Intl.message(r'Text fields',
+ locale: _localeName,
+ name: 'demoTextFieldTitle',
+ desc: r'Title for text fields demo.');
+ }
+
+ String get demoTextFieldUSD {
+ return Intl.message(r'USD',
+ locale: _localeName,
+ name: 'demoTextFieldUSD',
+ desc: r'US currency, used as suffix in input field for salary.');
+ }
+
+ String get demoTextFieldWhatDoPeopleCallYou {
+ return Intl.message(r'What do people call you?',
+ locale: _localeName,
+ name: 'demoTextFieldWhatDoPeopleCallYou',
+ desc: r'Placeholder for name field in form.');
+ }
+
+ String get demoTextFieldWhereCanWeReachYou {
+ return Intl.message(r'Where can we reach you?',
+ locale: _localeName,
+ name: 'demoTextFieldWhereCanWeReachYou',
+ desc: r'Placeholder for when entering a phone number in a form.');
+ }
+
+ String get demoTextFieldYourEmailAddress {
+ return Intl.message(r'Your email address',
+ locale: _localeName,
+ name: 'demoTextFieldYourEmailAddress',
+ desc: r'The label for an email address input field.');
+ }
+
+ String get demoToggleButtonDescription {
+ return Intl.message(
+ r'Toggle buttons can be used to group related options. To emphasize groups of related toggle buttons, a group should share a common container',
+ locale: _localeName,
+ name: 'demoToggleButtonDescription',
+ desc: r'Description for the toggle buttons component demo.');
+ }
+
+ String get demoToggleButtonTitle {
+ return Intl.message(r'Toggle Buttons',
+ locale: _localeName,
+ name: 'demoToggleButtonTitle',
+ desc: r'Title for the toggle buttons component demo.');
+ }
+
+ String get demoTwoLineListsTitle {
+ return Intl.message(r'Two Lines',
+ locale: _localeName,
+ name: 'demoTwoLineListsTitle',
+ desc: r'Title for lists demo with two lines of text per row.');
+ }
+
+ String get demoTypographyDescription {
+ return Intl.message(
+ r'Definitions for the various typographical styles found in Material Design.',
+ locale: _localeName,
+ name: 'demoTypographyDescription',
+ desc:
+ r'Description for the typography demo. Material Design should remain capitalized.');
+ }
+
+ String get demoTypographySubtitle {
+ return Intl.message(r'All of the predefined text styles',
+ locale: _localeName,
+ name: 'demoTypographySubtitle',
+ desc: r'Subtitle for the typography demo.');
+ }
+
+ String get demoTypographyTitle {
+ return Intl.message(r'Typography',
+ locale: _localeName,
+ name: 'demoTypographyTitle',
+ desc: r'Title for the typography demo.');
+ }
+
+ String get dialogAddAccount {
+ return Intl.message(r'Add account',
+ locale: _localeName,
+ name: 'dialogAddAccount',
+ desc: r'Alert dialog option for adding an account.');
+ }
+
+ String get dialogAgree {
+ return Intl.message(r'AGREE',
+ locale: _localeName,
+ name: 'dialogAgree',
+ desc: r'Alert dialog agree option.');
+ }
+
+ String get dialogCancel {
+ return Intl.message(r'CANCEL',
+ locale: _localeName,
+ name: 'dialogCancel',
+ desc: r'Alert dialog cancel option.');
+ }
+
+ String get dialogDisagree {
+ return Intl.message(r'DISAGREE',
+ locale: _localeName,
+ name: 'dialogDisagree',
+ desc: r'Alert dialog disagree option.');
+ }
+
+ String get dialogDiscard {
+ return Intl.message(r'DISCARD',
+ locale: _localeName,
+ name: 'dialogDiscard',
+ desc: r'Alert dialog discard option.');
+ }
+
+ String get dialogDiscardTitle {
+ return Intl.message(r'Discard draft?',
+ locale: _localeName,
+ name: 'dialogDiscardTitle',
+ desc: r'Alert dialog message to discard draft.');
+ }
+
+ String get dialogFullscreenDescription {
+ return Intl.message(r'A full screen dialog demo',
+ locale: _localeName,
+ name: 'dialogFullscreenDescription',
+ desc: r'Description for full screen dialog demo.');
+ }
+
+ String get dialogFullscreenSave {
+ return Intl.message(r'SAVE',
+ locale: _localeName,
+ name: 'dialogFullscreenSave',
+ desc: r'Save button for full screen dialog demo.');
+ }
+
+ String get dialogFullscreenTitle {
+ return Intl.message(r'Full Screen Dialog',
+ locale: _localeName,
+ name: 'dialogFullscreenTitle',
+ desc: r'Title for full screen dialog demo.');
+ }
+
+ String get dialogLocationDescription {
+ return Intl.message(
+ r'Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running.',
+ locale: _localeName,
+ name: 'dialogLocationDescription',
+ desc: r'Alert dialog description to use location services.');
+ }
+
+ String get dialogLocationTitle {
+ return Intl.message(r'Use Google' "'" r's location service?',
+ locale: _localeName,
+ name: 'dialogLocationTitle',
+ desc: r'Alert dialog title to use location services.');
+ }
+
+ String dialogSelectedOption(Object value) {
+ return Intl.message(r'You selected: "$value"',
+ locale: _localeName,
+ name: 'dialogSelectedOption',
+ desc: r'Message displayed after an option is selected from a dialog',
+ args: <Object>[value]);
+ }
+
+ String get dialogSetBackup {
+ return Intl.message(r'Set backup account',
+ locale: _localeName,
+ name: 'dialogSetBackup',
+ desc: r'Alert dialog title for setting a backup account.');
+ }
+
+ String get dialogShow {
+ return Intl.message(r'SHOW DIALOG',
+ locale: _localeName,
+ name: 'dialogShow',
+ desc: r'Button text to display a dialog.');
+ }
+
+ String get homeCategoryReference {
+ return Intl.message(r'REFERENCE STYLES & MEDIA',
+ locale: _localeName,
+ name: 'homeCategoryReference',
+ desc: r'Category title on home screen for reference styles & media.');
+ }
+
+ String get homeHeaderCategories {
+ return Intl.message(r'Categories',
+ locale: _localeName,
+ name: 'homeHeaderCategories',
+ desc: r'Header title on home screen for Categories section.');
+ }
+
+ String get homeHeaderGallery {
+ return Intl.message(r'Gallery',
+ locale: _localeName,
+ name: 'homeHeaderGallery',
+ desc: r'Header title on home screen for Gallery section.');
+ }
+
+ String rallyAccountAmount(
+ Object accountName, Object accountNumber, Object amount) {
+ return Intl.message(r'$accountName account $accountNumber with $amount.',
+ locale: _localeName,
+ name: 'rallyAccountAmount',
+ desc:
+ r'Semantics label for row with bank account name (for example checking) and its bank account number (for example 123), with how much money is deposited in it (for example $12).',
+ args: <Object>[accountName, accountNumber, amount]);
+ }
+
+ String get rallyAccountDataCarSavings {
+ return Intl.message(r'Car Savings',
+ locale: _localeName,
+ name: 'rallyAccountDataCarSavings',
+ desc: r'Name for account made up by user.');
+ }
+
+ String get rallyAccountDataChecking {
+ return Intl.message(r'Checking',
+ locale: _localeName,
+ name: 'rallyAccountDataChecking',
+ desc: r'Name for account made up by user.');
+ }
+
+ String get rallyAccountDataHomeSavings {
+ return Intl.message(r'Home Savings',
+ locale: _localeName,
+ name: 'rallyAccountDataHomeSavings',
+ desc: r'Name for account made up by user.');
+ }
+
+ String get rallyAccountDataVacation {
+ return Intl.message(r'Vacation',
+ locale: _localeName,
+ name: 'rallyAccountDataVacation',
+ desc: r'Name for account made up by user.');
+ }
+
+ String get rallyAccountDetailDataAccountOwner {
+ return Intl.message(r'Account Owner',
+ locale: _localeName,
+ name: 'rallyAccountDetailDataAccountOwner',
+ desc:
+ r'Title for an account detail. Below the name of the account owner will be displayed.');
+ }
+
+ String get rallyAccountDetailDataAnnualPercentageYield {
+ return Intl.message(r'Annual Percentage Yield',
+ locale: _localeName,
+ name: 'rallyAccountDetailDataAnnualPercentageYield',
+ desc:
+ r'Title for account statistics. Below a percentage such as 0.10% will be displayed.');
+ }
+
+ String get rallyAccountDetailDataInterestPaidLastYear {
+ return Intl.message(r'Interest Paid Last Year',
+ locale: _localeName,
+ name: 'rallyAccountDetailDataInterestPaidLastYear',
+ desc:
+ r'Title for account statistics. Below a dollar amount such as $100 will be displayed.');
+ }
+
+ String get rallyAccountDetailDataInterestRate {
+ return Intl.message(r'Interest Rate',
+ locale: _localeName,
+ name: 'rallyAccountDetailDataInterestRate',
+ desc:
+ r'Title for account statistics. Below a dollar amount such as $100 will be displayed.');
+ }
+
+ String get rallyAccountDetailDataInterestYtd {
+ return Intl.message(r'Interest YTD',
+ locale: _localeName,
+ name: 'rallyAccountDetailDataInterestYtd',
+ desc:
+ r'Title for account statistics. Below a dollar amount such as $100 will be displayed.');
+ }
+
+ String get rallyAccountDetailDataNextStatement {
+ return Intl.message(r'Next Statement',
+ locale: _localeName,
+ name: 'rallyAccountDetailDataNextStatement',
+ desc:
+ r'Title for an account detail. Below a date for when the next account statement is released.');
+ }
+
+ String get rallyAccountTotal {
+ return Intl.message(r'Total',
+ locale: _localeName,
+ name: 'rallyAccountTotal',
+ desc: r'Title for '
+ "'"
+ r'total account value'
+ "'"
+ r' overview page, a dollar value is displayed next to it.');
+ }
+
+ String get rallyAccounts {
+ return Intl.message(r'Accounts',
+ locale: _localeName,
+ name: 'rallyAccounts',
+ desc: r'Link text for accounts page.');
+ }
+
+ String get rallyAlerts {
+ return Intl.message(r'Alerts',
+ locale: _localeName,
+ name: 'rallyAlerts',
+ desc: r'Title for alerts part of overview page.');
+ }
+
+ String rallyAlertsMessageATMFees(Object amount) {
+ return Intl.message(r'You’ve spent $amount in ATM fees this month',
+ locale: _localeName,
+ name: 'rallyAlertsMessageATMFees',
+ desc:
+ r'Alert message shown when for example, the user has spent $24 in ATM fees this month.',
+ args: <Object>[amount]);
+ }
+
+ String rallyAlertsMessageCheckingAccount(Object percent) {
+ return Intl.message(
+ r'Good work! Your checking account is $percent higher than last month.',
+ locale: _localeName,
+ name: 'rallyAlertsMessageCheckingAccount',
+ desc:
+ r'Alert message shown when for example, the checking account is 1% higher than last month.',
+ args: <Object>[percent]);
+ }
+
+ String rallyAlertsMessageHeadsUpShopping(Object percent) {
+ return Intl.message(
+ r'Heads up, you’ve used up $percent of your Shopping budget for this month.',
+ locale: _localeName,
+ name: 'rallyAlertsMessageHeadsUpShopping',
+ desc: r'Alert message shown when for example, user has used more than 90% of their shopping budget.',
+ args: <Object>[percent]);
+ }
+
+ String rallyAlertsMessageSpentOnRestaurants(Object amount) {
+ return Intl.message(r'You’ve spent $amount on Restaurants this week.',
+ locale: _localeName,
+ name: 'rallyAlertsMessageSpentOnRestaurants',
+ desc:
+ r'Alert message shown when for example, user has spent $120 on Restaurants this week.',
+ args: <Object>[amount]);
+ }
+
+ String rallyAlertsMessageUnassignedTransactions(int count) {
+ return Intl.plural(count,
+ locale: _localeName,
+ name: 'rallyAlertsMessageUnassignedTransactions',
+ desc: r'Alert message shown when you have unassigned transactions.',
+ args: <Object>[count],
+ one:
+ 'Increase your potential tax deduction! Assign categories to 1 unassigned transaction.',
+ other:
+ 'Increase your potential tax deduction! Assign categories to $count unassigned transactions.');
+ }
+
+ String rallyBillAmount(Object billName, Object date, Object amount) {
+ return Intl.message(r'$billName bill due $date for $amount.',
+ locale: _localeName,
+ name: 'rallyBillAmount',
+ desc:
+ r'Semantics label for row with a bill (example name is rent), when the bill is due (1/12/2019 for example) and for how much money ($12).',
+ args: <Object>[billName, date, amount]);
+ }
+
+ String get rallyBills {
+ return Intl.message(r'Bills',
+ locale: _localeName,
+ name: 'rallyBills',
+ desc: r'Link text for bills page.');
+ }
+
+ String get rallyBillsDue {
+ return Intl.message(r'Due',
+ locale: _localeName,
+ name: 'rallyBillsDue',
+ desc: r'Title for '
+ "'"
+ r'bills due'
+ "'"
+ r' page, a dollar value is displayed next to it.');
+ }
+
+ String rallyBudgetAmount(Object budgetName, Object amountUsed,
+ Object amountTotal, Object amountLeft) {
+ return Intl.message(
+ r'$budgetName budget with $amountUsed used of $amountTotal, $amountLeft left',
+ locale: _localeName,
+ name: 'rallyBudgetAmount',
+ desc: r'Semantics label for row with a budget (housing budget for example), with how much is used of the budget (for example $5), the total budget (for example $100) and the amount left in the budget (for example $95).',
+ args: <Object>[budgetName, amountUsed, amountTotal, amountLeft]);
+ }
+
+ String get rallyBudgetCategoryClothing {
+ return Intl.message(r'Clothing',
+ locale: _localeName,
+ name: 'rallyBudgetCategoryClothing',
+ desc: r'Category for budget, to sort expenses / bills in.');
+ }
+
+ String get rallyBudgetCategoryCoffeeShops {
+ return Intl.message(r'Coffee Shops',
+ locale: _localeName,
+ name: 'rallyBudgetCategoryCoffeeShops',
+ desc: r'Category for budget, to sort expenses / bills in.');
+ }
+
+ String get rallyBudgetCategoryGroceries {
+ return Intl.message(r'Groceries',
+ locale: _localeName,
+ name: 'rallyBudgetCategoryGroceries',
+ desc: r'Category for budget, to sort expenses / bills in.');
+ }
+
+ String get rallyBudgetCategoryRestaurants {
+ return Intl.message(r'Restaurants',
+ locale: _localeName,
+ name: 'rallyBudgetCategoryRestaurants',
+ desc: r'Category for budget, to sort expenses / bills in.');
+ }
+
+ String get rallyBudgetLeft {
+ return Intl.message(r'Left',
+ locale: _localeName,
+ name: 'rallyBudgetLeft',
+ desc: r'Title for '
+ "'"
+ r'budget left'
+ "'"
+ r' page, a dollar value is displayed next to it.');
+ }
+
+ String get rallyBudgets {
+ return Intl.message(r'Budgets',
+ locale: _localeName,
+ name: 'rallyBudgets',
+ desc: r'Link text for budgets page.');
+ }
+
+ String get rallyDescription {
+ return Intl.message(r'A personal finance app',
+ locale: _localeName,
+ name: 'rallyDescription',
+ desc: r'Study description for Rally.');
+ }
+
+ String get rallyFinanceLeft {
+ return Intl.message(r' LEFT',
+ locale: _localeName,
+ name: 'rallyFinanceLeft',
+ desc: r'Displayed as '
+ "'"
+ r'dollar amount left'
+ "'"
+ r', for example $46.70 LEFT, for a budget category.');
+ }
+
+ String get rallyLoginButtonLogin {
+ return Intl.message(r'LOGIN',
+ locale: _localeName,
+ name: 'rallyLoginButtonLogin',
+ desc: r'Text for login button.');
+ }
+
+ String get rallyLoginLabelLogin {
+ return Intl.message(r'Login',
+ locale: _localeName,
+ name: 'rallyLoginLabelLogin',
+ desc: r'The label text to login.');
+ }
+
+ String get rallyLoginLoginToRally {
+ return Intl.message(r'Login to Rally',
+ locale: _localeName,
+ name: 'rallyLoginLoginToRally',
+ desc:
+ r'Title for login page for the Rally app (Rally does not need to be translated as it is a product name).');
+ }
+
+ String get rallyLoginNoAccount {
+ return Intl.message(r'Don' "'" r't have an account?',
+ locale: _localeName,
+ name: 'rallyLoginNoAccount',
+ desc: r'Prompt for signing up for an account.');
+ }
+
+ String get rallyLoginPassword {
+ return Intl.message(r'Password',
+ locale: _localeName,
+ name: 'rallyLoginPassword',
+ desc: r'The password field in an login form.');
+ }
+
+ String get rallyLoginRememberMe {
+ return Intl.message(r'Remember Me',
+ locale: _localeName,
+ name: 'rallyLoginRememberMe',
+ desc: r'Text if the user wants to stay logged in.');
+ }
+
+ String get rallyLoginSignUp {
+ return Intl.message(r'SIGN UP',
+ locale: _localeName,
+ name: 'rallyLoginSignUp',
+ desc: r'Button text to sign up for an account.');
+ }
+
+ String get rallyLoginUsername {
+ return Intl.message(r'Username',
+ locale: _localeName,
+ name: 'rallyLoginUsername',
+ desc: r'The username field in an login form.');
+ }
+
+ String get rallySeeAll {
+ return Intl.message(r'SEE ALL',
+ locale: _localeName,
+ name: 'rallySeeAll',
+ desc: r'Link text for button to see all data for category.');
+ }
+
+ String get rallySeeAllAccounts {
+ return Intl.message(r'See all accounts',
+ locale: _localeName,
+ name: 'rallySeeAllAccounts',
+ desc:
+ r'Semantics label for button to see all accounts. Accounts refer to bank account here.');
+ }
+
+ String get rallySeeAllBills {
+ return Intl.message(r'See all bills',
+ locale: _localeName,
+ name: 'rallySeeAllBills',
+ desc: r'Semantics label for button to see all bills.');
+ }
+
+ String get rallySeeAllBudgets {
+ return Intl.message(r'See all budgets',
+ locale: _localeName,
+ name: 'rallySeeAllBudgets',
+ desc: r'Semantics label for button to see all budgets.');
+ }
+
+ String get rallySettingsFindAtms {
+ return Intl.message(r'Find ATMs',
+ locale: _localeName,
+ name: 'rallySettingsFindAtms',
+ desc: r'Link to go to the page ' "'" r'Find ATMs' "'" r'.');
+ }
+
+ String get rallySettingsHelp {
+ return Intl.message(r'Help',
+ locale: _localeName,
+ name: 'rallySettingsHelp',
+ desc: r'Link to go to the page ' "'" r'Help' "'" r'.');
+ }
+
+ String get rallySettingsManageAccounts {
+ return Intl.message(r'Manage Accounts',
+ locale: _localeName,
+ name: 'rallySettingsManageAccounts',
+ desc: r'Link to go to the page ' "'" r'Manage Accounts.');
+ }
+
+ String get rallySettingsNotifications {
+ return Intl.message(r'Notifications',
+ locale: _localeName,
+ name: 'rallySettingsNotifications',
+ desc: r'Link to go to the page ' "'" r'Notifications' "'" r'.');
+ }
+
+ String get rallySettingsPaperlessSettings {
+ return Intl.message(r'Paperless Settings',
+ locale: _localeName,
+ name: 'rallySettingsPaperlessSettings',
+ desc: r'Link to go to the page ' "'" r'Paperless Settings' "'" r'.');
+ }
+
+ String get rallySettingsPasscodeAndTouchId {
+ return Intl.message(r'Passcode and Touch ID',
+ locale: _localeName,
+ name: 'rallySettingsPasscodeAndTouchId',
+ desc: r'Link to go to the page ' "'" r'Passcode and Touch ID' "'" r'.');
+ }
+
+ String get rallySettingsPersonalInformation {
+ return Intl.message(r'Personal Information',
+ locale: _localeName,
+ name: 'rallySettingsPersonalInformation',
+ desc: r'Link to go to the page ' "'" r'Personal Information' "'" r'.');
+ }
+
+ String get rallySettingsSignOut {
+ return Intl.message(r'Sign out',
+ locale: _localeName,
+ name: 'rallySettingsSignOut',
+ desc: r'Link to go to the page ' "'" r'Sign out' "'" r'.');
+ }
+
+ String get rallySettingsTaxDocuments {
+ return Intl.message(r'Tax Documents',
+ locale: _localeName,
+ name: 'rallySettingsTaxDocuments',
+ desc: r'Link to go to the page ' "'" r'Tax Documents' "'" r'.');
+ }
+
+ String get rallyTitleAccounts {
+ return Intl.message(r'ACCOUNTS',
+ locale: _localeName,
+ name: 'rallyTitleAccounts',
+ desc: r'The navigation link to the accounts page.');
+ }
+
+ String get rallyTitleBills {
+ return Intl.message(r'BILLS',
+ locale: _localeName,
+ name: 'rallyTitleBills',
+ desc: r'The navigation link to the bills page.');
+ }
+
+ String get rallyTitleBudgets {
+ return Intl.message(r'BUDGETS',
+ locale: _localeName,
+ name: 'rallyTitleBudgets',
+ desc: r'The navigation link to the budgets page.');
+ }
+
+ String get rallyTitleOverview {
+ return Intl.message(r'OVERVIEW',
+ locale: _localeName,
+ name: 'rallyTitleOverview',
+ desc: r'The navigation link to the overview page.');
+ }
+
+ String get rallyTitleSettings {
+ return Intl.message(r'SETTINGS',
+ locale: _localeName,
+ name: 'rallyTitleSettings',
+ desc: r'The navigation link to the settings page.');
+ }
+
+ String get settingsAbout {
+ return Intl.message(r'About Flutter Gallery',
+ locale: _localeName,
+ name: 'settingsAbout',
+ desc: r'Title for information button.');
+ }
+
+ String get settingsAttribution {
+ return Intl.message(r'Designed by TOASTER in London',
+ locale: _localeName,
+ name: 'settingsAttribution',
+ desc:
+ r'Title for attribution (TOASTER is a proper name and should remain in English).');
+ }
+
+ String get settingsButtonCloseLabel {
+ return Intl.message(r'Close settings',
+ locale: _localeName,
+ name: 'settingsButtonCloseLabel',
+ desc:
+ r'Accessibility label for the settings button when settings are showing.');
+ }
+
+ String get settingsButtonLabel {
+ return Intl.message(r'Settings',
+ locale: _localeName,
+ name: 'settingsButtonLabel',
+ desc:
+ r'Accessibility label for the settings button when settings are not showing.');
+ }
+
+ String get settingsDarkTheme {
+ return Intl.message(r'Dark',
+ locale: _localeName,
+ name: 'settingsDarkTheme',
+ desc: r'Title for the dark theme setting.');
+ }
+
+ String get settingsFeedback {
+ return Intl.message(r'Send feedback',
+ locale: _localeName,
+ name: 'settingsFeedback',
+ desc: r'Title for feedback button.');
+ }
+
+ String get settingsLightTheme {
+ return Intl.message(r'Light',
+ locale: _localeName,
+ name: 'settingsLightTheme',
+ desc: r'Title for the light theme setting.');
+ }
+
+ String get settingsLocale {
+ return Intl.message(r'Locale',
+ locale: _localeName,
+ name: 'settingsLocale',
+ desc: r'Title for locale setting.');
+ }
+
+ String get settingsPlatformAndroid {
+ return Intl.message(r'Android',
+ locale: _localeName,
+ name: 'settingsPlatformAndroid',
+ desc: r'Title for Android platform setting.');
+ }
+
+ String get settingsPlatformIOS {
+ return Intl.message(r'iOS',
+ locale: _localeName,
+ name: 'settingsPlatformIOS',
+ desc: r'Title for iOS platform setting.');
+ }
+
+ String get settingsPlatformMechanics {
+ return Intl.message(r'Platform mechanics',
+ locale: _localeName,
+ name: 'settingsPlatformMechanics',
+ desc: r'Title for platform mechanics (iOS/Android) setting.');
+ }
+
+ String get settingsSlowMotion {
+ return Intl.message(r'Slow motion',
+ locale: _localeName,
+ name: 'settingsSlowMotion',
+ desc: r'Title for slow motion setting.');
+ }
+
+ String get settingsSystemDefault {
+ return Intl.message(r'System',
+ locale: _localeName,
+ name: 'settingsSystemDefault',
+ desc: r'Option label to indicate the system default will be used.');
+ }
+
+ String get settingsTextDirection {
+ return Intl.message(r'Text direction',
+ locale: _localeName,
+ name: 'settingsTextDirection',
+ desc: r'Title for text direction setting.');
+ }
+
+ String get settingsTextDirectionLTR {
+ return Intl.message(r'LTR',
+ locale: _localeName,
+ name: 'settingsTextDirectionLTR',
+ desc: r'Option label for left-to-right text direction setting.');
+ }
+
+ String get settingsTextDirectionLocaleBased {
+ return Intl.message(r'Based on locale',
+ locale: _localeName,
+ name: 'settingsTextDirectionLocaleBased',
+ desc: r'Option label for locale-based text direction setting.');
+ }
+
+ String get settingsTextDirectionRTL {
+ return Intl.message(r'RTL',
+ locale: _localeName,
+ name: 'settingsTextDirectionRTL',
+ desc: r'Option label for right-to-left text direction setting.');
+ }
+
+ String get settingsTextScaling {
+ return Intl.message(r'Text scaling',
+ locale: _localeName,
+ name: 'settingsTextScaling',
+ desc: r'Title for text scaling setting.');
+ }
+
+ String get settingsTextScalingHuge {
+ return Intl.message(r'Huge',
+ locale: _localeName,
+ name: 'settingsTextScalingHuge',
+ desc: r'Option label for huge text scale setting.');
+ }
+
+ String get settingsTextScalingLarge {
+ return Intl.message(r'Large',
+ locale: _localeName,
+ name: 'settingsTextScalingLarge',
+ desc: r'Option label for large text scale setting.');
+ }
+
+ String get settingsTextScalingNormal {
+ return Intl.message(r'Normal',
+ locale: _localeName,
+ name: 'settingsTextScalingNormal',
+ desc: r'Option label for normal text scale setting.');
+ }
+
+ String get settingsTextScalingSmall {
+ return Intl.message(r'Small',
+ locale: _localeName,
+ name: 'settingsTextScalingSmall',
+ desc: r'Option label for small text scale setting.');
+ }
+
+ String get settingsTheme {
+ return Intl.message(r'Theme',
+ locale: _localeName,
+ name: 'settingsTheme',
+ desc: r'Title for the theme setting.');
+ }
+
+ String get settingsTitle {
+ return Intl.message(r'Settings',
+ locale: _localeName,
+ name: 'settingsTitle',
+ desc: r'Title for the settings screen.');
+ }
+
+ String get shrineCancelButtonCaption {
+ return Intl.message(r'CANCEL',
+ locale: _localeName,
+ name: 'shrineCancelButtonCaption',
+ desc:
+ r'On the login screen, the caption for a button to cancel login.');
+ }
+
+ String get shrineCartClearButtonCaption {
+ return Intl.message(r'CLEAR CART',
+ locale: _localeName,
+ name: 'shrineCartClearButtonCaption',
+ desc: r'Caption for a button used to clear the cart.');
+ }
+
+ String shrineCartItemCount(int quantity) {
+ return Intl.plural(quantity,
+ locale: _localeName,
+ name: 'shrineCartItemCount',
+ desc: r'A text showing the total number of items in the cart.',
+ args: <Object>[quantity],
+ zero: 'NO ITEMS',
+ one: '1 ITEM',
+ other: '$quantity ITEMS');
+ }
+
+ String get shrineCartPageCaption {
+ return Intl.message(r'CART',
+ locale: _localeName,
+ name: 'shrineCartPageCaption',
+ desc: r'Caption for a shopping cart page.');
+ }
+
+ String get shrineCartShippingCaption {
+ return Intl.message(r'Shipping:',
+ locale: _localeName,
+ name: 'shrineCartShippingCaption',
+ desc:
+ r'Label for a text showing the shipping cost for the items in the cart.');
+ }
+
+ String get shrineCartSubtotalCaption {
+ return Intl.message(r'Subtotal:',
+ locale: _localeName,
+ name: 'shrineCartSubtotalCaption',
+ desc:
+ r'Label for a text showing the subtotal price of the items in the cart (excluding shipping and tax).');
+ }
+
+ String get shrineCartTaxCaption {
+ return Intl.message(r'Tax:',
+ locale: _localeName,
+ name: 'shrineCartTaxCaption',
+ desc: r'Label for a text showing the tax for the items in the cart.');
+ }
+
+ String get shrineCartTotalCaption {
+ return Intl.message(r'TOTAL',
+ locale: _localeName,
+ name: 'shrineCartTotalCaption',
+ desc:
+ r'Label for a text showing total price of the items in the cart.');
+ }
+
+ String get shrineCategoryNameAccessories {
+ return Intl.message(r'ACCESSORIES',
+ locale: _localeName,
+ name: 'shrineCategoryNameAccessories',
+ desc:
+ r'A category of products consisting of accessories (clothing items).');
+ }
+
+ String get shrineCategoryNameAll {
+ return Intl.message(r'ALL',
+ locale: _localeName,
+ name: 'shrineCategoryNameAll',
+ desc: r'A tab showing products from all categories.');
+ }
+
+ String get shrineCategoryNameClothing {
+ return Intl.message(r'CLOTHING',
+ locale: _localeName,
+ name: 'shrineCategoryNameClothing',
+ desc: r'A category of products consisting of clothing.');
+ }
+
+ String get shrineCategoryNameHome {
+ return Intl.message(r'HOME',
+ locale: _localeName,
+ name: 'shrineCategoryNameHome',
+ desc: r'A category of products consisting of items used at home.');
+ }
+
+ String get shrineDescription {
+ return Intl.message(r'A fashionable retail app',
+ locale: _localeName,
+ name: 'shrineDescription',
+ desc: r'Study description for Shrine.');
+ }
+
+ String get shrineLoginPasswordLabel {
+ return Intl.message(r'Password',
+ locale: _localeName,
+ name: 'shrineLoginPasswordLabel',
+ desc:
+ r'On the login screen, a label for a textfield for the user to input their password.');
+ }
+
+ String get shrineLoginUsernameLabel {
+ return Intl.message(r'Username',
+ locale: _localeName,
+ name: 'shrineLoginUsernameLabel',
+ desc:
+ r'On the login screen, a label for a textfield for the user to input their username.');
+ }
+
+ String get shrineLogoutButtonCaption {
+ return Intl.message(r'LOGOUT',
+ locale: _localeName,
+ name: 'shrineLogoutButtonCaption',
+ desc: r'Label for a logout button.');
+ }
+
+ String get shrineMenuCaption {
+ return Intl.message(r'MENU',
+ locale: _localeName,
+ name: 'shrineMenuCaption',
+ desc: r'Caption for a menu page.');
+ }
+
+ String get shrineNextButtonCaption {
+ return Intl.message(r'NEXT',
+ locale: _localeName,
+ name: 'shrineNextButtonCaption',
+ desc:
+ r'On the login screen, the caption for a button to proceed login.');
+ }
+
+ String get shrineProductBlueStoneMug {
+ return Intl.message(r'Blue stone mug',
+ locale: _localeName,
+ name: 'shrineProductBlueStoneMug',
+ desc: r'Name of the product ' "'" r'Blue stone mug' "'" r'.');
+ }
+
+ String get shrineProductCeriseScallopTee {
+ return Intl.message(r'Cerise scallop tee',
+ locale: _localeName,
+ name: 'shrineProductCeriseScallopTee',
+ desc: r'Name of the product ' "'" r'Cerise scallop tee' "'" r'.');
+ }
+
+ String get shrineProductChambrayNapkins {
+ return Intl.message(r'Chambray napkins',
+ locale: _localeName,
+ name: 'shrineProductChambrayNapkins',
+ desc: r'Name of the product ' "'" r'Chambray napkins' "'" r'.');
+ }
+
+ String get shrineProductChambrayShirt {
+ return Intl.message(r'Chambray shirt',
+ locale: _localeName,
+ name: 'shrineProductChambrayShirt',
+ desc: r'Name of the product ' "'" r'Chambray shirt' "'" r'.');
+ }
+
+ String get shrineProductClassicWhiteCollar {
+ return Intl.message(r'Classic white collar',
+ locale: _localeName,
+ name: 'shrineProductClassicWhiteCollar',
+ desc: r'Name of the product ' "'" r'Classic white collar' "'" r'.');
+ }
+
+ String get shrineProductClaySweater {
+ return Intl.message(r'Clay sweater',
+ locale: _localeName,
+ name: 'shrineProductClaySweater',
+ desc: r'Name of the product ' "'" r'Clay sweater' "'" r'.');
+ }
+
+ String get shrineProductCopperWireRack {
+ return Intl.message(r'Copper wire rack',
+ locale: _localeName,
+ name: 'shrineProductCopperWireRack',
+ desc: r'Name of the product ' "'" r'Copper wire rack' "'" r'.');
+ }
+
+ String get shrineProductFineLinesTee {
+ return Intl.message(r'Fine lines tee',
+ locale: _localeName,
+ name: 'shrineProductFineLinesTee',
+ desc: r'Name of the product ' "'" r'Fine lines tee' "'" r'.');
+ }
+
+ String get shrineProductGardenStrand {
+ return Intl.message(r'Garden strand',
+ locale: _localeName,
+ name: 'shrineProductGardenStrand',
+ desc: r'Name of the product ' "'" r'Garden strand' "'" r'.');
+ }
+
+ String get shrineProductGatsbyHat {
+ return Intl.message(r'Gatsby hat',
+ locale: _localeName,
+ name: 'shrineProductGatsbyHat',
+ desc: r'Name of the product ' "'" r'Gatsby hat' "'" r'.');
+ }
+
+ String get shrineProductGentryJacket {
+ return Intl.message(r'Gentry jacket',
+ locale: _localeName,
+ name: 'shrineProductGentryJacket',
+ desc: r'Name of the product ' "'" r'Gentry jacket' "'" r'.');
+ }
+
+ String get shrineProductGiltDeskTrio {
+ return Intl.message(r'Gilt desk trio',
+ locale: _localeName,
+ name: 'shrineProductGiltDeskTrio',
+ desc: r'Name of the product ' "'" r'Gilt desk trio' "'" r'.');
+ }
+
+ String get shrineProductGingerScarf {
+ return Intl.message(r'Ginger scarf',
+ locale: _localeName,
+ name: 'shrineProductGingerScarf',
+ desc: r'Name of the product ' "'" r'Ginger scarf' "'" r'.');
+ }
+
+ String get shrineProductGreySlouchTank {
+ return Intl.message(r'Grey slouch tank',
+ locale: _localeName,
+ name: 'shrineProductGreySlouchTank',
+ desc: r'Name of the product ' "'" r'Grey slouch tank' "'" r'.');
+ }
+
+ String get shrineProductHurrahsTeaSet {
+ return Intl.message(r'Hurrahs tea set',
+ locale: _localeName,
+ name: 'shrineProductHurrahsTeaSet',
+ desc: r'Name of the product ' "'" r'Hurrahs tea set' "'" r'.');
+ }
+
+ String get shrineProductKitchenQuattro {
+ return Intl.message(r'Kitchen quattro',
+ locale: _localeName,
+ name: 'shrineProductKitchenQuattro',
+ desc: r'Name of the product ' "'" r'Kitchen quattro' "'" r'.');
+ }
+
+ String get shrineProductNavyTrousers {
+ return Intl.message(r'Navy trousers',
+ locale: _localeName,
+ name: 'shrineProductNavyTrousers',
+ desc: r'Name of the product ' "'" r'Navy trousers' "'" r'.');
+ }
+
+ String get shrineProductPlasterTunic {
+ return Intl.message(r'Plaster tunic',
+ locale: _localeName,
+ name: 'shrineProductPlasterTunic',
+ desc: r'Name of the product ' "'" r'Plaster tunic' "'" r'.');
+ }
+
+ String shrineProductPrice(Object price) {
+ return Intl.message(r'x $price',
+ locale: _localeName,
+ name: 'shrineProductPrice',
+ desc: r'A text showing the unit price of each product. Used as: '
+ "'"
+ r'Quantity: 3 x $129'
+ "'"
+ r'. The currency will be handled by the formatter.',
+ args: <Object>[price]);
+ }
+
+ String shrineProductQuantity(Object quantity) {
+ return Intl.message(r'Quantity: $quantity',
+ locale: _localeName,
+ name: 'shrineProductQuantity',
+ desc: r'A text showing the number of items for a specific product.',
+ args: <Object>[quantity]);
+ }
+
+ String get shrineProductQuartetTable {
+ return Intl.message(r'Quartet table',
+ locale: _localeName,
+ name: 'shrineProductQuartetTable',
+ desc: r'Name of the product ' "'" r'Quartet table' "'" r'.');
+ }
+
+ String get shrineProductRainwaterTray {
+ return Intl.message(r'Rainwater tray',
+ locale: _localeName,
+ name: 'shrineProductRainwaterTray',
+ desc: r'Name of the product ' "'" r'Rainwater tray' "'" r'.');
+ }
+
+ String get shrineProductRamonaCrossover {
+ return Intl.message(r'Ramona crossover',
+ locale: _localeName,
+ name: 'shrineProductRamonaCrossover',
+ desc: r'Name of the product ' "'" r'Ramona crossover' "'" r'.');
+ }
+
+ String get shrineProductSeaTunic {
+ return Intl.message(r'Sea tunic',
+ locale: _localeName,
+ name: 'shrineProductSeaTunic',
+ desc: r'Name of the product ' "'" r'Sea tunic' "'" r'.');
+ }
+
+ String get shrineProductSeabreezeSweater {
+ return Intl.message(r'Seabreeze sweater',
+ locale: _localeName,
+ name: 'shrineProductSeabreezeSweater',
+ desc: r'Name of the product ' "'" r'Seabreeze sweater' "'" r'.');
+ }
+
+ String get shrineProductShoulderRollsTee {
+ return Intl.message(r'Shoulder rolls tee',
+ locale: _localeName,
+ name: 'shrineProductShoulderRollsTee',
+ desc: r'Name of the product ' "'" r'Shoulder rolls tee' "'" r'.');
+ }
+
+ String get shrineProductShrugBag {
+ return Intl.message(r'Shrug bag',
+ locale: _localeName,
+ name: 'shrineProductShrugBag',
+ desc: r'Name of the product ' "'" r'Shrug bag' "'" r'.');
+ }
+
+ String get shrineProductSootheCeramicSet {
+ return Intl.message(r'Soothe ceramic set',
+ locale: _localeName,
+ name: 'shrineProductSootheCeramicSet',
+ desc: r'Name of the product ' "'" r'Soothe ceramic set' "'" r'.');
+ }
+
+ String get shrineProductStellaSunglasses {
+ return Intl.message(r'Stella sunglasses',
+ locale: _localeName,
+ name: 'shrineProductStellaSunglasses',
+ desc: r'Name of the product ' "'" r'Stella sunglasses' "'" r'.');
+ }
+
+ String get shrineProductStrutEarrings {
+ return Intl.message(r'Strut earrings',
+ locale: _localeName,
+ name: 'shrineProductStrutEarrings',
+ desc: r'Name of the product ' "'" r'Strut earrings' "'" r'.');
+ }
+
+ String get shrineProductSucculentPlanters {
+ return Intl.message(r'Succulent planters',
+ locale: _localeName,
+ name: 'shrineProductSucculentPlanters',
+ desc: r'Name of the product ' "'" r'Succulent planters' "'" r'.');
+ }
+
+ String get shrineProductSunshirtDress {
+ return Intl.message(r'Sunshirt dress',
+ locale: _localeName,
+ name: 'shrineProductSunshirtDress',
+ desc: r'Name of the product ' "'" r'Sunshirt dress' "'" r'.');
+ }
+
+ String get shrineProductSurfAndPerfShirt {
+ return Intl.message(r'Surf and perf shirt',
+ locale: _localeName,
+ name: 'shrineProductSurfAndPerfShirt',
+ desc: r'Name of the product ' "'" r'Surf and perf shirt' "'" r'.');
+ }
+
+ String get shrineProductVagabondSack {
+ return Intl.message(r'Vagabond sack',
+ locale: _localeName,
+ name: 'shrineProductVagabondSack',
+ desc: r'Name of the product ' "'" r'Vagabond sack' "'" r'.');
+ }
+
+ String get shrineProductVarsitySocks {
+ return Intl.message(r'Varsity socks',
+ locale: _localeName,
+ name: 'shrineProductVarsitySocks',
+ desc: r'Name of the product ' "'" r'Varsity socks' "'" r'.');
+ }
+
+ String get shrineProductWalterHenleyWhite {
+ return Intl.message(r'Walter henley (white)',
+ locale: _localeName,
+ name: 'shrineProductWalterHenleyWhite',
+ desc: r'Name of the product ' "'" r'Walter henley (white)' "'" r'.');
+ }
+
+ String get shrineProductWeaveKeyring {
+ return Intl.message(r'Weave keyring',
+ locale: _localeName,
+ name: 'shrineProductWeaveKeyring',
+ desc: r'Name of the product ' "'" r'Weave keyring' "'" r'.');
+ }
+
+ String get shrineProductWhitePinstripeShirt {
+ return Intl.message(r'White pinstripe shirt',
+ locale: _localeName,
+ name: 'shrineProductWhitePinstripeShirt',
+ desc: r'Name of the product ' "'" r'White pinstripe shirt' "'" r'.');
+ }
+
+ String get shrineProductWhitneyBelt {
+ return Intl.message(r'Whitney belt',
+ locale: _localeName,
+ name: 'shrineProductWhitneyBelt',
+ desc: r'Name of the product ' "'" r'Whitney belt' "'" r'.');
+ }
+
+ String shrineScreenReaderCart(int quantity) {
+ return Intl.plural(quantity,
+ locale: _localeName,
+ name: 'shrineScreenReaderCart',
+ desc:
+ r'The description of a shopping cart button containing some products. Used by screen readers, such as TalkBack and VoiceOver.',
+ args: <Object>[quantity],
+ zero: 'Shopping cart, no items',
+ one: 'Shopping cart, 1 item',
+ other: 'Shopping cart, $quantity items');
+ }
+
+ String get shrineScreenReaderProductAddToCart {
+ return Intl.message(r'Add to cart',
+ locale: _localeName,
+ name: 'shrineScreenReaderProductAddToCart',
+ desc:
+ r'An announcement made by screen readers, such as TalkBack and VoiceOver to indicate the action of a button for adding a product to the cart.');
+ }
+
+ String shrineScreenReaderRemoveProductButton(Object product) {
+ return Intl.message(r'Remove $product',
+ locale: _localeName,
+ name: 'shrineScreenReaderRemoveProductButton',
+ desc:
+ r'A tooltip for a button to remove a product. This will be read by screen readers, such as TalkBack and VoiceOver when a product is added to the shopping cart.',
+ args: <Object>[product]);
+ }
+
+ String get shrineTooltipCloseCart {
+ return Intl.message(r'Close cart',
+ locale: _localeName,
+ name: 'shrineTooltipCloseCart',
+ desc:
+ r'The tooltip text for a button to close the shopping cart page. Also used as a semantic label, used by screen readers, such as TalkBack and VoiceOver.');
+ }
+
+ String get shrineTooltipCloseMenu {
+ return Intl.message(r'Close menu',
+ locale: _localeName,
+ name: 'shrineTooltipCloseMenu',
+ desc:
+ r'The tooltip text for a button to close a menu. Also used as a semantic label, used by screen readers, such as TalkBack and VoiceOver.');
+ }
+
+ String get shrineTooltipOpenMenu {
+ return Intl.message(r'Open menu',
+ locale: _localeName,
+ name: 'shrineTooltipOpenMenu',
+ desc:
+ r'The tooltip text for a menu button. Also used as a semantic label, used by screen readers, such as TalkBack and VoiceOver.');
+ }
+
+ String get shrineTooltipRemoveItem {
+ return Intl.message(r'Remove item',
+ locale: _localeName,
+ name: 'shrineTooltipRemoveItem',
+ desc:
+ r'The tooltip text for a button to remove an item (a product) in a shopping cart. Also used as a semantic label, used by screen readers, such as TalkBack and VoiceOver.');
+ }
+
+ String get shrineTooltipSearch {
+ return Intl.message(r'Search',
+ locale: _localeName,
+ name: 'shrineTooltipSearch',
+ desc:
+ r'The tooltip text for a search button. Also used as a semantic label, used by screen readers, such as TalkBack and VoiceOver.');
+ }
+
+ String get shrineTooltipSettings {
+ return Intl.message(r'Settings',
+ locale: _localeName,
+ name: 'shrineTooltipSettings',
+ desc:
+ r'The tooltip text for a settings button. Also used as a semantic label, used by screen readers, such as TalkBack and VoiceOver.');
+ }
+
+ String get starterAppDescription {
+ return Intl.message(r'A responsive starter layout',
+ locale: _localeName,
+ name: 'starterAppDescription',
+ desc: r'The description for the starter app.');
+ }
+
+ String starterAppDrawerItem(Object value) {
+ return Intl.message(r'Item $value',
+ locale: _localeName,
+ name: 'starterAppDrawerItem',
+ desc: r'Generic placeholder drawer item.',
+ args: <Object>[value]);
+ }
+
+ String get starterAppGenericBody {
+ return Intl.message(r'Body',
+ locale: _localeName,
+ name: 'starterAppGenericBody',
+ desc: r'Generic placeholder for body text in drawer.');
+ }
+
+ String get starterAppGenericButton {
+ return Intl.message(r'BUTTON',
+ locale: _localeName,
+ name: 'starterAppGenericButton',
+ desc: r'Generic placeholder for button.');
+ }
+
+ String get starterAppGenericHeadline {
+ return Intl.message(r'Headline',
+ locale: _localeName,
+ name: 'starterAppGenericHeadline',
+ desc: r'Generic placeholder for headline in drawer.');
+ }
+
+ String get starterAppGenericSubtitle {
+ return Intl.message(r'Subtitle',
+ locale: _localeName,
+ name: 'starterAppGenericSubtitle',
+ desc: r'Generic placeholder for subtitle in drawer.');
+ }
+
+ String get starterAppGenericTitle {
+ return Intl.message(r'Title',
+ locale: _localeName,
+ name: 'starterAppGenericTitle',
+ desc: r'Generic placeholder for title in app bar.');
+ }
+
+ String get starterAppTitle {
+ return Intl.message(r'Starter app',
+ locale: _localeName,
+ name: 'starterAppTitle',
+ desc: r'The title and name for the starter app.');
+ }
+
+ String get starterAppTooltipAdd {
+ return Intl.message(r'Add',
+ locale: _localeName,
+ name: 'starterAppTooltipAdd',
+ desc: r'Tooltip on add icon.');
+ }
+
+ String get starterAppTooltipFavorite {
+ return Intl.message(r'Favorite',
+ locale: _localeName,
+ name: 'starterAppTooltipFavorite',
+ desc: r'Tooltip on favorite icon.');
+ }
+
+ String get starterAppTooltipSearch {
+ return Intl.message(r'Search',
+ locale: _localeName,
+ name: 'starterAppTooltipSearch',
+ desc: r'Tooltip on search icon.');
+ }
+
+ String get starterAppTooltipShare {
+ return Intl.message(r'Share',
+ locale: _localeName,
+ name: 'starterAppTooltipShare',
+ desc: r'Tooltip on share icon.');
+ }
+}
+
+class _GalleryLocalizationsDelegate
+ extends LocalizationsDelegate<GalleryLocalizations> {
+ const _GalleryLocalizationsDelegate();
+
+ @override
+ Future<GalleryLocalizations> load(Locale locale) =>
+ GalleryLocalizations.load(locale);
+
+ @override
+ bool isSupported(Locale locale) => <String>[
+ 'af',
+ 'am',
+ 'ar',
+ 'as',
+ 'az',
+ 'be',
+ 'bg',
+ 'bn',
+ 'bs',
+ 'ca',
+ 'cs',
+ 'da',
+ 'de',
+ 'el',
+ 'en',
+ 'es',
+ 'et',
+ 'eu',
+ 'fa',
+ 'fi',
+ 'fil',
+ 'fr',
+ 'gl',
+ 'gsw',
+ 'gu',
+ 'he',
+ 'hi',
+ 'hr',
+ 'hu',
+ 'hy',
+ 'id',
+ 'is',
+ 'it',
+ 'ja',
+ 'ka',
+ 'kk',
+ 'km',
+ 'kn',
+ 'ko',
+ 'ky',
+ 'lo',
+ 'lt',
+ 'lv',
+ 'mk',
+ 'ml',
+ 'mn',
+ 'mr',
+ 'ms',
+ 'my',
+ 'nb',
+ 'ne',
+ 'nl',
+ 'or',
+ 'pa',
+ 'pl',
+ 'pt',
+ 'ro',
+ 'ru',
+ 'si',
+ 'sk',
+ 'sl',
+ 'sq',
+ 'sr',
+ 'sv',
+ 'sw',
+ 'ta',
+ 'te',
+ 'th',
+ 'tl',
+ 'tr',
+ 'uk',
+ 'ur',
+ 'uz',
+ 'vi',
+ 'zh',
+ 'zu'
+ ].contains(locale.languageCode);
+
+ @override
+ bool shouldReload(_GalleryLocalizationsDelegate old) => false;
+}
diff --git a/gallery/lib/l10n/intl_af.arb b/gallery/lib/l10n/intl_af.arb
new file mode 100644
index 0000000..050c967
--- /dev/null
+++ b/gallery/lib/l10n/intl_af.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Sien opsies",
+ "demoOptionsFeatureDescription": "Tik hier om beskikbare opsies vir hierdie demonstrasie te bekyk.",
+ "demoCodeViewerCopyAll": "KOPIEER ALLES",
+ "shrineScreenReaderRemoveProductButton": "Verwyder {product}",
+ "shrineScreenReaderProductAddToCart": "Voeg by mandjie",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Inkopiemandjie, geen items nie}=1{Inkopiemandjie, 1 item}other{Inkopiemandjie, {quantity} items}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Kon nie na knipbord kopieer nie: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Gekopieer na knipbord.",
+ "craneSleep8SemanticLabel": "Maja-ruïnes op 'n krans bo 'n strand",
+ "craneSleep4SemanticLabel": "Hotel aan die oewer van 'n meer voor berge",
+ "craneSleep2SemanticLabel": "Machu Picchu-sitadel",
+ "craneSleep1SemanticLabel": "Chalet in 'n sneeulandskap met immergroen bome",
+ "craneSleep0SemanticLabel": "Hutte bo die water",
+ "craneFly13SemanticLabel": "Strandswembad met palmbome",
+ "craneFly12SemanticLabel": "Swembad met palmbome",
+ "craneFly11SemanticLabel": "Baksteenvuurtoring by die see",
+ "craneFly10SemanticLabel": "Al-Azhar-moskeetorings tydens sonsondergang",
+ "craneFly9SemanticLabel": "Man wat teen 'n antieke blou motor leun",
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "craneEat9SemanticLabel": "Kafeetoonbank met fyngebak",
+ "craneEat2SemanticLabel": "Burger",
+ "craneFly5SemanticLabel": "Hotel aan die oewer van 'n meer voor berge",
+ "demoSelectionControlsSubtitle": "Merkblokkies, klinkknoppies en skakelaars",
+ "craneEat10SemanticLabel": "Vrou wat 'n yslike pastramitoebroodjie vashou",
+ "craneFly4SemanticLabel": "Hutte bo die water",
+ "craneEat7SemanticLabel": "Bakkeryingang",
+ "craneEat6SemanticLabel": "Garnaalgereg",
+ "craneEat5SemanticLabel": "Artistieke restaurant se sitgebied",
+ "craneEat4SemanticLabel": "Sjokoladepoeding",
+ "craneEat3SemanticLabel": "Koreaanse taco",
+ "craneFly3SemanticLabel": "Machu Picchu-sitadel",
+ "craneEat1SemanticLabel": "Leë kroeg met padkafeetipe stoele",
+ "craneEat0SemanticLabel": "Pizza in 'n houtoond",
+ "craneSleep11SemanticLabel": "Taipei 101-wolkekrabber",
+ "craneSleep10SemanticLabel": "Al-Azhar-moskeetorings tydens sonsondergang",
+ "craneSleep9SemanticLabel": "Baksteenvuurtoring by die see",
+ "craneEat8SemanticLabel": "Bord met varswaterkreef",
+ "craneSleep7SemanticLabel": "Kleurryke woonstelle by Riberia Square",
+ "craneSleep6SemanticLabel": "Swembad met palmbome",
+ "craneSleep5SemanticLabel": "Tent in 'n veld",
+ "settingsButtonCloseLabel": "Maak instellings toe",
+ "demoSelectionControlsCheckboxDescription": "Merkblokkies maak dit vir die gebruiker moontlik om veelvuldige opsies uit 'n stel te kies. 'n Normale merkblokkie se waarde is waar of vals, en 'n driestaatmerkblokkie se waarde kan ook nul wees.",
+ "settingsButtonLabel": "Instellings",
+ "demoListsTitle": "Lyste",
+ "demoListsSubtitle": "Rollysuitlegte",
+ "demoListsDescription": "'n Enkele ry met vaste hoogte wat gewoonlik 'n bietjie teks bevat, asook 'n ikoon vooraan of agteraan.",
+ "demoOneLineListsTitle": "Een reël",
+ "demoTwoLineListsTitle": "Twee reëls",
+ "demoListsSecondary": "Sekondêre teks",
+ "demoSelectionControlsTitle": "Seleksiekontroles",
+ "craneFly7SemanticLabel": "Rushmoreberg",
+ "demoSelectionControlsCheckboxTitle": "Merkblokkie",
+ "craneSleep3SemanticLabel": "Man wat teen 'n antieke blou motor leun",
+ "demoSelectionControlsRadioTitle": "Radio",
+ "demoSelectionControlsRadioDescription": "Klinkknoppies maak dit vir die gebruiker moontlik om een opsie uit 'n stel te kies. Gebruik klinkknoppies vir 'n uitsluitende keuse as jy dink dat die gebruiker alle beskikbare opsies langs mekaar moet sien.",
+ "demoSelectionControlsSwitchTitle": "Wissel",
+ "demoSelectionControlsSwitchDescription": "Aan/af-skakelaar wissel die staat van 'n enkele instellingsopsie. Die opsie wat die skakelaar beheer, asook die staat waarin dit is, moet uit die ooreenstemmende inlynetiket duidelik wees.",
+ "craneFly0SemanticLabel": "Chalet in 'n sneeulandskap met immergroen bome",
+ "craneFly1SemanticLabel": "Tent in 'n veld",
+ "craneFly2SemanticLabel": "Gebedsvlae voor 'n sneeubedekte berg",
+ "craneFly6SemanticLabel": "Lugaansig van Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Sien alle rekeninge",
+ "rallyBillAmount": "{billName}-rekening van {amount} is betaalbaar op {date}.",
+ "shrineTooltipCloseCart": "Maak mandjie toe",
+ "shrineTooltipCloseMenu": "Maak kieslys toe",
+ "shrineTooltipOpenMenu": "Maak kieslys oop",
+ "shrineTooltipSettings": "Instellings",
+ "shrineTooltipSearch": "Soek",
+ "demoTabsDescription": "Oortjies organiseer inhoud oor verskillende skerms, datastelle, en ander interaksies heen.",
+ "demoTabsSubtitle": "Oortjies met aansigte waardeur jy onafhanklik kan rollees",
+ "demoTabsTitle": "Oortjies",
+ "rallyBudgetAmount": "{budgetName}-begroting met {amountUsed} gebruik van {amountTotal}; {amountLeft} oor",
+ "shrineTooltipRemoveItem": "Verwyder item",
+ "rallyAccountAmount": "{accountName}-rekening {accountNumber} met {amount}.",
+ "rallySeeAllBudgets": "Sien alle begrotings",
+ "rallySeeAllBills": "Sien alle rekeninge",
+ "craneFormDate": "Kies datum",
+ "craneFormOrigin": "Kies oorsprong",
+ "craneFly2": "Khumbu-vallei, Nepal",
+ "craneFly3": "Machu Picchu, Peru",
+ "craneFly4": "Malé, Maledive",
+ "craneFly5": "Vitznau, Switserland",
+ "craneFly6": "Meksikostad, Meksiko",
+ "craneFly7": "Mount Rushmore, Verenigde State",
+ "settingsTextDirectionLocaleBased": "Gegrond op locale",
+ "craneFly9": "Havana, Kuba",
+ "craneFly10": "Kaïro, Egipte",
+ "craneFly11": "Lissabon, Portugal",
+ "craneFly12": "Napa, Verenigde State",
+ "craneFly13": "Bali, Indonesië",
+ "craneSleep0": "Malé, Maledive",
+ "craneSleep1": "Aspen, Verenigde State",
+ "craneSleep2": "Machu Picchu, Peru",
+ "demoCupertinoSegmentedControlTitle": "Gesegmenteerde kontrole",
+ "craneSleep4": "Vitznau, Switserland",
+ "craneSleep5": "Big Sur, Verenigde State",
+ "craneSleep6": "Napa, Verenigde State",
+ "craneSleep7": "Porto, Portugal",
+ "craneSleep8": "Tulum, Meksiko",
+ "craneEat5": "Seoel 06236 Suid-Korea",
+ "demoChipTitle": "Skyfies",
+ "demoChipSubtitle": "Kompakte elemente wat 'n invoer, kenmerk of handeling verteenwoordig",
+ "demoActionChipTitle": "Handelingskyfie",
+ "demoActionChipDescription": "Handelingskyfies is 'n stel opsies wat 'n handeling wat met primêre inhoud verband hou, veroorsaak. Handelingskyfies behoort dinamies en kontekstueel in 'n UI te verskyn.",
+ "demoChoiceChipTitle": "Keuseskyfie",
+ "demoChoiceChipDescription": "Keuseskyfies verteenwoordig 'n enkele keuse van 'n stel af. Keuseskyfies bevat beskrywende teks of kategorieë.",
+ "demoFilterChipTitle": "Filterskyfie",
+ "demoFilterChipDescription": "Filterskyfies gebruik merkers of beskrywende woorde om inhoud te filtreer.",
+ "demoInputChipTitle": "Invoerskyfie",
+ "demoInputChipDescription": "Invoerskyfies verteenwoordig 'n komplekse stuk inligting, soos 'n entiteit (persoon, plek of ding) of gespreksteks, in 'n kompakte vorm.",
+ "craneSleep9": "Lissabon, Portugal",
+ "craneEat10": "Lissabon, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Word gebruik om tussen 'n aantal wedersyds eksklusiewe opsies te kies. As een opsie in die gesegmenteerde kontrole gekies is, sal die ander opsies in die gesegmenteerde kontrole nie meer gekies wees nie.",
+ "chipTurnOnLights": "Skakel ligte aan",
+ "chipSmall": "Klein",
+ "chipMedium": "Middelgroot",
+ "chipLarge": "Groot",
+ "chipElevator": "Hysbak",
+ "chipWasher": "Wasmasjien",
+ "chipFireplace": "Kaggel",
+ "chipBiking": "Fietsry",
+ "craneFormDiners": "Eetplekke",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Verhoog jou potensiële belastingaftrekking! Wys kategorieë toe aan 1 ontoegewysde transaksie.}other{Verhoog jou potensiële belastingaftrekking! Wys kategorieë toe aan {count} ontoegewysde transaksies.}}",
+ "craneFormTime": "Kies tyd",
+ "craneFormLocation": "Kies ligging",
+ "craneFormTravelers": "Reisigers",
+ "craneEat8": "Atlanta, Verenigde State",
+ "craneFormDestination": "Kies bestemming",
+ "craneFormDates": "Kies datums",
+ "craneFly": "VLIEG",
+ "craneSleep": "SLAAP",
+ "craneEat": "EET",
+ "craneFlySubhead": "Verken vlugte volgens bestemming",
+ "craneSleepSubhead": "Verken eiendomme volgens bestemming",
+ "craneEatSubhead": "Verken restaurante volgens bestemming",
+ "craneFlyStops": "{numberOfStops,plural, =0{Stopvry}=1{1 stop}other{{numberOfStops} stoppe}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{Geen beskikbare eiendomme nie}=1{1 beskikbare eiendom}other{{totalProperties} beskikbare eiendomme}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{Geen restaurante nie}=1{1 restaurant}other{{totalRestaurants} restaurante}}",
+ "craneFly0": "Aspen, Verenigde State",
+ "demoCupertinoSegmentedControlSubtitle": "Gesegmenteerde kontrole in iOS-styl",
+ "craneSleep10": "Kaïro, Egipte",
+ "craneEat9": "Madrid, Spanje",
+ "craneFly1": "Big Sur, Verenigde State",
+ "craneEat7": "Nashville, Verenigde State",
+ "craneEat6": "Seattle, Verenigde State",
+ "craneFly8": "Singapoer",
+ "craneEat4": "Parys, Frankryk",
+ "craneEat3": "Portland, Verenigde State",
+ "craneEat2": "Córdoba, Argentinië",
+ "craneEat1": "Dallas, Verenigde State",
+ "craneEat0": "Napels, Italië",
+ "craneSleep11": "Taipei, Taiwan",
+ "craneSleep3": "Havana, Kuba",
+ "shrineLogoutButtonCaption": "MELD AF",
+ "rallyTitleBills": "REKENINGE",
+ "rallyTitleAccounts": "REKENINGE",
+ "shrineProductVagabondSack": "Vagabond-sak",
+ "rallyAccountDetailDataInterestYtd": "Rente in jaar tot nou",
+ "shrineProductWhitneyBelt": "Whitney-belt",
+ "shrineProductGardenStrand": "Tuindraad",
+ "shrineProductStrutEarrings": "Strut-oorbelle",
+ "shrineProductVarsitySocks": "Universiteitskouse",
+ "shrineProductWeaveKeyring": "Geweefde sleutelhouer",
+ "shrineProductGatsbyHat": "Gatsby-hoed",
+ "shrineProductShrugBag": "Shrug-sak",
+ "shrineProductGiltDeskTrio": "Drietal vergulde tafels",
+ "shrineProductCopperWireRack": "Koperdraadrak",
+ "shrineProductSootheCeramicSet": "Soothe-keramiekstel",
+ "shrineProductHurrahsTeaSet": "Hurrahs-teestel",
+ "shrineProductBlueStoneMug": "Blou erdebeker",
+ "shrineProductRainwaterTray": "Reënwaterlaai",
+ "shrineProductChambrayNapkins": "Chambray-servette",
+ "shrineProductSucculentPlanters": "Vetplantplanter",
+ "shrineProductQuartetTable": "Kwartettafel",
+ "shrineProductKitchenQuattro": "Kombuiskwartet",
+ "shrineProductClaySweater": "Clay-oortrektrui",
+ "shrineProductSeaTunic": "Seetuniek",
+ "shrineProductPlasterTunic": "Gipstuniek",
+ "rallyBudgetCategoryRestaurants": "Restaurante",
+ "shrineProductChambrayShirt": "Chambray-hemp",
+ "shrineProductSeabreezeSweater": "Sea Breeze-trui",
+ "shrineProductGentryJacket": "Herebaadjie",
+ "shrineProductNavyTrousers": "Vlootblou broek",
+ "shrineProductWalterHenleyWhite": "Walter henley (wit)",
+ "shrineProductSurfAndPerfShirt": "\"Surf and perf\"-t-hemp",
+ "shrineProductGingerScarf": "Gemmerkleurige serp",
+ "shrineProductRamonaCrossover": "Ramona-oorkruissak",
+ "shrineProductClassicWhiteCollar": "Klassieke wit kraag",
+ "shrineProductSunshirtDress": "Sunshirt-rok",
+ "rallyAccountDetailDataInterestRate": "Rentekoers",
+ "rallyAccountDetailDataAnnualPercentageYield": "Jaarpersentasie-opbrengs",
+ "rallyAccountDataVacation": "Vakansie",
+ "shrineProductFineLinesTee": "T-hemp met dun strepies",
+ "rallyAccountDataHomeSavings": "Spaarrekening vir huis",
+ "rallyAccountDataChecking": "Tjek",
+ "rallyAccountDetailDataInterestPaidLastYear": "Rente wat verlede jaar betaal is",
+ "rallyAccountDetailDataNextStatement": "Volgende staat",
+ "rallyAccountDetailDataAccountOwner": "Rekeningeienaar",
+ "rallyBudgetCategoryCoffeeShops": "Koffiewinkels",
+ "rallyBudgetCategoryGroceries": "Kruideniersware",
+ "shrineProductCeriseScallopTee": "Kersierooi skulprand-t-hemp",
+ "rallyBudgetCategoryClothing": "Klere",
+ "rallySettingsManageAccounts": "Bestuur rekeninge",
+ "rallyAccountDataCarSavings": "Spaarrekening vir motor",
+ "rallySettingsTaxDocuments": "Belastingdokumente",
+ "rallySettingsPasscodeAndTouchId": "Wagkode en raak-ID",
+ "rallySettingsNotifications": "Kennisgewings",
+ "rallySettingsPersonalInformation": "Persoonlike inligting",
+ "rallySettingsPaperlessSettings": "Paperless-instellings",
+ "rallySettingsFindAtms": "Soek OTM'e",
+ "rallySettingsHelp": "Hulp",
+ "rallySettingsSignOut": "Meld af",
+ "rallyAccountTotal": "Totaal",
+ "rallyBillsDue": "Betaalbaar",
+ "rallyBudgetLeft": "Oor",
+ "rallyAccounts": "Rekeninge",
+ "rallyBills": "Rekeninge",
+ "rallyBudgets": "Begrotings",
+ "rallyAlerts": "Waarskuwings",
+ "rallySeeAll": "SIEN ALLES",
+ "rallyFinanceLeft": "OOR",
+ "rallyTitleOverview": "OORSIG",
+ "shrineProductShoulderRollsTee": "Skouerrol-t-hemp",
+ "shrineNextButtonCaption": "VOLGENDE",
+ "rallyTitleBudgets": "BEGROTINGS",
+ "rallyTitleSettings": "INSTELLINGS",
+ "rallyLoginLoginToRally": "Meld by Rally aan",
+ "rallyLoginNoAccount": "Het jy nie 'n rekening nie?",
+ "rallyLoginSignUp": "SLUIT AAN",
+ "rallyLoginUsername": "Gebruikernaam",
+ "rallyLoginPassword": "Wagwoord",
+ "rallyLoginLabelLogin": "Meld aan",
+ "rallyLoginRememberMe": "Onthou my",
+ "rallyLoginButtonLogin": "MELD AAN",
+ "rallyAlertsMessageHeadsUpShopping": "Pasop. Jy het al {percent} van jou inkopie-begroting vir hierdie maand gebruik.",
+ "rallyAlertsMessageSpentOnRestaurants": "Jy het hierdie week {amount} by restaurante bestee.",
+ "rallyAlertsMessageATMFees": "Jy het hierdie maand OTM-fooie van {amount} betaal",
+ "rallyAlertsMessageCheckingAccount": "Mooi so! Jou tjekrekening is {percent} hoër as verlede maand.",
+ "shrineMenuCaption": "KIESLYS",
+ "shrineCategoryNameAll": "ALLES",
+ "shrineCategoryNameAccessories": "BYKOMSTIGHEDE",
+ "shrineCategoryNameClothing": "KLERE",
+ "shrineCategoryNameHome": "TUIS",
+ "shrineLoginUsernameLabel": "Gebruikernaam",
+ "shrineLoginPasswordLabel": "Wagwoord",
+ "shrineCancelButtonCaption": "KANSELLEER",
+ "shrineCartTaxCaption": "Belasting:",
+ "shrineCartPageCaption": "MANDJIE",
+ "shrineProductQuantity": "Hoeveelheid: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{GEEN ITEMS NIE}=1{1 ITEM}other{{quantity} ITEMS}}",
+ "shrineCartClearButtonCaption": "MAAK MANDJIE LEEG",
+ "shrineCartTotalCaption": "TOTAAL",
+ "shrineCartSubtotalCaption": "Subtotaal:",
+ "shrineCartShippingCaption": "Versending:",
+ "shrineProductGreySlouchTank": "Grys slenterhemp",
+ "shrineProductStellaSunglasses": "Stella-sonbrille",
+ "shrineProductWhitePinstripeShirt": "Wit strepieshemp",
+ "demoTextFieldWhereCanWeReachYou": "Waar kan ons jou bereik?",
+ "settingsTextDirectionLTR": "L.N.R.",
+ "settingsTextScalingLarge": "Groot",
+ "demoBottomSheetHeader": "Loopkop",
+ "demoBottomSheetItem": "Item {value}",
+ "demoBottomTextFieldsTitle": "Teksvelde",
+ "demoTextFieldTitle": "Teksvelde",
+ "demoTextFieldSubtitle": "Een reël met redigeerbare teks en syfers",
+ "demoTextFieldDescription": "Teksvelde laat gebruikers toe om teks by UI te voeg. Dit verskyn gewoonlik in vorms en dialoë.",
+ "demoTextFieldShowPasswordLabel": "Wys wagwoord",
+ "demoTextFieldHidePasswordLabel": "Versteek wagwoord",
+ "demoTextFieldFormErrors": "Maak asseblief die foute in rooi reg voordat jy indien.",
+ "demoTextFieldNameRequired": "Naam word vereis.",
+ "demoTextFieldOnlyAlphabeticalChars": "Voer asseblief net alfabetkarakters in.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### – Voer 'n Amerikaanse foonnommer in.",
+ "demoTextFieldEnterPassword": "Voer asseblief 'n wagwoord in.",
+ "demoTextFieldPasswordsDoNotMatch": "Die wagwoorde stem nie ooreen nie",
+ "demoTextFieldWhatDoPeopleCallYou": "Wat noem mense jou?",
+ "demoTextFieldNameField": "Naam*",
+ "demoBottomSheetButtonText": "WYS BLAD ONDER",
+ "demoTextFieldPhoneNumber": "Foonnommer*",
+ "demoBottomSheetTitle": "Blad onder",
+ "demoTextFieldEmail": "E-pos",
+ "demoTextFieldTellUsAboutYourself": "Vertel ons meer oor jouself (bv., skryf neer wat jy doen of wat jou stokperdjies is)",
+ "demoTextFieldKeepItShort": "Hou dit kort; dis net 'n demonstrasie.",
+ "starterAppGenericButton": "KNOPPIE",
+ "demoTextFieldLifeStory": "Lewensverhaal",
+ "demoTextFieldSalary": "Salaris",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Nie meer as 8 karakters nie.",
+ "demoTextFieldPassword": "Wagwoord*",
+ "demoTextFieldRetypePassword": "Tik jou wagwoord weer in*",
+ "demoTextFieldSubmit": "DIEN IN",
+ "demoBottomNavigationSubtitle": "Navigasie aan die onderkant met kruisverdowwingaansigte",
+ "demoBottomSheetAddLabel": "Voeg by",
+ "demoBottomSheetModalDescription": "'n Modale blad aan die onderkant van die skerm is 'n alternatief vir 'n kieslys of dialoog. Dit verhoed dat die gebruiker met die res van die program interaksie kan hê.",
+ "demoBottomSheetModalTitle": "Modale blad aan die onderkant",
+ "demoBottomSheetPersistentDescription": "'n Blywende blad aan die onderkant van die skerm wys inligting wat die primêre inhoud van die program aanvul. Dit bly sigbaar, selfs wanneer die gebruiker met ander dele van die program interaksie het.",
+ "demoBottomSheetPersistentTitle": "Blywende blad onder",
+ "demoBottomSheetSubtitle": "Blywende en modale blaaie onder",
+ "demoTextFieldNameHasPhoneNumber": "{name} se foonnommer is {phoneNumber}",
+ "buttonText": "KNOPPIE",
+ "demoTypographyDescription": "Definisies vir die verskillende tipografiese style wat in Materiaalontwerp gevind word.",
+ "demoTypographySubtitle": "Al die voorafgedefinieerde teksstyle",
+ "demoTypographyTitle": "Tipografie",
+ "demoFullscreenDialogDescription": "Die volskermdialoog-eienskap spesifiseer of die inkomende bladsy 'n volskerm- modale dialoog is",
+ "demoFlatButtonDescription": "'n Plat knoppie wys 'n inkspatsel wanneer dit gedruk word maar word nie gelig nie. Gebruik plat knoppies op nutsbalke, in dialoë en inlyn met opvulling",
+ "demoBottomNavigationDescription": "Navigasiebalke aan die onderkant van die skerm wys drie tot vyf bestemmings. Elke bestemming word deur 'n ikoon en 'n opsionele teksetiket verteenwoordig. Wanneer 'n gebruiker op 'n onderste navigasie-ikoon tik, word hulle geneem na die topvlak-navigasiebestemming wat met daardie ikoon geassosieer word.",
+ "demoBottomNavigationSelectedLabel": "Gekose etiket",
+ "demoBottomNavigationPersistentLabels": "Blywende etikette",
+ "starterAppDrawerItem": "Item {value}",
+ "demoTextFieldRequiredField": "* dui vereiste veld aan",
+ "demoBottomNavigationTitle": "Navigasie onder",
+ "settingsLightTheme": "Lig",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "R.N.L.",
+ "settingsTextScalingHuge": "Baie groot",
+ "cupertinoButton": "Knoppie",
+ "settingsTextScalingNormal": "Normaal",
+ "settingsTextScalingSmall": "Klein",
+ "settingsSystemDefault": "Stelsel",
+ "settingsTitle": "Instellings",
+ "rallyDescription": "'n Program vir jou persoonlike geldsake",
+ "aboutDialogDescription": "Besoek asseblief die {value} om die bronkode vir hierdie program te sien.",
+ "bottomNavigationCommentsTab": "Opmerkings",
+ "starterAppGenericBody": "Liggaam",
+ "starterAppGenericHeadline": "Hoofopskrif",
+ "starterAppGenericSubtitle": "Subtitel",
+ "starterAppGenericTitle": "Titel",
+ "starterAppTooltipSearch": "Soek",
+ "starterAppTooltipShare": "Deel",
+ "starterAppTooltipFavorite": "Merk as gunsteling",
+ "starterAppTooltipAdd": "Voeg by",
+ "bottomNavigationCalendarTab": "Kalender",
+ "starterAppDescription": "'n Beginneruitleg wat goed reageer",
+ "starterAppTitle": "Beginnerprogram",
+ "aboutFlutterSamplesRepo": "Flutter toets Github-bewaarplek",
+ "bottomNavigationContentPlaceholder": "Plekhouer vir {title}-oortjie",
+ "bottomNavigationCameraTab": "Kamera",
+ "bottomNavigationAlarmTab": "Wekker",
+ "bottomNavigationAccountTab": "Rekening",
+ "demoTextFieldYourEmailAddress": "Jou e-posadres",
+ "demoToggleButtonDescription": "Wisselknoppies kan gebruik word om verwante opsies te groepeer. Om 'n groep verwante wisselknoppies te beklemtoon, moet 'n groep 'n gemeenskaplike houer deel",
+ "colorsGrey": "GRYS",
+ "colorsBrown": "BRUIN",
+ "colorsDeepOrange": "DIEPORANJE",
+ "colorsOrange": "ORANJE",
+ "colorsAmber": "GEELBRUIN",
+ "colorsYellow": "GEEL",
+ "colorsLime": "LEMMETJIEGROEN",
+ "colorsLightGreen": "LIGGROEN",
+ "colorsGreen": "GROEN",
+ "homeHeaderGallery": "Galery",
+ "homeHeaderCategories": "Kategorieë",
+ "shrineDescription": "'n Modieuse kleinhandelprogram",
+ "craneDescription": "'n Gepersonaliseerde reisprogram",
+ "homeCategoryReference": "VERWYSINGSTYLE EN -MEDIA",
+ "demoInvalidURL": "Kon nie URL wys nie:",
+ "demoOptionsTooltip": "Opsies",
+ "demoInfoTooltip": "Inligting",
+ "demoCodeTooltip": "Kodevoorbeeld",
+ "demoDocumentationTooltip": "API-dokumentasie",
+ "demoFullscreenTooltip": "Volskerm",
+ "settingsTextScaling": "Teksskalering",
+ "settingsTextDirection": "Teksrigting",
+ "settingsLocale": "Locale",
+ "settingsPlatformMechanics": "Platformmeganika",
+ "settingsDarkTheme": "Donker",
+ "settingsSlowMotion": "Stadige aksie",
+ "settingsAbout": "Meer oor Flutter Gallery",
+ "settingsFeedback": "Stuur terugvoer",
+ "settingsAttribution": "Ontwerp deur TOASTER in Londen",
+ "demoButtonTitle": "Knoppies",
+ "demoButtonSubtitle": "Plat, verhewe, buitelyn, en meer",
+ "demoFlatButtonTitle": "Plat knoppie",
+ "demoRaisedButtonDescription": "Verhewe knoppies voeg dimensie by vir uitlegte wat meestal plat is. Hulle beklemtoon funksies in besige of breë ruimtes.",
+ "demoRaisedButtonTitle": "Verhewe knoppie",
+ "demoOutlineButtonTitle": "Buitelynknoppie",
+ "demoOutlineButtonDescription": "Buitelynknoppies word ondeursigtig en verhewe wanneer dit gedruk word. Hulle word dikwels met verhewe knoppies saamgebind om 'n alternatiewe, sekondêre handeling aan te dui.",
+ "demoToggleButtonTitle": "Wisselknoppies",
+ "colorsTeal": "BLOUGROEN",
+ "demoFloatingButtonTitle": "Swewende handelingknoppie",
+ "demoFloatingButtonDescription": "'n Swewende handelingknoppie is 'n ronde ikoonknoppie wat oor inhoud hang om 'n primêre handeling in die program te bevorder.",
+ "demoDialogTitle": "Dialoë",
+ "demoDialogSubtitle": "Eenvoudig, opletberig, en volskerm",
+ "demoAlertDialogTitle": "Opletberig",
+ "demoAlertDialogDescription": "'n Opletberigdialoog lig die gebruiker in oor situasies wat erkenning nodig het. 'n Opletberigdialoog het 'n opsionele titel en 'n opsionele lys handelinge.",
+ "demoAlertTitleDialogTitle": "Opletberig met titel",
+ "demoSimpleDialogTitle": "Eenvoudig",
+ "demoSimpleDialogDescription": "'n Eenvoudige dialoog bied die gebruiker 'n keuse tussen verskeie opsies. 'n Eenvoudige dialoog het 'n opsionele titel wat bo die keuses gewys word.",
+ "demoFullscreenDialogTitle": "Volskerm",
+ "demoCupertinoButtonsTitle": "Knoppies",
+ "demoCupertinoButtonsSubtitle": "Knoppies in iOS-styl",
+ "demoCupertinoButtonsDescription": "'n Knoppie in iOS-styl. Dit bring teks en/of 'n ikoon in wat verdof of duideliker word met aanraking. Het die opsie om 'n agtergrond te hê.",
+ "demoCupertinoAlertsTitle": "Opletberigte",
+ "demoCupertinoAlertsSubtitle": "Opletberigdialoë in iOS-styl",
+ "demoCupertinoAlertTitle": "Opletberig",
+ "demoCupertinoAlertDescription": "'n Opletberigdialoog lig die gebruiker in oor situasies wat erkenning nodig het. 'n Opletberigdialoog het 'n opsionele titel, opsionele inhoud en 'n opsionele lys handelinge. Die titel word bo die inhoud vertoon en die handelinge word onder die inhoud vertoon.",
+ "demoCupertinoAlertWithTitleTitle": "Opletberig met titel",
+ "demoCupertinoAlertButtonsTitle": "Opletberig met knoppies",
+ "demoCupertinoAlertButtonsOnlyTitle": "Net opletberigknoppies",
+ "demoCupertinoActionSheetTitle": "Handelingelys",
+ "demoCupertinoActionSheetDescription": "'n Handelingelys is 'n spesifieke styl opletberig wat 'n stel van twee of meer keuses wat met die huidige konteks verband hou, aan die gebruiker bied. 'n Handelingelys kan 'n titel, 'n bykomende boodskap en 'n lys handelinge hê.",
+ "demoColorsTitle": "Kleure",
+ "demoColorsSubtitle": "Al die vooraf gedefinieerde kleure",
+ "demoColorsDescription": "Kleur en kleurmonsterkonstantes wat Materiaalontwerp se kleurpalet verteenwoordig.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Skep",
+ "dialogSelectedOption": "Jy het gekies: \"{value}\"",
+ "dialogDiscardTitle": "Gooi konsep weg?",
+ "dialogLocationTitle": "Gebruik Google se liggingdiens?",
+ "dialogLocationDescription": "Laat Google programme help om ligging te bepaal. Dit beteken dat anonieme liggingdata na Google toe gestuur word, selfs wanneer geen programme laat loop word nie.",
+ "dialogCancel": "KANSELLEER",
+ "dialogDiscard": "GOOI WEG",
+ "dialogDisagree": "STEM NIE SAAM NIE",
+ "dialogAgree": "STEM IN",
+ "dialogSetBackup": "Stel rugsteunrekening",
+ "colorsBlueGrey": "BLOUGRYS",
+ "dialogShow": "WYS DIALOOG",
+ "dialogFullscreenTitle": "Volskermdialoog",
+ "dialogFullscreenSave": "STOOR",
+ "dialogFullscreenDescription": "'n Volskermdialoogdemonstrasie",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Met agtergrond",
+ "cupertinoAlertCancel": "Kanselleer",
+ "cupertinoAlertDiscard": "Gooi weg",
+ "cupertinoAlertLocationTitle": "Laat \"Maps\" toe om toegang tot jou ligging te kry terwyl jy die program gebruik?",
+ "cupertinoAlertLocationDescription": "Jou huidige ligging sal op die kaart gewys word en gebruik word vir aanwysings, soekresultate in die omtrek, en geskatte reistye.",
+ "cupertinoAlertAllow": "Laat toe",
+ "cupertinoAlertDontAllow": "Moenie toelaat nie",
+ "cupertinoAlertFavoriteDessert": "Kies gunstelingnagereg",
+ "cupertinoAlertDessertDescription": "Kies asseblief jou gunstelingsoort nagereg op die lys hieronder. Jou keuse sal gebruik word om die voorgestelde lys eetplekke in jou omgewing te pasmaak.",
+ "cupertinoAlertCheesecake": "Kaaskoek",
+ "cupertinoAlertTiramisu": "Tiramisu",
+ "cupertinoAlertApplePie": "Appeltert",
+ "cupertinoAlertChocolateBrownie": "Sjokoladebruintjie",
+ "cupertinoShowAlert": "Wys opletberig",
+ "colorsRed": "ROOI",
+ "colorsPink": "PIENK",
+ "colorsPurple": "PERS",
+ "colorsDeepPurple": "DIEPPERS",
+ "colorsIndigo": "INDIGO",
+ "colorsBlue": "BLOU",
+ "colorsLightBlue": "LIGBLOU",
+ "colorsCyan": "GROENBLOU",
+ "dialogAddAccount": "Voeg rekening by",
+ "Gallery": "Galery",
+ "Categories": "Kategorieë",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "Basiese inkopieprogram",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "Reisprogram",
+ "MATERIAL": "MATERIAAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "VERWYSINGSTYLE EN -MEDIA"
+}
diff --git a/gallery/lib/l10n/intl_am.arb b/gallery/lib/l10n/intl_am.arb
new file mode 100644
index 0000000..bc00b78
--- /dev/null
+++ b/gallery/lib/l10n/intl_am.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "አማራጮችን ይመልከቱ",
+ "demoOptionsFeatureDescription": "ለዚህ ተግባራዊ ማሳያ ሊገኙ የሚችሉ አማራጮችን ለማየት እዚህ ላይ መታ ያድርጉ።",
+ "demoCodeViewerCopyAll": "ሁሉንም ቅዳ",
+ "shrineScreenReaderRemoveProductButton": "{product} አስወግድ",
+ "shrineScreenReaderProductAddToCart": "ወደ ጋሪ አክል",
+ "shrineScreenReaderCart": "{quantity,plural, =0{የግዢ ዕቃዎች ጋሪ፣ ምንም ንጥሎች የሉም}=1{የግዢ ዕቃዎች ጋሪ፣ 1 ንጥል}one{የግዢ ዕቃዎች ጋሪ፣ {quantity} ንጥሎች}other{የግዢ ዕቃዎች ጋሪ፣ {quantity} ንጥሎች}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "ወደ ቅንጥብ ሰሌዳ መቅዳት አልተሳካም፦ {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "ወደ ቅንጥብ ሰሌዳ ተገልብጧል።",
+ "craneSleep8SemanticLabel": "ከባህር ዳርቻ በላይ ባለ አምባ ላይ ያሉ የማያውያን ፍርስራሾች",
+ "craneSleep4SemanticLabel": "ከተራራዎች ፊት ያለ የሐይቅ ዳርቻ ሆቴል",
+ "craneSleep2SemanticLabel": "የማቹ ፒቹ ምሽግ",
+ "craneSleep1SemanticLabel": "ሁሌ ለምለም ዛፎች ባሉት በረዷሟ መሬት ላይ ያለ ሻሌት ቤት",
+ "craneSleep0SemanticLabel": "የውሃ ላይ ባንግሎው ቤት",
+ "craneFly13SemanticLabel": "ዘንባባ ያሉት የባህር ጎን መዋኛ",
+ "craneFly12SemanticLabel": "ዘንባባ ዛፎች ያለው መዋኛ",
+ "craneFly11SemanticLabel": "ባህር ላይ ያለ ባለጡብ ፋኖ ቤት",
+ "craneFly10SemanticLabel": "የአል-አዝሃር መስጊድ ማማዎች በጸሐይ መጥለቂያ ጊዜ",
+ "craneFly9SemanticLabel": "አንድ አንጋፋ ሰማያዊ መኪናን ተደግፎ የቆመ ሰው",
+ "craneFly8SemanticLabel": "ሱፐርትሪ ግሮቭ",
+ "craneEat9SemanticLabel": "ኬኮች ያሉት የካፌ ካውንተር",
+ "craneEat2SemanticLabel": "በርገር",
+ "craneFly5SemanticLabel": "ከተራራዎች ፊት ያለ የሐይቅ ዳርቻ ሆቴል",
+ "demoSelectionControlsSubtitle": "አመልካች ሳጥኖች፣ የሬዲዮ አዝራሮች እና መቀያየሪያዎች",
+ "craneEat10SemanticLabel": "ትልቅ ፓስትራሚ ሳንድዊች የያዘች ሴት",
+ "craneFly4SemanticLabel": "የውሃ ላይ ባንግሎው ቤት",
+ "craneEat7SemanticLabel": "የመጋገሪያ መግቢያ",
+ "craneEat6SemanticLabel": "ሽሪምፕ ሳህን",
+ "craneEat5SemanticLabel": "ኪነ ጥበባዊ የምግብ ቤት መቀመጫ አካባቢ",
+ "craneEat4SemanticLabel": "ቼኮሌት ጣፋጭ ምግብ",
+ "craneEat3SemanticLabel": "የኮሪያ ታኮ",
+ "craneFly3SemanticLabel": "የማቹ ፒቹ ምሽግ",
+ "craneEat1SemanticLabel": "ባዶ መጠጥ ቤት ከመመገቢያ አይነት መቀመጫዎች ጋር",
+ "craneEat0SemanticLabel": "በእንጨት በሚነድድ ምድጃ ውስጥ ፒዛ",
+ "craneSleep11SemanticLabel": "ታይፔይ 101 ሰማይ ጠቀስ ሕንጻ",
+ "craneSleep10SemanticLabel": "የአል-አዝሃር መስጊድ ማማዎች በጸሐይ መጥለቂያ ጊዜ",
+ "craneSleep9SemanticLabel": "ባህር ላይ ያለ ባለጡብ ፋኖ ቤት",
+ "craneEat8SemanticLabel": "የክሮውፊሽ ሳህን",
+ "craneSleep7SemanticLabel": "በሪቤሪያ አደባባይ ላይ ያሉ ባለቀለም አፓርታማዎች",
+ "craneSleep6SemanticLabel": "ዘንባባ ዛፎች ያለው መዋኛ",
+ "craneSleep5SemanticLabel": "በአንድ ሜዳ ላይ ድንኳን",
+ "settingsButtonCloseLabel": "ቅንብሮችን ዝጋ",
+ "demoSelectionControlsCheckboxDescription": "አመልካች ሳጥኖች ተጠቃሚው ከአንድ ስብስብ በርካታ አማራጮችን እንዲሰበስብ ያስችለዋል። የአንድ መደበኛ አመልካች ሳጥኑ እሴት እውነት ወይም ሐሰት ነው፣ እና የአንድ ባለሶስት-ሁኔታ እሴት እንዲሁም አልቦ መሆን ይችላል።",
+ "settingsButtonLabel": "ቅንብሮች",
+ "demoListsTitle": "ዝርዝሮች",
+ "demoListsSubtitle": "የዝርዝር አቀማመጦችን በመሸብለል ላይ",
+ "demoListsDescription": "በተለምዶ የተወሰነ ጽሑፍና እንዲሁም መሪ ወይም ተከታይ አዶ የያዘ አንድ ባለነጠላ ቋሚ ረድፍ።",
+ "demoOneLineListsTitle": "አንድ መስመር",
+ "demoTwoLineListsTitle": "ሁለት መስመሮች",
+ "demoListsSecondary": "ሁለተኛ ጽሑፍ",
+ "demoSelectionControlsTitle": "የምርጫ መቆጣጠሪያዎች",
+ "craneFly7SemanticLabel": "ራሽሞር ተራራ",
+ "demoSelectionControlsCheckboxTitle": "አመልካች ሳጥን",
+ "craneSleep3SemanticLabel": "አንድ አንጋፋ ሰማያዊ መኪናን ተደግፎ የቆመ ሰው",
+ "demoSelectionControlsRadioTitle": "ሬዲዮ",
+ "demoSelectionControlsRadioDescription": "የሬዲዮ ዝራሮች ተጠቃሚው ከአንድ ስብስብ ውስጥ አንድ አማራጭ እንዲፈጥር ያስችለዋል። ተጠቃሚው ሁሉንም የሚገኙ አማራጮች ጎን ለጎን ማየት አለበት ብለው የሚያስቡ ከሆነ የሬዲዮ አዝራሮችን የሚመለከተውን ብቻ ለመምረጥ ይጠቀሙባቸው።",
+ "demoSelectionControlsSwitchTitle": "ቀይር",
+ "demoSelectionControlsSwitchDescription": "የማብሪያ/ማጥፊያ መቀያየሪያዎች የነጠላ ቅንብሮች አማራጭ ሁኔታን ይቀያይራሉ። መቀያየሪያውን የሚቆጣጠረው አማራጭና እንዲሁም ያለበት ሁኔታ ከተጓዳኙ የውስጠ-መስመር የመሰየሚያው ግልጽ መሆን አለበት።",
+ "craneFly0SemanticLabel": "ሁሌ ለምለም ዛፎች ባሉት በረዷሟ መሬት ላይ ያለ ሻሌት ቤት",
+ "craneFly1SemanticLabel": "በአንድ ሜዳ ላይ ድንኳን",
+ "craneFly2SemanticLabel": "ከበረዷማ ተራራ ፊት ያሉ የጸሎት ባንዲራዎች",
+ "craneFly6SemanticLabel": "የፓላሲዮ ደ ቤያ አርቴስ የአየር ላይ እይታ",
+ "rallySeeAllAccounts": "ሁሉንም መለያዎች ይመልከቱ",
+ "rallyBillAmount": "የ{billName} {amount} መክፈያ ጊዜ {date} ደርሷል።",
+ "shrineTooltipCloseCart": "ጋሪን ዝጋ",
+ "shrineTooltipCloseMenu": "ምናሌን ዝጋ",
+ "shrineTooltipOpenMenu": "ምናሌ ክፈት",
+ "shrineTooltipSettings": "ቅንብሮች",
+ "shrineTooltipSearch": "ፍለጋ",
+ "demoTabsDescription": "ትሮች በተለያዩ ማያ ገጾች፣ የውሂብ ስብስቦች እና ሌሎች መስተጋብሮች ዙሪያ ይዘትን ያደራጃል",
+ "demoTabsSubtitle": "ትሮች ራሳቸውን ከቻሉ ተሸብላይ ዕይታዎች ጋር",
+ "demoTabsTitle": "ትሮች",
+ "rallyBudgetAmount": "{budgetName} በጀት {amountUsed} ከ{amountTotal} ጥቅም ላይ ውሏል፣ {amountLeft} ይቀራል",
+ "shrineTooltipRemoveItem": "ንጥል ያስወግዱ",
+ "rallyAccountAmount": "{accountName} መለያ {accountNumber} በ {amount}።",
+ "rallySeeAllBudgets": "ሁሉንም በጀቶች ይመልከቱ",
+ "rallySeeAllBills": "ሁሉንም ክፍያ መጠየቂያዎች ይመልከቱ",
+ "craneFormDate": "ቀን ይምረጡ",
+ "craneFormOrigin": "ምንጭ ይምረጡ",
+ "craneFly2": "ኩምቡ ሸለቆ፣ ኔፓል",
+ "craneFly3": "ማቹ ፒቹ፣ ፔሩ",
+ "craneFly4": "ማሌ፣ ማልዲቭስ",
+ "craneFly5": "ቪትዝናው፣ ስዊዘርላንድ",
+ "craneFly6": "ሜክሲኮ ሲቲ፣ ሜክሲኮ",
+ "craneFly7": "ራሽሞር ተራራ፣ አሜሪካ",
+ "settingsTextDirectionLocaleBased": "በአካባቢ ላይ በመመርኮዝ",
+ "craneFly9": "ሃቫና፣ ኩባ",
+ "craneFly10": "ካይሮ፣ ግብጽ",
+ "craneFly11": "ሊዝበን፣ ፖርቱጋል",
+ "craneFly12": "ናፓ፣ አሜሪካ",
+ "craneFly13": "ባሊ፣ ኢንዶኔዥያ",
+ "craneSleep0": "ማሌ፣ ማልዲቭስ",
+ "craneSleep1": "አስፐን፣ አሜሪካ",
+ "craneSleep2": "ማቹ ፒቹ፣ ፔሩ",
+ "demoCupertinoSegmentedControlTitle": "የተከፋፈለ መቆጣጠሪያ",
+ "craneSleep4": "ቪትዝናው፣ ስዊዘርላንድ",
+ "craneSleep5": "ቢግ ሱር፣ አሜሪካ",
+ "craneSleep6": "ናፓ፣ አሜሪካ",
+ "craneSleep7": "ፖርቶ፣ ፖርቱጋል",
+ "craneSleep8": "ቱሉም፣ ሜክሲኮ",
+ "craneEat5": "ሲዮል፣ ደቡብ ኮሪያ",
+ "demoChipTitle": "ቺፖች",
+ "demoChipSubtitle": "አንድ ግቤት፣ አይነት ወይም እርምጃ የሚወክሉ እምቅ ክፍለ-አባላት",
+ "demoActionChipTitle": "የእርምጃ ቺፕ",
+ "demoActionChipDescription": "የእርምጃ ቺፖች ከዋና ይዘት ጋር በተገናኘት አንድ እርምጃን የሚቀሰቅሱ የአማራጮች ስብስብ ናቸው። የእርምጃ ቺፖች በአንድ ዩአይ ላይ በተለዋዋጭ እና አውዳዊ በሆነ መልኩ መታየት አለባቸው።",
+ "demoChoiceChipTitle": "የምርጫ ቺፕ",
+ "demoChoiceChipDescription": "የምርጫ ቺፖች ከአንድ ስብስብ ውስጥ አንድ ነጠላ ምርጫን ይወክላሉ። የምርጫ ቺፖች ገላጭ ጽሑፍ ወይም ምድቦችን ይይዛሉ።",
+ "demoFilterChipTitle": "የማጣሪያ ቺፕ",
+ "demoFilterChipDescription": "የማጣሪያ ቺፖች መለያዎችን ወይም ገላጭ ቃላት እንደ ይዘት የሚያጣሩበት መንገድ ይጠቀሙባቸዋል።",
+ "demoInputChipTitle": "የግቤት ቺፕ",
+ "demoInputChipDescription": "የግቤት ቺፖች እንደ ህጋዊ አካል (ሰው፣ ቦታ ወይም ነገር) ውስብስብ ወይም የውይይት ጽሑፍ ያለ በእምቅ መልኩ ያለ ውስብስብ የመረጃ ክፍልን ይወክላሉ።",
+ "craneSleep9": "ሊዝበን፣ ፖርቱጋል",
+ "craneEat10": "ሊዝበን፣ ፖርቱጋል",
+ "demoCupertinoSegmentedControlDescription": "በአንድ ላይ በልዩ ሁኔታ ከሚታዩ አማራጮች ቁጥር መካከል ለመምረጥ ጥቅም ላይ ይውላል። በተከፋፈለው መቆጣጠሪያ ውስጥ አንድ አማራጭ ሲመረጥ፣ በተከፋፈለው መቆጣጠሪያ ውስጥ ያሉት ሌሎች አማራጮች መመረጥ ያቆማሉ።",
+ "chipTurnOnLights": "መብራቶቹን አብራ",
+ "chipSmall": "ትንሽ",
+ "chipMedium": "መካከለኛ",
+ "chipLarge": "ትልቅ",
+ "chipElevator": "ሊፍት",
+ "chipWasher": "ማጠቢያ ማሽን",
+ "chipFireplace": "የእሳት ቦታ",
+ "chipBiking": "ቢስክሌት መንዳት",
+ "craneFormDiners": "መመገቢያዎች",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{የእርስዎን ሊቀነስ የሚችል ግብር ይጨምሩ! ወደ 1 ያልተመደበ ግብይት ምድቦችን ይመድቡ።}one{የእርስዎን ሊቀነስ የሚችል ግብር ይጨምሩ! ወደ {count} ያልተመደቡ ግብይቶች ምድቦችን ይመድቡ።}other{የእርስዎን ሊቀነስ የሚችል ግብር ይጨምሩ! ወደ {count} ያልተመደቡ ግብይቶች ምድቦችን ይመድቡ።}}",
+ "craneFormTime": "ጊዜ ምረጥ",
+ "craneFormLocation": "አካባቢ ምረጥ",
+ "craneFormTravelers": "ተጓዦች",
+ "craneEat8": "አትላንታ፣ አሜሪካ",
+ "craneFormDestination": "መድረሻ ይምረጡ",
+ "craneFormDates": "ቀኖችን ይምረጡ",
+ "craneFly": "FLY",
+ "craneSleep": "እንቅልፍ",
+ "craneEat": "EAT",
+ "craneFlySubhead": "በረራዎችን በመድረሻ ያስሱ",
+ "craneSleepSubhead": "ንብረቶችን በመድረሻ ያስሱ",
+ "craneEatSubhead": "ምግብ ቤቶችን በመድረሻ ያስሱ",
+ "craneFlyStops": "{numberOfStops,plural, =0{ያለማቋረጥ}=1{1 ማቆሚያ}one{{numberOfStops} ማቆሚያዎች}other{{numberOfStops} ማቆሚያዎች}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{ምንም የሚገኙ ንብረቶች የሉም}=1{1 የሚገኙ ንብረቶች}one{{totalProperties} የሚገኙ ንብረቶች}other{{totalProperties} የሚገኙ ንብረቶች}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{ምግብ ቤቶች የሉም}=1{1 ምግብ ቤት}one{{totalRestaurants} ምግብ ቤቶች}other{{totalRestaurants} ምግብ ቤቶች}}",
+ "craneFly0": "አስፐን፣ አሜሪካ",
+ "demoCupertinoSegmentedControlSubtitle": "በiOS-ቅጥ የተከፋፈለ መቆጣጠሪያ",
+ "craneSleep10": "ካይሮ፣ ግብጽ",
+ "craneEat9": "ማድሪድ፣ ስፔን",
+ "craneFly1": "ቢግ ሱር፣ አሜሪካ",
+ "craneEat7": "ናሽቪል፣ አሜሪካ",
+ "craneEat6": "ሲያትል፣ አሜሪካ",
+ "craneFly8": "ሲንጋፖር",
+ "craneEat4": "ፓሪስ፣ ፈረንሳይ",
+ "craneEat3": "ፖርትላንድ፣ አሜሪካ",
+ "craneEat2": "ኮርዶባ፣ አርጀንቲና",
+ "craneEat1": "ዳላስ፣ አሜሪካ",
+ "craneEat0": "ኔፕልስ፣ ጣልያን",
+ "craneSleep11": "ታይፔይ፣ ታይዋን",
+ "craneSleep3": "ሃቫና፣ ኩባ",
+ "shrineLogoutButtonCaption": "ዘግተህ ውጣ",
+ "rallyTitleBills": "ሒሳብ መጠየቂያዎች",
+ "rallyTitleAccounts": "መለያዎች",
+ "shrineProductVagabondSack": "Vagabond ጆንያ",
+ "rallyAccountDetailDataInterestYtd": "የወለድ ዓመት እስከ ቀን",
+ "shrineProductWhitneyBelt": "Whitney ቀበቶ",
+ "shrineProductGardenStrand": "Garden strand",
+ "shrineProductStrutEarrings": "ደረቅ ጆሮ ጌጦች",
+ "shrineProductVarsitySocks": "Varsity ካልሲዎች",
+ "shrineProductWeaveKeyring": "የቁልፍ ቀለበትን ይሸምኑ",
+ "shrineProductGatsbyHat": "Gatsby ኮፍያ",
+ "shrineProductShrugBag": "ቦርሳዎች",
+ "shrineProductGiltDeskTrio": "ባለሶስት ጠረጴዛ",
+ "shrineProductCopperWireRack": "የመዳብ ገመድ መደርደሪያ",
+ "shrineProductSootheCeramicSet": "Soothe ሴራሚክ ስብስብ",
+ "shrineProductHurrahsTeaSet": "ሁራህ ሻይ ዕቃዎች",
+ "shrineProductBlueStoneMug": "ሰማያዊ የድንጋይ ኩባያ",
+ "shrineProductRainwaterTray": "የዝናብ ውሃ መያዣ",
+ "shrineProductChambrayNapkins": "Chambray ሶፍት",
+ "shrineProductSucculentPlanters": "ውሃማ ተካዮች",
+ "shrineProductQuartetTable": "ባለአራት ጠረጴዛ",
+ "shrineProductKitchenQuattro": "የወጥ ቤት ኳትሮ",
+ "shrineProductClaySweater": "የሸክላ ሹራብ",
+ "shrineProductSeaTunic": "የባህር ሸማ",
+ "shrineProductPlasterTunic": "ፕላስተር ሸማ",
+ "rallyBudgetCategoryRestaurants": "ምግብ ቤቶች",
+ "shrineProductChambrayShirt": "Chambray ሸሚዝ",
+ "shrineProductSeabreezeSweater": "Seabreeze ሹራብ",
+ "shrineProductGentryJacket": "Gentry ጃኬት",
+ "shrineProductNavyTrousers": "ኔቪ ሱሪ",
+ "shrineProductWalterHenleyWhite": "Walter henley (ነጭ)",
+ "shrineProductSurfAndPerfShirt": "Surf and perf ቲሸርት",
+ "shrineProductGingerScarf": "Ginger ሻርብ",
+ "shrineProductRamonaCrossover": "የራሞና ተሻጋሪ ስራ",
+ "shrineProductClassicWhiteCollar": "የሚታወቅ ነጭ ኮሌታ",
+ "shrineProductSunshirtDress": "የጸሐይ ሸሚዝ ቀሚስ",
+ "rallyAccountDetailDataInterestRate": "የወለድ ተመን",
+ "rallyAccountDetailDataAnnualPercentageYield": "ዓመታዊ የመቶኛ ትርፍ",
+ "rallyAccountDataVacation": "ሽርሽር",
+ "shrineProductFineLinesTee": "ፋይን ላይንስ ቲሸርት",
+ "rallyAccountDataHomeSavings": "የቤት ቁጠባ",
+ "rallyAccountDataChecking": "ተንቀሳቃሽ",
+ "rallyAccountDetailDataInterestPaidLastYear": "ወለድ ባለፈው ዓመት ተከፍሎበታል",
+ "rallyAccountDetailDataNextStatement": "ቀጣይ መግለጫ",
+ "rallyAccountDetailDataAccountOwner": "የመለያ ባለቤት",
+ "rallyBudgetCategoryCoffeeShops": "ቡና ቤቶች",
+ "rallyBudgetCategoryGroceries": "ሸቀጣሸቀጦች",
+ "shrineProductCeriseScallopTee": "Cerise ስካሎፕ ቲ",
+ "rallyBudgetCategoryClothing": "አልባሳት",
+ "rallySettingsManageAccounts": "መለያዎችን ያስተዳድሩ",
+ "rallyAccountDataCarSavings": "የመኪና ቁጠባ",
+ "rallySettingsTaxDocuments": "የግብር ሰነዶች",
+ "rallySettingsPasscodeAndTouchId": "የይለፍ ኮድ እና የንክኪ መታወቂያ",
+ "rallySettingsNotifications": "ማሳወቂያዎች",
+ "rallySettingsPersonalInformation": "የግል ሁኔታ",
+ "rallySettingsPaperlessSettings": "ወረቀት-አልባ ቅንብሮች",
+ "rallySettingsFindAtms": "ኤቲኤሞችን አግኝ",
+ "rallySettingsHelp": "እገዛ",
+ "rallySettingsSignOut": "ዘግተህ ውጣ",
+ "rallyAccountTotal": "ጠቅላላ",
+ "rallyBillsDue": "የሚደርሰው",
+ "rallyBudgetLeft": "ግራ",
+ "rallyAccounts": "መለያዎች",
+ "rallyBills": "ሒሳብ መጠየቂያዎች",
+ "rallyBudgets": "ባጀቶች",
+ "rallyAlerts": "ማንቂያዎች",
+ "rallySeeAll": "ሁሉንም ይመልከቱ",
+ "rallyFinanceLeft": "ግራ",
+ "rallyTitleOverview": "አጠቃላይ ዕይታ",
+ "shrineProductShoulderRollsTee": "ክፍት ትከሻ ቲሸርት",
+ "shrineNextButtonCaption": "ቀጣይ",
+ "rallyTitleBudgets": "ባጀቶች",
+ "rallyTitleSettings": "ቅንብሮች",
+ "rallyLoginLoginToRally": "ወደ Rally ይግቡ",
+ "rallyLoginNoAccount": "መለያ የለዎትም?",
+ "rallyLoginSignUp": "ተመዝገብ",
+ "rallyLoginUsername": "የተጠቃሚ ስም",
+ "rallyLoginPassword": "የይለፍ ቃል",
+ "rallyLoginLabelLogin": "ግባ",
+ "rallyLoginRememberMe": "አስታውሰኝ",
+ "rallyLoginButtonLogin": "ግባ",
+ "rallyAlertsMessageHeadsUpShopping": "ማሳሰቢያ፣ የዚህ ወር የሸመታ ባጀትዎን {percent} ተጠቅመዋል።",
+ "rallyAlertsMessageSpentOnRestaurants": "በዚህ ሳምንት በምግብ ቤቶች ላይ {amount} አውጥተዋል።",
+ "rallyAlertsMessageATMFees": "በዚህ ወር በኤቲኤም ክፍያዎች ላይ {amount} አውጥተዋል",
+ "rallyAlertsMessageCheckingAccount": "ጥሩ ስራ! የእርስዎ ተንቀሳቃሽ ሒሳብ ከባለፈው ወር በ{percent} ጨምሯል።",
+ "shrineMenuCaption": "ምናሌ",
+ "shrineCategoryNameAll": "ሁሉም",
+ "shrineCategoryNameAccessories": "ተቀጥላዎች",
+ "shrineCategoryNameClothing": "አልባሳት",
+ "shrineCategoryNameHome": "መነሻ",
+ "shrineLoginUsernameLabel": "የተጠቃሚ ስም",
+ "shrineLoginPasswordLabel": "የይለፍ ቃል",
+ "shrineCancelButtonCaption": "ይቅር",
+ "shrineCartTaxCaption": "ግብር፦",
+ "shrineCartPageCaption": "ጋሪ",
+ "shrineProductQuantity": "መጠን፦ {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{ምንም ንጥሎች የሉም}=1{1 ንጥል}one{{quantity} ንጥሎች}other{{quantity} ንጥሎች}}",
+ "shrineCartClearButtonCaption": "ጋሪን አጽዳ",
+ "shrineCartTotalCaption": "ጠቅላላ",
+ "shrineCartSubtotalCaption": "ንዑስ ድምር፦",
+ "shrineCartShippingCaption": "መላኪያ፦",
+ "shrineProductGreySlouchTank": "ግራጫ የወረደ ጉርድ ቲሸርት",
+ "shrineProductStellaSunglasses": "ስቴላ የጸሐይ መነጽሮች",
+ "shrineProductWhitePinstripeShirt": "ነጭ ባለቀጭን መስመር ሸሚዝ",
+ "demoTextFieldWhereCanWeReachYou": "የት ልናገኝዎ እንችላለን?",
+ "settingsTextDirectionLTR": "ግራ-ወደ-ቀኝ",
+ "settingsTextScalingLarge": "ትልቅ",
+ "demoBottomSheetHeader": "ራስጌ",
+ "demoBottomSheetItem": "ንጥል {value}",
+ "demoBottomTextFieldsTitle": "የጽሑፍ መስኮች",
+ "demoTextFieldTitle": "የጽሑፍ መስኮች",
+ "demoTextFieldSubtitle": "አርትዖት ሊደረግባቸው የሚችሉ የጽሑፍ እና ቁጥሮች ነጠላ መስመር",
+ "demoTextFieldDescription": "የጽሑፍ መስኮች ተጠቃሚዎች ቃላትን ወደ ዩአይ እንዲያስገቡ ያስችላቸዋል። በተለምዶ በቅጾች እና በመገናኛዎች ውስጥ ይታያሉ።",
+ "demoTextFieldShowPasswordLabel": "የይለፍ ቃል አሳይ",
+ "demoTextFieldHidePasswordLabel": "የይለፍ ቃል ደብቅ",
+ "demoTextFieldFormErrors": "ከማስገባትዎ በፊት እባክዎ በቀይ ያሉትን ስህተቶች ያስተካክሉ።",
+ "demoTextFieldNameRequired": "ስም ያስፈልጋል።",
+ "demoTextFieldOnlyAlphabeticalChars": "እባክዎ ፊደል-ቁጥራዊ ቁምፊዎችን ብቻ ያስገቡ።",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - የአሜሪካ ስልክ ቁጥር ያስገቡ።",
+ "demoTextFieldEnterPassword": "እባክዎ የይለፍ ቃል ያስገቡ።",
+ "demoTextFieldPasswordsDoNotMatch": "የይለፍ ቃላቱ አይዛመዱም",
+ "demoTextFieldWhatDoPeopleCallYou": "ሰዎች እርስዎን ምን ብለው ነው የሚጠሩዎት?",
+ "demoTextFieldNameField": "ስም*",
+ "demoBottomSheetButtonText": "የግርጌ ሉህን አሳይ",
+ "demoTextFieldPhoneNumber": "ስልክ ቁጥር*",
+ "demoBottomSheetTitle": "የግርጌ ሉህ",
+ "demoTextFieldEmail": "ኢሜይል",
+ "demoTextFieldTellUsAboutYourself": "ስለራስዎ ይንገሩን (ለምሳሌ፡0 ምን እንደሚያደርጉ ወይም ምን ዝንባሌዎች እንዳለዎት)",
+ "demoTextFieldKeepItShort": "ያሳጥሩት፣ ይህ ማሳያ ብቻ ነው።",
+ "starterAppGenericButton": "አዝራር",
+ "demoTextFieldLifeStory": "የህይወት ታሪክ",
+ "demoTextFieldSalary": "ደመወዝ",
+ "demoTextFieldUSD": "የአሜሪካ ዶላር",
+ "demoTextFieldNoMoreThan": "ከ8 ቁምፊዎች ያልበለጠ።",
+ "demoTextFieldPassword": "የይለፍ ቃል*",
+ "demoTextFieldRetypePassword": "የይለፍ ቃል እንደገና ይተይቡ*",
+ "demoTextFieldSubmit": "አስገባ",
+ "demoBottomNavigationSubtitle": "የግርጌ ዳሰሳ ከተሻጋሪ የሚደበዝዙ እይታዎች ጋር",
+ "demoBottomSheetAddLabel": "አክል",
+ "demoBottomSheetModalDescription": "የሞዳል ግርጌ ሉህ ለአንድ ምናሌ ወይም መገናኛ ተለዋጭ ሲሆን ተጠቃሚው ከተቀረው መተግበሪያ ጋር መስተጋብር እንዳይፈጥር ይከለክላል።",
+ "demoBottomSheetModalTitle": "የሞዳል አዝራር ሉህ",
+ "demoBottomSheetPersistentDescription": "ጽኑ የሆነ የግርጌ ሉህ የመተግበሪያውን ዋና ይዘት የሚያሟላ መረጃ ያሳያል። ጽኑ የግርጌ ሉህ ተጠቃሚው የመተግበሪያው ሌሎች ክፍሎች ጋር መስተጋብር ቢፈጥርም እንኳ የሚታይ እንደሆነ ይቆያል።",
+ "demoBottomSheetPersistentTitle": "ጽኑ የግርጌ ሉህ",
+ "demoBottomSheetSubtitle": "ጽኑ እና ሞዳል የግርጌ ሉሆች",
+ "demoTextFieldNameHasPhoneNumber": "የ{name} ስልክ ቁጥር {phoneNumber} ነው",
+ "buttonText": "አዝራር",
+ "demoTypographyDescription": "በቁሳዊ ንድፍ ላይ የሚገኙ የተለያዩ ታይፖግራፊያዊ ቅጦች ፍቺዎች።",
+ "demoTypographySubtitle": "ሁሉም ቅድሚያ የተገለጹ የጽሑፍ ቅጦች",
+ "demoTypographyTitle": "ታይፖግራፊ",
+ "demoFullscreenDialogDescription": "የ fullscreenDialog ባህሪ መጪው ገጽ ባለ ሙሉ ማያ ገጽ ሞዳል ንግግር መሆን አለመሆኑን ይጠቅሳል",
+ "demoFlatButtonDescription": "ዝርግ አዝራር የቀለም መርጫ በመጫን ወቅት ያሳያል ሆኖም ግን አያነሳም። ከመደገፍ ጋር በንግግሮች እና በውስጠ መስመር ውስጥ በመሣሪያ አሞሌዎች ላይ ዝርግ አዝራሮችን ይጠቀሙ",
+ "demoBottomNavigationDescription": "የግርጌ ዳሰሳ አሞሌዎች በአንድ ማያ ግርጌ ላይ ከሶስት እስከ አምስት መድረሻዎች ድረስ ያሳያሉ። እያንዳንዱ መድረሻ በአዶ እና በአማራጭ የጽሑፍ መሰየሚያ ይወከላል። የግርጌ ዳሰሳ አዶ መታ ሲደረግ ተጠቃሚው ከዚያ አዶ ጋር የተጎዳኘ የከፍተኛ ደረጃ የዳሰሳ መድረሻ ይወሰዳል።",
+ "demoBottomNavigationSelectedLabel": "መሰየሚያ ተመርጧል",
+ "demoBottomNavigationPersistentLabels": "ጽኑ መሰየሚያዎች",
+ "starterAppDrawerItem": "ንጥል {value}",
+ "demoTextFieldRequiredField": "* የሚያስፈልግ መስክ መሆኑን ያመለክታል",
+ "demoBottomNavigationTitle": "የታች ዳሰሳ",
+ "settingsLightTheme": "ብርሃን",
+ "settingsTheme": "ገጽታ",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "ቀኝ-ወደ-ግራ",
+ "settingsTextScalingHuge": "ግዙፍ",
+ "cupertinoButton": "አዝራር",
+ "settingsTextScalingNormal": "መደበኛ",
+ "settingsTextScalingSmall": "ትንሽ",
+ "settingsSystemDefault": "ሥርዓት",
+ "settingsTitle": "ቅንብሮች",
+ "rallyDescription": "የግል የፋይናንስ መተግበሪያ",
+ "aboutDialogDescription": "የዚህ መተግበሪያ ኮድ ምንጭ ኮድን ለማየት እባክዎ {value}ን ይጎብኙ።",
+ "bottomNavigationCommentsTab": "አስተያየቶች",
+ "starterAppGenericBody": "አካል",
+ "starterAppGenericHeadline": "አርዕስተ ዜና",
+ "starterAppGenericSubtitle": "የግርጌ ጽሑፍ",
+ "starterAppGenericTitle": "ርዕስ",
+ "starterAppTooltipSearch": "ፍለጋ",
+ "starterAppTooltipShare": "አጋራ",
+ "starterAppTooltipFavorite": "ተወዳጅ",
+ "starterAppTooltipAdd": "አክል",
+ "bottomNavigationCalendarTab": "የቀን መቁጠሪያ",
+ "starterAppDescription": "ምላሽ የሚሰጥ የጀማር አቀማመጥ",
+ "starterAppTitle": "አስጀማሪ መተግበሪያ",
+ "aboutFlutterSamplesRepo": "የFlutter ናሙናዎች የGithub ማከማቻ",
+ "bottomNavigationContentPlaceholder": "የ{title} ትር ቦታ ያዥ",
+ "bottomNavigationCameraTab": "ካሜራ",
+ "bottomNavigationAlarmTab": "ማንቂያ",
+ "bottomNavigationAccountTab": "መለያ",
+ "demoTextFieldYourEmailAddress": "የእርስዎ ኢሜል አድራሻ",
+ "demoToggleButtonDescription": "ተዛማጅ አማራጮችን ለመቦደን የቀያይር አዝራሮች ጥቅም ላይ ሊውሉ ይችላሉ። ተዛማጅነት ያላቸው መቀያየሪያ አዝራሮችን ቡድኖች አጽዕኖት ለመስጠት፣ ቡድን የጋራ መያዣን ማጋራት አለበት።",
+ "colorsGrey": "ግራጫ",
+ "colorsBrown": "ቡናማ",
+ "colorsDeepOrange": "ደማቅ ብርቱካናማ",
+ "colorsOrange": "ብርቱካናማ",
+ "colorsAmber": "አምበር",
+ "colorsYellow": "ቢጫ",
+ "colorsLime": "ሎሚ ቀለም",
+ "colorsLightGreen": "ፈካ ያለ አረንጓዴ",
+ "colorsGreen": "አረንጓዴ",
+ "homeHeaderGallery": "የሥነ ጥበብ ማዕከል",
+ "homeHeaderCategories": "ምድቦች",
+ "shrineDescription": "የዘነጠ የችርቻሮ መተግበሪያ",
+ "craneDescription": "ግላዊነት የተላበሰ የጉዞ መተግበሪያ",
+ "homeCategoryReference": "የማጣቀሻ ቅጦች እና መገናኛ ብዙኃን",
+ "demoInvalidURL": "ዩአርኤልን ማሳየት አልተቻለም፦",
+ "demoOptionsTooltip": "አማራጮች",
+ "demoInfoTooltip": "መረጃ",
+ "demoCodeTooltip": "የኮድ ናሙና",
+ "demoDocumentationTooltip": "የኤፒአይ ስነዳ",
+ "demoFullscreenTooltip": "የሙሉ ገጽ ዕይታ",
+ "settingsTextScaling": "ጽሑፍን ማመጣጠን",
+ "settingsTextDirection": "የጽሑፍ አቅጣጫ",
+ "settingsLocale": "የአካባቢ",
+ "settingsPlatformMechanics": "የመሣሪያ ስርዓት ሜካኒክ አሰራር",
+ "settingsDarkTheme": "ጨለማ",
+ "settingsSlowMotion": "የዝግታ እንቅስቃሴ",
+ "settingsAbout": "ስለ ፍላተር ማዕከለ ስዕላት",
+ "settingsFeedback": "ግብረመልስ ላክ",
+ "settingsAttribution": "ለንደን ውስጥ በTOASTER የተነደፈ",
+ "demoButtonTitle": "አዝራሮች",
+ "demoButtonSubtitle": "ዝርግ፣ ከፍ ያለ፣ ቢጋር እና ተጨማሪ",
+ "demoFlatButtonTitle": "ዝርግ አዝራር",
+ "demoRaisedButtonDescription": "ከፍ ያሉ አዝራሮች ብዙውን ጊዜ ለዝርግ አቀማመጦች ስፋት ያክላሉ። በባተሌ ወይም ሰፊ ቦታዎች ላይ ተግባራት ላይ አጽዕኖት ይሰጣሉ።",
+ "demoRaisedButtonTitle": "ከፍ ያለ አዝራር",
+ "demoOutlineButtonTitle": "የቢጋር አዝራር",
+ "demoOutlineButtonDescription": "የቢጋር አዝራሮች የማይታዩ ይሆኑና በሚጫኑበት ጊዜ ከፍ ይላሉ። አማራጭን፣ ሁለተኛ እርምጃን ለመጠቆም ብዙውን ጊዜ ከፍ ካሉ አዝራሮች ጋር ይጣመራሉ።",
+ "demoToggleButtonTitle": "መቀያየሪያ አዝራሮች",
+ "colorsTeal": "ደማቅ አረንጓዴ-ሰማያዊ",
+ "demoFloatingButtonTitle": "የተንሳፋፊ እርምጃ አዝራር",
+ "demoFloatingButtonDescription": "ተንሳፋፊ የድርጊት አዝራር በመተግበሪያው ላይ ተቀዳሚ ድርጊትን ለማበረታታት በይዘት ላይ የሚያንዣብብ ክብ አዶ አዝራር ነው።",
+ "demoDialogTitle": "ንግግሮች",
+ "demoDialogSubtitle": "ቀላል፣ ማንቂያ እና ሙሉ ማያ ገጽ",
+ "demoAlertDialogTitle": "ማንቂያ",
+ "demoAlertDialogDescription": "የማንቂያ ንግግር ተጠቃሚውን ስለ ዕውቅና መስጠት የሚያስፈልጋቸው ሁኔታዎች በተመለከተ መረጃ ይሰጣል። የማንቂያ ንግግር አማራጭ አርዕስት እና የድርጊቶች አማራጭ ዝርዝር አለው።",
+ "demoAlertTitleDialogTitle": "ከአርእስት ጋር ማስጠንቀቂያ ስጥ",
+ "demoSimpleDialogTitle": "ቀላል",
+ "demoSimpleDialogDescription": "ቀላል ንግግር ለተጠቃሚው በበርካታ አማራጮች መካከል ምርጫን ያቀርባል። ቀላል ንግግር ከምርጫዎ በላይ የሚታይ አማራጭ አርዕስት አለው።",
+ "demoFullscreenDialogTitle": "ሙሉ ማያ ገጽ",
+ "demoCupertinoButtonsTitle": "አዝራሮች",
+ "demoCupertinoButtonsSubtitle": "iOS-ቅጥ አዝራሮች",
+ "demoCupertinoButtonsDescription": "የ iOS-ቅጥ አዝራር። ሲነካ የሚደበዝዝ እና የሚደምቅ የጽሑፍ ውስጥ እና/ወይም አዶ ይወስዳል። በአማራጭነት በስተጀርባ ሊኖረው ይችል ይሆናል።",
+ "demoCupertinoAlertsTitle": "ማንቂያዎች",
+ "demoCupertinoAlertsSubtitle": "iOS-ቅጥ ማንቂያ ንግግሮች",
+ "demoCupertinoAlertTitle": "ማንቂያ",
+ "demoCupertinoAlertDescription": "የማንቂያ ንግግር ተጠቃሚውን ስለ ዕውቅና መስጠት የሚያስፈልጋቸው ሁኔታዎች በተመለከተ መረጃ ይሰጣል። የማንቂያ ንግግር አማራጭ አርዕስት፣ አማራጭ ይዘት እና የድርጊቶች አማራጭ ዝርዝር አለው። አርእስቱ ከይዘቱ በላይ ይታያል እና እርምጃዎቹ ከይዘቱ ሥር ይታያሉ።",
+ "demoCupertinoAlertWithTitleTitle": "ከርዕስ ጋር ማንቂያ",
+ "demoCupertinoAlertButtonsTitle": "ከአዝራሮች ጋር ማንቂያዎች",
+ "demoCupertinoAlertButtonsOnlyTitle": "የማንቂያ አዝራሮች ብቻ",
+ "demoCupertinoActionSheetTitle": "የእርምጃ ሉህ",
+ "demoCupertinoActionSheetDescription": "የእርምጃ ሉህ ከሁለት ወይም ከዚያ በላይ አሁን ካለው ዓውድ ጋር ግንኙነት ያላቸው ምርጫዎች ጋር የምርጫ ስብስብ ለተጠቃሚው የሚያቀርብ የተወሰነ የማንቂያ ቅጥ ነው። የእርምጃ ሉህ አርእስት፣ ተጨማሪ መልዕክት፣ እና የእርምጃዎች ዝርዝር ሊኖረው ይችላል።",
+ "demoColorsTitle": "ቀለማት",
+ "demoColorsSubtitle": "ሁሉም አስቀድመው የተገለጹ ቀለማት",
+ "demoColorsDescription": "የቁስ ንድፍ ቀለም ቤተ ሥዕልን የሚወክሉ የቀለም እና የቀለም መደብ ቋሚዎች።",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "ይፍጠሩ",
+ "dialogSelectedOption": "እርስዎ ይህን መርጠዋል፦ «{value}»",
+ "dialogDiscardTitle": "ረቂቅ ይጣል?",
+ "dialogLocationTitle": "የGoogle አካባቢ አገልግሎትን ይጠቀም?",
+ "dialogLocationDescription": "መተግበሪያዎች አካባቢ እንዲያውቁ Google ያግዛቸው። ይሄ ማለት ስም-አልባ የአካባቢ ውሂብ ለGoogle መላክ ማለት ነው፣ ምንም እያሄዱ ያሉ መተግበሪያዎች ባይኖሩም እንኳ።",
+ "dialogCancel": "ተወው",
+ "dialogDiscard": "አስወግድ",
+ "dialogDisagree": "አትስማማ",
+ "dialogAgree": "እስማማለሁ",
+ "dialogSetBackup": "የምትኬ መለያ አቀናብር",
+ "colorsBlueGrey": "ሰማያዊ ግራጫ",
+ "dialogShow": "ንግግርን አሳይ",
+ "dialogFullscreenTitle": "የሙሉ ማያ ገጽ ንግግር",
+ "dialogFullscreenSave": "አስቀምጥ",
+ "dialogFullscreenDescription": "የሙሉ ማያ ገጽ ንግግር ተግባራዊ ማሳያ",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "ከበስተጀርባ ጋር",
+ "cupertinoAlertCancel": "ተወው",
+ "cupertinoAlertDiscard": "አስወግድ",
+ "cupertinoAlertLocationTitle": "የእርስዎ መገኛ አካባቢ እርስዎ መተግበሪያውን እየተጠቀሙ እንዳሉ እንዲደርስበት ለ \"ካርታዎች\" ይፈቀድ?",
+ "cupertinoAlertLocationDescription": "የእርስዎ አሁን ያሉበት መገኛ አካባቢ በካርታው ላይ ይታያል እንዲሁም ለአቅጣጫዎች፣ በአቅራቢያ ያሉ ፍለጋ ውጤቶች እና የሚገመቱ የጉዞ ጊዜያት ጥቅም ላይ ይውላል።",
+ "cupertinoAlertAllow": "ፍቀድ",
+ "cupertinoAlertDontAllow": "አትፍቀድ",
+ "cupertinoAlertFavoriteDessert": "ተወዳጅ ጣፋጭ ምግብን ይምረጡ",
+ "cupertinoAlertDessertDescription": "ከዚህ በታች ካለው ዝርዝር እባክዎ የእርስዎን ተወዳጅ ጣፋጭ ምግብ ዓይነት ይምረጡ። የእርስዎ ምርጫ በእርስዎ አካባቢ ያሉትን የሚጠቆሙ መመገቢያ ቦታዎችን ዝርዝር ብጁ ለማድረግ ጥቅም ላይ ሊውል ይችላል።",
+ "cupertinoAlertCheesecake": "ቺዝ ኬክ",
+ "cupertinoAlertTiramisu": "ቴራሚሶ",
+ "cupertinoAlertApplePie": "የፖም ፓይ",
+ "cupertinoAlertChocolateBrownie": "ቸኮሌት ብራውኒ",
+ "cupertinoShowAlert": "ማንቂያን አሳይ",
+ "colorsRed": "ቀይ",
+ "colorsPink": "ሮዝ",
+ "colorsPurple": "ሐምራዊ",
+ "colorsDeepPurple": "ደማቅ ሐምራዊ",
+ "colorsIndigo": "ወይን ጠጅ",
+ "colorsBlue": "ሰማያዊ",
+ "colorsLightBlue": "ፈካ ያለ ሰማያዊ",
+ "colorsCyan": "አረንጓዴ-ሰማያዊ",
+ "dialogAddAccount": "መለያ አክል",
+ "Gallery": "የሥነ ጥበብ ማዕከል",
+ "Categories": "ምድቦች",
+ "SHRINE": "ቅዱስ ቦታ",
+ "Basic shopping app": "መሠረታዊ የግዢ መተግበሪያ",
+ "RALLY": "ውድድር",
+ "CRANE": "ክሬን",
+ "Travel app": "የጉዞ መተግበሪያ",
+ "MATERIAL": "ቁስ",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "የማጣቀሻ ቅጦች እና መገናኛ ብዙኃን"
+}
diff --git a/gallery/lib/l10n/intl_ar.arb b/gallery/lib/l10n/intl_ar.arb
new file mode 100644
index 0000000..9bfae39
--- /dev/null
+++ b/gallery/lib/l10n/intl_ar.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "View options",
+ "demoOptionsFeatureDescription": "Tap here to view available options for this demo.",
+ "demoCodeViewerCopyAll": "نسخ الكل",
+ "shrineScreenReaderRemoveProductButton": "إزالة {product}",
+ "shrineScreenReaderProductAddToCart": "إضافة إلى سلة التسوق",
+ "shrineScreenReaderCart": "{quantity,plural, =0{سلة التسوق، ما مِن عناصر}=1{سلة التسوق، عنصر واحد}two{سلة التسوق، عنصران ({quantity})}few{سلة التسوق، {quantity} عناصر}many{سلة التسوق، {quantity} عنصرًا}other{سلة التسوق، {quantity} عنصر}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "تعذّر نسخ النص إلى الحافظة: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "تم نسخ النص إلى الحافظة.",
+ "craneSleep8SemanticLabel": "أطلال \"المايا\" على جُرْف يطِلّ على الشاطئ",
+ "craneSleep4SemanticLabel": "فندق يطِلّ على بحيرة قُبالة سلسلة من الجبال",
+ "craneSleep2SemanticLabel": "قلعة ماتشو بيتشو",
+ "craneSleep1SemanticLabel": "شاليه في مساحة طبيعية من الثلوج وبها أشجار دائمة الخضرة",
+ "craneSleep0SemanticLabel": "أكواخ فوق الماء",
+ "craneFly13SemanticLabel": "بركة بجانب البحر حولها نخيل",
+ "craneFly12SemanticLabel": "بركة ونخيل",
+ "craneFly11SemanticLabel": "منارة من الطوب على شاطئ البحر",
+ "craneFly10SemanticLabel": "مآذن الجامع الأزهر أثناء الغروب",
+ "craneFly9SemanticLabel": "رجل متّكِئ على سيارة زرقاء عتيقة",
+ "craneFly8SemanticLabel": "سوبر تري غروف",
+ "craneEat9SemanticLabel": "طاولة مقهى لتقديم المعجنات",
+ "craneEat2SemanticLabel": "برغر",
+ "craneFly5SemanticLabel": "فندق يطِلّ على بحيرة قُبالة سلسلة من الجبال",
+ "demoSelectionControlsSubtitle": "مربّعات الاختيار وأزرار الاختيار ومفاتيح التبديل",
+ "craneEat10SemanticLabel": "امرأة تمسك بشطيرة بسطرمة كبيرة",
+ "craneFly4SemanticLabel": "أكواخ فوق الماء",
+ "craneEat7SemanticLabel": "مَدخل مخبز",
+ "craneEat6SemanticLabel": "طبق روبيان",
+ "craneEat5SemanticLabel": "منطقة الجلوس في مطعم ذي ذوق فني",
+ "craneEat4SemanticLabel": "حلوى الشوكولاته",
+ "craneEat3SemanticLabel": "وجبة التاكو الكورية",
+ "craneFly3SemanticLabel": "قلعة ماتشو بيتشو",
+ "craneEat1SemanticLabel": "بار فارغ وكراسي مرتفعة للزبائن",
+ "craneEat0SemanticLabel": "بيتزا في فرن يُشعَل بالأخشاب",
+ "craneSleep11SemanticLabel": "مركز تايبيه المالي 101",
+ "craneSleep10SemanticLabel": "مآذن الجامع الأزهر أثناء الغروب",
+ "craneSleep9SemanticLabel": "منارة من الطوب على شاطئ البحر",
+ "craneEat8SemanticLabel": "طبق جراد البحر",
+ "craneSleep7SemanticLabel": "شُقق ملونة في ميدان ريبيارا",
+ "craneSleep6SemanticLabel": "بركة ونخيل",
+ "craneSleep5SemanticLabel": "خيمة في حقل",
+ "settingsButtonCloseLabel": "إغلاق الإعدادات",
+ "demoSelectionControlsCheckboxDescription": "تسمح مربّعات الاختيار للمستخدمين باختيار عدة خيارات من مجموعة من الخيارات. القيمة المعتادة لمربّع الاختيار هي \"صحيح\" أو \"غير صحيح\" ويمكن أيضًا إضافة حالة ثالثة وهي \"خالية\".",
+ "settingsButtonLabel": "الإعدادات",
+ "demoListsTitle": "القوائم",
+ "demoListsSubtitle": "التمرير خلال تنسيقات القوائم",
+ "demoListsDescription": "صف بارتفاع واحد ثابت يحتوي عادةً على نص ورمز سابق أو لاحق.",
+ "demoOneLineListsTitle": "سطر واحد",
+ "demoTwoLineListsTitle": "سطران",
+ "demoListsSecondary": "نص ثانوي",
+ "demoSelectionControlsTitle": "عناصر التحكّم في الاختيار",
+ "craneFly7SemanticLabel": "جبل راشمور",
+ "demoSelectionControlsCheckboxTitle": "مربّع اختيار",
+ "craneSleep3SemanticLabel": "رجل متّكِئ على سيارة زرقاء عتيقة",
+ "demoSelectionControlsRadioTitle": "زر اختيار",
+ "demoSelectionControlsRadioDescription": "تسمح أزرار الاختيار للقارئ بتحديد خيار واحد من مجموعة من الخيارات. يمكنك استخدام أزرار الاختيار لتحديد اختيارات حصرية إذا كنت تعتقد أنه يجب أن تظهر للمستخدم كل الخيارات المتاحة جنبًا إلى جنب.",
+ "demoSelectionControlsSwitchTitle": "مفاتيح التبديل",
+ "demoSelectionControlsSwitchDescription": "تؤدي مفاتيح تبديل التشغيل/الإيقاف إلى تبديل حالة خيار واحد في الإعدادات. يجب توضيح الخيار الذي يتحكّم فيه مفتاح التبديل وكذلك حالته، وذلك من خلال التسمية المضمّنة المتاحة.",
+ "craneFly0SemanticLabel": "شاليه في مساحة طبيعية من الثلوج وبها أشجار دائمة الخضرة",
+ "craneFly1SemanticLabel": "خيمة في حقل",
+ "craneFly2SemanticLabel": "رايات صلاة أمام جبل ثلجي",
+ "craneFly6SemanticLabel": "عرض \"قصر الفنون الجميلة\" من الجوّ",
+ "rallySeeAllAccounts": "عرض جميع الحسابات",
+ "rallyBillAmount": "تاريخ استحقاق الفاتورة {billName} التي تبلغ {amount} هو {date}.",
+ "shrineTooltipCloseCart": "إغلاق سلة التسوق",
+ "shrineTooltipCloseMenu": "إغلاق القائمة",
+ "shrineTooltipOpenMenu": "فتح القائمة",
+ "shrineTooltipSettings": "الإعدادات",
+ "shrineTooltipSearch": "بحث",
+ "demoTabsDescription": "تساعد علامات التبويب على تنظيم المحتوى في الشاشات المختلفة ومجموعات البيانات والتفاعلات الأخرى.",
+ "demoTabsSubtitle": "علامات تبويب تحتوي على عروض يمكن التنقّل خلالها بشكل مستقل",
+ "demoTabsTitle": "علامات التبويب",
+ "rallyBudgetAmount": "ميزانية {budgetName} مع استخدام {amountUsed} من إجمالي {amountTotal}، المبلغ المتبقي {amountLeft}",
+ "shrineTooltipRemoveItem": "إزالة العنصر",
+ "rallyAccountAmount": "الحساب {accountName} رقم {accountNumber} بمبلغ {amount}.",
+ "rallySeeAllBudgets": "عرض جميع الميزانيات",
+ "rallySeeAllBills": "عرض كل الفواتير",
+ "craneFormDate": "اختيار التاريخ",
+ "craneFormOrigin": "اختيار نقطة انطلاق الرحلة",
+ "craneFly2": "وادي خومبو، نيبال",
+ "craneFly3": "ماتشو بيتشو، بيرو",
+ "craneFly4": "ماليه، جزر المالديف",
+ "craneFly5": "فيتزناو، سويسرا",
+ "craneFly6": "مكسيكو سيتي، المكسيك",
+ "craneFly7": "جبل راشمور، الولايات المتحدة",
+ "settingsTextDirectionLocaleBased": "بناءً على اللغة",
+ "craneFly9": "هافانا، كوبا",
+ "craneFly10": "القاهرة، مصر",
+ "craneFly11": "لشبونة، البرتغال",
+ "craneFly12": "نابا، الولايات المتحدة",
+ "craneFly13": "بالي، إندونيسيا",
+ "craneSleep0": "ماليه، جزر المالديف",
+ "craneSleep1": "أسبن، الولايات المتحدة",
+ "craneSleep2": "ماتشو بيتشو، بيرو",
+ "demoCupertinoSegmentedControlTitle": "عنصر تحكّم شريحة",
+ "craneSleep4": "فيتزناو، سويسرا",
+ "craneSleep5": "بيغ سور، الولايات المتحدة",
+ "craneSleep6": "نابا، الولايات المتحدة",
+ "craneSleep7": "بورتو، البرتغال",
+ "craneSleep8": "تولوم، المكسيك",
+ "craneEat5": "سول، كوريا الجنوبية",
+ "demoChipTitle": "الشرائح",
+ "demoChipSubtitle": "العناصر المضغوطة التي تمثل إدخال أو سمة أو إجراء",
+ "demoActionChipTitle": "شريحة الإجراءات",
+ "demoActionChipDescription": "شرائح الإجراءات هي مجموعة من الخيارات التي تشغّل إجراءً ذا صلة بالمحتوى الأساسي. ينبغي أن يكون ظهور شرائح الإجراءات في واجهة المستخدم ديناميكيًا ومناسبًا للسياق.",
+ "demoChoiceChipTitle": "شريحة الخيارات",
+ "demoChoiceChipDescription": "تمثل شرائح الخيارات خيارًا واحدًا من بين مجموعة. تتضمن شرائح الخيارات النصوص الوصفية ذات الصلة أو الفئات.",
+ "demoFilterChipTitle": "شريحة الفلتر",
+ "demoFilterChipDescription": "تستخدم شرائح الفلتر العلامات أو الكلمات الوصفية باعتبارها طريقة لفلترة المحتوى.",
+ "demoInputChipTitle": "شريحة الإدخال",
+ "demoInputChipDescription": "تمثل شرائح الإدخالات معلومة معقدة، مثل كيان (شخص، مكان، أو شئ) أو نص محادثة، في نمط مضغوط.",
+ "craneSleep9": "لشبونة، البرتغال",
+ "craneEat10": "لشبونة، البرتغال",
+ "demoCupertinoSegmentedControlDescription": "يُستخدَم للاختيار بين عدد من الخيارات يستبعد أحدها الآخر. عند اختيار خيار في عنصر تحكّم الشريحة، يتم إلغاء اختيار العنصر الآخر في عنصر تحكّم الشريحة.",
+ "chipTurnOnLights": "تشغيل الأضواء",
+ "chipSmall": "صغير",
+ "chipMedium": "متوسط",
+ "chipLarge": "كبير",
+ "chipElevator": "مصعَد",
+ "chipWasher": "غسّالة",
+ "chipFireplace": "موقد",
+ "chipBiking": "ركوب الدراجة",
+ "craneFormDiners": "مطاعم صغيرة",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على معاملة واحدة لم يتم ضبطها.}zero{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملة لم يتم ضبطها.}two{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على معاملتين ({count}) لم يتم ضبطهما.}few{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملات لم يتم ضبطها.}many{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملة لم يتم ضبطها.}other{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملة لم يتم ضبطها.}}",
+ "craneFormTime": "اختيار الوقت",
+ "craneFormLocation": "اختيار الموقع جغرافي",
+ "craneFormTravelers": "المسافرون",
+ "craneEat8": "أتلانتا، الولايات المتحدة",
+ "craneFormDestination": "اختيار الوجهة",
+ "craneFormDates": "اختيار تواريخ",
+ "craneFly": "الطيران",
+ "craneSleep": "السكون",
+ "craneEat": "المأكولات",
+ "craneFlySubhead": "استكشاف الرحلات حسب الوجهة",
+ "craneSleepSubhead": "استكشاف العقارات حسب الوجهة",
+ "craneEatSubhead": "استكشاف المطاعم حسب الوجهة",
+ "craneFlyStops": "{numberOfStops,plural, =0{بدون توقف}=1{محطة واحدة}two{محطتان ({numberOfStops})}few{{numberOfStops} محطات}many{{numberOfStops} محطة}other{{numberOfStops} محطة}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{ليس هناك مواقع متاحة.}=1{هناك موقع واحد متاح.}two{هناك موقعان ({totalProperties}) متاحان.}few{هناك {totalProperties} مواقع متاحة.}many{هناك {totalProperties} موقعًا متاحًا.}other{هناك {totalProperties} موقع متاح.}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{ما مِن مطاعم.}=1{مطعم واحد}two{مطعمان ({totalRestaurants})}few{{totalRestaurants} مطاعم}many{{totalRestaurants} مطعمًا}other{{totalRestaurants} مطعم}}",
+ "craneFly0": "أسبن، الولايات المتحدة",
+ "demoCupertinoSegmentedControlSubtitle": "عنصر تحكّم شريحة بنمط iOS",
+ "craneSleep10": "القاهرة، مصر",
+ "craneEat9": "مدريد، إسبانيا",
+ "craneFly1": "بيغ سور، الولايات المتحدة",
+ "craneEat7": "ناشفيل، الولايات المتحدة",
+ "craneEat6": "سياتل، الولايات المتحدة",
+ "craneFly8": "سنغافورة",
+ "craneEat4": "باريس، فرنسا",
+ "craneEat3": "بورتلاند، الولايات المتحدة",
+ "craneEat2": "قرطبة، الأرجنتين",
+ "craneEat1": "دالاس، الولايات المتحدة",
+ "craneEat0": "نابولي، إيطاليا",
+ "craneSleep11": "تايبيه، تايوان",
+ "craneSleep3": "هافانا، كوبا",
+ "shrineLogoutButtonCaption": "تسجيل الخروج",
+ "rallyTitleBills": "الفواتير",
+ "rallyTitleAccounts": "الحسابات",
+ "shrineProductVagabondSack": "حقيبة من ماركة Vagabond",
+ "rallyAccountDetailDataInterestYtd": "الفائدة منذ بداية العام حتى اليوم",
+ "shrineProductWhitneyBelt": "حزام \"ويتني\"",
+ "shrineProductGardenStrand": "خيوط زينة للحدائق",
+ "shrineProductStrutEarrings": "أقراط فاخرة",
+ "shrineProductVarsitySocks": "جوارب من نوع \"فارسيتي\"",
+ "shrineProductWeaveKeyring": "سلسلة مفاتيح Weave",
+ "shrineProductGatsbyHat": "قبعة \"غاتسبي\"",
+ "shrineProductShrugBag": "حقيبة كتف",
+ "shrineProductGiltDeskTrio": "طقم أدوات مكتبية ذهبية اللون من 3 قطع",
+ "shrineProductCopperWireRack": "رف سلكي نحاسي",
+ "shrineProductSootheCeramicSet": "طقم سيراميك باللون الأبيض الراقي",
+ "shrineProductHurrahsTeaSet": "طقم شاي مميّز",
+ "shrineProductBlueStoneMug": "قدح حجري أزرق",
+ "shrineProductRainwaterTray": "صينية عميقة",
+ "shrineProductChambrayNapkins": "مناديل \"شامبراي\"",
+ "shrineProductSucculentPlanters": "أحواض عصرية للنباتات",
+ "shrineProductQuartetTable": "طاولة رباعية الأرجل",
+ "shrineProductKitchenQuattro": "طقم أدوات للمطبخ من أربع قطع",
+ "shrineProductClaySweater": "بلوزة بلون الطين",
+ "shrineProductSeaTunic": "بلوزة بلون أزرق فاتح",
+ "shrineProductPlasterTunic": "بلوزة من نوع \"بلاستر\"",
+ "rallyBudgetCategoryRestaurants": "المطاعم",
+ "shrineProductChambrayShirt": "قميص من نوع \"شامبراي\"",
+ "shrineProductSeabreezeSweater": "سترة بلون أزرق بحري",
+ "shrineProductGentryJacket": "سترة رجالية باللون الأخضر الداكن",
+ "shrineProductNavyTrousers": "سروال بلون أزرق داكن",
+ "shrineProductWalterHenleyWhite": "والتر هينلي (أبيض)",
+ "shrineProductSurfAndPerfShirt": "قميص سيرف آند بيرف",
+ "shrineProductGingerScarf": "وشاح بألوان الزنجبيل",
+ "shrineProductRamonaCrossover": "قميص \"رامونا\" على شكل الحرف X",
+ "shrineProductClassicWhiteCollar": "ياقة بيضاء كلاسيكية",
+ "shrineProductSunshirtDress": "فستان يعكس أشعة الشمس",
+ "rallyAccountDetailDataInterestRate": "سعر الفائدة",
+ "rallyAccountDetailDataAnnualPercentageYield": "النسبة المئوية للعائد السنوي",
+ "rallyAccountDataVacation": "عطلة",
+ "shrineProductFineLinesTee": "قميص بخطوط رفيعة",
+ "rallyAccountDataHomeSavings": "المدخرات المنزلية",
+ "rallyAccountDataChecking": "الحساب الجاري",
+ "rallyAccountDetailDataInterestPaidLastYear": "الفائدة المدفوعة في العام الماضي",
+ "rallyAccountDetailDataNextStatement": "كشف الحساب التالي",
+ "rallyAccountDetailDataAccountOwner": "صاحب الحساب",
+ "rallyBudgetCategoryCoffeeShops": "المقاهي",
+ "rallyBudgetCategoryGroceries": "متاجر البقالة",
+ "shrineProductCeriseScallopTee": "قميص قصير الأكمام باللون الكرزي الفاتح",
+ "rallyBudgetCategoryClothing": "الملابس",
+ "rallySettingsManageAccounts": "إدارة الحسابات",
+ "rallyAccountDataCarSavings": "المدّخرات المخصّصة للسيارة",
+ "rallySettingsTaxDocuments": "المستندات الضريبية",
+ "rallySettingsPasscodeAndTouchId": "رمز المرور ومعرّف اللمس",
+ "rallySettingsNotifications": "إشعارات",
+ "rallySettingsPersonalInformation": "المعلومات الشخصية",
+ "rallySettingsPaperlessSettings": "إعدادات إنجاز الأعمال بدون ورق",
+ "rallySettingsFindAtms": "العثور على مواقع أجهزة الصراف الآلي",
+ "rallySettingsHelp": "المساعدة",
+ "rallySettingsSignOut": "تسجيل الخروج",
+ "rallyAccountTotal": "الإجمالي",
+ "rallyBillsDue": "الفواتير المستحقة",
+ "rallyBudgetLeft": "الميزانية المتبقية",
+ "rallyAccounts": "الحسابات",
+ "rallyBills": "الفواتير",
+ "rallyBudgets": "الميزانيات",
+ "rallyAlerts": "التنبيهات",
+ "rallySeeAll": "عرض الكل",
+ "rallyFinanceLeft": "المتبقي",
+ "rallyTitleOverview": "نظرة عامة",
+ "shrineProductShoulderRollsTee": "قميص واسعة بأكمام قصيرة",
+ "shrineNextButtonCaption": "التالي",
+ "rallyTitleBudgets": "الميزانيات",
+ "rallyTitleSettings": "الإعدادات",
+ "rallyLoginLoginToRally": "تسجيل الدخول إلى Rally",
+ "rallyLoginNoAccount": "أليس لديك حساب؟",
+ "rallyLoginSignUp": "الاشتراك",
+ "rallyLoginUsername": "اسم المستخدم",
+ "rallyLoginPassword": "كلمة المرور",
+ "rallyLoginLabelLogin": "تسجيل الدخول",
+ "rallyLoginRememberMe": "تذكُّر بيانات تسجيل الدخول إلى حسابي",
+ "rallyLoginButtonLogin": "تسجيل الدخول",
+ "rallyAlertsMessageHeadsUpShopping": "تنبيه: لقد استهلكت {percent} من ميزانية التسوّق لهذا الشهر.",
+ "rallyAlertsMessageSpentOnRestaurants": "أنفقت هذا الشهر مبلغ {amount} على تناول الطعام في المطاعم.",
+ "rallyAlertsMessageATMFees": "أنفقت {amount} كرسوم لأجهزة الصراف الآلي هذا الشهر",
+ "rallyAlertsMessageCheckingAccount": "عمل رائع! الرصيد الحالي في حسابك الجاري أعلى بنسبة {percent} من الشهر الماضي.",
+ "shrineMenuCaption": "القائمة",
+ "shrineCategoryNameAll": "الكل",
+ "shrineCategoryNameAccessories": "الإكسسوارات",
+ "shrineCategoryNameClothing": "الملابس",
+ "shrineCategoryNameHome": "المنزل",
+ "shrineLoginUsernameLabel": "اسم المستخدم",
+ "shrineLoginPasswordLabel": "كلمة المرور",
+ "shrineCancelButtonCaption": "إلغاء",
+ "shrineCartTaxCaption": "الضريبة:",
+ "shrineCartPageCaption": "سلة التسوّق",
+ "shrineProductQuantity": "الكمية: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{ما مِن عناصر.}=1{عنصر واحد}two{عنصران ({quantity})}few{{quantity} عناصر}many{{quantity} عنصرًا}other{{quantity} عنصر}}",
+ "shrineCartClearButtonCaption": "محو سلة التسوق",
+ "shrineCartTotalCaption": "الإجمالي",
+ "shrineCartSubtotalCaption": "الإجمالي الفرعي:",
+ "shrineCartShippingCaption": "الشحن:",
+ "shrineProductGreySlouchTank": "قميص رمادي اللون",
+ "shrineProductStellaSunglasses": "نظارات شمس من نوع \"ستيلا\"",
+ "shrineProductWhitePinstripeShirt": "قميص ذو خطوط بيضاء",
+ "demoTextFieldWhereCanWeReachYou": "على أي رقم يمكننا التواصل معك؟",
+ "settingsTextDirectionLTR": "من اليسار إلى اليمين",
+ "settingsTextScalingLarge": "كبير",
+ "demoBottomSheetHeader": "العنوان",
+ "demoBottomSheetItem": "السلعة {value}",
+ "demoBottomTextFieldsTitle": "حقول النص",
+ "demoTextFieldTitle": "حقول النص",
+ "demoTextFieldSubtitle": "سطر واحد من النص والأرقام القابلة للتعديل",
+ "demoTextFieldDescription": "تسمح حقول النص للمستخدمين بإدخال نص في واجهة مستخدم. وتظهر عادةً في النماذج ومربّعات الحوار.",
+ "demoTextFieldShowPasswordLabel": "عرض كلمة المرور",
+ "demoTextFieldHidePasswordLabel": "إخفاء كلمة المرور",
+ "demoTextFieldFormErrors": "يُرجى تصحيح الأخطاء باللون الأحمر قبل الإرسال.",
+ "demoTextFieldNameRequired": "الاسم مطلوب.",
+ "demoTextFieldOnlyAlphabeticalChars": "يُرجى إدخال حروف أبجدية فقط.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - يُرجى إدخال رقم هاتف صالح في الولايات المتحدة.",
+ "demoTextFieldEnterPassword": "يرجى إدخال كلمة مرور.",
+ "demoTextFieldPasswordsDoNotMatch": "كلمتا المرور غير متطابقتين.",
+ "demoTextFieldWhatDoPeopleCallYou": "بأي اسم يناديك الآخرون؟",
+ "demoTextFieldNameField": "الاسم*",
+ "demoBottomSheetButtonText": "عرض البطاقة السفلية",
+ "demoTextFieldPhoneNumber": "رقم الهاتف*",
+ "demoBottomSheetTitle": "البطاقة السفلية",
+ "demoTextFieldEmail": "البريد الإلكتروني",
+ "demoTextFieldTellUsAboutYourself": "أخبِرنا عن نفسك (مثلاً ما هي هواياتك المفضّلة أو ما هو مجال عملك؟)",
+ "demoTextFieldKeepItShort": "يُرجى الاختصار، هذا مجرد عرض توضيحي.",
+ "starterAppGenericButton": "زر",
+ "demoTextFieldLifeStory": "قصة حياة",
+ "demoTextFieldSalary": "الراتب",
+ "demoTextFieldUSD": "دولار أمريكي",
+ "demoTextFieldNoMoreThan": "يجب ألا تزيد عن 8 أحرف.",
+ "demoTextFieldPassword": "كلمة المرور*",
+ "demoTextFieldRetypePassword": "أعِد كتابة كلمة المرور*",
+ "demoTextFieldSubmit": "إرسال",
+ "demoBottomNavigationSubtitle": "شريط تنقّل سفلي شبه مرئي",
+ "demoBottomSheetAddLabel": "إضافة",
+ "demoBottomSheetModalDescription": "تعتبر البطاقة السفلية المقيِّدة بديلاً لقائمة أو مربّع حوار ولا تسمح للمستخدم بالتفاعل مع المحتوى الآخر على الشاشة.",
+ "demoBottomSheetModalTitle": "البطاقة السفلية المقيِّدة",
+ "demoBottomSheetPersistentDescription": "تعرض البطاقة السفلية العادية معلومات تكميلية للمحتوى الأساسي للتطبيق. ولا تختفي هذه البطاقة عندما يتفاعل المستخدم مع المحتوى الآخر على الشاشة.",
+ "demoBottomSheetPersistentTitle": "البطاقة السفلية العادية",
+ "demoBottomSheetSubtitle": "البطاقات السفلية المقيِّدة والعادية",
+ "demoTextFieldNameHasPhoneNumber": "رقم هاتف {name} هو {phoneNumber}.",
+ "buttonText": "زر",
+ "demoTypographyDescription": "تعريف أساليب الخط المختلفة في التصميم المتعدد الأبعاد",
+ "demoTypographySubtitle": "جميع أنماط النص المحدّدة مسبقًا",
+ "demoTypographyTitle": "أسلوب الخط",
+ "demoFullscreenDialogDescription": "تحدِّد خاصية fullscreenDialog ما إذا كانت الصفحة الواردة هي مربع حوار نمطي بملء الشاشة.",
+ "demoFlatButtonDescription": "يتلوّن الزر المنبسط عند الضغط عليه ولكن لا يرتفع. ينصح باستخدام الأزرار المنبسطة على أشرطة الأدوات وفي مربعات الحوار وداخل المساحة المتروكة",
+ "demoBottomNavigationDescription": "تعرض أشرطة التنقل السفلية بين ثلاث وخمس وجهات في الجزء السفلي من الشاشة. ويتم تمثيل كل وجهة برمز ووسم نصي اختياري. عند النقر على رمز التنقل السفلي، يتم نقل المستخدم إلى وجهة التنقل ذات المستوى الأعلى المرتبطة بذلك الرمز.",
+ "demoBottomNavigationSelectedLabel": "الملصق المُختار",
+ "demoBottomNavigationPersistentLabels": "التصنيفات المستمرة",
+ "starterAppDrawerItem": "السلعة {value}",
+ "demoTextFieldRequiredField": "تشير علامة * إلى حقل مطلوب.",
+ "demoBottomNavigationTitle": "شريط التنقل السفلي",
+ "settingsLightTheme": "فاتح",
+ "settingsTheme": "التصميم",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "من اليمين إلى اليسار",
+ "settingsTextScalingHuge": "ضخم",
+ "cupertinoButton": "زر",
+ "settingsTextScalingNormal": "عادي",
+ "settingsTextScalingSmall": "صغير",
+ "settingsSystemDefault": "النظام",
+ "settingsTitle": "الإعدادات",
+ "rallyDescription": "تطبيق للتمويل الشخصي",
+ "aboutDialogDescription": "للاطّلاع على رمز المصدر لهذا التطبيق، يُرجى زيارة {value}.",
+ "bottomNavigationCommentsTab": "التعليقات",
+ "starterAppGenericBody": "النص",
+ "starterAppGenericHeadline": "العنوان",
+ "starterAppGenericSubtitle": "العنوان الفرعي",
+ "starterAppGenericTitle": "العنوان",
+ "starterAppTooltipSearch": "البحث",
+ "starterAppTooltipShare": "مشاركة",
+ "starterAppTooltipFavorite": "الإضافة إلى السلع المفضّلة",
+ "starterAppTooltipAdd": "إضافة",
+ "bottomNavigationCalendarTab": "التقويم",
+ "starterAppDescription": "تطبيق نموذجي يتضمّن تنسيقًا تفاعليًا",
+ "starterAppTitle": "تطبيق نموذجي",
+ "aboutFlutterSamplesRepo": "عينات Flutter في مستودع Github",
+ "bottomNavigationContentPlaceholder": "عنصر نائب لعلامة تبويب {title}",
+ "bottomNavigationCameraTab": "الكاميرا",
+ "bottomNavigationAlarmTab": "المنبّه",
+ "bottomNavigationAccountTab": "الحساب",
+ "demoTextFieldYourEmailAddress": "عنوان بريدك الإلكتروني",
+ "demoToggleButtonDescription": "يمكن استخدام أزرار التبديل لتجميع الخيارات المرتبطة. لتأكيد مجموعات أزرار التبديل المرتبطة، يجب أن تشترك إحدى المجموعات في حاوية مشتركة.",
+ "colorsGrey": "رمادي",
+ "colorsBrown": "بني",
+ "colorsDeepOrange": "برتقالي داكن",
+ "colorsOrange": "برتقالي",
+ "colorsAmber": "كهرماني",
+ "colorsYellow": "أصفر",
+ "colorsLime": "ليموني",
+ "colorsLightGreen": "أخضر فاتح",
+ "colorsGreen": "أخضر",
+ "homeHeaderGallery": "معرض الصور",
+ "homeHeaderCategories": "الفئات",
+ "shrineDescription": "تطبيق عصري للبيع بالتجزئة",
+ "craneDescription": "تطبيق سفر مُخصَّص",
+ "homeCategoryReference": "الأنماط والوسائط المرجعية",
+ "demoInvalidURL": "تعذّر عرض عنوان URL:",
+ "demoOptionsTooltip": "الخيارات",
+ "demoInfoTooltip": "معلومات",
+ "demoCodeTooltip": "نموذج رمز",
+ "demoDocumentationTooltip": "وثائق واجهة برمجة التطبيقات",
+ "demoFullscreenTooltip": "ملء الشاشة",
+ "settingsTextScaling": "تغيير حجم النص",
+ "settingsTextDirection": "اتجاه النص",
+ "settingsLocale": "اللغة",
+ "settingsPlatformMechanics": "آليات الأنظمة الأساسية",
+ "settingsDarkTheme": "داكن",
+ "settingsSlowMotion": "التصوير البطيء",
+ "settingsAbout": "نبذة عن معرض Flutter",
+ "settingsFeedback": "إرسال التعليقات",
+ "settingsAttribution": "من تصميم TOASTER في لندن",
+ "demoButtonTitle": "الأزرار",
+ "demoButtonSubtitle": "أزرار منبسطة وبارزة ومخطَّطة وغيرها",
+ "demoFlatButtonTitle": "الزر المنبسط",
+ "demoRaisedButtonDescription": "تضيف الأزرار البارزة بُعدًا إلى التخطيطات المنبسطة عادةً. وتبرِز الوظائف المتوفرة في المساحات العريضة أو المكدَّسة.",
+ "demoRaisedButtonTitle": "الزر البارز",
+ "demoOutlineButtonTitle": "Outline Button",
+ "demoOutlineButtonDescription": "تصبح الأزرار المخطَّطة غير شفافة وترتفع عند الضغط عليها. وغالبًا ما يتم إقرانها مع الأزرار البارزة للإشارة إلى إجراء ثانوي بديل.",
+ "demoToggleButtonTitle": "أزرار التبديل",
+ "colorsTeal": "أزرق مخضرّ",
+ "demoFloatingButtonTitle": "زر الإجراء العائم",
+ "demoFloatingButtonDescription": "زر الإجراء العائم هو زر على شكل رمز دائري يتم تمريره فوق المحتوى للترويج لاتخاذ إجراء أساسي في التطبيق.",
+ "demoDialogTitle": "مربعات الحوار",
+ "demoDialogSubtitle": "مربعات حوار بسيطة ومخصّصة للتنبيهات وبملء الشاشة",
+ "demoAlertDialogTitle": "التنبيه",
+ "demoAlertDialogDescription": "يخبر مربع حوار التنبيهات المستخدم بالحالات التي تتطلب تأكيد الاستلام. ويشتمل مربع حوار التنبيهات على عنوان اختياري وقائمة إجراءات اختيارية.",
+ "demoAlertTitleDialogTitle": "تنبيه مزوّد بعنوان",
+ "demoSimpleDialogTitle": "بسيط",
+ "demoSimpleDialogDescription": "يتيح مربع الحوار البسيط للمستخدم إمكانية الاختيار من بين عدة خيارات. ويشتمل مربع الحوار البسيط على عنوان اختياري يتم عرضه أعلى هذه الخيارات.",
+ "demoFullscreenDialogTitle": "ملء الشاشة",
+ "demoCupertinoButtonsTitle": "الأزرار",
+ "demoCupertinoButtonsSubtitle": "أزرار مستوحاة من نظام التشغيل iOS",
+ "demoCupertinoButtonsDescription": "زر مستوحى من نظام التشغيل iOS. يتم عرض هذا الزر على شكل نص و/أو رمز يتلاشى ويظهر بالتدريج عند اللمس. وقد يكون مزوّدًا بخلفية اختياريًا.",
+ "demoCupertinoAlertsTitle": "التنبيهات",
+ "demoCupertinoAlertsSubtitle": "مربعات حوار التنبيهات المستوحاة من نظام التشغيل iOS",
+ "demoCupertinoAlertTitle": "تنبيه",
+ "demoCupertinoAlertDescription": "يخبر مربع حوار التنبيهات المستخدم بالحالات التي تتطلب تأكيد الاستلام. ويشتمل مربع حوار التنبيهات على عنوان اختياري ومحتوى اختياري وقائمة إجراءات اختيارية. ويتم عرض العنوان أعلى المحتوى بينما تُعرض الإجراءات أسفل المحتوى.",
+ "demoCupertinoAlertWithTitleTitle": "تنبيه يتضمّن عنوانًا",
+ "demoCupertinoAlertButtonsTitle": "تنبيه مزوّد بأزرار",
+ "demoCupertinoAlertButtonsOnlyTitle": "أزرار التنبيه فقط",
+ "demoCupertinoActionSheetTitle": "ورقة الإجراءات",
+ "demoCupertinoActionSheetDescription": "ورقة الإجراءات هي ورقة أنماط معيّنة للتنبيهات تقدّم للمستخدم مجموعة مكوّنة من خيارين أو أكثر مرتبطة بالسياق الحالي. ويمكن أن تتضمّن ورقة الإجراءات عنوانًا ورسالة إضافية وقائمة إجراءات.",
+ "demoColorsTitle": "الألوان",
+ "demoColorsSubtitle": "جميع الألوان المحدّدة مسبقًا",
+ "demoColorsDescription": "ثوابت اللون وعينات الألوان التي تُمثل لوحة ألوان التصميم المتعدد الأبعاد",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "إنشاء",
+ "dialogSelectedOption": "لقد اخترت القيمة التالية: \"{value}\"",
+ "dialogDiscardTitle": "هل تريد تجاهل المسودة؟",
+ "dialogLocationTitle": "هل تريد استخدام خدمة الموقع الجغرافي من Google؟",
+ "dialogLocationDescription": "يمكنك السماح لشركة Google بمساعدة التطبيقات في تحديد الموقع الجغرافي. ويعني هذا أنه سيتم إرسال بيانات مجهولة المصدر عن الموقع الجغرافي إلى Google، حتى عند عدم تشغيل أي تطبيقات.",
+ "dialogCancel": "إلغاء",
+ "dialogDiscard": "تجاهل",
+ "dialogDisagree": "لا أوافق",
+ "dialogAgree": "موافق",
+ "dialogSetBackup": "تحديد حساب النسخة الاحتياطية",
+ "colorsBlueGrey": "أزرق رمادي",
+ "dialogShow": "عرض مربع الحوار",
+ "dialogFullscreenTitle": "مربع حوار بملء الشاشة",
+ "dialogFullscreenSave": "حفظ",
+ "dialogFullscreenDescription": "عرض توضيحي لمربع حوار بملء الشاشة",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "زر مزوّد بخلفية",
+ "cupertinoAlertCancel": "إلغاء",
+ "cupertinoAlertDiscard": "تجاهل",
+ "cupertinoAlertLocationTitle": "هل تريد السماح لخدمة \"خرائط Google\" بالدخول إلى موقعك الجغرافي أثناء استخدام التطبيق؟",
+ "cupertinoAlertLocationDescription": "سيتم عرض الموقع الجغرافي الحالي على الخريطة واستخدامه لتوفير الاتجاهات ونتائج البحث عن الأماكن المجاورة وأوقات التنقّل المقدرة.",
+ "cupertinoAlertAllow": "السماح",
+ "cupertinoAlertDontAllow": "عدم السماح",
+ "cupertinoAlertFavoriteDessert": "Select Favorite Dessert",
+ "cupertinoAlertDessertDescription": "يُرجى اختيار نوع الحلوى المفضّل لك من القائمة أدناه. وسيتم استخدام اختيارك في تخصيص القائمة المقترَحة للمطاعم في منطقتك.",
+ "cupertinoAlertCheesecake": "كعكة بالجبن",
+ "cupertinoAlertTiramisu": "تيراميسو",
+ "cupertinoAlertApplePie": "فطيرة التفاح",
+ "cupertinoAlertChocolateBrownie": "كعكة بالشوكولاتة والبندق",
+ "cupertinoShowAlert": "عرض التنبيه",
+ "colorsRed": "أحمر",
+ "colorsPink": "وردي",
+ "colorsPurple": "أرجواني",
+ "colorsDeepPurple": "أرجواني داكن",
+ "colorsIndigo": "نيليّ",
+ "colorsBlue": "أزرق",
+ "colorsLightBlue": "أزرق فاتح",
+ "colorsCyan": "سماوي",
+ "dialogAddAccount": "إضافة حساب",
+ "Gallery": "معرض الصور",
+ "Categories": "الفئات",
+ "SHRINE": "ضريح",
+ "Basic shopping app": "تطبيق التسوّق الأساسي",
+ "RALLY": "سباق",
+ "CRANE": "رافعة",
+ "Travel app": "تطبيق السفر",
+ "MATERIAL": "مادة",
+ "CUPERTINO": "كوبيرتينو",
+ "REFERENCE STYLES & MEDIA": "الأنماط والوسائط المرجعية"
+}
diff --git a/gallery/lib/l10n/intl_ar_EG.arb b/gallery/lib/l10n/intl_ar_EG.arb
new file mode 100644
index 0000000..9bfae39
--- /dev/null
+++ b/gallery/lib/l10n/intl_ar_EG.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "View options",
+ "demoOptionsFeatureDescription": "Tap here to view available options for this demo.",
+ "demoCodeViewerCopyAll": "نسخ الكل",
+ "shrineScreenReaderRemoveProductButton": "إزالة {product}",
+ "shrineScreenReaderProductAddToCart": "إضافة إلى سلة التسوق",
+ "shrineScreenReaderCart": "{quantity,plural, =0{سلة التسوق، ما مِن عناصر}=1{سلة التسوق، عنصر واحد}two{سلة التسوق، عنصران ({quantity})}few{سلة التسوق، {quantity} عناصر}many{سلة التسوق، {quantity} عنصرًا}other{سلة التسوق، {quantity} عنصر}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "تعذّر نسخ النص إلى الحافظة: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "تم نسخ النص إلى الحافظة.",
+ "craneSleep8SemanticLabel": "أطلال \"المايا\" على جُرْف يطِلّ على الشاطئ",
+ "craneSleep4SemanticLabel": "فندق يطِلّ على بحيرة قُبالة سلسلة من الجبال",
+ "craneSleep2SemanticLabel": "قلعة ماتشو بيتشو",
+ "craneSleep1SemanticLabel": "شاليه في مساحة طبيعية من الثلوج وبها أشجار دائمة الخضرة",
+ "craneSleep0SemanticLabel": "أكواخ فوق الماء",
+ "craneFly13SemanticLabel": "بركة بجانب البحر حولها نخيل",
+ "craneFly12SemanticLabel": "بركة ونخيل",
+ "craneFly11SemanticLabel": "منارة من الطوب على شاطئ البحر",
+ "craneFly10SemanticLabel": "مآذن الجامع الأزهر أثناء الغروب",
+ "craneFly9SemanticLabel": "رجل متّكِئ على سيارة زرقاء عتيقة",
+ "craneFly8SemanticLabel": "سوبر تري غروف",
+ "craneEat9SemanticLabel": "طاولة مقهى لتقديم المعجنات",
+ "craneEat2SemanticLabel": "برغر",
+ "craneFly5SemanticLabel": "فندق يطِلّ على بحيرة قُبالة سلسلة من الجبال",
+ "demoSelectionControlsSubtitle": "مربّعات الاختيار وأزرار الاختيار ومفاتيح التبديل",
+ "craneEat10SemanticLabel": "امرأة تمسك بشطيرة بسطرمة كبيرة",
+ "craneFly4SemanticLabel": "أكواخ فوق الماء",
+ "craneEat7SemanticLabel": "مَدخل مخبز",
+ "craneEat6SemanticLabel": "طبق روبيان",
+ "craneEat5SemanticLabel": "منطقة الجلوس في مطعم ذي ذوق فني",
+ "craneEat4SemanticLabel": "حلوى الشوكولاته",
+ "craneEat3SemanticLabel": "وجبة التاكو الكورية",
+ "craneFly3SemanticLabel": "قلعة ماتشو بيتشو",
+ "craneEat1SemanticLabel": "بار فارغ وكراسي مرتفعة للزبائن",
+ "craneEat0SemanticLabel": "بيتزا في فرن يُشعَل بالأخشاب",
+ "craneSleep11SemanticLabel": "مركز تايبيه المالي 101",
+ "craneSleep10SemanticLabel": "مآذن الجامع الأزهر أثناء الغروب",
+ "craneSleep9SemanticLabel": "منارة من الطوب على شاطئ البحر",
+ "craneEat8SemanticLabel": "طبق جراد البحر",
+ "craneSleep7SemanticLabel": "شُقق ملونة في ميدان ريبيارا",
+ "craneSleep6SemanticLabel": "بركة ونخيل",
+ "craneSleep5SemanticLabel": "خيمة في حقل",
+ "settingsButtonCloseLabel": "إغلاق الإعدادات",
+ "demoSelectionControlsCheckboxDescription": "تسمح مربّعات الاختيار للمستخدمين باختيار عدة خيارات من مجموعة من الخيارات. القيمة المعتادة لمربّع الاختيار هي \"صحيح\" أو \"غير صحيح\" ويمكن أيضًا إضافة حالة ثالثة وهي \"خالية\".",
+ "settingsButtonLabel": "الإعدادات",
+ "demoListsTitle": "القوائم",
+ "demoListsSubtitle": "التمرير خلال تنسيقات القوائم",
+ "demoListsDescription": "صف بارتفاع واحد ثابت يحتوي عادةً على نص ورمز سابق أو لاحق.",
+ "demoOneLineListsTitle": "سطر واحد",
+ "demoTwoLineListsTitle": "سطران",
+ "demoListsSecondary": "نص ثانوي",
+ "demoSelectionControlsTitle": "عناصر التحكّم في الاختيار",
+ "craneFly7SemanticLabel": "جبل راشمور",
+ "demoSelectionControlsCheckboxTitle": "مربّع اختيار",
+ "craneSleep3SemanticLabel": "رجل متّكِئ على سيارة زرقاء عتيقة",
+ "demoSelectionControlsRadioTitle": "زر اختيار",
+ "demoSelectionControlsRadioDescription": "تسمح أزرار الاختيار للقارئ بتحديد خيار واحد من مجموعة من الخيارات. يمكنك استخدام أزرار الاختيار لتحديد اختيارات حصرية إذا كنت تعتقد أنه يجب أن تظهر للمستخدم كل الخيارات المتاحة جنبًا إلى جنب.",
+ "demoSelectionControlsSwitchTitle": "مفاتيح التبديل",
+ "demoSelectionControlsSwitchDescription": "تؤدي مفاتيح تبديل التشغيل/الإيقاف إلى تبديل حالة خيار واحد في الإعدادات. يجب توضيح الخيار الذي يتحكّم فيه مفتاح التبديل وكذلك حالته، وذلك من خلال التسمية المضمّنة المتاحة.",
+ "craneFly0SemanticLabel": "شاليه في مساحة طبيعية من الثلوج وبها أشجار دائمة الخضرة",
+ "craneFly1SemanticLabel": "خيمة في حقل",
+ "craneFly2SemanticLabel": "رايات صلاة أمام جبل ثلجي",
+ "craneFly6SemanticLabel": "عرض \"قصر الفنون الجميلة\" من الجوّ",
+ "rallySeeAllAccounts": "عرض جميع الحسابات",
+ "rallyBillAmount": "تاريخ استحقاق الفاتورة {billName} التي تبلغ {amount} هو {date}.",
+ "shrineTooltipCloseCart": "إغلاق سلة التسوق",
+ "shrineTooltipCloseMenu": "إغلاق القائمة",
+ "shrineTooltipOpenMenu": "فتح القائمة",
+ "shrineTooltipSettings": "الإعدادات",
+ "shrineTooltipSearch": "بحث",
+ "demoTabsDescription": "تساعد علامات التبويب على تنظيم المحتوى في الشاشات المختلفة ومجموعات البيانات والتفاعلات الأخرى.",
+ "demoTabsSubtitle": "علامات تبويب تحتوي على عروض يمكن التنقّل خلالها بشكل مستقل",
+ "demoTabsTitle": "علامات التبويب",
+ "rallyBudgetAmount": "ميزانية {budgetName} مع استخدام {amountUsed} من إجمالي {amountTotal}، المبلغ المتبقي {amountLeft}",
+ "shrineTooltipRemoveItem": "إزالة العنصر",
+ "rallyAccountAmount": "الحساب {accountName} رقم {accountNumber} بمبلغ {amount}.",
+ "rallySeeAllBudgets": "عرض جميع الميزانيات",
+ "rallySeeAllBills": "عرض كل الفواتير",
+ "craneFormDate": "اختيار التاريخ",
+ "craneFormOrigin": "اختيار نقطة انطلاق الرحلة",
+ "craneFly2": "وادي خومبو، نيبال",
+ "craneFly3": "ماتشو بيتشو، بيرو",
+ "craneFly4": "ماليه، جزر المالديف",
+ "craneFly5": "فيتزناو، سويسرا",
+ "craneFly6": "مكسيكو سيتي، المكسيك",
+ "craneFly7": "جبل راشمور، الولايات المتحدة",
+ "settingsTextDirectionLocaleBased": "بناءً على اللغة",
+ "craneFly9": "هافانا، كوبا",
+ "craneFly10": "القاهرة، مصر",
+ "craneFly11": "لشبونة، البرتغال",
+ "craneFly12": "نابا، الولايات المتحدة",
+ "craneFly13": "بالي، إندونيسيا",
+ "craneSleep0": "ماليه، جزر المالديف",
+ "craneSleep1": "أسبن، الولايات المتحدة",
+ "craneSleep2": "ماتشو بيتشو، بيرو",
+ "demoCupertinoSegmentedControlTitle": "عنصر تحكّم شريحة",
+ "craneSleep4": "فيتزناو، سويسرا",
+ "craneSleep5": "بيغ سور، الولايات المتحدة",
+ "craneSleep6": "نابا، الولايات المتحدة",
+ "craneSleep7": "بورتو، البرتغال",
+ "craneSleep8": "تولوم، المكسيك",
+ "craneEat5": "سول، كوريا الجنوبية",
+ "demoChipTitle": "الشرائح",
+ "demoChipSubtitle": "العناصر المضغوطة التي تمثل إدخال أو سمة أو إجراء",
+ "demoActionChipTitle": "شريحة الإجراءات",
+ "demoActionChipDescription": "شرائح الإجراءات هي مجموعة من الخيارات التي تشغّل إجراءً ذا صلة بالمحتوى الأساسي. ينبغي أن يكون ظهور شرائح الإجراءات في واجهة المستخدم ديناميكيًا ومناسبًا للسياق.",
+ "demoChoiceChipTitle": "شريحة الخيارات",
+ "demoChoiceChipDescription": "تمثل شرائح الخيارات خيارًا واحدًا من بين مجموعة. تتضمن شرائح الخيارات النصوص الوصفية ذات الصلة أو الفئات.",
+ "demoFilterChipTitle": "شريحة الفلتر",
+ "demoFilterChipDescription": "تستخدم شرائح الفلتر العلامات أو الكلمات الوصفية باعتبارها طريقة لفلترة المحتوى.",
+ "demoInputChipTitle": "شريحة الإدخال",
+ "demoInputChipDescription": "تمثل شرائح الإدخالات معلومة معقدة، مثل كيان (شخص، مكان، أو شئ) أو نص محادثة، في نمط مضغوط.",
+ "craneSleep9": "لشبونة، البرتغال",
+ "craneEat10": "لشبونة، البرتغال",
+ "demoCupertinoSegmentedControlDescription": "يُستخدَم للاختيار بين عدد من الخيارات يستبعد أحدها الآخر. عند اختيار خيار في عنصر تحكّم الشريحة، يتم إلغاء اختيار العنصر الآخر في عنصر تحكّم الشريحة.",
+ "chipTurnOnLights": "تشغيل الأضواء",
+ "chipSmall": "صغير",
+ "chipMedium": "متوسط",
+ "chipLarge": "كبير",
+ "chipElevator": "مصعَد",
+ "chipWasher": "غسّالة",
+ "chipFireplace": "موقد",
+ "chipBiking": "ركوب الدراجة",
+ "craneFormDiners": "مطاعم صغيرة",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على معاملة واحدة لم يتم ضبطها.}zero{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملة لم يتم ضبطها.}two{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على معاملتين ({count}) لم يتم ضبطهما.}few{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملات لم يتم ضبطها.}many{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملة لم يتم ضبطها.}other{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملة لم يتم ضبطها.}}",
+ "craneFormTime": "اختيار الوقت",
+ "craneFormLocation": "اختيار الموقع جغرافي",
+ "craneFormTravelers": "المسافرون",
+ "craneEat8": "أتلانتا، الولايات المتحدة",
+ "craneFormDestination": "اختيار الوجهة",
+ "craneFormDates": "اختيار تواريخ",
+ "craneFly": "الطيران",
+ "craneSleep": "السكون",
+ "craneEat": "المأكولات",
+ "craneFlySubhead": "استكشاف الرحلات حسب الوجهة",
+ "craneSleepSubhead": "استكشاف العقارات حسب الوجهة",
+ "craneEatSubhead": "استكشاف المطاعم حسب الوجهة",
+ "craneFlyStops": "{numberOfStops,plural, =0{بدون توقف}=1{محطة واحدة}two{محطتان ({numberOfStops})}few{{numberOfStops} محطات}many{{numberOfStops} محطة}other{{numberOfStops} محطة}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{ليس هناك مواقع متاحة.}=1{هناك موقع واحد متاح.}two{هناك موقعان ({totalProperties}) متاحان.}few{هناك {totalProperties} مواقع متاحة.}many{هناك {totalProperties} موقعًا متاحًا.}other{هناك {totalProperties} موقع متاح.}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{ما مِن مطاعم.}=1{مطعم واحد}two{مطعمان ({totalRestaurants})}few{{totalRestaurants} مطاعم}many{{totalRestaurants} مطعمًا}other{{totalRestaurants} مطعم}}",
+ "craneFly0": "أسبن، الولايات المتحدة",
+ "demoCupertinoSegmentedControlSubtitle": "عنصر تحكّم شريحة بنمط iOS",
+ "craneSleep10": "القاهرة، مصر",
+ "craneEat9": "مدريد، إسبانيا",
+ "craneFly1": "بيغ سور، الولايات المتحدة",
+ "craneEat7": "ناشفيل، الولايات المتحدة",
+ "craneEat6": "سياتل، الولايات المتحدة",
+ "craneFly8": "سنغافورة",
+ "craneEat4": "باريس، فرنسا",
+ "craneEat3": "بورتلاند، الولايات المتحدة",
+ "craneEat2": "قرطبة، الأرجنتين",
+ "craneEat1": "دالاس، الولايات المتحدة",
+ "craneEat0": "نابولي، إيطاليا",
+ "craneSleep11": "تايبيه، تايوان",
+ "craneSleep3": "هافانا، كوبا",
+ "shrineLogoutButtonCaption": "تسجيل الخروج",
+ "rallyTitleBills": "الفواتير",
+ "rallyTitleAccounts": "الحسابات",
+ "shrineProductVagabondSack": "حقيبة من ماركة Vagabond",
+ "rallyAccountDetailDataInterestYtd": "الفائدة منذ بداية العام حتى اليوم",
+ "shrineProductWhitneyBelt": "حزام \"ويتني\"",
+ "shrineProductGardenStrand": "خيوط زينة للحدائق",
+ "shrineProductStrutEarrings": "أقراط فاخرة",
+ "shrineProductVarsitySocks": "جوارب من نوع \"فارسيتي\"",
+ "shrineProductWeaveKeyring": "سلسلة مفاتيح Weave",
+ "shrineProductGatsbyHat": "قبعة \"غاتسبي\"",
+ "shrineProductShrugBag": "حقيبة كتف",
+ "shrineProductGiltDeskTrio": "طقم أدوات مكتبية ذهبية اللون من 3 قطع",
+ "shrineProductCopperWireRack": "رف سلكي نحاسي",
+ "shrineProductSootheCeramicSet": "طقم سيراميك باللون الأبيض الراقي",
+ "shrineProductHurrahsTeaSet": "طقم شاي مميّز",
+ "shrineProductBlueStoneMug": "قدح حجري أزرق",
+ "shrineProductRainwaterTray": "صينية عميقة",
+ "shrineProductChambrayNapkins": "مناديل \"شامبراي\"",
+ "shrineProductSucculentPlanters": "أحواض عصرية للنباتات",
+ "shrineProductQuartetTable": "طاولة رباعية الأرجل",
+ "shrineProductKitchenQuattro": "طقم أدوات للمطبخ من أربع قطع",
+ "shrineProductClaySweater": "بلوزة بلون الطين",
+ "shrineProductSeaTunic": "بلوزة بلون أزرق فاتح",
+ "shrineProductPlasterTunic": "بلوزة من نوع \"بلاستر\"",
+ "rallyBudgetCategoryRestaurants": "المطاعم",
+ "shrineProductChambrayShirt": "قميص من نوع \"شامبراي\"",
+ "shrineProductSeabreezeSweater": "سترة بلون أزرق بحري",
+ "shrineProductGentryJacket": "سترة رجالية باللون الأخضر الداكن",
+ "shrineProductNavyTrousers": "سروال بلون أزرق داكن",
+ "shrineProductWalterHenleyWhite": "والتر هينلي (أبيض)",
+ "shrineProductSurfAndPerfShirt": "قميص سيرف آند بيرف",
+ "shrineProductGingerScarf": "وشاح بألوان الزنجبيل",
+ "shrineProductRamonaCrossover": "قميص \"رامونا\" على شكل الحرف X",
+ "shrineProductClassicWhiteCollar": "ياقة بيضاء كلاسيكية",
+ "shrineProductSunshirtDress": "فستان يعكس أشعة الشمس",
+ "rallyAccountDetailDataInterestRate": "سعر الفائدة",
+ "rallyAccountDetailDataAnnualPercentageYield": "النسبة المئوية للعائد السنوي",
+ "rallyAccountDataVacation": "عطلة",
+ "shrineProductFineLinesTee": "قميص بخطوط رفيعة",
+ "rallyAccountDataHomeSavings": "المدخرات المنزلية",
+ "rallyAccountDataChecking": "الحساب الجاري",
+ "rallyAccountDetailDataInterestPaidLastYear": "الفائدة المدفوعة في العام الماضي",
+ "rallyAccountDetailDataNextStatement": "كشف الحساب التالي",
+ "rallyAccountDetailDataAccountOwner": "صاحب الحساب",
+ "rallyBudgetCategoryCoffeeShops": "المقاهي",
+ "rallyBudgetCategoryGroceries": "متاجر البقالة",
+ "shrineProductCeriseScallopTee": "قميص قصير الأكمام باللون الكرزي الفاتح",
+ "rallyBudgetCategoryClothing": "الملابس",
+ "rallySettingsManageAccounts": "إدارة الحسابات",
+ "rallyAccountDataCarSavings": "المدّخرات المخصّصة للسيارة",
+ "rallySettingsTaxDocuments": "المستندات الضريبية",
+ "rallySettingsPasscodeAndTouchId": "رمز المرور ومعرّف اللمس",
+ "rallySettingsNotifications": "إشعارات",
+ "rallySettingsPersonalInformation": "المعلومات الشخصية",
+ "rallySettingsPaperlessSettings": "إعدادات إنجاز الأعمال بدون ورق",
+ "rallySettingsFindAtms": "العثور على مواقع أجهزة الصراف الآلي",
+ "rallySettingsHelp": "المساعدة",
+ "rallySettingsSignOut": "تسجيل الخروج",
+ "rallyAccountTotal": "الإجمالي",
+ "rallyBillsDue": "الفواتير المستحقة",
+ "rallyBudgetLeft": "الميزانية المتبقية",
+ "rallyAccounts": "الحسابات",
+ "rallyBills": "الفواتير",
+ "rallyBudgets": "الميزانيات",
+ "rallyAlerts": "التنبيهات",
+ "rallySeeAll": "عرض الكل",
+ "rallyFinanceLeft": "المتبقي",
+ "rallyTitleOverview": "نظرة عامة",
+ "shrineProductShoulderRollsTee": "قميص واسعة بأكمام قصيرة",
+ "shrineNextButtonCaption": "التالي",
+ "rallyTitleBudgets": "الميزانيات",
+ "rallyTitleSettings": "الإعدادات",
+ "rallyLoginLoginToRally": "تسجيل الدخول إلى Rally",
+ "rallyLoginNoAccount": "أليس لديك حساب؟",
+ "rallyLoginSignUp": "الاشتراك",
+ "rallyLoginUsername": "اسم المستخدم",
+ "rallyLoginPassword": "كلمة المرور",
+ "rallyLoginLabelLogin": "تسجيل الدخول",
+ "rallyLoginRememberMe": "تذكُّر بيانات تسجيل الدخول إلى حسابي",
+ "rallyLoginButtonLogin": "تسجيل الدخول",
+ "rallyAlertsMessageHeadsUpShopping": "تنبيه: لقد استهلكت {percent} من ميزانية التسوّق لهذا الشهر.",
+ "rallyAlertsMessageSpentOnRestaurants": "أنفقت هذا الشهر مبلغ {amount} على تناول الطعام في المطاعم.",
+ "rallyAlertsMessageATMFees": "أنفقت {amount} كرسوم لأجهزة الصراف الآلي هذا الشهر",
+ "rallyAlertsMessageCheckingAccount": "عمل رائع! الرصيد الحالي في حسابك الجاري أعلى بنسبة {percent} من الشهر الماضي.",
+ "shrineMenuCaption": "القائمة",
+ "shrineCategoryNameAll": "الكل",
+ "shrineCategoryNameAccessories": "الإكسسوارات",
+ "shrineCategoryNameClothing": "الملابس",
+ "shrineCategoryNameHome": "المنزل",
+ "shrineLoginUsernameLabel": "اسم المستخدم",
+ "shrineLoginPasswordLabel": "كلمة المرور",
+ "shrineCancelButtonCaption": "إلغاء",
+ "shrineCartTaxCaption": "الضريبة:",
+ "shrineCartPageCaption": "سلة التسوّق",
+ "shrineProductQuantity": "الكمية: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{ما مِن عناصر.}=1{عنصر واحد}two{عنصران ({quantity})}few{{quantity} عناصر}many{{quantity} عنصرًا}other{{quantity} عنصر}}",
+ "shrineCartClearButtonCaption": "محو سلة التسوق",
+ "shrineCartTotalCaption": "الإجمالي",
+ "shrineCartSubtotalCaption": "الإجمالي الفرعي:",
+ "shrineCartShippingCaption": "الشحن:",
+ "shrineProductGreySlouchTank": "قميص رمادي اللون",
+ "shrineProductStellaSunglasses": "نظارات شمس من نوع \"ستيلا\"",
+ "shrineProductWhitePinstripeShirt": "قميص ذو خطوط بيضاء",
+ "demoTextFieldWhereCanWeReachYou": "على أي رقم يمكننا التواصل معك؟",
+ "settingsTextDirectionLTR": "من اليسار إلى اليمين",
+ "settingsTextScalingLarge": "كبير",
+ "demoBottomSheetHeader": "العنوان",
+ "demoBottomSheetItem": "السلعة {value}",
+ "demoBottomTextFieldsTitle": "حقول النص",
+ "demoTextFieldTitle": "حقول النص",
+ "demoTextFieldSubtitle": "سطر واحد من النص والأرقام القابلة للتعديل",
+ "demoTextFieldDescription": "تسمح حقول النص للمستخدمين بإدخال نص في واجهة مستخدم. وتظهر عادةً في النماذج ومربّعات الحوار.",
+ "demoTextFieldShowPasswordLabel": "عرض كلمة المرور",
+ "demoTextFieldHidePasswordLabel": "إخفاء كلمة المرور",
+ "demoTextFieldFormErrors": "يُرجى تصحيح الأخطاء باللون الأحمر قبل الإرسال.",
+ "demoTextFieldNameRequired": "الاسم مطلوب.",
+ "demoTextFieldOnlyAlphabeticalChars": "يُرجى إدخال حروف أبجدية فقط.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - يُرجى إدخال رقم هاتف صالح في الولايات المتحدة.",
+ "demoTextFieldEnterPassword": "يرجى إدخال كلمة مرور.",
+ "demoTextFieldPasswordsDoNotMatch": "كلمتا المرور غير متطابقتين.",
+ "demoTextFieldWhatDoPeopleCallYou": "بأي اسم يناديك الآخرون؟",
+ "demoTextFieldNameField": "الاسم*",
+ "demoBottomSheetButtonText": "عرض البطاقة السفلية",
+ "demoTextFieldPhoneNumber": "رقم الهاتف*",
+ "demoBottomSheetTitle": "البطاقة السفلية",
+ "demoTextFieldEmail": "البريد الإلكتروني",
+ "demoTextFieldTellUsAboutYourself": "أخبِرنا عن نفسك (مثلاً ما هي هواياتك المفضّلة أو ما هو مجال عملك؟)",
+ "demoTextFieldKeepItShort": "يُرجى الاختصار، هذا مجرد عرض توضيحي.",
+ "starterAppGenericButton": "زر",
+ "demoTextFieldLifeStory": "قصة حياة",
+ "demoTextFieldSalary": "الراتب",
+ "demoTextFieldUSD": "دولار أمريكي",
+ "demoTextFieldNoMoreThan": "يجب ألا تزيد عن 8 أحرف.",
+ "demoTextFieldPassword": "كلمة المرور*",
+ "demoTextFieldRetypePassword": "أعِد كتابة كلمة المرور*",
+ "demoTextFieldSubmit": "إرسال",
+ "demoBottomNavigationSubtitle": "شريط تنقّل سفلي شبه مرئي",
+ "demoBottomSheetAddLabel": "إضافة",
+ "demoBottomSheetModalDescription": "تعتبر البطاقة السفلية المقيِّدة بديلاً لقائمة أو مربّع حوار ولا تسمح للمستخدم بالتفاعل مع المحتوى الآخر على الشاشة.",
+ "demoBottomSheetModalTitle": "البطاقة السفلية المقيِّدة",
+ "demoBottomSheetPersistentDescription": "تعرض البطاقة السفلية العادية معلومات تكميلية للمحتوى الأساسي للتطبيق. ولا تختفي هذه البطاقة عندما يتفاعل المستخدم مع المحتوى الآخر على الشاشة.",
+ "demoBottomSheetPersistentTitle": "البطاقة السفلية العادية",
+ "demoBottomSheetSubtitle": "البطاقات السفلية المقيِّدة والعادية",
+ "demoTextFieldNameHasPhoneNumber": "رقم هاتف {name} هو {phoneNumber}.",
+ "buttonText": "زر",
+ "demoTypographyDescription": "تعريف أساليب الخط المختلفة في التصميم المتعدد الأبعاد",
+ "demoTypographySubtitle": "جميع أنماط النص المحدّدة مسبقًا",
+ "demoTypographyTitle": "أسلوب الخط",
+ "demoFullscreenDialogDescription": "تحدِّد خاصية fullscreenDialog ما إذا كانت الصفحة الواردة هي مربع حوار نمطي بملء الشاشة.",
+ "demoFlatButtonDescription": "يتلوّن الزر المنبسط عند الضغط عليه ولكن لا يرتفع. ينصح باستخدام الأزرار المنبسطة على أشرطة الأدوات وفي مربعات الحوار وداخل المساحة المتروكة",
+ "demoBottomNavigationDescription": "تعرض أشرطة التنقل السفلية بين ثلاث وخمس وجهات في الجزء السفلي من الشاشة. ويتم تمثيل كل وجهة برمز ووسم نصي اختياري. عند النقر على رمز التنقل السفلي، يتم نقل المستخدم إلى وجهة التنقل ذات المستوى الأعلى المرتبطة بذلك الرمز.",
+ "demoBottomNavigationSelectedLabel": "الملصق المُختار",
+ "demoBottomNavigationPersistentLabels": "التصنيفات المستمرة",
+ "starterAppDrawerItem": "السلعة {value}",
+ "demoTextFieldRequiredField": "تشير علامة * إلى حقل مطلوب.",
+ "demoBottomNavigationTitle": "شريط التنقل السفلي",
+ "settingsLightTheme": "فاتح",
+ "settingsTheme": "التصميم",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "من اليمين إلى اليسار",
+ "settingsTextScalingHuge": "ضخم",
+ "cupertinoButton": "زر",
+ "settingsTextScalingNormal": "عادي",
+ "settingsTextScalingSmall": "صغير",
+ "settingsSystemDefault": "النظام",
+ "settingsTitle": "الإعدادات",
+ "rallyDescription": "تطبيق للتمويل الشخصي",
+ "aboutDialogDescription": "للاطّلاع على رمز المصدر لهذا التطبيق، يُرجى زيارة {value}.",
+ "bottomNavigationCommentsTab": "التعليقات",
+ "starterAppGenericBody": "النص",
+ "starterAppGenericHeadline": "العنوان",
+ "starterAppGenericSubtitle": "العنوان الفرعي",
+ "starterAppGenericTitle": "العنوان",
+ "starterAppTooltipSearch": "البحث",
+ "starterAppTooltipShare": "مشاركة",
+ "starterAppTooltipFavorite": "الإضافة إلى السلع المفضّلة",
+ "starterAppTooltipAdd": "إضافة",
+ "bottomNavigationCalendarTab": "التقويم",
+ "starterAppDescription": "تطبيق نموذجي يتضمّن تنسيقًا تفاعليًا",
+ "starterAppTitle": "تطبيق نموذجي",
+ "aboutFlutterSamplesRepo": "عينات Flutter في مستودع Github",
+ "bottomNavigationContentPlaceholder": "عنصر نائب لعلامة تبويب {title}",
+ "bottomNavigationCameraTab": "الكاميرا",
+ "bottomNavigationAlarmTab": "المنبّه",
+ "bottomNavigationAccountTab": "الحساب",
+ "demoTextFieldYourEmailAddress": "عنوان بريدك الإلكتروني",
+ "demoToggleButtonDescription": "يمكن استخدام أزرار التبديل لتجميع الخيارات المرتبطة. لتأكيد مجموعات أزرار التبديل المرتبطة، يجب أن تشترك إحدى المجموعات في حاوية مشتركة.",
+ "colorsGrey": "رمادي",
+ "colorsBrown": "بني",
+ "colorsDeepOrange": "برتقالي داكن",
+ "colorsOrange": "برتقالي",
+ "colorsAmber": "كهرماني",
+ "colorsYellow": "أصفر",
+ "colorsLime": "ليموني",
+ "colorsLightGreen": "أخضر فاتح",
+ "colorsGreen": "أخضر",
+ "homeHeaderGallery": "معرض الصور",
+ "homeHeaderCategories": "الفئات",
+ "shrineDescription": "تطبيق عصري للبيع بالتجزئة",
+ "craneDescription": "تطبيق سفر مُخصَّص",
+ "homeCategoryReference": "الأنماط والوسائط المرجعية",
+ "demoInvalidURL": "تعذّر عرض عنوان URL:",
+ "demoOptionsTooltip": "الخيارات",
+ "demoInfoTooltip": "معلومات",
+ "demoCodeTooltip": "نموذج رمز",
+ "demoDocumentationTooltip": "وثائق واجهة برمجة التطبيقات",
+ "demoFullscreenTooltip": "ملء الشاشة",
+ "settingsTextScaling": "تغيير حجم النص",
+ "settingsTextDirection": "اتجاه النص",
+ "settingsLocale": "اللغة",
+ "settingsPlatformMechanics": "آليات الأنظمة الأساسية",
+ "settingsDarkTheme": "داكن",
+ "settingsSlowMotion": "التصوير البطيء",
+ "settingsAbout": "نبذة عن معرض Flutter",
+ "settingsFeedback": "إرسال التعليقات",
+ "settingsAttribution": "من تصميم TOASTER في لندن",
+ "demoButtonTitle": "الأزرار",
+ "demoButtonSubtitle": "أزرار منبسطة وبارزة ومخطَّطة وغيرها",
+ "demoFlatButtonTitle": "الزر المنبسط",
+ "demoRaisedButtonDescription": "تضيف الأزرار البارزة بُعدًا إلى التخطيطات المنبسطة عادةً. وتبرِز الوظائف المتوفرة في المساحات العريضة أو المكدَّسة.",
+ "demoRaisedButtonTitle": "الزر البارز",
+ "demoOutlineButtonTitle": "Outline Button",
+ "demoOutlineButtonDescription": "تصبح الأزرار المخطَّطة غير شفافة وترتفع عند الضغط عليها. وغالبًا ما يتم إقرانها مع الأزرار البارزة للإشارة إلى إجراء ثانوي بديل.",
+ "demoToggleButtonTitle": "أزرار التبديل",
+ "colorsTeal": "أزرق مخضرّ",
+ "demoFloatingButtonTitle": "زر الإجراء العائم",
+ "demoFloatingButtonDescription": "زر الإجراء العائم هو زر على شكل رمز دائري يتم تمريره فوق المحتوى للترويج لاتخاذ إجراء أساسي في التطبيق.",
+ "demoDialogTitle": "مربعات الحوار",
+ "demoDialogSubtitle": "مربعات حوار بسيطة ومخصّصة للتنبيهات وبملء الشاشة",
+ "demoAlertDialogTitle": "التنبيه",
+ "demoAlertDialogDescription": "يخبر مربع حوار التنبيهات المستخدم بالحالات التي تتطلب تأكيد الاستلام. ويشتمل مربع حوار التنبيهات على عنوان اختياري وقائمة إجراءات اختيارية.",
+ "demoAlertTitleDialogTitle": "تنبيه مزوّد بعنوان",
+ "demoSimpleDialogTitle": "بسيط",
+ "demoSimpleDialogDescription": "يتيح مربع الحوار البسيط للمستخدم إمكانية الاختيار من بين عدة خيارات. ويشتمل مربع الحوار البسيط على عنوان اختياري يتم عرضه أعلى هذه الخيارات.",
+ "demoFullscreenDialogTitle": "ملء الشاشة",
+ "demoCupertinoButtonsTitle": "الأزرار",
+ "demoCupertinoButtonsSubtitle": "أزرار مستوحاة من نظام التشغيل iOS",
+ "demoCupertinoButtonsDescription": "زر مستوحى من نظام التشغيل iOS. يتم عرض هذا الزر على شكل نص و/أو رمز يتلاشى ويظهر بالتدريج عند اللمس. وقد يكون مزوّدًا بخلفية اختياريًا.",
+ "demoCupertinoAlertsTitle": "التنبيهات",
+ "demoCupertinoAlertsSubtitle": "مربعات حوار التنبيهات المستوحاة من نظام التشغيل iOS",
+ "demoCupertinoAlertTitle": "تنبيه",
+ "demoCupertinoAlertDescription": "يخبر مربع حوار التنبيهات المستخدم بالحالات التي تتطلب تأكيد الاستلام. ويشتمل مربع حوار التنبيهات على عنوان اختياري ومحتوى اختياري وقائمة إجراءات اختيارية. ويتم عرض العنوان أعلى المحتوى بينما تُعرض الإجراءات أسفل المحتوى.",
+ "demoCupertinoAlertWithTitleTitle": "تنبيه يتضمّن عنوانًا",
+ "demoCupertinoAlertButtonsTitle": "تنبيه مزوّد بأزرار",
+ "demoCupertinoAlertButtonsOnlyTitle": "أزرار التنبيه فقط",
+ "demoCupertinoActionSheetTitle": "ورقة الإجراءات",
+ "demoCupertinoActionSheetDescription": "ورقة الإجراءات هي ورقة أنماط معيّنة للتنبيهات تقدّم للمستخدم مجموعة مكوّنة من خيارين أو أكثر مرتبطة بالسياق الحالي. ويمكن أن تتضمّن ورقة الإجراءات عنوانًا ورسالة إضافية وقائمة إجراءات.",
+ "demoColorsTitle": "الألوان",
+ "demoColorsSubtitle": "جميع الألوان المحدّدة مسبقًا",
+ "demoColorsDescription": "ثوابت اللون وعينات الألوان التي تُمثل لوحة ألوان التصميم المتعدد الأبعاد",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "إنشاء",
+ "dialogSelectedOption": "لقد اخترت القيمة التالية: \"{value}\"",
+ "dialogDiscardTitle": "هل تريد تجاهل المسودة؟",
+ "dialogLocationTitle": "هل تريد استخدام خدمة الموقع الجغرافي من Google؟",
+ "dialogLocationDescription": "يمكنك السماح لشركة Google بمساعدة التطبيقات في تحديد الموقع الجغرافي. ويعني هذا أنه سيتم إرسال بيانات مجهولة المصدر عن الموقع الجغرافي إلى Google، حتى عند عدم تشغيل أي تطبيقات.",
+ "dialogCancel": "إلغاء",
+ "dialogDiscard": "تجاهل",
+ "dialogDisagree": "لا أوافق",
+ "dialogAgree": "موافق",
+ "dialogSetBackup": "تحديد حساب النسخة الاحتياطية",
+ "colorsBlueGrey": "أزرق رمادي",
+ "dialogShow": "عرض مربع الحوار",
+ "dialogFullscreenTitle": "مربع حوار بملء الشاشة",
+ "dialogFullscreenSave": "حفظ",
+ "dialogFullscreenDescription": "عرض توضيحي لمربع حوار بملء الشاشة",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "زر مزوّد بخلفية",
+ "cupertinoAlertCancel": "إلغاء",
+ "cupertinoAlertDiscard": "تجاهل",
+ "cupertinoAlertLocationTitle": "هل تريد السماح لخدمة \"خرائط Google\" بالدخول إلى موقعك الجغرافي أثناء استخدام التطبيق؟",
+ "cupertinoAlertLocationDescription": "سيتم عرض الموقع الجغرافي الحالي على الخريطة واستخدامه لتوفير الاتجاهات ونتائج البحث عن الأماكن المجاورة وأوقات التنقّل المقدرة.",
+ "cupertinoAlertAllow": "السماح",
+ "cupertinoAlertDontAllow": "عدم السماح",
+ "cupertinoAlertFavoriteDessert": "Select Favorite Dessert",
+ "cupertinoAlertDessertDescription": "يُرجى اختيار نوع الحلوى المفضّل لك من القائمة أدناه. وسيتم استخدام اختيارك في تخصيص القائمة المقترَحة للمطاعم في منطقتك.",
+ "cupertinoAlertCheesecake": "كعكة بالجبن",
+ "cupertinoAlertTiramisu": "تيراميسو",
+ "cupertinoAlertApplePie": "فطيرة التفاح",
+ "cupertinoAlertChocolateBrownie": "كعكة بالشوكولاتة والبندق",
+ "cupertinoShowAlert": "عرض التنبيه",
+ "colorsRed": "أحمر",
+ "colorsPink": "وردي",
+ "colorsPurple": "أرجواني",
+ "colorsDeepPurple": "أرجواني داكن",
+ "colorsIndigo": "نيليّ",
+ "colorsBlue": "أزرق",
+ "colorsLightBlue": "أزرق فاتح",
+ "colorsCyan": "سماوي",
+ "dialogAddAccount": "إضافة حساب",
+ "Gallery": "معرض الصور",
+ "Categories": "الفئات",
+ "SHRINE": "ضريح",
+ "Basic shopping app": "تطبيق التسوّق الأساسي",
+ "RALLY": "سباق",
+ "CRANE": "رافعة",
+ "Travel app": "تطبيق السفر",
+ "MATERIAL": "مادة",
+ "CUPERTINO": "كوبيرتينو",
+ "REFERENCE STYLES & MEDIA": "الأنماط والوسائط المرجعية"
+}
diff --git a/gallery/lib/l10n/intl_ar_JO.arb b/gallery/lib/l10n/intl_ar_JO.arb
new file mode 100644
index 0000000..9bfae39
--- /dev/null
+++ b/gallery/lib/l10n/intl_ar_JO.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "View options",
+ "demoOptionsFeatureDescription": "Tap here to view available options for this demo.",
+ "demoCodeViewerCopyAll": "نسخ الكل",
+ "shrineScreenReaderRemoveProductButton": "إزالة {product}",
+ "shrineScreenReaderProductAddToCart": "إضافة إلى سلة التسوق",
+ "shrineScreenReaderCart": "{quantity,plural, =0{سلة التسوق، ما مِن عناصر}=1{سلة التسوق، عنصر واحد}two{سلة التسوق، عنصران ({quantity})}few{سلة التسوق، {quantity} عناصر}many{سلة التسوق، {quantity} عنصرًا}other{سلة التسوق، {quantity} عنصر}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "تعذّر نسخ النص إلى الحافظة: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "تم نسخ النص إلى الحافظة.",
+ "craneSleep8SemanticLabel": "أطلال \"المايا\" على جُرْف يطِلّ على الشاطئ",
+ "craneSleep4SemanticLabel": "فندق يطِلّ على بحيرة قُبالة سلسلة من الجبال",
+ "craneSleep2SemanticLabel": "قلعة ماتشو بيتشو",
+ "craneSleep1SemanticLabel": "شاليه في مساحة طبيعية من الثلوج وبها أشجار دائمة الخضرة",
+ "craneSleep0SemanticLabel": "أكواخ فوق الماء",
+ "craneFly13SemanticLabel": "بركة بجانب البحر حولها نخيل",
+ "craneFly12SemanticLabel": "بركة ونخيل",
+ "craneFly11SemanticLabel": "منارة من الطوب على شاطئ البحر",
+ "craneFly10SemanticLabel": "مآذن الجامع الأزهر أثناء الغروب",
+ "craneFly9SemanticLabel": "رجل متّكِئ على سيارة زرقاء عتيقة",
+ "craneFly8SemanticLabel": "سوبر تري غروف",
+ "craneEat9SemanticLabel": "طاولة مقهى لتقديم المعجنات",
+ "craneEat2SemanticLabel": "برغر",
+ "craneFly5SemanticLabel": "فندق يطِلّ على بحيرة قُبالة سلسلة من الجبال",
+ "demoSelectionControlsSubtitle": "مربّعات الاختيار وأزرار الاختيار ومفاتيح التبديل",
+ "craneEat10SemanticLabel": "امرأة تمسك بشطيرة بسطرمة كبيرة",
+ "craneFly4SemanticLabel": "أكواخ فوق الماء",
+ "craneEat7SemanticLabel": "مَدخل مخبز",
+ "craneEat6SemanticLabel": "طبق روبيان",
+ "craneEat5SemanticLabel": "منطقة الجلوس في مطعم ذي ذوق فني",
+ "craneEat4SemanticLabel": "حلوى الشوكولاته",
+ "craneEat3SemanticLabel": "وجبة التاكو الكورية",
+ "craneFly3SemanticLabel": "قلعة ماتشو بيتشو",
+ "craneEat1SemanticLabel": "بار فارغ وكراسي مرتفعة للزبائن",
+ "craneEat0SemanticLabel": "بيتزا في فرن يُشعَل بالأخشاب",
+ "craneSleep11SemanticLabel": "مركز تايبيه المالي 101",
+ "craneSleep10SemanticLabel": "مآذن الجامع الأزهر أثناء الغروب",
+ "craneSleep9SemanticLabel": "منارة من الطوب على شاطئ البحر",
+ "craneEat8SemanticLabel": "طبق جراد البحر",
+ "craneSleep7SemanticLabel": "شُقق ملونة في ميدان ريبيارا",
+ "craneSleep6SemanticLabel": "بركة ونخيل",
+ "craneSleep5SemanticLabel": "خيمة في حقل",
+ "settingsButtonCloseLabel": "إغلاق الإعدادات",
+ "demoSelectionControlsCheckboxDescription": "تسمح مربّعات الاختيار للمستخدمين باختيار عدة خيارات من مجموعة من الخيارات. القيمة المعتادة لمربّع الاختيار هي \"صحيح\" أو \"غير صحيح\" ويمكن أيضًا إضافة حالة ثالثة وهي \"خالية\".",
+ "settingsButtonLabel": "الإعدادات",
+ "demoListsTitle": "القوائم",
+ "demoListsSubtitle": "التمرير خلال تنسيقات القوائم",
+ "demoListsDescription": "صف بارتفاع واحد ثابت يحتوي عادةً على نص ورمز سابق أو لاحق.",
+ "demoOneLineListsTitle": "سطر واحد",
+ "demoTwoLineListsTitle": "سطران",
+ "demoListsSecondary": "نص ثانوي",
+ "demoSelectionControlsTitle": "عناصر التحكّم في الاختيار",
+ "craneFly7SemanticLabel": "جبل راشمور",
+ "demoSelectionControlsCheckboxTitle": "مربّع اختيار",
+ "craneSleep3SemanticLabel": "رجل متّكِئ على سيارة زرقاء عتيقة",
+ "demoSelectionControlsRadioTitle": "زر اختيار",
+ "demoSelectionControlsRadioDescription": "تسمح أزرار الاختيار للقارئ بتحديد خيار واحد من مجموعة من الخيارات. يمكنك استخدام أزرار الاختيار لتحديد اختيارات حصرية إذا كنت تعتقد أنه يجب أن تظهر للمستخدم كل الخيارات المتاحة جنبًا إلى جنب.",
+ "demoSelectionControlsSwitchTitle": "مفاتيح التبديل",
+ "demoSelectionControlsSwitchDescription": "تؤدي مفاتيح تبديل التشغيل/الإيقاف إلى تبديل حالة خيار واحد في الإعدادات. يجب توضيح الخيار الذي يتحكّم فيه مفتاح التبديل وكذلك حالته، وذلك من خلال التسمية المضمّنة المتاحة.",
+ "craneFly0SemanticLabel": "شاليه في مساحة طبيعية من الثلوج وبها أشجار دائمة الخضرة",
+ "craneFly1SemanticLabel": "خيمة في حقل",
+ "craneFly2SemanticLabel": "رايات صلاة أمام جبل ثلجي",
+ "craneFly6SemanticLabel": "عرض \"قصر الفنون الجميلة\" من الجوّ",
+ "rallySeeAllAccounts": "عرض جميع الحسابات",
+ "rallyBillAmount": "تاريخ استحقاق الفاتورة {billName} التي تبلغ {amount} هو {date}.",
+ "shrineTooltipCloseCart": "إغلاق سلة التسوق",
+ "shrineTooltipCloseMenu": "إغلاق القائمة",
+ "shrineTooltipOpenMenu": "فتح القائمة",
+ "shrineTooltipSettings": "الإعدادات",
+ "shrineTooltipSearch": "بحث",
+ "demoTabsDescription": "تساعد علامات التبويب على تنظيم المحتوى في الشاشات المختلفة ومجموعات البيانات والتفاعلات الأخرى.",
+ "demoTabsSubtitle": "علامات تبويب تحتوي على عروض يمكن التنقّل خلالها بشكل مستقل",
+ "demoTabsTitle": "علامات التبويب",
+ "rallyBudgetAmount": "ميزانية {budgetName} مع استخدام {amountUsed} من إجمالي {amountTotal}، المبلغ المتبقي {amountLeft}",
+ "shrineTooltipRemoveItem": "إزالة العنصر",
+ "rallyAccountAmount": "الحساب {accountName} رقم {accountNumber} بمبلغ {amount}.",
+ "rallySeeAllBudgets": "عرض جميع الميزانيات",
+ "rallySeeAllBills": "عرض كل الفواتير",
+ "craneFormDate": "اختيار التاريخ",
+ "craneFormOrigin": "اختيار نقطة انطلاق الرحلة",
+ "craneFly2": "وادي خومبو، نيبال",
+ "craneFly3": "ماتشو بيتشو، بيرو",
+ "craneFly4": "ماليه، جزر المالديف",
+ "craneFly5": "فيتزناو، سويسرا",
+ "craneFly6": "مكسيكو سيتي، المكسيك",
+ "craneFly7": "جبل راشمور، الولايات المتحدة",
+ "settingsTextDirectionLocaleBased": "بناءً على اللغة",
+ "craneFly9": "هافانا، كوبا",
+ "craneFly10": "القاهرة، مصر",
+ "craneFly11": "لشبونة، البرتغال",
+ "craneFly12": "نابا، الولايات المتحدة",
+ "craneFly13": "بالي، إندونيسيا",
+ "craneSleep0": "ماليه، جزر المالديف",
+ "craneSleep1": "أسبن، الولايات المتحدة",
+ "craneSleep2": "ماتشو بيتشو، بيرو",
+ "demoCupertinoSegmentedControlTitle": "عنصر تحكّم شريحة",
+ "craneSleep4": "فيتزناو، سويسرا",
+ "craneSleep5": "بيغ سور، الولايات المتحدة",
+ "craneSleep6": "نابا، الولايات المتحدة",
+ "craneSleep7": "بورتو، البرتغال",
+ "craneSleep8": "تولوم، المكسيك",
+ "craneEat5": "سول، كوريا الجنوبية",
+ "demoChipTitle": "الشرائح",
+ "demoChipSubtitle": "العناصر المضغوطة التي تمثل إدخال أو سمة أو إجراء",
+ "demoActionChipTitle": "شريحة الإجراءات",
+ "demoActionChipDescription": "شرائح الإجراءات هي مجموعة من الخيارات التي تشغّل إجراءً ذا صلة بالمحتوى الأساسي. ينبغي أن يكون ظهور شرائح الإجراءات في واجهة المستخدم ديناميكيًا ومناسبًا للسياق.",
+ "demoChoiceChipTitle": "شريحة الخيارات",
+ "demoChoiceChipDescription": "تمثل شرائح الخيارات خيارًا واحدًا من بين مجموعة. تتضمن شرائح الخيارات النصوص الوصفية ذات الصلة أو الفئات.",
+ "demoFilterChipTitle": "شريحة الفلتر",
+ "demoFilterChipDescription": "تستخدم شرائح الفلتر العلامات أو الكلمات الوصفية باعتبارها طريقة لفلترة المحتوى.",
+ "demoInputChipTitle": "شريحة الإدخال",
+ "demoInputChipDescription": "تمثل شرائح الإدخالات معلومة معقدة، مثل كيان (شخص، مكان، أو شئ) أو نص محادثة، في نمط مضغوط.",
+ "craneSleep9": "لشبونة، البرتغال",
+ "craneEat10": "لشبونة، البرتغال",
+ "demoCupertinoSegmentedControlDescription": "يُستخدَم للاختيار بين عدد من الخيارات يستبعد أحدها الآخر. عند اختيار خيار في عنصر تحكّم الشريحة، يتم إلغاء اختيار العنصر الآخر في عنصر تحكّم الشريحة.",
+ "chipTurnOnLights": "تشغيل الأضواء",
+ "chipSmall": "صغير",
+ "chipMedium": "متوسط",
+ "chipLarge": "كبير",
+ "chipElevator": "مصعَد",
+ "chipWasher": "غسّالة",
+ "chipFireplace": "موقد",
+ "chipBiking": "ركوب الدراجة",
+ "craneFormDiners": "مطاعم صغيرة",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على معاملة واحدة لم يتم ضبطها.}zero{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملة لم يتم ضبطها.}two{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على معاملتين ({count}) لم يتم ضبطهما.}few{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملات لم يتم ضبطها.}many{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملة لم يتم ضبطها.}other{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملة لم يتم ضبطها.}}",
+ "craneFormTime": "اختيار الوقت",
+ "craneFormLocation": "اختيار الموقع جغرافي",
+ "craneFormTravelers": "المسافرون",
+ "craneEat8": "أتلانتا، الولايات المتحدة",
+ "craneFormDestination": "اختيار الوجهة",
+ "craneFormDates": "اختيار تواريخ",
+ "craneFly": "الطيران",
+ "craneSleep": "السكون",
+ "craneEat": "المأكولات",
+ "craneFlySubhead": "استكشاف الرحلات حسب الوجهة",
+ "craneSleepSubhead": "استكشاف العقارات حسب الوجهة",
+ "craneEatSubhead": "استكشاف المطاعم حسب الوجهة",
+ "craneFlyStops": "{numberOfStops,plural, =0{بدون توقف}=1{محطة واحدة}two{محطتان ({numberOfStops})}few{{numberOfStops} محطات}many{{numberOfStops} محطة}other{{numberOfStops} محطة}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{ليس هناك مواقع متاحة.}=1{هناك موقع واحد متاح.}two{هناك موقعان ({totalProperties}) متاحان.}few{هناك {totalProperties} مواقع متاحة.}many{هناك {totalProperties} موقعًا متاحًا.}other{هناك {totalProperties} موقع متاح.}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{ما مِن مطاعم.}=1{مطعم واحد}two{مطعمان ({totalRestaurants})}few{{totalRestaurants} مطاعم}many{{totalRestaurants} مطعمًا}other{{totalRestaurants} مطعم}}",
+ "craneFly0": "أسبن، الولايات المتحدة",
+ "demoCupertinoSegmentedControlSubtitle": "عنصر تحكّم شريحة بنمط iOS",
+ "craneSleep10": "القاهرة، مصر",
+ "craneEat9": "مدريد، إسبانيا",
+ "craneFly1": "بيغ سور، الولايات المتحدة",
+ "craneEat7": "ناشفيل، الولايات المتحدة",
+ "craneEat6": "سياتل، الولايات المتحدة",
+ "craneFly8": "سنغافورة",
+ "craneEat4": "باريس، فرنسا",
+ "craneEat3": "بورتلاند، الولايات المتحدة",
+ "craneEat2": "قرطبة، الأرجنتين",
+ "craneEat1": "دالاس، الولايات المتحدة",
+ "craneEat0": "نابولي، إيطاليا",
+ "craneSleep11": "تايبيه، تايوان",
+ "craneSleep3": "هافانا، كوبا",
+ "shrineLogoutButtonCaption": "تسجيل الخروج",
+ "rallyTitleBills": "الفواتير",
+ "rallyTitleAccounts": "الحسابات",
+ "shrineProductVagabondSack": "حقيبة من ماركة Vagabond",
+ "rallyAccountDetailDataInterestYtd": "الفائدة منذ بداية العام حتى اليوم",
+ "shrineProductWhitneyBelt": "حزام \"ويتني\"",
+ "shrineProductGardenStrand": "خيوط زينة للحدائق",
+ "shrineProductStrutEarrings": "أقراط فاخرة",
+ "shrineProductVarsitySocks": "جوارب من نوع \"فارسيتي\"",
+ "shrineProductWeaveKeyring": "سلسلة مفاتيح Weave",
+ "shrineProductGatsbyHat": "قبعة \"غاتسبي\"",
+ "shrineProductShrugBag": "حقيبة كتف",
+ "shrineProductGiltDeskTrio": "طقم أدوات مكتبية ذهبية اللون من 3 قطع",
+ "shrineProductCopperWireRack": "رف سلكي نحاسي",
+ "shrineProductSootheCeramicSet": "طقم سيراميك باللون الأبيض الراقي",
+ "shrineProductHurrahsTeaSet": "طقم شاي مميّز",
+ "shrineProductBlueStoneMug": "قدح حجري أزرق",
+ "shrineProductRainwaterTray": "صينية عميقة",
+ "shrineProductChambrayNapkins": "مناديل \"شامبراي\"",
+ "shrineProductSucculentPlanters": "أحواض عصرية للنباتات",
+ "shrineProductQuartetTable": "طاولة رباعية الأرجل",
+ "shrineProductKitchenQuattro": "طقم أدوات للمطبخ من أربع قطع",
+ "shrineProductClaySweater": "بلوزة بلون الطين",
+ "shrineProductSeaTunic": "بلوزة بلون أزرق فاتح",
+ "shrineProductPlasterTunic": "بلوزة من نوع \"بلاستر\"",
+ "rallyBudgetCategoryRestaurants": "المطاعم",
+ "shrineProductChambrayShirt": "قميص من نوع \"شامبراي\"",
+ "shrineProductSeabreezeSweater": "سترة بلون أزرق بحري",
+ "shrineProductGentryJacket": "سترة رجالية باللون الأخضر الداكن",
+ "shrineProductNavyTrousers": "سروال بلون أزرق داكن",
+ "shrineProductWalterHenleyWhite": "والتر هينلي (أبيض)",
+ "shrineProductSurfAndPerfShirt": "قميص سيرف آند بيرف",
+ "shrineProductGingerScarf": "وشاح بألوان الزنجبيل",
+ "shrineProductRamonaCrossover": "قميص \"رامونا\" على شكل الحرف X",
+ "shrineProductClassicWhiteCollar": "ياقة بيضاء كلاسيكية",
+ "shrineProductSunshirtDress": "فستان يعكس أشعة الشمس",
+ "rallyAccountDetailDataInterestRate": "سعر الفائدة",
+ "rallyAccountDetailDataAnnualPercentageYield": "النسبة المئوية للعائد السنوي",
+ "rallyAccountDataVacation": "عطلة",
+ "shrineProductFineLinesTee": "قميص بخطوط رفيعة",
+ "rallyAccountDataHomeSavings": "المدخرات المنزلية",
+ "rallyAccountDataChecking": "الحساب الجاري",
+ "rallyAccountDetailDataInterestPaidLastYear": "الفائدة المدفوعة في العام الماضي",
+ "rallyAccountDetailDataNextStatement": "كشف الحساب التالي",
+ "rallyAccountDetailDataAccountOwner": "صاحب الحساب",
+ "rallyBudgetCategoryCoffeeShops": "المقاهي",
+ "rallyBudgetCategoryGroceries": "متاجر البقالة",
+ "shrineProductCeriseScallopTee": "قميص قصير الأكمام باللون الكرزي الفاتح",
+ "rallyBudgetCategoryClothing": "الملابس",
+ "rallySettingsManageAccounts": "إدارة الحسابات",
+ "rallyAccountDataCarSavings": "المدّخرات المخصّصة للسيارة",
+ "rallySettingsTaxDocuments": "المستندات الضريبية",
+ "rallySettingsPasscodeAndTouchId": "رمز المرور ومعرّف اللمس",
+ "rallySettingsNotifications": "إشعارات",
+ "rallySettingsPersonalInformation": "المعلومات الشخصية",
+ "rallySettingsPaperlessSettings": "إعدادات إنجاز الأعمال بدون ورق",
+ "rallySettingsFindAtms": "العثور على مواقع أجهزة الصراف الآلي",
+ "rallySettingsHelp": "المساعدة",
+ "rallySettingsSignOut": "تسجيل الخروج",
+ "rallyAccountTotal": "الإجمالي",
+ "rallyBillsDue": "الفواتير المستحقة",
+ "rallyBudgetLeft": "الميزانية المتبقية",
+ "rallyAccounts": "الحسابات",
+ "rallyBills": "الفواتير",
+ "rallyBudgets": "الميزانيات",
+ "rallyAlerts": "التنبيهات",
+ "rallySeeAll": "عرض الكل",
+ "rallyFinanceLeft": "المتبقي",
+ "rallyTitleOverview": "نظرة عامة",
+ "shrineProductShoulderRollsTee": "قميص واسعة بأكمام قصيرة",
+ "shrineNextButtonCaption": "التالي",
+ "rallyTitleBudgets": "الميزانيات",
+ "rallyTitleSettings": "الإعدادات",
+ "rallyLoginLoginToRally": "تسجيل الدخول إلى Rally",
+ "rallyLoginNoAccount": "أليس لديك حساب؟",
+ "rallyLoginSignUp": "الاشتراك",
+ "rallyLoginUsername": "اسم المستخدم",
+ "rallyLoginPassword": "كلمة المرور",
+ "rallyLoginLabelLogin": "تسجيل الدخول",
+ "rallyLoginRememberMe": "تذكُّر بيانات تسجيل الدخول إلى حسابي",
+ "rallyLoginButtonLogin": "تسجيل الدخول",
+ "rallyAlertsMessageHeadsUpShopping": "تنبيه: لقد استهلكت {percent} من ميزانية التسوّق لهذا الشهر.",
+ "rallyAlertsMessageSpentOnRestaurants": "أنفقت هذا الشهر مبلغ {amount} على تناول الطعام في المطاعم.",
+ "rallyAlertsMessageATMFees": "أنفقت {amount} كرسوم لأجهزة الصراف الآلي هذا الشهر",
+ "rallyAlertsMessageCheckingAccount": "عمل رائع! الرصيد الحالي في حسابك الجاري أعلى بنسبة {percent} من الشهر الماضي.",
+ "shrineMenuCaption": "القائمة",
+ "shrineCategoryNameAll": "الكل",
+ "shrineCategoryNameAccessories": "الإكسسوارات",
+ "shrineCategoryNameClothing": "الملابس",
+ "shrineCategoryNameHome": "المنزل",
+ "shrineLoginUsernameLabel": "اسم المستخدم",
+ "shrineLoginPasswordLabel": "كلمة المرور",
+ "shrineCancelButtonCaption": "إلغاء",
+ "shrineCartTaxCaption": "الضريبة:",
+ "shrineCartPageCaption": "سلة التسوّق",
+ "shrineProductQuantity": "الكمية: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{ما مِن عناصر.}=1{عنصر واحد}two{عنصران ({quantity})}few{{quantity} عناصر}many{{quantity} عنصرًا}other{{quantity} عنصر}}",
+ "shrineCartClearButtonCaption": "محو سلة التسوق",
+ "shrineCartTotalCaption": "الإجمالي",
+ "shrineCartSubtotalCaption": "الإجمالي الفرعي:",
+ "shrineCartShippingCaption": "الشحن:",
+ "shrineProductGreySlouchTank": "قميص رمادي اللون",
+ "shrineProductStellaSunglasses": "نظارات شمس من نوع \"ستيلا\"",
+ "shrineProductWhitePinstripeShirt": "قميص ذو خطوط بيضاء",
+ "demoTextFieldWhereCanWeReachYou": "على أي رقم يمكننا التواصل معك؟",
+ "settingsTextDirectionLTR": "من اليسار إلى اليمين",
+ "settingsTextScalingLarge": "كبير",
+ "demoBottomSheetHeader": "العنوان",
+ "demoBottomSheetItem": "السلعة {value}",
+ "demoBottomTextFieldsTitle": "حقول النص",
+ "demoTextFieldTitle": "حقول النص",
+ "demoTextFieldSubtitle": "سطر واحد من النص والأرقام القابلة للتعديل",
+ "demoTextFieldDescription": "تسمح حقول النص للمستخدمين بإدخال نص في واجهة مستخدم. وتظهر عادةً في النماذج ومربّعات الحوار.",
+ "demoTextFieldShowPasswordLabel": "عرض كلمة المرور",
+ "demoTextFieldHidePasswordLabel": "إخفاء كلمة المرور",
+ "demoTextFieldFormErrors": "يُرجى تصحيح الأخطاء باللون الأحمر قبل الإرسال.",
+ "demoTextFieldNameRequired": "الاسم مطلوب.",
+ "demoTextFieldOnlyAlphabeticalChars": "يُرجى إدخال حروف أبجدية فقط.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - يُرجى إدخال رقم هاتف صالح في الولايات المتحدة.",
+ "demoTextFieldEnterPassword": "يرجى إدخال كلمة مرور.",
+ "demoTextFieldPasswordsDoNotMatch": "كلمتا المرور غير متطابقتين.",
+ "demoTextFieldWhatDoPeopleCallYou": "بأي اسم يناديك الآخرون؟",
+ "demoTextFieldNameField": "الاسم*",
+ "demoBottomSheetButtonText": "عرض البطاقة السفلية",
+ "demoTextFieldPhoneNumber": "رقم الهاتف*",
+ "demoBottomSheetTitle": "البطاقة السفلية",
+ "demoTextFieldEmail": "البريد الإلكتروني",
+ "demoTextFieldTellUsAboutYourself": "أخبِرنا عن نفسك (مثلاً ما هي هواياتك المفضّلة أو ما هو مجال عملك؟)",
+ "demoTextFieldKeepItShort": "يُرجى الاختصار، هذا مجرد عرض توضيحي.",
+ "starterAppGenericButton": "زر",
+ "demoTextFieldLifeStory": "قصة حياة",
+ "demoTextFieldSalary": "الراتب",
+ "demoTextFieldUSD": "دولار أمريكي",
+ "demoTextFieldNoMoreThan": "يجب ألا تزيد عن 8 أحرف.",
+ "demoTextFieldPassword": "كلمة المرور*",
+ "demoTextFieldRetypePassword": "أعِد كتابة كلمة المرور*",
+ "demoTextFieldSubmit": "إرسال",
+ "demoBottomNavigationSubtitle": "شريط تنقّل سفلي شبه مرئي",
+ "demoBottomSheetAddLabel": "إضافة",
+ "demoBottomSheetModalDescription": "تعتبر البطاقة السفلية المقيِّدة بديلاً لقائمة أو مربّع حوار ولا تسمح للمستخدم بالتفاعل مع المحتوى الآخر على الشاشة.",
+ "demoBottomSheetModalTitle": "البطاقة السفلية المقيِّدة",
+ "demoBottomSheetPersistentDescription": "تعرض البطاقة السفلية العادية معلومات تكميلية للمحتوى الأساسي للتطبيق. ولا تختفي هذه البطاقة عندما يتفاعل المستخدم مع المحتوى الآخر على الشاشة.",
+ "demoBottomSheetPersistentTitle": "البطاقة السفلية العادية",
+ "demoBottomSheetSubtitle": "البطاقات السفلية المقيِّدة والعادية",
+ "demoTextFieldNameHasPhoneNumber": "رقم هاتف {name} هو {phoneNumber}.",
+ "buttonText": "زر",
+ "demoTypographyDescription": "تعريف أساليب الخط المختلفة في التصميم المتعدد الأبعاد",
+ "demoTypographySubtitle": "جميع أنماط النص المحدّدة مسبقًا",
+ "demoTypographyTitle": "أسلوب الخط",
+ "demoFullscreenDialogDescription": "تحدِّد خاصية fullscreenDialog ما إذا كانت الصفحة الواردة هي مربع حوار نمطي بملء الشاشة.",
+ "demoFlatButtonDescription": "يتلوّن الزر المنبسط عند الضغط عليه ولكن لا يرتفع. ينصح باستخدام الأزرار المنبسطة على أشرطة الأدوات وفي مربعات الحوار وداخل المساحة المتروكة",
+ "demoBottomNavigationDescription": "تعرض أشرطة التنقل السفلية بين ثلاث وخمس وجهات في الجزء السفلي من الشاشة. ويتم تمثيل كل وجهة برمز ووسم نصي اختياري. عند النقر على رمز التنقل السفلي، يتم نقل المستخدم إلى وجهة التنقل ذات المستوى الأعلى المرتبطة بذلك الرمز.",
+ "demoBottomNavigationSelectedLabel": "الملصق المُختار",
+ "demoBottomNavigationPersistentLabels": "التصنيفات المستمرة",
+ "starterAppDrawerItem": "السلعة {value}",
+ "demoTextFieldRequiredField": "تشير علامة * إلى حقل مطلوب.",
+ "demoBottomNavigationTitle": "شريط التنقل السفلي",
+ "settingsLightTheme": "فاتح",
+ "settingsTheme": "التصميم",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "من اليمين إلى اليسار",
+ "settingsTextScalingHuge": "ضخم",
+ "cupertinoButton": "زر",
+ "settingsTextScalingNormal": "عادي",
+ "settingsTextScalingSmall": "صغير",
+ "settingsSystemDefault": "النظام",
+ "settingsTitle": "الإعدادات",
+ "rallyDescription": "تطبيق للتمويل الشخصي",
+ "aboutDialogDescription": "للاطّلاع على رمز المصدر لهذا التطبيق، يُرجى زيارة {value}.",
+ "bottomNavigationCommentsTab": "التعليقات",
+ "starterAppGenericBody": "النص",
+ "starterAppGenericHeadline": "العنوان",
+ "starterAppGenericSubtitle": "العنوان الفرعي",
+ "starterAppGenericTitle": "العنوان",
+ "starterAppTooltipSearch": "البحث",
+ "starterAppTooltipShare": "مشاركة",
+ "starterAppTooltipFavorite": "الإضافة إلى السلع المفضّلة",
+ "starterAppTooltipAdd": "إضافة",
+ "bottomNavigationCalendarTab": "التقويم",
+ "starterAppDescription": "تطبيق نموذجي يتضمّن تنسيقًا تفاعليًا",
+ "starterAppTitle": "تطبيق نموذجي",
+ "aboutFlutterSamplesRepo": "عينات Flutter في مستودع Github",
+ "bottomNavigationContentPlaceholder": "عنصر نائب لعلامة تبويب {title}",
+ "bottomNavigationCameraTab": "الكاميرا",
+ "bottomNavigationAlarmTab": "المنبّه",
+ "bottomNavigationAccountTab": "الحساب",
+ "demoTextFieldYourEmailAddress": "عنوان بريدك الإلكتروني",
+ "demoToggleButtonDescription": "يمكن استخدام أزرار التبديل لتجميع الخيارات المرتبطة. لتأكيد مجموعات أزرار التبديل المرتبطة، يجب أن تشترك إحدى المجموعات في حاوية مشتركة.",
+ "colorsGrey": "رمادي",
+ "colorsBrown": "بني",
+ "colorsDeepOrange": "برتقالي داكن",
+ "colorsOrange": "برتقالي",
+ "colorsAmber": "كهرماني",
+ "colorsYellow": "أصفر",
+ "colorsLime": "ليموني",
+ "colorsLightGreen": "أخضر فاتح",
+ "colorsGreen": "أخضر",
+ "homeHeaderGallery": "معرض الصور",
+ "homeHeaderCategories": "الفئات",
+ "shrineDescription": "تطبيق عصري للبيع بالتجزئة",
+ "craneDescription": "تطبيق سفر مُخصَّص",
+ "homeCategoryReference": "الأنماط والوسائط المرجعية",
+ "demoInvalidURL": "تعذّر عرض عنوان URL:",
+ "demoOptionsTooltip": "الخيارات",
+ "demoInfoTooltip": "معلومات",
+ "demoCodeTooltip": "نموذج رمز",
+ "demoDocumentationTooltip": "وثائق واجهة برمجة التطبيقات",
+ "demoFullscreenTooltip": "ملء الشاشة",
+ "settingsTextScaling": "تغيير حجم النص",
+ "settingsTextDirection": "اتجاه النص",
+ "settingsLocale": "اللغة",
+ "settingsPlatformMechanics": "آليات الأنظمة الأساسية",
+ "settingsDarkTheme": "داكن",
+ "settingsSlowMotion": "التصوير البطيء",
+ "settingsAbout": "نبذة عن معرض Flutter",
+ "settingsFeedback": "إرسال التعليقات",
+ "settingsAttribution": "من تصميم TOASTER في لندن",
+ "demoButtonTitle": "الأزرار",
+ "demoButtonSubtitle": "أزرار منبسطة وبارزة ومخطَّطة وغيرها",
+ "demoFlatButtonTitle": "الزر المنبسط",
+ "demoRaisedButtonDescription": "تضيف الأزرار البارزة بُعدًا إلى التخطيطات المنبسطة عادةً. وتبرِز الوظائف المتوفرة في المساحات العريضة أو المكدَّسة.",
+ "demoRaisedButtonTitle": "الزر البارز",
+ "demoOutlineButtonTitle": "Outline Button",
+ "demoOutlineButtonDescription": "تصبح الأزرار المخطَّطة غير شفافة وترتفع عند الضغط عليها. وغالبًا ما يتم إقرانها مع الأزرار البارزة للإشارة إلى إجراء ثانوي بديل.",
+ "demoToggleButtonTitle": "أزرار التبديل",
+ "colorsTeal": "أزرق مخضرّ",
+ "demoFloatingButtonTitle": "زر الإجراء العائم",
+ "demoFloatingButtonDescription": "زر الإجراء العائم هو زر على شكل رمز دائري يتم تمريره فوق المحتوى للترويج لاتخاذ إجراء أساسي في التطبيق.",
+ "demoDialogTitle": "مربعات الحوار",
+ "demoDialogSubtitle": "مربعات حوار بسيطة ومخصّصة للتنبيهات وبملء الشاشة",
+ "demoAlertDialogTitle": "التنبيه",
+ "demoAlertDialogDescription": "يخبر مربع حوار التنبيهات المستخدم بالحالات التي تتطلب تأكيد الاستلام. ويشتمل مربع حوار التنبيهات على عنوان اختياري وقائمة إجراءات اختيارية.",
+ "demoAlertTitleDialogTitle": "تنبيه مزوّد بعنوان",
+ "demoSimpleDialogTitle": "بسيط",
+ "demoSimpleDialogDescription": "يتيح مربع الحوار البسيط للمستخدم إمكانية الاختيار من بين عدة خيارات. ويشتمل مربع الحوار البسيط على عنوان اختياري يتم عرضه أعلى هذه الخيارات.",
+ "demoFullscreenDialogTitle": "ملء الشاشة",
+ "demoCupertinoButtonsTitle": "الأزرار",
+ "demoCupertinoButtonsSubtitle": "أزرار مستوحاة من نظام التشغيل iOS",
+ "demoCupertinoButtonsDescription": "زر مستوحى من نظام التشغيل iOS. يتم عرض هذا الزر على شكل نص و/أو رمز يتلاشى ويظهر بالتدريج عند اللمس. وقد يكون مزوّدًا بخلفية اختياريًا.",
+ "demoCupertinoAlertsTitle": "التنبيهات",
+ "demoCupertinoAlertsSubtitle": "مربعات حوار التنبيهات المستوحاة من نظام التشغيل iOS",
+ "demoCupertinoAlertTitle": "تنبيه",
+ "demoCupertinoAlertDescription": "يخبر مربع حوار التنبيهات المستخدم بالحالات التي تتطلب تأكيد الاستلام. ويشتمل مربع حوار التنبيهات على عنوان اختياري ومحتوى اختياري وقائمة إجراءات اختيارية. ويتم عرض العنوان أعلى المحتوى بينما تُعرض الإجراءات أسفل المحتوى.",
+ "demoCupertinoAlertWithTitleTitle": "تنبيه يتضمّن عنوانًا",
+ "demoCupertinoAlertButtonsTitle": "تنبيه مزوّد بأزرار",
+ "demoCupertinoAlertButtonsOnlyTitle": "أزرار التنبيه فقط",
+ "demoCupertinoActionSheetTitle": "ورقة الإجراءات",
+ "demoCupertinoActionSheetDescription": "ورقة الإجراءات هي ورقة أنماط معيّنة للتنبيهات تقدّم للمستخدم مجموعة مكوّنة من خيارين أو أكثر مرتبطة بالسياق الحالي. ويمكن أن تتضمّن ورقة الإجراءات عنوانًا ورسالة إضافية وقائمة إجراءات.",
+ "demoColorsTitle": "الألوان",
+ "demoColorsSubtitle": "جميع الألوان المحدّدة مسبقًا",
+ "demoColorsDescription": "ثوابت اللون وعينات الألوان التي تُمثل لوحة ألوان التصميم المتعدد الأبعاد",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "إنشاء",
+ "dialogSelectedOption": "لقد اخترت القيمة التالية: \"{value}\"",
+ "dialogDiscardTitle": "هل تريد تجاهل المسودة؟",
+ "dialogLocationTitle": "هل تريد استخدام خدمة الموقع الجغرافي من Google؟",
+ "dialogLocationDescription": "يمكنك السماح لشركة Google بمساعدة التطبيقات في تحديد الموقع الجغرافي. ويعني هذا أنه سيتم إرسال بيانات مجهولة المصدر عن الموقع الجغرافي إلى Google، حتى عند عدم تشغيل أي تطبيقات.",
+ "dialogCancel": "إلغاء",
+ "dialogDiscard": "تجاهل",
+ "dialogDisagree": "لا أوافق",
+ "dialogAgree": "موافق",
+ "dialogSetBackup": "تحديد حساب النسخة الاحتياطية",
+ "colorsBlueGrey": "أزرق رمادي",
+ "dialogShow": "عرض مربع الحوار",
+ "dialogFullscreenTitle": "مربع حوار بملء الشاشة",
+ "dialogFullscreenSave": "حفظ",
+ "dialogFullscreenDescription": "عرض توضيحي لمربع حوار بملء الشاشة",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "زر مزوّد بخلفية",
+ "cupertinoAlertCancel": "إلغاء",
+ "cupertinoAlertDiscard": "تجاهل",
+ "cupertinoAlertLocationTitle": "هل تريد السماح لخدمة \"خرائط Google\" بالدخول إلى موقعك الجغرافي أثناء استخدام التطبيق؟",
+ "cupertinoAlertLocationDescription": "سيتم عرض الموقع الجغرافي الحالي على الخريطة واستخدامه لتوفير الاتجاهات ونتائج البحث عن الأماكن المجاورة وأوقات التنقّل المقدرة.",
+ "cupertinoAlertAllow": "السماح",
+ "cupertinoAlertDontAllow": "عدم السماح",
+ "cupertinoAlertFavoriteDessert": "Select Favorite Dessert",
+ "cupertinoAlertDessertDescription": "يُرجى اختيار نوع الحلوى المفضّل لك من القائمة أدناه. وسيتم استخدام اختيارك في تخصيص القائمة المقترَحة للمطاعم في منطقتك.",
+ "cupertinoAlertCheesecake": "كعكة بالجبن",
+ "cupertinoAlertTiramisu": "تيراميسو",
+ "cupertinoAlertApplePie": "فطيرة التفاح",
+ "cupertinoAlertChocolateBrownie": "كعكة بالشوكولاتة والبندق",
+ "cupertinoShowAlert": "عرض التنبيه",
+ "colorsRed": "أحمر",
+ "colorsPink": "وردي",
+ "colorsPurple": "أرجواني",
+ "colorsDeepPurple": "أرجواني داكن",
+ "colorsIndigo": "نيليّ",
+ "colorsBlue": "أزرق",
+ "colorsLightBlue": "أزرق فاتح",
+ "colorsCyan": "سماوي",
+ "dialogAddAccount": "إضافة حساب",
+ "Gallery": "معرض الصور",
+ "Categories": "الفئات",
+ "SHRINE": "ضريح",
+ "Basic shopping app": "تطبيق التسوّق الأساسي",
+ "RALLY": "سباق",
+ "CRANE": "رافعة",
+ "Travel app": "تطبيق السفر",
+ "MATERIAL": "مادة",
+ "CUPERTINO": "كوبيرتينو",
+ "REFERENCE STYLES & MEDIA": "الأنماط والوسائط المرجعية"
+}
diff --git a/gallery/lib/l10n/intl_ar_MA.arb b/gallery/lib/l10n/intl_ar_MA.arb
new file mode 100644
index 0000000..9bfae39
--- /dev/null
+++ b/gallery/lib/l10n/intl_ar_MA.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "View options",
+ "demoOptionsFeatureDescription": "Tap here to view available options for this demo.",
+ "demoCodeViewerCopyAll": "نسخ الكل",
+ "shrineScreenReaderRemoveProductButton": "إزالة {product}",
+ "shrineScreenReaderProductAddToCart": "إضافة إلى سلة التسوق",
+ "shrineScreenReaderCart": "{quantity,plural, =0{سلة التسوق، ما مِن عناصر}=1{سلة التسوق، عنصر واحد}two{سلة التسوق، عنصران ({quantity})}few{سلة التسوق، {quantity} عناصر}many{سلة التسوق، {quantity} عنصرًا}other{سلة التسوق، {quantity} عنصر}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "تعذّر نسخ النص إلى الحافظة: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "تم نسخ النص إلى الحافظة.",
+ "craneSleep8SemanticLabel": "أطلال \"المايا\" على جُرْف يطِلّ على الشاطئ",
+ "craneSleep4SemanticLabel": "فندق يطِلّ على بحيرة قُبالة سلسلة من الجبال",
+ "craneSleep2SemanticLabel": "قلعة ماتشو بيتشو",
+ "craneSleep1SemanticLabel": "شاليه في مساحة طبيعية من الثلوج وبها أشجار دائمة الخضرة",
+ "craneSleep0SemanticLabel": "أكواخ فوق الماء",
+ "craneFly13SemanticLabel": "بركة بجانب البحر حولها نخيل",
+ "craneFly12SemanticLabel": "بركة ونخيل",
+ "craneFly11SemanticLabel": "منارة من الطوب على شاطئ البحر",
+ "craneFly10SemanticLabel": "مآذن الجامع الأزهر أثناء الغروب",
+ "craneFly9SemanticLabel": "رجل متّكِئ على سيارة زرقاء عتيقة",
+ "craneFly8SemanticLabel": "سوبر تري غروف",
+ "craneEat9SemanticLabel": "طاولة مقهى لتقديم المعجنات",
+ "craneEat2SemanticLabel": "برغر",
+ "craneFly5SemanticLabel": "فندق يطِلّ على بحيرة قُبالة سلسلة من الجبال",
+ "demoSelectionControlsSubtitle": "مربّعات الاختيار وأزرار الاختيار ومفاتيح التبديل",
+ "craneEat10SemanticLabel": "امرأة تمسك بشطيرة بسطرمة كبيرة",
+ "craneFly4SemanticLabel": "أكواخ فوق الماء",
+ "craneEat7SemanticLabel": "مَدخل مخبز",
+ "craneEat6SemanticLabel": "طبق روبيان",
+ "craneEat5SemanticLabel": "منطقة الجلوس في مطعم ذي ذوق فني",
+ "craneEat4SemanticLabel": "حلوى الشوكولاته",
+ "craneEat3SemanticLabel": "وجبة التاكو الكورية",
+ "craneFly3SemanticLabel": "قلعة ماتشو بيتشو",
+ "craneEat1SemanticLabel": "بار فارغ وكراسي مرتفعة للزبائن",
+ "craneEat0SemanticLabel": "بيتزا في فرن يُشعَل بالأخشاب",
+ "craneSleep11SemanticLabel": "مركز تايبيه المالي 101",
+ "craneSleep10SemanticLabel": "مآذن الجامع الأزهر أثناء الغروب",
+ "craneSleep9SemanticLabel": "منارة من الطوب على شاطئ البحر",
+ "craneEat8SemanticLabel": "طبق جراد البحر",
+ "craneSleep7SemanticLabel": "شُقق ملونة في ميدان ريبيارا",
+ "craneSleep6SemanticLabel": "بركة ونخيل",
+ "craneSleep5SemanticLabel": "خيمة في حقل",
+ "settingsButtonCloseLabel": "إغلاق الإعدادات",
+ "demoSelectionControlsCheckboxDescription": "تسمح مربّعات الاختيار للمستخدمين باختيار عدة خيارات من مجموعة من الخيارات. القيمة المعتادة لمربّع الاختيار هي \"صحيح\" أو \"غير صحيح\" ويمكن أيضًا إضافة حالة ثالثة وهي \"خالية\".",
+ "settingsButtonLabel": "الإعدادات",
+ "demoListsTitle": "القوائم",
+ "demoListsSubtitle": "التمرير خلال تنسيقات القوائم",
+ "demoListsDescription": "صف بارتفاع واحد ثابت يحتوي عادةً على نص ورمز سابق أو لاحق.",
+ "demoOneLineListsTitle": "سطر واحد",
+ "demoTwoLineListsTitle": "سطران",
+ "demoListsSecondary": "نص ثانوي",
+ "demoSelectionControlsTitle": "عناصر التحكّم في الاختيار",
+ "craneFly7SemanticLabel": "جبل راشمور",
+ "demoSelectionControlsCheckboxTitle": "مربّع اختيار",
+ "craneSleep3SemanticLabel": "رجل متّكِئ على سيارة زرقاء عتيقة",
+ "demoSelectionControlsRadioTitle": "زر اختيار",
+ "demoSelectionControlsRadioDescription": "تسمح أزرار الاختيار للقارئ بتحديد خيار واحد من مجموعة من الخيارات. يمكنك استخدام أزرار الاختيار لتحديد اختيارات حصرية إذا كنت تعتقد أنه يجب أن تظهر للمستخدم كل الخيارات المتاحة جنبًا إلى جنب.",
+ "demoSelectionControlsSwitchTitle": "مفاتيح التبديل",
+ "demoSelectionControlsSwitchDescription": "تؤدي مفاتيح تبديل التشغيل/الإيقاف إلى تبديل حالة خيار واحد في الإعدادات. يجب توضيح الخيار الذي يتحكّم فيه مفتاح التبديل وكذلك حالته، وذلك من خلال التسمية المضمّنة المتاحة.",
+ "craneFly0SemanticLabel": "شاليه في مساحة طبيعية من الثلوج وبها أشجار دائمة الخضرة",
+ "craneFly1SemanticLabel": "خيمة في حقل",
+ "craneFly2SemanticLabel": "رايات صلاة أمام جبل ثلجي",
+ "craneFly6SemanticLabel": "عرض \"قصر الفنون الجميلة\" من الجوّ",
+ "rallySeeAllAccounts": "عرض جميع الحسابات",
+ "rallyBillAmount": "تاريخ استحقاق الفاتورة {billName} التي تبلغ {amount} هو {date}.",
+ "shrineTooltipCloseCart": "إغلاق سلة التسوق",
+ "shrineTooltipCloseMenu": "إغلاق القائمة",
+ "shrineTooltipOpenMenu": "فتح القائمة",
+ "shrineTooltipSettings": "الإعدادات",
+ "shrineTooltipSearch": "بحث",
+ "demoTabsDescription": "تساعد علامات التبويب على تنظيم المحتوى في الشاشات المختلفة ومجموعات البيانات والتفاعلات الأخرى.",
+ "demoTabsSubtitle": "علامات تبويب تحتوي على عروض يمكن التنقّل خلالها بشكل مستقل",
+ "demoTabsTitle": "علامات التبويب",
+ "rallyBudgetAmount": "ميزانية {budgetName} مع استخدام {amountUsed} من إجمالي {amountTotal}، المبلغ المتبقي {amountLeft}",
+ "shrineTooltipRemoveItem": "إزالة العنصر",
+ "rallyAccountAmount": "الحساب {accountName} رقم {accountNumber} بمبلغ {amount}.",
+ "rallySeeAllBudgets": "عرض جميع الميزانيات",
+ "rallySeeAllBills": "عرض كل الفواتير",
+ "craneFormDate": "اختيار التاريخ",
+ "craneFormOrigin": "اختيار نقطة انطلاق الرحلة",
+ "craneFly2": "وادي خومبو، نيبال",
+ "craneFly3": "ماتشو بيتشو، بيرو",
+ "craneFly4": "ماليه، جزر المالديف",
+ "craneFly5": "فيتزناو، سويسرا",
+ "craneFly6": "مكسيكو سيتي، المكسيك",
+ "craneFly7": "جبل راشمور، الولايات المتحدة",
+ "settingsTextDirectionLocaleBased": "بناءً على اللغة",
+ "craneFly9": "هافانا، كوبا",
+ "craneFly10": "القاهرة، مصر",
+ "craneFly11": "لشبونة، البرتغال",
+ "craneFly12": "نابا، الولايات المتحدة",
+ "craneFly13": "بالي، إندونيسيا",
+ "craneSleep0": "ماليه، جزر المالديف",
+ "craneSleep1": "أسبن، الولايات المتحدة",
+ "craneSleep2": "ماتشو بيتشو، بيرو",
+ "demoCupertinoSegmentedControlTitle": "عنصر تحكّم شريحة",
+ "craneSleep4": "فيتزناو، سويسرا",
+ "craneSleep5": "بيغ سور، الولايات المتحدة",
+ "craneSleep6": "نابا، الولايات المتحدة",
+ "craneSleep7": "بورتو، البرتغال",
+ "craneSleep8": "تولوم، المكسيك",
+ "craneEat5": "سول، كوريا الجنوبية",
+ "demoChipTitle": "الشرائح",
+ "demoChipSubtitle": "العناصر المضغوطة التي تمثل إدخال أو سمة أو إجراء",
+ "demoActionChipTitle": "شريحة الإجراءات",
+ "demoActionChipDescription": "شرائح الإجراءات هي مجموعة من الخيارات التي تشغّل إجراءً ذا صلة بالمحتوى الأساسي. ينبغي أن يكون ظهور شرائح الإجراءات في واجهة المستخدم ديناميكيًا ومناسبًا للسياق.",
+ "demoChoiceChipTitle": "شريحة الخيارات",
+ "demoChoiceChipDescription": "تمثل شرائح الخيارات خيارًا واحدًا من بين مجموعة. تتضمن شرائح الخيارات النصوص الوصفية ذات الصلة أو الفئات.",
+ "demoFilterChipTitle": "شريحة الفلتر",
+ "demoFilterChipDescription": "تستخدم شرائح الفلتر العلامات أو الكلمات الوصفية باعتبارها طريقة لفلترة المحتوى.",
+ "demoInputChipTitle": "شريحة الإدخال",
+ "demoInputChipDescription": "تمثل شرائح الإدخالات معلومة معقدة، مثل كيان (شخص، مكان، أو شئ) أو نص محادثة، في نمط مضغوط.",
+ "craneSleep9": "لشبونة، البرتغال",
+ "craneEat10": "لشبونة، البرتغال",
+ "demoCupertinoSegmentedControlDescription": "يُستخدَم للاختيار بين عدد من الخيارات يستبعد أحدها الآخر. عند اختيار خيار في عنصر تحكّم الشريحة، يتم إلغاء اختيار العنصر الآخر في عنصر تحكّم الشريحة.",
+ "chipTurnOnLights": "تشغيل الأضواء",
+ "chipSmall": "صغير",
+ "chipMedium": "متوسط",
+ "chipLarge": "كبير",
+ "chipElevator": "مصعَد",
+ "chipWasher": "غسّالة",
+ "chipFireplace": "موقد",
+ "chipBiking": "ركوب الدراجة",
+ "craneFormDiners": "مطاعم صغيرة",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على معاملة واحدة لم يتم ضبطها.}zero{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملة لم يتم ضبطها.}two{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على معاملتين ({count}) لم يتم ضبطهما.}few{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملات لم يتم ضبطها.}many{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملة لم يتم ضبطها.}other{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملة لم يتم ضبطها.}}",
+ "craneFormTime": "اختيار الوقت",
+ "craneFormLocation": "اختيار الموقع جغرافي",
+ "craneFormTravelers": "المسافرون",
+ "craneEat8": "أتلانتا، الولايات المتحدة",
+ "craneFormDestination": "اختيار الوجهة",
+ "craneFormDates": "اختيار تواريخ",
+ "craneFly": "الطيران",
+ "craneSleep": "السكون",
+ "craneEat": "المأكولات",
+ "craneFlySubhead": "استكشاف الرحلات حسب الوجهة",
+ "craneSleepSubhead": "استكشاف العقارات حسب الوجهة",
+ "craneEatSubhead": "استكشاف المطاعم حسب الوجهة",
+ "craneFlyStops": "{numberOfStops,plural, =0{بدون توقف}=1{محطة واحدة}two{محطتان ({numberOfStops})}few{{numberOfStops} محطات}many{{numberOfStops} محطة}other{{numberOfStops} محطة}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{ليس هناك مواقع متاحة.}=1{هناك موقع واحد متاح.}two{هناك موقعان ({totalProperties}) متاحان.}few{هناك {totalProperties} مواقع متاحة.}many{هناك {totalProperties} موقعًا متاحًا.}other{هناك {totalProperties} موقع متاح.}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{ما مِن مطاعم.}=1{مطعم واحد}two{مطعمان ({totalRestaurants})}few{{totalRestaurants} مطاعم}many{{totalRestaurants} مطعمًا}other{{totalRestaurants} مطعم}}",
+ "craneFly0": "أسبن، الولايات المتحدة",
+ "demoCupertinoSegmentedControlSubtitle": "عنصر تحكّم شريحة بنمط iOS",
+ "craneSleep10": "القاهرة، مصر",
+ "craneEat9": "مدريد، إسبانيا",
+ "craneFly1": "بيغ سور، الولايات المتحدة",
+ "craneEat7": "ناشفيل، الولايات المتحدة",
+ "craneEat6": "سياتل، الولايات المتحدة",
+ "craneFly8": "سنغافورة",
+ "craneEat4": "باريس، فرنسا",
+ "craneEat3": "بورتلاند، الولايات المتحدة",
+ "craneEat2": "قرطبة، الأرجنتين",
+ "craneEat1": "دالاس، الولايات المتحدة",
+ "craneEat0": "نابولي، إيطاليا",
+ "craneSleep11": "تايبيه، تايوان",
+ "craneSleep3": "هافانا، كوبا",
+ "shrineLogoutButtonCaption": "تسجيل الخروج",
+ "rallyTitleBills": "الفواتير",
+ "rallyTitleAccounts": "الحسابات",
+ "shrineProductVagabondSack": "حقيبة من ماركة Vagabond",
+ "rallyAccountDetailDataInterestYtd": "الفائدة منذ بداية العام حتى اليوم",
+ "shrineProductWhitneyBelt": "حزام \"ويتني\"",
+ "shrineProductGardenStrand": "خيوط زينة للحدائق",
+ "shrineProductStrutEarrings": "أقراط فاخرة",
+ "shrineProductVarsitySocks": "جوارب من نوع \"فارسيتي\"",
+ "shrineProductWeaveKeyring": "سلسلة مفاتيح Weave",
+ "shrineProductGatsbyHat": "قبعة \"غاتسبي\"",
+ "shrineProductShrugBag": "حقيبة كتف",
+ "shrineProductGiltDeskTrio": "طقم أدوات مكتبية ذهبية اللون من 3 قطع",
+ "shrineProductCopperWireRack": "رف سلكي نحاسي",
+ "shrineProductSootheCeramicSet": "طقم سيراميك باللون الأبيض الراقي",
+ "shrineProductHurrahsTeaSet": "طقم شاي مميّز",
+ "shrineProductBlueStoneMug": "قدح حجري أزرق",
+ "shrineProductRainwaterTray": "صينية عميقة",
+ "shrineProductChambrayNapkins": "مناديل \"شامبراي\"",
+ "shrineProductSucculentPlanters": "أحواض عصرية للنباتات",
+ "shrineProductQuartetTable": "طاولة رباعية الأرجل",
+ "shrineProductKitchenQuattro": "طقم أدوات للمطبخ من أربع قطع",
+ "shrineProductClaySweater": "بلوزة بلون الطين",
+ "shrineProductSeaTunic": "بلوزة بلون أزرق فاتح",
+ "shrineProductPlasterTunic": "بلوزة من نوع \"بلاستر\"",
+ "rallyBudgetCategoryRestaurants": "المطاعم",
+ "shrineProductChambrayShirt": "قميص من نوع \"شامبراي\"",
+ "shrineProductSeabreezeSweater": "سترة بلون أزرق بحري",
+ "shrineProductGentryJacket": "سترة رجالية باللون الأخضر الداكن",
+ "shrineProductNavyTrousers": "سروال بلون أزرق داكن",
+ "shrineProductWalterHenleyWhite": "والتر هينلي (أبيض)",
+ "shrineProductSurfAndPerfShirt": "قميص سيرف آند بيرف",
+ "shrineProductGingerScarf": "وشاح بألوان الزنجبيل",
+ "shrineProductRamonaCrossover": "قميص \"رامونا\" على شكل الحرف X",
+ "shrineProductClassicWhiteCollar": "ياقة بيضاء كلاسيكية",
+ "shrineProductSunshirtDress": "فستان يعكس أشعة الشمس",
+ "rallyAccountDetailDataInterestRate": "سعر الفائدة",
+ "rallyAccountDetailDataAnnualPercentageYield": "النسبة المئوية للعائد السنوي",
+ "rallyAccountDataVacation": "عطلة",
+ "shrineProductFineLinesTee": "قميص بخطوط رفيعة",
+ "rallyAccountDataHomeSavings": "المدخرات المنزلية",
+ "rallyAccountDataChecking": "الحساب الجاري",
+ "rallyAccountDetailDataInterestPaidLastYear": "الفائدة المدفوعة في العام الماضي",
+ "rallyAccountDetailDataNextStatement": "كشف الحساب التالي",
+ "rallyAccountDetailDataAccountOwner": "صاحب الحساب",
+ "rallyBudgetCategoryCoffeeShops": "المقاهي",
+ "rallyBudgetCategoryGroceries": "متاجر البقالة",
+ "shrineProductCeriseScallopTee": "قميص قصير الأكمام باللون الكرزي الفاتح",
+ "rallyBudgetCategoryClothing": "الملابس",
+ "rallySettingsManageAccounts": "إدارة الحسابات",
+ "rallyAccountDataCarSavings": "المدّخرات المخصّصة للسيارة",
+ "rallySettingsTaxDocuments": "المستندات الضريبية",
+ "rallySettingsPasscodeAndTouchId": "رمز المرور ومعرّف اللمس",
+ "rallySettingsNotifications": "إشعارات",
+ "rallySettingsPersonalInformation": "المعلومات الشخصية",
+ "rallySettingsPaperlessSettings": "إعدادات إنجاز الأعمال بدون ورق",
+ "rallySettingsFindAtms": "العثور على مواقع أجهزة الصراف الآلي",
+ "rallySettingsHelp": "المساعدة",
+ "rallySettingsSignOut": "تسجيل الخروج",
+ "rallyAccountTotal": "الإجمالي",
+ "rallyBillsDue": "الفواتير المستحقة",
+ "rallyBudgetLeft": "الميزانية المتبقية",
+ "rallyAccounts": "الحسابات",
+ "rallyBills": "الفواتير",
+ "rallyBudgets": "الميزانيات",
+ "rallyAlerts": "التنبيهات",
+ "rallySeeAll": "عرض الكل",
+ "rallyFinanceLeft": "المتبقي",
+ "rallyTitleOverview": "نظرة عامة",
+ "shrineProductShoulderRollsTee": "قميص واسعة بأكمام قصيرة",
+ "shrineNextButtonCaption": "التالي",
+ "rallyTitleBudgets": "الميزانيات",
+ "rallyTitleSettings": "الإعدادات",
+ "rallyLoginLoginToRally": "تسجيل الدخول إلى Rally",
+ "rallyLoginNoAccount": "أليس لديك حساب؟",
+ "rallyLoginSignUp": "الاشتراك",
+ "rallyLoginUsername": "اسم المستخدم",
+ "rallyLoginPassword": "كلمة المرور",
+ "rallyLoginLabelLogin": "تسجيل الدخول",
+ "rallyLoginRememberMe": "تذكُّر بيانات تسجيل الدخول إلى حسابي",
+ "rallyLoginButtonLogin": "تسجيل الدخول",
+ "rallyAlertsMessageHeadsUpShopping": "تنبيه: لقد استهلكت {percent} من ميزانية التسوّق لهذا الشهر.",
+ "rallyAlertsMessageSpentOnRestaurants": "أنفقت هذا الشهر مبلغ {amount} على تناول الطعام في المطاعم.",
+ "rallyAlertsMessageATMFees": "أنفقت {amount} كرسوم لأجهزة الصراف الآلي هذا الشهر",
+ "rallyAlertsMessageCheckingAccount": "عمل رائع! الرصيد الحالي في حسابك الجاري أعلى بنسبة {percent} من الشهر الماضي.",
+ "shrineMenuCaption": "القائمة",
+ "shrineCategoryNameAll": "الكل",
+ "shrineCategoryNameAccessories": "الإكسسوارات",
+ "shrineCategoryNameClothing": "الملابس",
+ "shrineCategoryNameHome": "المنزل",
+ "shrineLoginUsernameLabel": "اسم المستخدم",
+ "shrineLoginPasswordLabel": "كلمة المرور",
+ "shrineCancelButtonCaption": "إلغاء",
+ "shrineCartTaxCaption": "الضريبة:",
+ "shrineCartPageCaption": "سلة التسوّق",
+ "shrineProductQuantity": "الكمية: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{ما مِن عناصر.}=1{عنصر واحد}two{عنصران ({quantity})}few{{quantity} عناصر}many{{quantity} عنصرًا}other{{quantity} عنصر}}",
+ "shrineCartClearButtonCaption": "محو سلة التسوق",
+ "shrineCartTotalCaption": "الإجمالي",
+ "shrineCartSubtotalCaption": "الإجمالي الفرعي:",
+ "shrineCartShippingCaption": "الشحن:",
+ "shrineProductGreySlouchTank": "قميص رمادي اللون",
+ "shrineProductStellaSunglasses": "نظارات شمس من نوع \"ستيلا\"",
+ "shrineProductWhitePinstripeShirt": "قميص ذو خطوط بيضاء",
+ "demoTextFieldWhereCanWeReachYou": "على أي رقم يمكننا التواصل معك؟",
+ "settingsTextDirectionLTR": "من اليسار إلى اليمين",
+ "settingsTextScalingLarge": "كبير",
+ "demoBottomSheetHeader": "العنوان",
+ "demoBottomSheetItem": "السلعة {value}",
+ "demoBottomTextFieldsTitle": "حقول النص",
+ "demoTextFieldTitle": "حقول النص",
+ "demoTextFieldSubtitle": "سطر واحد من النص والأرقام القابلة للتعديل",
+ "demoTextFieldDescription": "تسمح حقول النص للمستخدمين بإدخال نص في واجهة مستخدم. وتظهر عادةً في النماذج ومربّعات الحوار.",
+ "demoTextFieldShowPasswordLabel": "عرض كلمة المرور",
+ "demoTextFieldHidePasswordLabel": "إخفاء كلمة المرور",
+ "demoTextFieldFormErrors": "يُرجى تصحيح الأخطاء باللون الأحمر قبل الإرسال.",
+ "demoTextFieldNameRequired": "الاسم مطلوب.",
+ "demoTextFieldOnlyAlphabeticalChars": "يُرجى إدخال حروف أبجدية فقط.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - يُرجى إدخال رقم هاتف صالح في الولايات المتحدة.",
+ "demoTextFieldEnterPassword": "يرجى إدخال كلمة مرور.",
+ "demoTextFieldPasswordsDoNotMatch": "كلمتا المرور غير متطابقتين.",
+ "demoTextFieldWhatDoPeopleCallYou": "بأي اسم يناديك الآخرون؟",
+ "demoTextFieldNameField": "الاسم*",
+ "demoBottomSheetButtonText": "عرض البطاقة السفلية",
+ "demoTextFieldPhoneNumber": "رقم الهاتف*",
+ "demoBottomSheetTitle": "البطاقة السفلية",
+ "demoTextFieldEmail": "البريد الإلكتروني",
+ "demoTextFieldTellUsAboutYourself": "أخبِرنا عن نفسك (مثلاً ما هي هواياتك المفضّلة أو ما هو مجال عملك؟)",
+ "demoTextFieldKeepItShort": "يُرجى الاختصار، هذا مجرد عرض توضيحي.",
+ "starterAppGenericButton": "زر",
+ "demoTextFieldLifeStory": "قصة حياة",
+ "demoTextFieldSalary": "الراتب",
+ "demoTextFieldUSD": "دولار أمريكي",
+ "demoTextFieldNoMoreThan": "يجب ألا تزيد عن 8 أحرف.",
+ "demoTextFieldPassword": "كلمة المرور*",
+ "demoTextFieldRetypePassword": "أعِد كتابة كلمة المرور*",
+ "demoTextFieldSubmit": "إرسال",
+ "demoBottomNavigationSubtitle": "شريط تنقّل سفلي شبه مرئي",
+ "demoBottomSheetAddLabel": "إضافة",
+ "demoBottomSheetModalDescription": "تعتبر البطاقة السفلية المقيِّدة بديلاً لقائمة أو مربّع حوار ولا تسمح للمستخدم بالتفاعل مع المحتوى الآخر على الشاشة.",
+ "demoBottomSheetModalTitle": "البطاقة السفلية المقيِّدة",
+ "demoBottomSheetPersistentDescription": "تعرض البطاقة السفلية العادية معلومات تكميلية للمحتوى الأساسي للتطبيق. ولا تختفي هذه البطاقة عندما يتفاعل المستخدم مع المحتوى الآخر على الشاشة.",
+ "demoBottomSheetPersistentTitle": "البطاقة السفلية العادية",
+ "demoBottomSheetSubtitle": "البطاقات السفلية المقيِّدة والعادية",
+ "demoTextFieldNameHasPhoneNumber": "رقم هاتف {name} هو {phoneNumber}.",
+ "buttonText": "زر",
+ "demoTypographyDescription": "تعريف أساليب الخط المختلفة في التصميم المتعدد الأبعاد",
+ "demoTypographySubtitle": "جميع أنماط النص المحدّدة مسبقًا",
+ "demoTypographyTitle": "أسلوب الخط",
+ "demoFullscreenDialogDescription": "تحدِّد خاصية fullscreenDialog ما إذا كانت الصفحة الواردة هي مربع حوار نمطي بملء الشاشة.",
+ "demoFlatButtonDescription": "يتلوّن الزر المنبسط عند الضغط عليه ولكن لا يرتفع. ينصح باستخدام الأزرار المنبسطة على أشرطة الأدوات وفي مربعات الحوار وداخل المساحة المتروكة",
+ "demoBottomNavigationDescription": "تعرض أشرطة التنقل السفلية بين ثلاث وخمس وجهات في الجزء السفلي من الشاشة. ويتم تمثيل كل وجهة برمز ووسم نصي اختياري. عند النقر على رمز التنقل السفلي، يتم نقل المستخدم إلى وجهة التنقل ذات المستوى الأعلى المرتبطة بذلك الرمز.",
+ "demoBottomNavigationSelectedLabel": "الملصق المُختار",
+ "demoBottomNavigationPersistentLabels": "التصنيفات المستمرة",
+ "starterAppDrawerItem": "السلعة {value}",
+ "demoTextFieldRequiredField": "تشير علامة * إلى حقل مطلوب.",
+ "demoBottomNavigationTitle": "شريط التنقل السفلي",
+ "settingsLightTheme": "فاتح",
+ "settingsTheme": "التصميم",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "من اليمين إلى اليسار",
+ "settingsTextScalingHuge": "ضخم",
+ "cupertinoButton": "زر",
+ "settingsTextScalingNormal": "عادي",
+ "settingsTextScalingSmall": "صغير",
+ "settingsSystemDefault": "النظام",
+ "settingsTitle": "الإعدادات",
+ "rallyDescription": "تطبيق للتمويل الشخصي",
+ "aboutDialogDescription": "للاطّلاع على رمز المصدر لهذا التطبيق، يُرجى زيارة {value}.",
+ "bottomNavigationCommentsTab": "التعليقات",
+ "starterAppGenericBody": "النص",
+ "starterAppGenericHeadline": "العنوان",
+ "starterAppGenericSubtitle": "العنوان الفرعي",
+ "starterAppGenericTitle": "العنوان",
+ "starterAppTooltipSearch": "البحث",
+ "starterAppTooltipShare": "مشاركة",
+ "starterAppTooltipFavorite": "الإضافة إلى السلع المفضّلة",
+ "starterAppTooltipAdd": "إضافة",
+ "bottomNavigationCalendarTab": "التقويم",
+ "starterAppDescription": "تطبيق نموذجي يتضمّن تنسيقًا تفاعليًا",
+ "starterAppTitle": "تطبيق نموذجي",
+ "aboutFlutterSamplesRepo": "عينات Flutter في مستودع Github",
+ "bottomNavigationContentPlaceholder": "عنصر نائب لعلامة تبويب {title}",
+ "bottomNavigationCameraTab": "الكاميرا",
+ "bottomNavigationAlarmTab": "المنبّه",
+ "bottomNavigationAccountTab": "الحساب",
+ "demoTextFieldYourEmailAddress": "عنوان بريدك الإلكتروني",
+ "demoToggleButtonDescription": "يمكن استخدام أزرار التبديل لتجميع الخيارات المرتبطة. لتأكيد مجموعات أزرار التبديل المرتبطة، يجب أن تشترك إحدى المجموعات في حاوية مشتركة.",
+ "colorsGrey": "رمادي",
+ "colorsBrown": "بني",
+ "colorsDeepOrange": "برتقالي داكن",
+ "colorsOrange": "برتقالي",
+ "colorsAmber": "كهرماني",
+ "colorsYellow": "أصفر",
+ "colorsLime": "ليموني",
+ "colorsLightGreen": "أخضر فاتح",
+ "colorsGreen": "أخضر",
+ "homeHeaderGallery": "معرض الصور",
+ "homeHeaderCategories": "الفئات",
+ "shrineDescription": "تطبيق عصري للبيع بالتجزئة",
+ "craneDescription": "تطبيق سفر مُخصَّص",
+ "homeCategoryReference": "الأنماط والوسائط المرجعية",
+ "demoInvalidURL": "تعذّر عرض عنوان URL:",
+ "demoOptionsTooltip": "الخيارات",
+ "demoInfoTooltip": "معلومات",
+ "demoCodeTooltip": "نموذج رمز",
+ "demoDocumentationTooltip": "وثائق واجهة برمجة التطبيقات",
+ "demoFullscreenTooltip": "ملء الشاشة",
+ "settingsTextScaling": "تغيير حجم النص",
+ "settingsTextDirection": "اتجاه النص",
+ "settingsLocale": "اللغة",
+ "settingsPlatformMechanics": "آليات الأنظمة الأساسية",
+ "settingsDarkTheme": "داكن",
+ "settingsSlowMotion": "التصوير البطيء",
+ "settingsAbout": "نبذة عن معرض Flutter",
+ "settingsFeedback": "إرسال التعليقات",
+ "settingsAttribution": "من تصميم TOASTER في لندن",
+ "demoButtonTitle": "الأزرار",
+ "demoButtonSubtitle": "أزرار منبسطة وبارزة ومخطَّطة وغيرها",
+ "demoFlatButtonTitle": "الزر المنبسط",
+ "demoRaisedButtonDescription": "تضيف الأزرار البارزة بُعدًا إلى التخطيطات المنبسطة عادةً. وتبرِز الوظائف المتوفرة في المساحات العريضة أو المكدَّسة.",
+ "demoRaisedButtonTitle": "الزر البارز",
+ "demoOutlineButtonTitle": "Outline Button",
+ "demoOutlineButtonDescription": "تصبح الأزرار المخطَّطة غير شفافة وترتفع عند الضغط عليها. وغالبًا ما يتم إقرانها مع الأزرار البارزة للإشارة إلى إجراء ثانوي بديل.",
+ "demoToggleButtonTitle": "أزرار التبديل",
+ "colorsTeal": "أزرق مخضرّ",
+ "demoFloatingButtonTitle": "زر الإجراء العائم",
+ "demoFloatingButtonDescription": "زر الإجراء العائم هو زر على شكل رمز دائري يتم تمريره فوق المحتوى للترويج لاتخاذ إجراء أساسي في التطبيق.",
+ "demoDialogTitle": "مربعات الحوار",
+ "demoDialogSubtitle": "مربعات حوار بسيطة ومخصّصة للتنبيهات وبملء الشاشة",
+ "demoAlertDialogTitle": "التنبيه",
+ "demoAlertDialogDescription": "يخبر مربع حوار التنبيهات المستخدم بالحالات التي تتطلب تأكيد الاستلام. ويشتمل مربع حوار التنبيهات على عنوان اختياري وقائمة إجراءات اختيارية.",
+ "demoAlertTitleDialogTitle": "تنبيه مزوّد بعنوان",
+ "demoSimpleDialogTitle": "بسيط",
+ "demoSimpleDialogDescription": "يتيح مربع الحوار البسيط للمستخدم إمكانية الاختيار من بين عدة خيارات. ويشتمل مربع الحوار البسيط على عنوان اختياري يتم عرضه أعلى هذه الخيارات.",
+ "demoFullscreenDialogTitle": "ملء الشاشة",
+ "demoCupertinoButtonsTitle": "الأزرار",
+ "demoCupertinoButtonsSubtitle": "أزرار مستوحاة من نظام التشغيل iOS",
+ "demoCupertinoButtonsDescription": "زر مستوحى من نظام التشغيل iOS. يتم عرض هذا الزر على شكل نص و/أو رمز يتلاشى ويظهر بالتدريج عند اللمس. وقد يكون مزوّدًا بخلفية اختياريًا.",
+ "demoCupertinoAlertsTitle": "التنبيهات",
+ "demoCupertinoAlertsSubtitle": "مربعات حوار التنبيهات المستوحاة من نظام التشغيل iOS",
+ "demoCupertinoAlertTitle": "تنبيه",
+ "demoCupertinoAlertDescription": "يخبر مربع حوار التنبيهات المستخدم بالحالات التي تتطلب تأكيد الاستلام. ويشتمل مربع حوار التنبيهات على عنوان اختياري ومحتوى اختياري وقائمة إجراءات اختيارية. ويتم عرض العنوان أعلى المحتوى بينما تُعرض الإجراءات أسفل المحتوى.",
+ "demoCupertinoAlertWithTitleTitle": "تنبيه يتضمّن عنوانًا",
+ "demoCupertinoAlertButtonsTitle": "تنبيه مزوّد بأزرار",
+ "demoCupertinoAlertButtonsOnlyTitle": "أزرار التنبيه فقط",
+ "demoCupertinoActionSheetTitle": "ورقة الإجراءات",
+ "demoCupertinoActionSheetDescription": "ورقة الإجراءات هي ورقة أنماط معيّنة للتنبيهات تقدّم للمستخدم مجموعة مكوّنة من خيارين أو أكثر مرتبطة بالسياق الحالي. ويمكن أن تتضمّن ورقة الإجراءات عنوانًا ورسالة إضافية وقائمة إجراءات.",
+ "demoColorsTitle": "الألوان",
+ "demoColorsSubtitle": "جميع الألوان المحدّدة مسبقًا",
+ "demoColorsDescription": "ثوابت اللون وعينات الألوان التي تُمثل لوحة ألوان التصميم المتعدد الأبعاد",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "إنشاء",
+ "dialogSelectedOption": "لقد اخترت القيمة التالية: \"{value}\"",
+ "dialogDiscardTitle": "هل تريد تجاهل المسودة؟",
+ "dialogLocationTitle": "هل تريد استخدام خدمة الموقع الجغرافي من Google؟",
+ "dialogLocationDescription": "يمكنك السماح لشركة Google بمساعدة التطبيقات في تحديد الموقع الجغرافي. ويعني هذا أنه سيتم إرسال بيانات مجهولة المصدر عن الموقع الجغرافي إلى Google، حتى عند عدم تشغيل أي تطبيقات.",
+ "dialogCancel": "إلغاء",
+ "dialogDiscard": "تجاهل",
+ "dialogDisagree": "لا أوافق",
+ "dialogAgree": "موافق",
+ "dialogSetBackup": "تحديد حساب النسخة الاحتياطية",
+ "colorsBlueGrey": "أزرق رمادي",
+ "dialogShow": "عرض مربع الحوار",
+ "dialogFullscreenTitle": "مربع حوار بملء الشاشة",
+ "dialogFullscreenSave": "حفظ",
+ "dialogFullscreenDescription": "عرض توضيحي لمربع حوار بملء الشاشة",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "زر مزوّد بخلفية",
+ "cupertinoAlertCancel": "إلغاء",
+ "cupertinoAlertDiscard": "تجاهل",
+ "cupertinoAlertLocationTitle": "هل تريد السماح لخدمة \"خرائط Google\" بالدخول إلى موقعك الجغرافي أثناء استخدام التطبيق؟",
+ "cupertinoAlertLocationDescription": "سيتم عرض الموقع الجغرافي الحالي على الخريطة واستخدامه لتوفير الاتجاهات ونتائج البحث عن الأماكن المجاورة وأوقات التنقّل المقدرة.",
+ "cupertinoAlertAllow": "السماح",
+ "cupertinoAlertDontAllow": "عدم السماح",
+ "cupertinoAlertFavoriteDessert": "Select Favorite Dessert",
+ "cupertinoAlertDessertDescription": "يُرجى اختيار نوع الحلوى المفضّل لك من القائمة أدناه. وسيتم استخدام اختيارك في تخصيص القائمة المقترَحة للمطاعم في منطقتك.",
+ "cupertinoAlertCheesecake": "كعكة بالجبن",
+ "cupertinoAlertTiramisu": "تيراميسو",
+ "cupertinoAlertApplePie": "فطيرة التفاح",
+ "cupertinoAlertChocolateBrownie": "كعكة بالشوكولاتة والبندق",
+ "cupertinoShowAlert": "عرض التنبيه",
+ "colorsRed": "أحمر",
+ "colorsPink": "وردي",
+ "colorsPurple": "أرجواني",
+ "colorsDeepPurple": "أرجواني داكن",
+ "colorsIndigo": "نيليّ",
+ "colorsBlue": "أزرق",
+ "colorsLightBlue": "أزرق فاتح",
+ "colorsCyan": "سماوي",
+ "dialogAddAccount": "إضافة حساب",
+ "Gallery": "معرض الصور",
+ "Categories": "الفئات",
+ "SHRINE": "ضريح",
+ "Basic shopping app": "تطبيق التسوّق الأساسي",
+ "RALLY": "سباق",
+ "CRANE": "رافعة",
+ "Travel app": "تطبيق السفر",
+ "MATERIAL": "مادة",
+ "CUPERTINO": "كوبيرتينو",
+ "REFERENCE STYLES & MEDIA": "الأنماط والوسائط المرجعية"
+}
diff --git a/gallery/lib/l10n/intl_ar_SA.arb b/gallery/lib/l10n/intl_ar_SA.arb
new file mode 100644
index 0000000..9bfae39
--- /dev/null
+++ b/gallery/lib/l10n/intl_ar_SA.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "View options",
+ "demoOptionsFeatureDescription": "Tap here to view available options for this demo.",
+ "demoCodeViewerCopyAll": "نسخ الكل",
+ "shrineScreenReaderRemoveProductButton": "إزالة {product}",
+ "shrineScreenReaderProductAddToCart": "إضافة إلى سلة التسوق",
+ "shrineScreenReaderCart": "{quantity,plural, =0{سلة التسوق، ما مِن عناصر}=1{سلة التسوق، عنصر واحد}two{سلة التسوق، عنصران ({quantity})}few{سلة التسوق، {quantity} عناصر}many{سلة التسوق، {quantity} عنصرًا}other{سلة التسوق، {quantity} عنصر}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "تعذّر نسخ النص إلى الحافظة: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "تم نسخ النص إلى الحافظة.",
+ "craneSleep8SemanticLabel": "أطلال \"المايا\" على جُرْف يطِلّ على الشاطئ",
+ "craneSleep4SemanticLabel": "فندق يطِلّ على بحيرة قُبالة سلسلة من الجبال",
+ "craneSleep2SemanticLabel": "قلعة ماتشو بيتشو",
+ "craneSleep1SemanticLabel": "شاليه في مساحة طبيعية من الثلوج وبها أشجار دائمة الخضرة",
+ "craneSleep0SemanticLabel": "أكواخ فوق الماء",
+ "craneFly13SemanticLabel": "بركة بجانب البحر حولها نخيل",
+ "craneFly12SemanticLabel": "بركة ونخيل",
+ "craneFly11SemanticLabel": "منارة من الطوب على شاطئ البحر",
+ "craneFly10SemanticLabel": "مآذن الجامع الأزهر أثناء الغروب",
+ "craneFly9SemanticLabel": "رجل متّكِئ على سيارة زرقاء عتيقة",
+ "craneFly8SemanticLabel": "سوبر تري غروف",
+ "craneEat9SemanticLabel": "طاولة مقهى لتقديم المعجنات",
+ "craneEat2SemanticLabel": "برغر",
+ "craneFly5SemanticLabel": "فندق يطِلّ على بحيرة قُبالة سلسلة من الجبال",
+ "demoSelectionControlsSubtitle": "مربّعات الاختيار وأزرار الاختيار ومفاتيح التبديل",
+ "craneEat10SemanticLabel": "امرأة تمسك بشطيرة بسطرمة كبيرة",
+ "craneFly4SemanticLabel": "أكواخ فوق الماء",
+ "craneEat7SemanticLabel": "مَدخل مخبز",
+ "craneEat6SemanticLabel": "طبق روبيان",
+ "craneEat5SemanticLabel": "منطقة الجلوس في مطعم ذي ذوق فني",
+ "craneEat4SemanticLabel": "حلوى الشوكولاته",
+ "craneEat3SemanticLabel": "وجبة التاكو الكورية",
+ "craneFly3SemanticLabel": "قلعة ماتشو بيتشو",
+ "craneEat1SemanticLabel": "بار فارغ وكراسي مرتفعة للزبائن",
+ "craneEat0SemanticLabel": "بيتزا في فرن يُشعَل بالأخشاب",
+ "craneSleep11SemanticLabel": "مركز تايبيه المالي 101",
+ "craneSleep10SemanticLabel": "مآذن الجامع الأزهر أثناء الغروب",
+ "craneSleep9SemanticLabel": "منارة من الطوب على شاطئ البحر",
+ "craneEat8SemanticLabel": "طبق جراد البحر",
+ "craneSleep7SemanticLabel": "شُقق ملونة في ميدان ريبيارا",
+ "craneSleep6SemanticLabel": "بركة ونخيل",
+ "craneSleep5SemanticLabel": "خيمة في حقل",
+ "settingsButtonCloseLabel": "إغلاق الإعدادات",
+ "demoSelectionControlsCheckboxDescription": "تسمح مربّعات الاختيار للمستخدمين باختيار عدة خيارات من مجموعة من الخيارات. القيمة المعتادة لمربّع الاختيار هي \"صحيح\" أو \"غير صحيح\" ويمكن أيضًا إضافة حالة ثالثة وهي \"خالية\".",
+ "settingsButtonLabel": "الإعدادات",
+ "demoListsTitle": "القوائم",
+ "demoListsSubtitle": "التمرير خلال تنسيقات القوائم",
+ "demoListsDescription": "صف بارتفاع واحد ثابت يحتوي عادةً على نص ورمز سابق أو لاحق.",
+ "demoOneLineListsTitle": "سطر واحد",
+ "demoTwoLineListsTitle": "سطران",
+ "demoListsSecondary": "نص ثانوي",
+ "demoSelectionControlsTitle": "عناصر التحكّم في الاختيار",
+ "craneFly7SemanticLabel": "جبل راشمور",
+ "demoSelectionControlsCheckboxTitle": "مربّع اختيار",
+ "craneSleep3SemanticLabel": "رجل متّكِئ على سيارة زرقاء عتيقة",
+ "demoSelectionControlsRadioTitle": "زر اختيار",
+ "demoSelectionControlsRadioDescription": "تسمح أزرار الاختيار للقارئ بتحديد خيار واحد من مجموعة من الخيارات. يمكنك استخدام أزرار الاختيار لتحديد اختيارات حصرية إذا كنت تعتقد أنه يجب أن تظهر للمستخدم كل الخيارات المتاحة جنبًا إلى جنب.",
+ "demoSelectionControlsSwitchTitle": "مفاتيح التبديل",
+ "demoSelectionControlsSwitchDescription": "تؤدي مفاتيح تبديل التشغيل/الإيقاف إلى تبديل حالة خيار واحد في الإعدادات. يجب توضيح الخيار الذي يتحكّم فيه مفتاح التبديل وكذلك حالته، وذلك من خلال التسمية المضمّنة المتاحة.",
+ "craneFly0SemanticLabel": "شاليه في مساحة طبيعية من الثلوج وبها أشجار دائمة الخضرة",
+ "craneFly1SemanticLabel": "خيمة في حقل",
+ "craneFly2SemanticLabel": "رايات صلاة أمام جبل ثلجي",
+ "craneFly6SemanticLabel": "عرض \"قصر الفنون الجميلة\" من الجوّ",
+ "rallySeeAllAccounts": "عرض جميع الحسابات",
+ "rallyBillAmount": "تاريخ استحقاق الفاتورة {billName} التي تبلغ {amount} هو {date}.",
+ "shrineTooltipCloseCart": "إغلاق سلة التسوق",
+ "shrineTooltipCloseMenu": "إغلاق القائمة",
+ "shrineTooltipOpenMenu": "فتح القائمة",
+ "shrineTooltipSettings": "الإعدادات",
+ "shrineTooltipSearch": "بحث",
+ "demoTabsDescription": "تساعد علامات التبويب على تنظيم المحتوى في الشاشات المختلفة ومجموعات البيانات والتفاعلات الأخرى.",
+ "demoTabsSubtitle": "علامات تبويب تحتوي على عروض يمكن التنقّل خلالها بشكل مستقل",
+ "demoTabsTitle": "علامات التبويب",
+ "rallyBudgetAmount": "ميزانية {budgetName} مع استخدام {amountUsed} من إجمالي {amountTotal}، المبلغ المتبقي {amountLeft}",
+ "shrineTooltipRemoveItem": "إزالة العنصر",
+ "rallyAccountAmount": "الحساب {accountName} رقم {accountNumber} بمبلغ {amount}.",
+ "rallySeeAllBudgets": "عرض جميع الميزانيات",
+ "rallySeeAllBills": "عرض كل الفواتير",
+ "craneFormDate": "اختيار التاريخ",
+ "craneFormOrigin": "اختيار نقطة انطلاق الرحلة",
+ "craneFly2": "وادي خومبو، نيبال",
+ "craneFly3": "ماتشو بيتشو، بيرو",
+ "craneFly4": "ماليه، جزر المالديف",
+ "craneFly5": "فيتزناو، سويسرا",
+ "craneFly6": "مكسيكو سيتي، المكسيك",
+ "craneFly7": "جبل راشمور، الولايات المتحدة",
+ "settingsTextDirectionLocaleBased": "بناءً على اللغة",
+ "craneFly9": "هافانا، كوبا",
+ "craneFly10": "القاهرة، مصر",
+ "craneFly11": "لشبونة، البرتغال",
+ "craneFly12": "نابا، الولايات المتحدة",
+ "craneFly13": "بالي، إندونيسيا",
+ "craneSleep0": "ماليه، جزر المالديف",
+ "craneSleep1": "أسبن، الولايات المتحدة",
+ "craneSleep2": "ماتشو بيتشو، بيرو",
+ "demoCupertinoSegmentedControlTitle": "عنصر تحكّم شريحة",
+ "craneSleep4": "فيتزناو، سويسرا",
+ "craneSleep5": "بيغ سور، الولايات المتحدة",
+ "craneSleep6": "نابا، الولايات المتحدة",
+ "craneSleep7": "بورتو، البرتغال",
+ "craneSleep8": "تولوم، المكسيك",
+ "craneEat5": "سول، كوريا الجنوبية",
+ "demoChipTitle": "الشرائح",
+ "demoChipSubtitle": "العناصر المضغوطة التي تمثل إدخال أو سمة أو إجراء",
+ "demoActionChipTitle": "شريحة الإجراءات",
+ "demoActionChipDescription": "شرائح الإجراءات هي مجموعة من الخيارات التي تشغّل إجراءً ذا صلة بالمحتوى الأساسي. ينبغي أن يكون ظهور شرائح الإجراءات في واجهة المستخدم ديناميكيًا ومناسبًا للسياق.",
+ "demoChoiceChipTitle": "شريحة الخيارات",
+ "demoChoiceChipDescription": "تمثل شرائح الخيارات خيارًا واحدًا من بين مجموعة. تتضمن شرائح الخيارات النصوص الوصفية ذات الصلة أو الفئات.",
+ "demoFilterChipTitle": "شريحة الفلتر",
+ "demoFilterChipDescription": "تستخدم شرائح الفلتر العلامات أو الكلمات الوصفية باعتبارها طريقة لفلترة المحتوى.",
+ "demoInputChipTitle": "شريحة الإدخال",
+ "demoInputChipDescription": "تمثل شرائح الإدخالات معلومة معقدة، مثل كيان (شخص، مكان، أو شئ) أو نص محادثة، في نمط مضغوط.",
+ "craneSleep9": "لشبونة، البرتغال",
+ "craneEat10": "لشبونة، البرتغال",
+ "demoCupertinoSegmentedControlDescription": "يُستخدَم للاختيار بين عدد من الخيارات يستبعد أحدها الآخر. عند اختيار خيار في عنصر تحكّم الشريحة، يتم إلغاء اختيار العنصر الآخر في عنصر تحكّم الشريحة.",
+ "chipTurnOnLights": "تشغيل الأضواء",
+ "chipSmall": "صغير",
+ "chipMedium": "متوسط",
+ "chipLarge": "كبير",
+ "chipElevator": "مصعَد",
+ "chipWasher": "غسّالة",
+ "chipFireplace": "موقد",
+ "chipBiking": "ركوب الدراجة",
+ "craneFormDiners": "مطاعم صغيرة",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على معاملة واحدة لم يتم ضبطها.}zero{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملة لم يتم ضبطها.}two{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على معاملتين ({count}) لم يتم ضبطهما.}few{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملات لم يتم ضبطها.}many{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملة لم يتم ضبطها.}other{يمكنك زيادة خصم الضرائب المحتملة. ضبط الفئات على {count} معاملة لم يتم ضبطها.}}",
+ "craneFormTime": "اختيار الوقت",
+ "craneFormLocation": "اختيار الموقع جغرافي",
+ "craneFormTravelers": "المسافرون",
+ "craneEat8": "أتلانتا، الولايات المتحدة",
+ "craneFormDestination": "اختيار الوجهة",
+ "craneFormDates": "اختيار تواريخ",
+ "craneFly": "الطيران",
+ "craneSleep": "السكون",
+ "craneEat": "المأكولات",
+ "craneFlySubhead": "استكشاف الرحلات حسب الوجهة",
+ "craneSleepSubhead": "استكشاف العقارات حسب الوجهة",
+ "craneEatSubhead": "استكشاف المطاعم حسب الوجهة",
+ "craneFlyStops": "{numberOfStops,plural, =0{بدون توقف}=1{محطة واحدة}two{محطتان ({numberOfStops})}few{{numberOfStops} محطات}many{{numberOfStops} محطة}other{{numberOfStops} محطة}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{ليس هناك مواقع متاحة.}=1{هناك موقع واحد متاح.}two{هناك موقعان ({totalProperties}) متاحان.}few{هناك {totalProperties} مواقع متاحة.}many{هناك {totalProperties} موقعًا متاحًا.}other{هناك {totalProperties} موقع متاح.}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{ما مِن مطاعم.}=1{مطعم واحد}two{مطعمان ({totalRestaurants})}few{{totalRestaurants} مطاعم}many{{totalRestaurants} مطعمًا}other{{totalRestaurants} مطعم}}",
+ "craneFly0": "أسبن، الولايات المتحدة",
+ "demoCupertinoSegmentedControlSubtitle": "عنصر تحكّم شريحة بنمط iOS",
+ "craneSleep10": "القاهرة، مصر",
+ "craneEat9": "مدريد، إسبانيا",
+ "craneFly1": "بيغ سور، الولايات المتحدة",
+ "craneEat7": "ناشفيل، الولايات المتحدة",
+ "craneEat6": "سياتل، الولايات المتحدة",
+ "craneFly8": "سنغافورة",
+ "craneEat4": "باريس، فرنسا",
+ "craneEat3": "بورتلاند، الولايات المتحدة",
+ "craneEat2": "قرطبة، الأرجنتين",
+ "craneEat1": "دالاس، الولايات المتحدة",
+ "craneEat0": "نابولي، إيطاليا",
+ "craneSleep11": "تايبيه، تايوان",
+ "craneSleep3": "هافانا، كوبا",
+ "shrineLogoutButtonCaption": "تسجيل الخروج",
+ "rallyTitleBills": "الفواتير",
+ "rallyTitleAccounts": "الحسابات",
+ "shrineProductVagabondSack": "حقيبة من ماركة Vagabond",
+ "rallyAccountDetailDataInterestYtd": "الفائدة منذ بداية العام حتى اليوم",
+ "shrineProductWhitneyBelt": "حزام \"ويتني\"",
+ "shrineProductGardenStrand": "خيوط زينة للحدائق",
+ "shrineProductStrutEarrings": "أقراط فاخرة",
+ "shrineProductVarsitySocks": "جوارب من نوع \"فارسيتي\"",
+ "shrineProductWeaveKeyring": "سلسلة مفاتيح Weave",
+ "shrineProductGatsbyHat": "قبعة \"غاتسبي\"",
+ "shrineProductShrugBag": "حقيبة كتف",
+ "shrineProductGiltDeskTrio": "طقم أدوات مكتبية ذهبية اللون من 3 قطع",
+ "shrineProductCopperWireRack": "رف سلكي نحاسي",
+ "shrineProductSootheCeramicSet": "طقم سيراميك باللون الأبيض الراقي",
+ "shrineProductHurrahsTeaSet": "طقم شاي مميّز",
+ "shrineProductBlueStoneMug": "قدح حجري أزرق",
+ "shrineProductRainwaterTray": "صينية عميقة",
+ "shrineProductChambrayNapkins": "مناديل \"شامبراي\"",
+ "shrineProductSucculentPlanters": "أحواض عصرية للنباتات",
+ "shrineProductQuartetTable": "طاولة رباعية الأرجل",
+ "shrineProductKitchenQuattro": "طقم أدوات للمطبخ من أربع قطع",
+ "shrineProductClaySweater": "بلوزة بلون الطين",
+ "shrineProductSeaTunic": "بلوزة بلون أزرق فاتح",
+ "shrineProductPlasterTunic": "بلوزة من نوع \"بلاستر\"",
+ "rallyBudgetCategoryRestaurants": "المطاعم",
+ "shrineProductChambrayShirt": "قميص من نوع \"شامبراي\"",
+ "shrineProductSeabreezeSweater": "سترة بلون أزرق بحري",
+ "shrineProductGentryJacket": "سترة رجالية باللون الأخضر الداكن",
+ "shrineProductNavyTrousers": "سروال بلون أزرق داكن",
+ "shrineProductWalterHenleyWhite": "والتر هينلي (أبيض)",
+ "shrineProductSurfAndPerfShirt": "قميص سيرف آند بيرف",
+ "shrineProductGingerScarf": "وشاح بألوان الزنجبيل",
+ "shrineProductRamonaCrossover": "قميص \"رامونا\" على شكل الحرف X",
+ "shrineProductClassicWhiteCollar": "ياقة بيضاء كلاسيكية",
+ "shrineProductSunshirtDress": "فستان يعكس أشعة الشمس",
+ "rallyAccountDetailDataInterestRate": "سعر الفائدة",
+ "rallyAccountDetailDataAnnualPercentageYield": "النسبة المئوية للعائد السنوي",
+ "rallyAccountDataVacation": "عطلة",
+ "shrineProductFineLinesTee": "قميص بخطوط رفيعة",
+ "rallyAccountDataHomeSavings": "المدخرات المنزلية",
+ "rallyAccountDataChecking": "الحساب الجاري",
+ "rallyAccountDetailDataInterestPaidLastYear": "الفائدة المدفوعة في العام الماضي",
+ "rallyAccountDetailDataNextStatement": "كشف الحساب التالي",
+ "rallyAccountDetailDataAccountOwner": "صاحب الحساب",
+ "rallyBudgetCategoryCoffeeShops": "المقاهي",
+ "rallyBudgetCategoryGroceries": "متاجر البقالة",
+ "shrineProductCeriseScallopTee": "قميص قصير الأكمام باللون الكرزي الفاتح",
+ "rallyBudgetCategoryClothing": "الملابس",
+ "rallySettingsManageAccounts": "إدارة الحسابات",
+ "rallyAccountDataCarSavings": "المدّخرات المخصّصة للسيارة",
+ "rallySettingsTaxDocuments": "المستندات الضريبية",
+ "rallySettingsPasscodeAndTouchId": "رمز المرور ومعرّف اللمس",
+ "rallySettingsNotifications": "إشعارات",
+ "rallySettingsPersonalInformation": "المعلومات الشخصية",
+ "rallySettingsPaperlessSettings": "إعدادات إنجاز الأعمال بدون ورق",
+ "rallySettingsFindAtms": "العثور على مواقع أجهزة الصراف الآلي",
+ "rallySettingsHelp": "المساعدة",
+ "rallySettingsSignOut": "تسجيل الخروج",
+ "rallyAccountTotal": "الإجمالي",
+ "rallyBillsDue": "الفواتير المستحقة",
+ "rallyBudgetLeft": "الميزانية المتبقية",
+ "rallyAccounts": "الحسابات",
+ "rallyBills": "الفواتير",
+ "rallyBudgets": "الميزانيات",
+ "rallyAlerts": "التنبيهات",
+ "rallySeeAll": "عرض الكل",
+ "rallyFinanceLeft": "المتبقي",
+ "rallyTitleOverview": "نظرة عامة",
+ "shrineProductShoulderRollsTee": "قميص واسعة بأكمام قصيرة",
+ "shrineNextButtonCaption": "التالي",
+ "rallyTitleBudgets": "الميزانيات",
+ "rallyTitleSettings": "الإعدادات",
+ "rallyLoginLoginToRally": "تسجيل الدخول إلى Rally",
+ "rallyLoginNoAccount": "أليس لديك حساب؟",
+ "rallyLoginSignUp": "الاشتراك",
+ "rallyLoginUsername": "اسم المستخدم",
+ "rallyLoginPassword": "كلمة المرور",
+ "rallyLoginLabelLogin": "تسجيل الدخول",
+ "rallyLoginRememberMe": "تذكُّر بيانات تسجيل الدخول إلى حسابي",
+ "rallyLoginButtonLogin": "تسجيل الدخول",
+ "rallyAlertsMessageHeadsUpShopping": "تنبيه: لقد استهلكت {percent} من ميزانية التسوّق لهذا الشهر.",
+ "rallyAlertsMessageSpentOnRestaurants": "أنفقت هذا الشهر مبلغ {amount} على تناول الطعام في المطاعم.",
+ "rallyAlertsMessageATMFees": "أنفقت {amount} كرسوم لأجهزة الصراف الآلي هذا الشهر",
+ "rallyAlertsMessageCheckingAccount": "عمل رائع! الرصيد الحالي في حسابك الجاري أعلى بنسبة {percent} من الشهر الماضي.",
+ "shrineMenuCaption": "القائمة",
+ "shrineCategoryNameAll": "الكل",
+ "shrineCategoryNameAccessories": "الإكسسوارات",
+ "shrineCategoryNameClothing": "الملابس",
+ "shrineCategoryNameHome": "المنزل",
+ "shrineLoginUsernameLabel": "اسم المستخدم",
+ "shrineLoginPasswordLabel": "كلمة المرور",
+ "shrineCancelButtonCaption": "إلغاء",
+ "shrineCartTaxCaption": "الضريبة:",
+ "shrineCartPageCaption": "سلة التسوّق",
+ "shrineProductQuantity": "الكمية: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{ما مِن عناصر.}=1{عنصر واحد}two{عنصران ({quantity})}few{{quantity} عناصر}many{{quantity} عنصرًا}other{{quantity} عنصر}}",
+ "shrineCartClearButtonCaption": "محو سلة التسوق",
+ "shrineCartTotalCaption": "الإجمالي",
+ "shrineCartSubtotalCaption": "الإجمالي الفرعي:",
+ "shrineCartShippingCaption": "الشحن:",
+ "shrineProductGreySlouchTank": "قميص رمادي اللون",
+ "shrineProductStellaSunglasses": "نظارات شمس من نوع \"ستيلا\"",
+ "shrineProductWhitePinstripeShirt": "قميص ذو خطوط بيضاء",
+ "demoTextFieldWhereCanWeReachYou": "على أي رقم يمكننا التواصل معك؟",
+ "settingsTextDirectionLTR": "من اليسار إلى اليمين",
+ "settingsTextScalingLarge": "كبير",
+ "demoBottomSheetHeader": "العنوان",
+ "demoBottomSheetItem": "السلعة {value}",
+ "demoBottomTextFieldsTitle": "حقول النص",
+ "demoTextFieldTitle": "حقول النص",
+ "demoTextFieldSubtitle": "سطر واحد من النص والأرقام القابلة للتعديل",
+ "demoTextFieldDescription": "تسمح حقول النص للمستخدمين بإدخال نص في واجهة مستخدم. وتظهر عادةً في النماذج ومربّعات الحوار.",
+ "demoTextFieldShowPasswordLabel": "عرض كلمة المرور",
+ "demoTextFieldHidePasswordLabel": "إخفاء كلمة المرور",
+ "demoTextFieldFormErrors": "يُرجى تصحيح الأخطاء باللون الأحمر قبل الإرسال.",
+ "demoTextFieldNameRequired": "الاسم مطلوب.",
+ "demoTextFieldOnlyAlphabeticalChars": "يُرجى إدخال حروف أبجدية فقط.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - يُرجى إدخال رقم هاتف صالح في الولايات المتحدة.",
+ "demoTextFieldEnterPassword": "يرجى إدخال كلمة مرور.",
+ "demoTextFieldPasswordsDoNotMatch": "كلمتا المرور غير متطابقتين.",
+ "demoTextFieldWhatDoPeopleCallYou": "بأي اسم يناديك الآخرون؟",
+ "demoTextFieldNameField": "الاسم*",
+ "demoBottomSheetButtonText": "عرض البطاقة السفلية",
+ "demoTextFieldPhoneNumber": "رقم الهاتف*",
+ "demoBottomSheetTitle": "البطاقة السفلية",
+ "demoTextFieldEmail": "البريد الإلكتروني",
+ "demoTextFieldTellUsAboutYourself": "أخبِرنا عن نفسك (مثلاً ما هي هواياتك المفضّلة أو ما هو مجال عملك؟)",
+ "demoTextFieldKeepItShort": "يُرجى الاختصار، هذا مجرد عرض توضيحي.",
+ "starterAppGenericButton": "زر",
+ "demoTextFieldLifeStory": "قصة حياة",
+ "demoTextFieldSalary": "الراتب",
+ "demoTextFieldUSD": "دولار أمريكي",
+ "demoTextFieldNoMoreThan": "يجب ألا تزيد عن 8 أحرف.",
+ "demoTextFieldPassword": "كلمة المرور*",
+ "demoTextFieldRetypePassword": "أعِد كتابة كلمة المرور*",
+ "demoTextFieldSubmit": "إرسال",
+ "demoBottomNavigationSubtitle": "شريط تنقّل سفلي شبه مرئي",
+ "demoBottomSheetAddLabel": "إضافة",
+ "demoBottomSheetModalDescription": "تعتبر البطاقة السفلية المقيِّدة بديلاً لقائمة أو مربّع حوار ولا تسمح للمستخدم بالتفاعل مع المحتوى الآخر على الشاشة.",
+ "demoBottomSheetModalTitle": "البطاقة السفلية المقيِّدة",
+ "demoBottomSheetPersistentDescription": "تعرض البطاقة السفلية العادية معلومات تكميلية للمحتوى الأساسي للتطبيق. ولا تختفي هذه البطاقة عندما يتفاعل المستخدم مع المحتوى الآخر على الشاشة.",
+ "demoBottomSheetPersistentTitle": "البطاقة السفلية العادية",
+ "demoBottomSheetSubtitle": "البطاقات السفلية المقيِّدة والعادية",
+ "demoTextFieldNameHasPhoneNumber": "رقم هاتف {name} هو {phoneNumber}.",
+ "buttonText": "زر",
+ "demoTypographyDescription": "تعريف أساليب الخط المختلفة في التصميم المتعدد الأبعاد",
+ "demoTypographySubtitle": "جميع أنماط النص المحدّدة مسبقًا",
+ "demoTypographyTitle": "أسلوب الخط",
+ "demoFullscreenDialogDescription": "تحدِّد خاصية fullscreenDialog ما إذا كانت الصفحة الواردة هي مربع حوار نمطي بملء الشاشة.",
+ "demoFlatButtonDescription": "يتلوّن الزر المنبسط عند الضغط عليه ولكن لا يرتفع. ينصح باستخدام الأزرار المنبسطة على أشرطة الأدوات وفي مربعات الحوار وداخل المساحة المتروكة",
+ "demoBottomNavigationDescription": "تعرض أشرطة التنقل السفلية بين ثلاث وخمس وجهات في الجزء السفلي من الشاشة. ويتم تمثيل كل وجهة برمز ووسم نصي اختياري. عند النقر على رمز التنقل السفلي، يتم نقل المستخدم إلى وجهة التنقل ذات المستوى الأعلى المرتبطة بذلك الرمز.",
+ "demoBottomNavigationSelectedLabel": "الملصق المُختار",
+ "demoBottomNavigationPersistentLabels": "التصنيفات المستمرة",
+ "starterAppDrawerItem": "السلعة {value}",
+ "demoTextFieldRequiredField": "تشير علامة * إلى حقل مطلوب.",
+ "demoBottomNavigationTitle": "شريط التنقل السفلي",
+ "settingsLightTheme": "فاتح",
+ "settingsTheme": "التصميم",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "من اليمين إلى اليسار",
+ "settingsTextScalingHuge": "ضخم",
+ "cupertinoButton": "زر",
+ "settingsTextScalingNormal": "عادي",
+ "settingsTextScalingSmall": "صغير",
+ "settingsSystemDefault": "النظام",
+ "settingsTitle": "الإعدادات",
+ "rallyDescription": "تطبيق للتمويل الشخصي",
+ "aboutDialogDescription": "للاطّلاع على رمز المصدر لهذا التطبيق، يُرجى زيارة {value}.",
+ "bottomNavigationCommentsTab": "التعليقات",
+ "starterAppGenericBody": "النص",
+ "starterAppGenericHeadline": "العنوان",
+ "starterAppGenericSubtitle": "العنوان الفرعي",
+ "starterAppGenericTitle": "العنوان",
+ "starterAppTooltipSearch": "البحث",
+ "starterAppTooltipShare": "مشاركة",
+ "starterAppTooltipFavorite": "الإضافة إلى السلع المفضّلة",
+ "starterAppTooltipAdd": "إضافة",
+ "bottomNavigationCalendarTab": "التقويم",
+ "starterAppDescription": "تطبيق نموذجي يتضمّن تنسيقًا تفاعليًا",
+ "starterAppTitle": "تطبيق نموذجي",
+ "aboutFlutterSamplesRepo": "عينات Flutter في مستودع Github",
+ "bottomNavigationContentPlaceholder": "عنصر نائب لعلامة تبويب {title}",
+ "bottomNavigationCameraTab": "الكاميرا",
+ "bottomNavigationAlarmTab": "المنبّه",
+ "bottomNavigationAccountTab": "الحساب",
+ "demoTextFieldYourEmailAddress": "عنوان بريدك الإلكتروني",
+ "demoToggleButtonDescription": "يمكن استخدام أزرار التبديل لتجميع الخيارات المرتبطة. لتأكيد مجموعات أزرار التبديل المرتبطة، يجب أن تشترك إحدى المجموعات في حاوية مشتركة.",
+ "colorsGrey": "رمادي",
+ "colorsBrown": "بني",
+ "colorsDeepOrange": "برتقالي داكن",
+ "colorsOrange": "برتقالي",
+ "colorsAmber": "كهرماني",
+ "colorsYellow": "أصفر",
+ "colorsLime": "ليموني",
+ "colorsLightGreen": "أخضر فاتح",
+ "colorsGreen": "أخضر",
+ "homeHeaderGallery": "معرض الصور",
+ "homeHeaderCategories": "الفئات",
+ "shrineDescription": "تطبيق عصري للبيع بالتجزئة",
+ "craneDescription": "تطبيق سفر مُخصَّص",
+ "homeCategoryReference": "الأنماط والوسائط المرجعية",
+ "demoInvalidURL": "تعذّر عرض عنوان URL:",
+ "demoOptionsTooltip": "الخيارات",
+ "demoInfoTooltip": "معلومات",
+ "demoCodeTooltip": "نموذج رمز",
+ "demoDocumentationTooltip": "وثائق واجهة برمجة التطبيقات",
+ "demoFullscreenTooltip": "ملء الشاشة",
+ "settingsTextScaling": "تغيير حجم النص",
+ "settingsTextDirection": "اتجاه النص",
+ "settingsLocale": "اللغة",
+ "settingsPlatformMechanics": "آليات الأنظمة الأساسية",
+ "settingsDarkTheme": "داكن",
+ "settingsSlowMotion": "التصوير البطيء",
+ "settingsAbout": "نبذة عن معرض Flutter",
+ "settingsFeedback": "إرسال التعليقات",
+ "settingsAttribution": "من تصميم TOASTER في لندن",
+ "demoButtonTitle": "الأزرار",
+ "demoButtonSubtitle": "أزرار منبسطة وبارزة ومخطَّطة وغيرها",
+ "demoFlatButtonTitle": "الزر المنبسط",
+ "demoRaisedButtonDescription": "تضيف الأزرار البارزة بُعدًا إلى التخطيطات المنبسطة عادةً. وتبرِز الوظائف المتوفرة في المساحات العريضة أو المكدَّسة.",
+ "demoRaisedButtonTitle": "الزر البارز",
+ "demoOutlineButtonTitle": "Outline Button",
+ "demoOutlineButtonDescription": "تصبح الأزرار المخطَّطة غير شفافة وترتفع عند الضغط عليها. وغالبًا ما يتم إقرانها مع الأزرار البارزة للإشارة إلى إجراء ثانوي بديل.",
+ "demoToggleButtonTitle": "أزرار التبديل",
+ "colorsTeal": "أزرق مخضرّ",
+ "demoFloatingButtonTitle": "زر الإجراء العائم",
+ "demoFloatingButtonDescription": "زر الإجراء العائم هو زر على شكل رمز دائري يتم تمريره فوق المحتوى للترويج لاتخاذ إجراء أساسي في التطبيق.",
+ "demoDialogTitle": "مربعات الحوار",
+ "demoDialogSubtitle": "مربعات حوار بسيطة ومخصّصة للتنبيهات وبملء الشاشة",
+ "demoAlertDialogTitle": "التنبيه",
+ "demoAlertDialogDescription": "يخبر مربع حوار التنبيهات المستخدم بالحالات التي تتطلب تأكيد الاستلام. ويشتمل مربع حوار التنبيهات على عنوان اختياري وقائمة إجراءات اختيارية.",
+ "demoAlertTitleDialogTitle": "تنبيه مزوّد بعنوان",
+ "demoSimpleDialogTitle": "بسيط",
+ "demoSimpleDialogDescription": "يتيح مربع الحوار البسيط للمستخدم إمكانية الاختيار من بين عدة خيارات. ويشتمل مربع الحوار البسيط على عنوان اختياري يتم عرضه أعلى هذه الخيارات.",
+ "demoFullscreenDialogTitle": "ملء الشاشة",
+ "demoCupertinoButtonsTitle": "الأزرار",
+ "demoCupertinoButtonsSubtitle": "أزرار مستوحاة من نظام التشغيل iOS",
+ "demoCupertinoButtonsDescription": "زر مستوحى من نظام التشغيل iOS. يتم عرض هذا الزر على شكل نص و/أو رمز يتلاشى ويظهر بالتدريج عند اللمس. وقد يكون مزوّدًا بخلفية اختياريًا.",
+ "demoCupertinoAlertsTitle": "التنبيهات",
+ "demoCupertinoAlertsSubtitle": "مربعات حوار التنبيهات المستوحاة من نظام التشغيل iOS",
+ "demoCupertinoAlertTitle": "تنبيه",
+ "demoCupertinoAlertDescription": "يخبر مربع حوار التنبيهات المستخدم بالحالات التي تتطلب تأكيد الاستلام. ويشتمل مربع حوار التنبيهات على عنوان اختياري ومحتوى اختياري وقائمة إجراءات اختيارية. ويتم عرض العنوان أعلى المحتوى بينما تُعرض الإجراءات أسفل المحتوى.",
+ "demoCupertinoAlertWithTitleTitle": "تنبيه يتضمّن عنوانًا",
+ "demoCupertinoAlertButtonsTitle": "تنبيه مزوّد بأزرار",
+ "demoCupertinoAlertButtonsOnlyTitle": "أزرار التنبيه فقط",
+ "demoCupertinoActionSheetTitle": "ورقة الإجراءات",
+ "demoCupertinoActionSheetDescription": "ورقة الإجراءات هي ورقة أنماط معيّنة للتنبيهات تقدّم للمستخدم مجموعة مكوّنة من خيارين أو أكثر مرتبطة بالسياق الحالي. ويمكن أن تتضمّن ورقة الإجراءات عنوانًا ورسالة إضافية وقائمة إجراءات.",
+ "demoColorsTitle": "الألوان",
+ "demoColorsSubtitle": "جميع الألوان المحدّدة مسبقًا",
+ "demoColorsDescription": "ثوابت اللون وعينات الألوان التي تُمثل لوحة ألوان التصميم المتعدد الأبعاد",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "إنشاء",
+ "dialogSelectedOption": "لقد اخترت القيمة التالية: \"{value}\"",
+ "dialogDiscardTitle": "هل تريد تجاهل المسودة؟",
+ "dialogLocationTitle": "هل تريد استخدام خدمة الموقع الجغرافي من Google؟",
+ "dialogLocationDescription": "يمكنك السماح لشركة Google بمساعدة التطبيقات في تحديد الموقع الجغرافي. ويعني هذا أنه سيتم إرسال بيانات مجهولة المصدر عن الموقع الجغرافي إلى Google، حتى عند عدم تشغيل أي تطبيقات.",
+ "dialogCancel": "إلغاء",
+ "dialogDiscard": "تجاهل",
+ "dialogDisagree": "لا أوافق",
+ "dialogAgree": "موافق",
+ "dialogSetBackup": "تحديد حساب النسخة الاحتياطية",
+ "colorsBlueGrey": "أزرق رمادي",
+ "dialogShow": "عرض مربع الحوار",
+ "dialogFullscreenTitle": "مربع حوار بملء الشاشة",
+ "dialogFullscreenSave": "حفظ",
+ "dialogFullscreenDescription": "عرض توضيحي لمربع حوار بملء الشاشة",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "زر مزوّد بخلفية",
+ "cupertinoAlertCancel": "إلغاء",
+ "cupertinoAlertDiscard": "تجاهل",
+ "cupertinoAlertLocationTitle": "هل تريد السماح لخدمة \"خرائط Google\" بالدخول إلى موقعك الجغرافي أثناء استخدام التطبيق؟",
+ "cupertinoAlertLocationDescription": "سيتم عرض الموقع الجغرافي الحالي على الخريطة واستخدامه لتوفير الاتجاهات ونتائج البحث عن الأماكن المجاورة وأوقات التنقّل المقدرة.",
+ "cupertinoAlertAllow": "السماح",
+ "cupertinoAlertDontAllow": "عدم السماح",
+ "cupertinoAlertFavoriteDessert": "Select Favorite Dessert",
+ "cupertinoAlertDessertDescription": "يُرجى اختيار نوع الحلوى المفضّل لك من القائمة أدناه. وسيتم استخدام اختيارك في تخصيص القائمة المقترَحة للمطاعم في منطقتك.",
+ "cupertinoAlertCheesecake": "كعكة بالجبن",
+ "cupertinoAlertTiramisu": "تيراميسو",
+ "cupertinoAlertApplePie": "فطيرة التفاح",
+ "cupertinoAlertChocolateBrownie": "كعكة بالشوكولاتة والبندق",
+ "cupertinoShowAlert": "عرض التنبيه",
+ "colorsRed": "أحمر",
+ "colorsPink": "وردي",
+ "colorsPurple": "أرجواني",
+ "colorsDeepPurple": "أرجواني داكن",
+ "colorsIndigo": "نيليّ",
+ "colorsBlue": "أزرق",
+ "colorsLightBlue": "أزرق فاتح",
+ "colorsCyan": "سماوي",
+ "dialogAddAccount": "إضافة حساب",
+ "Gallery": "معرض الصور",
+ "Categories": "الفئات",
+ "SHRINE": "ضريح",
+ "Basic shopping app": "تطبيق التسوّق الأساسي",
+ "RALLY": "سباق",
+ "CRANE": "رافعة",
+ "Travel app": "تطبيق السفر",
+ "MATERIAL": "مادة",
+ "CUPERTINO": "كوبيرتينو",
+ "REFERENCE STYLES & MEDIA": "الأنماط والوسائط المرجعية"
+}
diff --git a/gallery/lib/l10n/intl_as.arb b/gallery/lib/l10n/intl_as.arb
new file mode 100644
index 0000000..4537c2e
--- /dev/null
+++ b/gallery/lib/l10n/intl_as.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "বিকল্পসমূহ চাওক",
+ "demoOptionsFeatureDescription": "এই ডেম’টোৰ বাবে উপলব্ধ বিকল্পসমূহ চাবলৈ ইয়াত টিপক।",
+ "demoCodeViewerCopyAll": "সকলো প্ৰতিলিপি কৰক",
+ "shrineScreenReaderRemoveProductButton": "{product} আঁতৰাওক",
+ "shrineScreenReaderProductAddToCart": "কাৰ্টত যোগ কৰক",
+ "shrineScreenReaderCart": "{quantity,plural, =0{শ্বপিং কাৰ্ট, কোনো বস্তু নাই}=1{শ্বপিং কাৰ্ট, ১ টা বস্তু}one{শ্বপিং কার্ট, {quantity} টা বস্তু}other{শ্বপিং কার্ট, {quantity} টা বস্তু}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "ক্লিপব'ৰ্ডলৈ প্ৰতিলিপি কৰিব পৰা নগ'ল: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "ক্লিপব’ৰ্ডলৈ প্ৰতিলিপি কৰা হ’ল।",
+ "craneSleep8SemanticLabel": "এটা উপকূলৰ ওপৰত মায়া সভ্যতাৰ ধ্বংসাৱশেষ",
+ "craneSleep4SemanticLabel": "পৰ্বতৰ সন্মুখত থকা এটা হ্ৰদৰ কাষৰীয়া হোটেল",
+ "craneSleep2SemanticLabel": "মাচু পিচু চিটাডেল",
+ "craneSleep1SemanticLabel": "চিৰসেউজ উদ্ভিদৰ এক বৰফাবৃত প্ৰাকৃতিক দৃশ্যৰ সৈতে শ্ব্যালেই",
+ "craneSleep0SemanticLabel": "পানীৰ ওপৰত সজোৱা বঙলা",
+ "craneFly13SemanticLabel": "তাল গজ থকা সাগৰৰ কাষৰীয়া সাঁতোৰা পুখুৰী",
+ "craneFly12SemanticLabel": "তাল গছৰ সৈতে সাঁতোৰা পুখুৰী",
+ "craneFly11SemanticLabel": "সাগৰত থকা ইটাৰ আলোকস্তম্ভ",
+ "craneFly10SemanticLabel": "অল-আঝাৰ মছজিদটো সূৰ্যাস্তৰ সময়ত সুউচ্চ দেখা গৈছে",
+ "craneFly9SemanticLabel": "এখন পুৰণি নীলা গাড়ীত হালি থকা মানুহ",
+ "craneFly8SemanticLabel": "ছুপাৰট্ৰী গ্ৰুভ",
+ "craneEat9SemanticLabel": "পেষ্ট্ৰিসহ কেফেৰ কাউণ্টাৰ",
+ "craneEat2SemanticLabel": "বার্গাৰ",
+ "craneFly5SemanticLabel": "পৰ্বতৰ সন্মুখত থকা এটা হ্ৰদৰ কাষৰীয়া হোটেল",
+ "demoSelectionControlsSubtitle": "চেকবাকচ, ৰেডিঅ’ বুটাম আৰু ছুইচ",
+ "craneEat10SemanticLabel": "এটা বৃহৎ পাষ্ট্ৰামি ছেণ্ডৱিচ ধৰি থকা মহিলা",
+ "craneFly4SemanticLabel": "পানীৰ ওপৰত সজোৱা বঙলা",
+ "craneEat7SemanticLabel": "বেকাৰীৰ প্ৰৱেশদ্বাৰ",
+ "craneEat6SemanticLabel": "মিছামাছৰ ব্যঞ্জন",
+ "craneEat5SemanticLabel": "ৰেষ্টুৰাৰ কলাসুলভ বহা ঠাই",
+ "craneEat4SemanticLabel": "চকলেটৰ মিষ্টান্ন",
+ "craneEat3SemanticLabel": "কোৰিয়ান টাক’",
+ "craneFly3SemanticLabel": "মাচু পিচু চিটাডেল",
+ "craneEat1SemanticLabel": "ভোজনৰ সময়ত ব্যৱহৃত শৈলীৰ টুলৰ সৈতে খালী বাৰ",
+ "craneEat0SemanticLabel": "খৰিৰ ভাতীত থকা পিজ্জা",
+ "craneSleep11SemanticLabel": "টাইপেই ১০১ স্কাইস্ক্ৰেপাৰ",
+ "craneSleep10SemanticLabel": "অল-আঝাৰ মছজিদটো সূৰ্যাস্তৰ সময়ত সুউচ্চ দেখা গৈছে",
+ "craneSleep9SemanticLabel": "সাগৰত থকা ইটাৰ আলোকস্তম্ভ",
+ "craneEat8SemanticLabel": "ক্ৰ’ফিশ্বৰ প্লেট",
+ "craneSleep7SemanticLabel": "ৰাইবেৰিয়া স্কুয়েৰত ৰঙীন আবাস",
+ "craneSleep6SemanticLabel": "তাল গছৰ সৈতে সাঁতোৰা পুখুৰী",
+ "craneSleep5SemanticLabel": "পথাৰত থকা তম্বু",
+ "settingsButtonCloseLabel": "ছেটিংসমূহ বন্ধ কৰক",
+ "demoSelectionControlsCheckboxDescription": "চেকবাকচসমূহে এটা ছেটৰ পৰা একাধিক বিকল্প বাছনি কৰিবলৈ ব্যৱহাৰকাৰীক অনুমতি দিয়ে। এটা সাধাৰণ চেকবাকচৰ মান সঁচা অথবা মিছা হ’ব পাৰে আৰু এটা ট্ৰাইষ্টেট চেকবাকচৰ কোনো মান নাথাকিবও পাৰে।",
+ "settingsButtonLabel": "ছেটিংসমূহ",
+ "demoListsTitle": "সূচীসমূহ",
+ "demoListsSubtitle": "স্ক্ৰ’লিং সূচীৰ লে’আউটসমূহ",
+ "demoListsDescription": "এটা একক স্থিৰ উচ্চতাৰ শাৰী য’ত সচৰাচৰ কিছুমান পাঠ তথা লীডিং অথবা ট্ৰেইলিং আইকন থাকে।",
+ "demoOneLineListsTitle": "এটা শাৰী",
+ "demoTwoLineListsTitle": "দুটা শাৰী",
+ "demoListsSecondary": "গৌণ পাঠ",
+ "demoSelectionControlsTitle": "বাছনি নিয়ন্ত্ৰণসমূহ",
+ "craneFly7SemanticLabel": "মাউণ্ট ৰুশ্বম’ৰ",
+ "demoSelectionControlsCheckboxTitle": "চেকবাকচ",
+ "craneSleep3SemanticLabel": "এখন পুৰণি নীলা গাড়ীত হালি থকা মানুহ",
+ "demoSelectionControlsRadioTitle": "ৰেডিঅ’",
+ "demoSelectionControlsRadioDescription": "ৰেডিঅ’ বুটামসমূহে এটা ছেটৰ পৰা এটা বিকল্প বাছনি কৰিবলৈ ব্যৱহাৰকাৰীক অনুমতি দিয়ে। যদি আপুনি ভাবে যে ব্যৱহাৰকাৰীয়ে উপলব্ধ সকলো বিকল্প এটাৰ কাষত অন্য এটাকৈ দেখা প্ৰয়োজন তেনে ক্ষেত্ৰত কেৱল এটা বাছনি কৰিবলৈ ৰেডিঅ’ বুটামসমূহ ব্যৱহাৰ কৰক।",
+ "demoSelectionControlsSwitchTitle": "সলনি কৰক",
+ "demoSelectionControlsSwitchDescription": "এটা একক ছেটিঙৰ বিকল্প অন/অফ ছুইচসমূহে ট’গল কৰে। ছুইচটোৱে নিয়ন্ত্ৰণ কৰা বিকল্পটো তথা সেয়া কি স্থিতিত আছে তাক আনুষংগিক ইনলাইন লেবেলটোৱে স্পষ্ট কৰা উচিত।",
+ "craneFly0SemanticLabel": "চিৰসেউজ উদ্ভিদৰ এক বৰফাবৃত প্ৰাকৃতিক দৃশ্যৰ সৈতে শ্ব্যালেই",
+ "craneFly1SemanticLabel": "পথাৰত থকা তম্বু",
+ "craneFly2SemanticLabel": "বৰফেৰে আৱৰা পৰ্বতৰ সন্মুখত প্ৰাৰ্থনাৰ পতাকা",
+ "craneFly6SemanticLabel": "পালাচিও ড্য বেলাছ আৰ্টেছৰ আকাশী দৃশ্য",
+ "rallySeeAllAccounts": "সকলো একাউণ্ট চাওক",
+ "rallyBillAmount": "{billName} বিল {amount} পৰিশোধ কৰাৰ শেষ তাৰিখ {date}।",
+ "shrineTooltipCloseCart": "কাৰ্ট বন্ধ কৰক",
+ "shrineTooltipCloseMenu": "মেনু বন্ধ কৰক",
+ "shrineTooltipOpenMenu": "মেনু খোলক",
+ "shrineTooltipSettings": "ছেটিংসমূহ",
+ "shrineTooltipSearch": "সন্ধান কৰক",
+ "demoTabsDescription": "টেবসমূহে সমলক বিভিন্ন স্ক্ৰীনসমূহত, ডেটা ছেটসমূহত আৰু অন্য ভাব-বিনিময়সমূহত সংগঠিত কৰে।",
+ "demoTabsSubtitle": "স্বতন্ত্ৰভাৱে স্ক্ৰ’ল কৰিবপৰা ভিউসমূহৰ সৈতে টেবসমূহ",
+ "demoTabsTitle": "টেবসমূহ",
+ "rallyBudgetAmount": "{budgetName}ৰ {amountTotal}ৰ ভিতৰত {amountUsed} ব্যৱহাৰ কৰা হৈছে, {amountLeft} বাকী আছে",
+ "shrineTooltipRemoveItem": "বস্তু আঁতৰাওক",
+ "rallyAccountAmount": "{accountName} একাউণ্ট {accountNumber}ত {amount} জমা কৰা হৈছে।",
+ "rallySeeAllBudgets": "সকলো বাজেট চাওক",
+ "rallySeeAllBills": "সকলো বিল চাওক",
+ "craneFormDate": "তাৰিখ বাছনি কৰক",
+ "craneFormOrigin": "যাত্ৰা আৰম্ভ কৰাৰ স্থান বাছনি কৰক",
+ "craneFly2": "খুমবু ভেলী, নেপাল",
+ "craneFly3": "মাশ্বু পিচশ্বু, পেৰু",
+ "craneFly4": "মালে, মালদ্বীপ",
+ "craneFly5": "ভিজনাও, ছুইজাৰলেণ্ড",
+ "craneFly6": "মেক্সিক’ চহৰ, মেক্সিক’",
+ "craneFly7": "মাউণ্ট ৰাশ্বম'ৰ, মাৰ্কিন যুক্তৰাষ্ট্ৰ",
+ "settingsTextDirectionLocaleBased": "ল’কেল ভিত্তিক",
+ "craneFly9": "হানাভা, কিউবা",
+ "craneFly10": "কাইৰ', ঈজিপ্ত",
+ "craneFly11": "লিছবন, পর্তুগাল",
+ "craneFly12": "নাপা, মাৰ্কিন যুক্তৰাষ্ট্ৰ",
+ "craneFly13": "বালি, ইণ্ডোনেছিয়া",
+ "craneSleep0": "মালে, মালদ্বীপ",
+ "craneSleep1": "এছপেন, মার্কিন যুক্তৰাষ্ট্ৰ",
+ "craneSleep2": "মাশ্বু পিচশ্বু, পেৰু",
+ "demoCupertinoSegmentedControlTitle": "বিভাজিত নিয়ন্ত্ৰণ",
+ "craneSleep4": "ভিজনাও, ছুইজাৰলেণ্ড",
+ "craneSleep5": "বিগ ছুৰ, মাৰ্কিন যুক্তৰাষ্ট্ৰ",
+ "craneSleep6": "নাপা, মাৰ্কিন যুক্তৰাষ্ট্ৰ",
+ "craneSleep7": "প'র্ট', পর্তুগাল",
+ "craneSleep8": "টুলুম, মেক্সিকো",
+ "craneEat5": "ছিউল, দক্ষিণ কোৰিয়া",
+ "demoChipTitle": "চিপসমূহ",
+ "demoChipSubtitle": "কোনো ইনপুট, বৈশিষ্ট্য অথবা কার্য প্ৰতিনিধিত্ব কৰা সংক্ষিপ্ত উপাদানবোৰ",
+ "demoActionChipTitle": "কার্যৰ চিপ",
+ "demoActionChipDescription": "কার্যৰ চিপসমূহ প্ৰাথমিক সমল সম্পর্কীয় কোনো কার্য সূচনা কৰা বিকল্পসমূহৰ এক ছেট। কার্যৰ চিপসমূহ কোনো ইউআইত পৰিৱৰ্তনশীলভাৱে আৰু প্ৰাসংগিতা অনুসৰি প্ৰদর্শন হোৱা উচিত।",
+ "demoChoiceChipTitle": "পচন্দৰ চিপ",
+ "demoChoiceChipDescription": "পচন্দৰ চিপসমূহে এটা ছেটৰ পৰা এটা একক পচন্দ প্ৰতিনিধিত্ব কৰে। পচন্দৰ চিপসমূহত সমল সম্পর্কীয় বিৱৰণমূলক পাঠ অথবা শিতানসমূহ অন্তর্ভুক্ত হয়।",
+ "demoFilterChipTitle": "ফিল্টাৰ চিপ",
+ "demoFilterChipDescription": "ফিল্টাৰ চিপসমূহে সমল ফিল্টাৰ কৰাৰ উপায় হিচাপে টেগসমূহ অথবা বিৱৰণমূলক শব্দবোৰ ব্যৱহাৰ কৰে।",
+ "demoInputChipTitle": "ইনপুট চ্চিপ",
+ "demoInputChipDescription": "ইনপুট চিপসমূহে এক জটিল তথ্য সংক্ষিপ্ত ৰূপত প্ৰতিনিধিত্ব কৰে, যেনে এটা সত্ত্বা (লোক, ঠাই অথবা বস্তু) অথবা বার্তালাপৰ পাঠ।",
+ "craneSleep9": "লিছবন, পর্তুগাল",
+ "craneEat10": "লিছবন, পর্তুগাল",
+ "demoCupertinoSegmentedControlDescription": "এটা ব্যৱহাৰ কৰাৰ সময়ত অন্য এটা ব্যৱহাৰ কৰিব নোৱাৰা বিকল্পসমূহৰ মাজৰ পৰা বাছনি কৰিবলৈ ব্যৱহাৰ কৰা হয়। বিভাজিত নিয়ন্ত্ৰণত এটা বিকল্প বাছনি কৰিলে, বিভাজিত নিয়ন্ত্ৰণত অন্য বিকল্পসমূহ বাছনি কৰিব নোৱাৰা হয়।",
+ "chipTurnOnLights": "লাইটসমূহ অন কৰক",
+ "chipSmall": "সৰু",
+ "chipMedium": "মধ্যমীয়া",
+ "chipLarge": "ডাঙৰ",
+ "chipElevator": "এলিভে'টৰ",
+ "chipWasher": "ৱাশ্বাৰ",
+ "chipFireplace": "জুহাল আছে",
+ "chipBiking": "বাইকিং",
+ "craneFormDiners": "নৈশ আহাৰ",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{আপোনাৰ সম্ভাব্য কৰ কটাৰ পৰিমাণ বৃদ্ধি কৰক! ১ টা আবণ্টন নকৰা লেনদেনত শিতানসমূহ আবণ্টন কৰক।}one{আপোনাৰ সম্ভাব্য কৰ কটাৰ পৰিমাণ বৃদ্ধি কৰক! {count} টা আবণ্টন নকৰা লেনদেনত শিতানসমূহ আবণ্টন কৰক।}other{আপোনাৰ সম্ভাব্য কৰ কটাৰ পৰিমাণ বৃদ্ধি কৰক! {count} টা আবণ্টন নকৰা লেনদেনত শিতানসমূহ আবণ্টন কৰক।}}",
+ "craneFormTime": "সময় বাছনি কৰক",
+ "craneFormLocation": "অৱস্থান বাছনি কৰক",
+ "craneFormTravelers": "ভ্ৰমণকাৰীসকল",
+ "craneEat8": "আটলাণ্টা, মাৰ্কিন যুক্তৰাষ্ট্ৰ",
+ "craneFormDestination": "গন্তব্যস্থান বাছনি কৰক",
+ "craneFormDates": "তাৰিখবোৰ বাছনি কৰক",
+ "craneFly": "উৰণ",
+ "craneSleep": "টোপনি",
+ "craneEat": "খোৱা",
+ "craneFlySubhead": "গন্তব্যস্থানৰ অনুসৰি ফ্লাইটবোৰ অন্বেষণ কৰক",
+ "craneSleepSubhead": "গন্তব্যস্থান অনুসৰি সম্পত্তিসমূহ অন্বেষণ কৰক",
+ "craneEatSubhead": "গন্তব্যস্থান অনুসৰি ৰেষ্টুৰেণ্টসমূহ অন্বেষণ কৰক",
+ "craneFlyStops": "{numberOfStops,plural, =0{কোনো আস্থান নাই}=1{১ টা আস্থান}one{{numberOfStops} টা আস্থান}other{{numberOfStops} টা আস্থান}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{কোনো উপলব্ধ সম্পত্তি নাই}=1{১ টা উপলব্ধ সম্পত্তি}one{{totalProperties} টা উপলব্ধ সম্পত্তি}other{{totalProperties} টা উপলব্ধ সম্পত্তি}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{কোনো ৰেষ্টুৰেণ্ট নাই}=1{১ খন ৰেষ্টুৰেণ্ট}one{{totalRestaurants} খন ৰেষ্টুৰেণ্ট}other{{totalRestaurants} খন ৰেষ্টুৰেণ্ট}}",
+ "craneFly0": "এছপেন, মার্কিন যুক্তৰাষ্ট্ৰ",
+ "demoCupertinoSegmentedControlSubtitle": "iOS-শৈলীৰ বিভাজিত নিয়ন্ত্ৰণ",
+ "craneSleep10": "কাইৰ', ঈজিপ্ত",
+ "craneEat9": "মাদ্ৰিদ, স্পেইন",
+ "craneFly1": "বিগ ছুৰ, মাৰ্কিন যুক্তৰাষ্ট্ৰ",
+ "craneEat7": "নাশ্বভিল্লে, মার্কিন যুক্তৰাষ্ট্ৰ",
+ "craneEat6": "ছিট্টেল, আমেৰিকা যুক্তৰাষ্ট্ৰ",
+ "craneFly8": "ছিংগাপুৰ",
+ "craneEat4": "পেৰিছ, ফ্ৰান্স",
+ "craneEat3": "পৰ্টলেণ্ড, মাৰ্কিন যুক্তৰাষ্ট্ৰ",
+ "craneEat2": "কৰড'বা, আর্জেণ্টিনা",
+ "craneEat1": "ডাল্লাছ, মার্কিন যুক্তৰাষ্ট্ৰ",
+ "craneEat0": "নেপলচ, ইটালী",
+ "craneSleep11": "তাইপেই, তাইৱান",
+ "craneSleep3": "হানাভা, কিউবা",
+ "shrineLogoutButtonCaption": "লগ আউট কৰক",
+ "rallyTitleBills": "বিলসমূহ",
+ "rallyTitleAccounts": "একাউণ্টসমূহ",
+ "shrineProductVagabondSack": "Vagabond sack",
+ "rallyAccountDetailDataInterestYtd": "সুদ YTD",
+ "shrineProductWhitneyBelt": "Whitney belt",
+ "shrineProductGardenStrand": "Garden strand",
+ "shrineProductStrutEarrings": "Strut earrings",
+ "shrineProductVarsitySocks": "Varsity socks",
+ "shrineProductWeaveKeyring": "Weave keyring",
+ "shrineProductGatsbyHat": "Gatsby hat",
+ "shrineProductShrugBag": "Shrug bag",
+ "shrineProductGiltDeskTrio": "Gilt desk trio",
+ "shrineProductCopperWireRack": "Copper wire rack",
+ "shrineProductSootheCeramicSet": "Soothe ceramic set",
+ "shrineProductHurrahsTeaSet": "Hurrahs tea set",
+ "shrineProductBlueStoneMug": "Blue stone mug",
+ "shrineProductRainwaterTray": "Rainwater tray",
+ "shrineProductChambrayNapkins": "Chambray napkins",
+ "shrineProductSucculentPlanters": "Succulent planters",
+ "shrineProductQuartetTable": "Quartet table",
+ "shrineProductKitchenQuattro": "Kitchen quattro",
+ "shrineProductClaySweater": "Clay sweater",
+ "shrineProductSeaTunic": "Sea tunic",
+ "shrineProductPlasterTunic": "Plaster tunic",
+ "rallyBudgetCategoryRestaurants": "ৰেষ্টুৰেণ্টসমূহ",
+ "shrineProductChambrayShirt": "Chambray shirt",
+ "shrineProductSeabreezeSweater": "Seabreeze sweater",
+ "shrineProductGentryJacket": "Gentry jacket",
+ "shrineProductNavyTrousers": "Navy trousers",
+ "shrineProductWalterHenleyWhite": "Walter henley (white)",
+ "shrineProductSurfAndPerfShirt": "Surf and perf shirt",
+ "shrineProductGingerScarf": "Ginger scarf",
+ "shrineProductRamonaCrossover": "Ramona crossover",
+ "shrineProductClassicWhiteCollar": "Classic white collar",
+ "shrineProductSunshirtDress": "Sunshirt dress",
+ "rallyAccountDetailDataInterestRate": "সুদৰ হাৰ",
+ "rallyAccountDetailDataAnnualPercentageYield": "বাৰ্ষিক আয়ৰ শতাংশ",
+ "rallyAccountDataVacation": "বন্ধৰ দিন",
+ "shrineProductFineLinesTee": "Fine lines tee",
+ "rallyAccountDataHomeSavings": "ঘৰৰ সঞ্চয়",
+ "rallyAccountDataChecking": "চেকিং",
+ "rallyAccountDetailDataInterestPaidLastYear": "যোৱা বছৰ পৰিশোধ কৰা সুদ",
+ "rallyAccountDetailDataNextStatement": "পৰৱর্তী বিবৃতি",
+ "rallyAccountDetailDataAccountOwner": "একাউণ্টৰ গৰাকী",
+ "rallyBudgetCategoryCoffeeShops": "কফিৰ দোকানসমূহ",
+ "rallyBudgetCategoryGroceries": "গেলামাল",
+ "shrineProductCeriseScallopTee": "Cerise scallop tee",
+ "rallyBudgetCategoryClothing": "পোছাক",
+ "rallySettingsManageAccounts": "একাউণ্টসমূহ পৰিচালনা কৰক",
+ "rallyAccountDataCarSavings": "গাড়ীৰ সঞ্চয়",
+ "rallySettingsTaxDocuments": "কৰ সম্পর্কীয় নথিসমূহ",
+ "rallySettingsPasscodeAndTouchId": "পাছক’ড আৰু স্পৰ্শ আইডি",
+ "rallySettingsNotifications": "জাননীসমূহ",
+ "rallySettingsPersonalInformation": "ব্যক্তিগত তথ্য",
+ "rallySettingsPaperlessSettings": "কাকতবিহীন ছেটিংসমূহ",
+ "rallySettingsFindAtms": "এটিএম বিচাৰক",
+ "rallySettingsHelp": "সহায়",
+ "rallySettingsSignOut": "ছাইন আউট কৰক",
+ "rallyAccountTotal": "সৰ্বমুঠ",
+ "rallyBillsDue": "সম্পূৰ্ণ কৰাৰ শেষ তাৰিখ",
+ "rallyBudgetLeft": "বাওঁ",
+ "rallyAccounts": "একাউণ্টসমূহ",
+ "rallyBills": "বিলসমূহ",
+ "rallyBudgets": "বাজেটসমূহ",
+ "rallyAlerts": "সতৰ্কবার্তাসমূহ",
+ "rallySeeAll": "সকলো চাওক",
+ "rallyFinanceLeft": "বাওঁ",
+ "rallyTitleOverview": "অৱলোকন",
+ "shrineProductShoulderRollsTee": "Shoulder rolls tee",
+ "shrineNextButtonCaption": "পৰৱৰ্তী",
+ "rallyTitleBudgets": "বাজেটসমূহ",
+ "rallyTitleSettings": "ছেটিংসমূহ",
+ "rallyLoginLoginToRally": "Rallyত লগ ইন কৰক",
+ "rallyLoginNoAccount": "কোনো একাউণ্ট নাই নেকি?",
+ "rallyLoginSignUp": "ছাইন আপ কৰক",
+ "rallyLoginUsername": "ব্যৱহাৰকাৰীৰ নাম",
+ "rallyLoginPassword": "পাছৱৰ্ড",
+ "rallyLoginLabelLogin": "লগ ইন কৰক",
+ "rallyLoginRememberMe": "মোক মনত ৰাখক",
+ "rallyLoginButtonLogin": "লগ ইন কৰক",
+ "rallyAlertsMessageHeadsUpShopping": "জৰুৰী ঘোষণা, আপুনি এই মাহৰ বাবে আপোনাৰ শ্বপিং বাজেটৰ {percent} খৰচ কৰিছে।",
+ "rallyAlertsMessageSpentOnRestaurants": "আপুনি এই সপ্তাহত ৰেষ্টুৰেণ্টত {amount} খৰচ কৰিছে।",
+ "rallyAlertsMessageATMFees": "আপুনি এই মাহত এটিএমৰ মাচুলৰ বাবদ {amount} খৰচ কৰিছে",
+ "rallyAlertsMessageCheckingAccount": "ভাল কাম কৰিছে! আপোনাৰ চেকিং একাউণ্ট যোৱা মাহতকৈ {percent} বেছি।",
+ "shrineMenuCaption": "মেনু",
+ "shrineCategoryNameAll": "সকলো",
+ "shrineCategoryNameAccessories": "আনুষংগিক সামগ্ৰী",
+ "shrineCategoryNameClothing": "পোছাক",
+ "shrineCategoryNameHome": "ঘৰ",
+ "shrineLoginUsernameLabel": "ব্যৱহাৰকাৰীৰ নাম",
+ "shrineLoginPasswordLabel": "পাছৱৰ্ড",
+ "shrineCancelButtonCaption": "বাতিল কৰক",
+ "shrineCartTaxCaption": "কৰ:",
+ "shrineCartPageCaption": "কাৰ্ট",
+ "shrineProductQuantity": "পৰিমাণ: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{কোনো বস্তু নাই}=1{১ টা বস্তু}one{{quantity} টা বস্তু}other{{quantity} টা বস্তু}}",
+ "shrineCartClearButtonCaption": "কাৰ্টত থকা সমল মচক",
+ "shrineCartTotalCaption": "সর্বমুঠ",
+ "shrineCartSubtotalCaption": "প্ৰাথমিক মুঠ:",
+ "shrineCartShippingCaption": "শ্বিপিং:",
+ "shrineProductGreySlouchTank": "Grey slouch tank",
+ "shrineProductStellaSunglasses": "Stella sunglasses",
+ "shrineProductWhitePinstripeShirt": "White pinstripe shirt",
+ "demoTextFieldWhereCanWeReachYou": "আপোনাৰ ফ’ন নম্বৰটো কি?",
+ "settingsTextDirectionLTR": "বাওঁফালৰ পৰা সোঁফাললৈ",
+ "settingsTextScalingLarge": "ডাঙৰ",
+ "demoBottomSheetHeader": "হেডাৰ",
+ "demoBottomSheetItem": "বস্তু {value}",
+ "demoBottomTextFieldsTitle": "পাঠৰ ক্ষেত্ৰসমূহ",
+ "demoTextFieldTitle": "পাঠৰ ক্ষেত্ৰসমূহ",
+ "demoTextFieldSubtitle": "সম্পাদনা কৰিব পৰা পাঠ আৰু সংখ্যাসমূহৰ একক শাৰী",
+ "demoTextFieldDescription": "পাঠ ক্ষেত্ৰসমূহে ব্যৱহাৰকাৰীসকলক এটা ইউআইত পাঠ ভৰাবলৈ দিয়ে। সেইবোৰ সাধাৰণতে ফর্ম আৰু ডায়ল’গসমূহত দেখা পোৱা যায়।",
+ "demoTextFieldShowPasswordLabel": "পাছৱৰ্ডটো দেখুৱাওক",
+ "demoTextFieldHidePasswordLabel": "পাছৱৰ্ডটো লুকুৱাওক",
+ "demoTextFieldFormErrors": "দাখিল কৰাৰ আগতে অনুগ্ৰহ কৰি ৰঙা হৈ থকা আসোঁৱাহসমূহ সমাধান কৰক।",
+ "demoTextFieldNameRequired": "নামটো আৱশ্যক।",
+ "demoTextFieldOnlyAlphabeticalChars": "অনুগ্ৰহ কৰি কেৱল বৰ্ণসমূহ দিয়ক।",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - এটা আমেৰিকা যুক্তৰাষ্ট্ৰৰ ফ’ন নম্বৰ দিয়ক।",
+ "demoTextFieldEnterPassword": "অনুগ্ৰহ কৰি এটা পাছৱর্ড দিয়ক।",
+ "demoTextFieldPasswordsDoNotMatch": "পাছৱর্ডসমূহ মিলা নাই",
+ "demoTextFieldWhatDoPeopleCallYou": "মানুহে আপোনাক কি বুলি মাতে?",
+ "demoTextFieldNameField": "নাম*",
+ "demoBottomSheetButtonText": "একেবাৰে নিম্নাংশৰ শ্বীটখন দেখুৱাওক",
+ "demoTextFieldPhoneNumber": "ফ’ন নম্বৰ*",
+ "demoBottomSheetTitle": "একেবাৰে নিম্নাংশৰ শ্বীট",
+ "demoTextFieldEmail": "ইমেইল",
+ "demoTextFieldTellUsAboutYourself": "আমাক আপোনাৰ বিষয়ে কওক (উদাহৰণস্বৰূপে, আপুনি কি কৰে অথবা আপোনাৰ কৰি ভাল পোৱা কামবোৰৰ বিষয়ে লিখক)",
+ "demoTextFieldKeepItShort": "এইটো দীঘলীয়া নকৰিব, এইটো এটা ডেম’হে।",
+ "starterAppGenericButton": "বুটাম",
+ "demoTextFieldLifeStory": "জীৱন কাহিনী",
+ "demoTextFieldSalary": "দৰমহা",
+ "demoTextFieldUSD": "ইউএছডি",
+ "demoTextFieldNoMoreThan": "৮টাতকৈ অধিক বর্ণ নহয়।",
+ "demoTextFieldPassword": "পাছৱৰ্ড*",
+ "demoTextFieldRetypePassword": "পাছৱৰ্ডটো পুনৰ টাইপ কৰক*",
+ "demoTextFieldSubmit": "দাখিল কৰক",
+ "demoBottomNavigationSubtitle": "ক্ৰছ-ফে’ডিং ভিউসমূহৰ সৈতে একেবাৰে নিম্নাংশৰ নেভিগেশ্বন",
+ "demoBottomSheetAddLabel": "যোগ কৰক",
+ "demoBottomSheetModalDescription": "এখন একেবাৰে নিম্নাংশৰ ম’ডাল শ্বীট হৈছে এখন মেনু অথবা এটা ডায়ল’গৰ এক বিকল্প আৰু ই ব্যৱহাৰকাৰীজনক এপ্টোৰ বাকী অংশ ব্যৱহাৰ কৰাত বাধা দিয়ে।",
+ "demoBottomSheetModalTitle": "একেবাৰে নিম্নাংশৰ ম’ডেল শ্বীট",
+ "demoBottomSheetPersistentDescription": "এখন একেবাৰে নিম্নাংশৰ অবিৰত শ্বীটে এপ্টোৰ প্ৰাথমিক সমলক পৰিপূৰণ কৰা তথ্য দেখুৱায়। ব্যৱহাৰকাৰীয়ে এপ্টোৰ অন্য অংশসমূহ ব্যৱহাৰ কৰাৰ সময়তো একেবাৰে নিম্নাংশৰ অবিৰত শ্বীটখন দৃশ্যমান হৈ থাকে।",
+ "demoBottomSheetPersistentTitle": "একেবাৰে নিম্নাংশৰ অবিৰত শ্বীট",
+ "demoBottomSheetSubtitle": "একেবাৰে নিম্নাংশৰ অবিৰত আৰু ম’ডাল শ্বীটসমূহ",
+ "demoTextFieldNameHasPhoneNumber": "{name}ৰ ফ’ন নম্বৰটো হৈছে {phoneNumber}",
+ "buttonText": "বুটাম",
+ "demoTypographyDescription": "Material Designত পোৱা বিভিন্ন টাইপ’গ্ৰাফীকেল শৈলীৰ সংজ্ঞাসমূহ।",
+ "demoTypographySubtitle": "পূর্বনির্ধাৰিত সকলো পাঠৰ শৈলী",
+ "demoTypographyTitle": "টাইপ’গ্ৰাফী",
+ "demoFullscreenDialogDescription": "fullscreenDialog সম্পদে পৃষ্ঠাখন সম্পূর্ণ স্ক্ৰীনৰ ম’ডেল ডায়ল'গ হয়নে নহয় সেয়া নির্দিষ্ট কৰে",
+ "demoFlatButtonDescription": "এটা সমতল বুটাম টিপিলে চিয়াঁহী পৰাৰ দৰে দৃশ্য প্ৰদর্শন কৰে কিন্তু তুলি নধৰে। সমতল বুটামসমূহ টুলবাৰসমূহত, ডায়ল’গসমূহত আৰু পেডিঙৰ সৈতে ইনলাইনত ব্যৱহাৰ কৰক",
+ "demoBottomNavigationDescription": "একেবাৰে নিম্নাংশৰ নেভিগেশ্বন বাৰসমূহে স্ক্ৰীনখনৰ একেবাৰে নিম্নাংশত তিনিৰ পৰা পাঁচটা লক্ষ্যস্থান প্ৰদর্শন কৰে। প্ৰতিটো লক্ষ্যস্থানক এটা চিহ্ন আৰু এটা ঐচ্ছিক পাঠ লেবেলেৰে প্ৰতিনিধিত্ব কৰা হয়। একেবাৰে নিম্নাংশৰ এটা নেভিগেশ্বন চিহ্ন টিপিলে ব্যৱহাৰকাৰীজনক সেই চিহ্নটোৰ সৈতে জড়িত উচ্চ-স্তৰৰ নেভিগেশ্বনৰ লক্ষ্যস্থানটোলৈ লৈ যোৱা হয়।",
+ "demoBottomNavigationSelectedLabel": "বাছনি কৰা লেবেল",
+ "demoBottomNavigationPersistentLabels": "অবিৰত লেবেলসমূহ",
+ "starterAppDrawerItem": "বস্তু {value}",
+ "demoTextFieldRequiredField": "* চিহ্নই প্ৰয়োজনীয় ক্ষেত্ৰক চিহ্নিত কৰে",
+ "demoBottomNavigationTitle": "একেবাৰে নিম্নাংশৰ নেভিগেশ্বন",
+ "settingsLightTheme": "পাতল",
+ "settingsTheme": "থীম",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "সোঁফালৰ পৰা বাওঁফাললৈ",
+ "settingsTextScalingHuge": "বৃহৎ",
+ "cupertinoButton": "বুটাম",
+ "settingsTextScalingNormal": "সাধাৰণ",
+ "settingsTextScalingSmall": "সৰু",
+ "settingsSystemDefault": "ছিষ্টেম",
+ "settingsTitle": "ছেটিংসমূহ",
+ "rallyDescription": "এটা ব্যক্তিগত বিত্তীয় এপ্",
+ "aboutDialogDescription": "এই এপ্টোৰ উৎস ক’ডটো চাবলৈ, অনুগ্ৰহ কৰি {value} চাওক।",
+ "bottomNavigationCommentsTab": "মন্তব্যসমূহ",
+ "starterAppGenericBody": "মূল অংশ",
+ "starterAppGenericHeadline": "শীৰ্ষ শিৰোনাম",
+ "starterAppGenericSubtitle": "ছাবটাইটেল",
+ "starterAppGenericTitle": "শিৰোনাম",
+ "starterAppTooltipSearch": "সন্ধান কৰক",
+ "starterAppTooltipShare": "শ্বেয়াৰ কৰক",
+ "starterAppTooltipFavorite": "প্ৰিয়",
+ "starterAppTooltipAdd": "যোগ কৰক",
+ "bottomNavigationCalendarTab": "কেলেণ্ডাৰ",
+ "starterAppDescription": "এটা প্ৰতিক্ৰিয়াশীল ষ্টাৰ্টাৰ লে’আউট",
+ "starterAppTitle": "ষ্টাৰ্টাৰ এপ্",
+ "aboutFlutterSamplesRepo": "Flutterৰ আর্হিসমূহ Github ৰেপ’",
+ "bottomNavigationContentPlaceholder": "{title} টেবৰ বাবে প্লে’চহ’ল্ডাৰ",
+ "bottomNavigationCameraTab": "কেমেৰা",
+ "bottomNavigationAlarmTab": "এলাৰ্ম",
+ "bottomNavigationAccountTab": "একাউণ্ট",
+ "demoTextFieldYourEmailAddress": "আপোনাৰ ইমেইল ঠিকনা",
+ "demoToggleButtonDescription": "প্ৰাসংগিক বিকল্পসমূহ একগোট কৰিবলৈ ট’গল বুটামসমূহ ব্যৱহাৰ কৰিব পৰা যায়। প্ৰাসংগিক ট’গল বুটামসমূহৰ গোটসমূহক প্ৰাধান্য দিবলৈ, এটা গোটে এটা সাধাৰণ কণ্টেনাৰ শ্বেয়াৰ কৰা উচিত",
+ "colorsGrey": "ধোঁৱাবৰণীয়া",
+ "colorsBrown": "মাটীয়া",
+ "colorsDeepOrange": "গাঢ় কমলা",
+ "colorsOrange": "কমলা",
+ "colorsAmber": "এম্বাৰ",
+ "colorsYellow": "হালধীয়া",
+ "colorsLime": "নেমুৰঙী",
+ "colorsLightGreen": "পাতল সেউজীয়া",
+ "colorsGreen": "সেউজীয়া",
+ "homeHeaderGallery": "গেলাৰী",
+ "homeHeaderCategories": "শিতানসমূহ",
+ "shrineDescription": "ফেশ্বনৰ লগত জড়িত এটা খুচৰা এপ্",
+ "craneDescription": "এটা ব্যক্তিগতকৃত ভ্ৰমণৰ এপ্",
+ "homeCategoryReference": "প্ৰাসংগিক শৈলী আৰু মিডিয়া",
+ "demoInvalidURL": "URL প্ৰদর্শন কৰিব পৰা নগ'ল:",
+ "demoOptionsTooltip": "বিকল্পসমূহ",
+ "demoInfoTooltip": "তথ্য",
+ "demoCodeTooltip": "ক'ডৰ আর্হি",
+ "demoDocumentationTooltip": "API নথি-পত্ৰ",
+ "demoFullscreenTooltip": "সম্পূৰ্ণ স্ক্ৰীন",
+ "settingsTextScaling": "পাঠ মিলোৱা কাৰ্য",
+ "settingsTextDirection": "পাঠৰ দিশ",
+ "settingsLocale": "ল’কেল",
+ "settingsPlatformMechanics": "প্লেটফ’ৰ্ম মেকানিকসমূহ",
+ "settingsDarkTheme": "গাঢ়",
+ "settingsSlowMotion": "মন্থৰ গতি",
+ "settingsAbout": "Flutter Galleryৰ বিষয়ে",
+ "settingsFeedback": "মতামত পঠিয়াওক",
+ "settingsAttribution": "লণ্ডনত TOASTERএ ডিজাইন কৰা",
+ "demoButtonTitle": "বুটামসমূহ",
+ "demoButtonSubtitle": "সমতল, উঠঙা, ৰূপৰেখা আৰু বহুতো",
+ "demoFlatButtonTitle": "সমতল বুটাম",
+ "demoRaisedButtonDescription": "উঠঙা বুটামসমূ্হে অধিকাংশ সমতল লে'আউটত মাত্ৰা যোগ কৰে। সেইবোৰে ব্যস্ত অথবা বহল ঠাইসমূহত কৰা কার্যক অধিক প্ৰধান্য দিয়ে।",
+ "demoRaisedButtonTitle": "উঠঙা বুটাম",
+ "demoOutlineButtonTitle": "ৰূপৰেখাৰ বুটাম",
+ "demoOutlineButtonDescription": "ৰূপৰেখাৰ বুটামসমূহ টিপিলে অস্বচ্ছ আৰু উঠঙা হয়। সেইবোৰক সততে এটা বৈকল্পিক গৌণ কার্য সূচাবলৈ উঠঙা বুটামসমূহৰ সৈতে পেয়াৰ কৰা হয়।",
+ "demoToggleButtonTitle": "ট’গলৰ বুটামসমূহ",
+ "colorsTeal": "গাঢ় সেউজ-নীলা",
+ "demoFloatingButtonTitle": "ওপঙি থকা কার্যৰ বুটাম",
+ "demoFloatingButtonDescription": "এটা ওপঙা কার্যৰ বুটাম হৈছে এটা বৃত্তাকাৰ আইকন বুটাম, যি এপ্লিকেশ্বনটোত এটা প্ৰাথমিক কার্য প্ৰচাৰ কৰিবলৈ সমলৰ ওপৰত ওপঙি থাকে।",
+ "demoDialogTitle": "ডায়ল’গসমূহ",
+ "demoDialogSubtitle": "সৰল, সতর্কবার্তা আৰু সম্পূর্ণ স্ক্ৰীন",
+ "demoAlertDialogTitle": "সতৰ্কবাৰ্তা",
+ "demoAlertDialogDescription": "এটা সতর্কবার্তাৰ ডায়ল'গে ব্যৱহাৰকাৰীক স্বীকৃতি আৱশ্যক হোৱা পৰিস্থিতিসমূহৰ বিষয়ে জনায়। এটা সতর্কবার্তাৰ ডায়ল'গত এটা ঐচ্ছিক শিৰোনাম আৰু এখন কার্যসমূহৰ ঐচ্ছিক সূচী থাকে।",
+ "demoAlertTitleDialogTitle": "শিৰোনামৰ সৈতে সতর্কবার্তা",
+ "demoSimpleDialogTitle": "সৰল",
+ "demoSimpleDialogDescription": "এটা সৰল ডায়ল'গে ব্যৱহাৰকাৰীক বিভিন্ন বিকল্পসমূহৰ পৰা বাছনি কৰাৰ সুবিধা দিয়ে। এটা সৰল ডায়ল'গৰ বাছনি কৰাৰ বাবে থকা বিকল্পসমূহৰ ওপৰত প্ৰদর্শন কৰা এটা ঐচ্ছিক শিৰোনাম থাকে।",
+ "demoFullscreenDialogTitle": "সম্পূৰ্ণ স্ক্ৰীন",
+ "demoCupertinoButtonsTitle": "বুটামসমূহ",
+ "demoCupertinoButtonsSubtitle": "iOS-শৈলীৰ বুটামসমূহ",
+ "demoCupertinoButtonsDescription": "এটা iOS-শৈলীৰ বুটাম। এইটো পাঠত আৰু/অথবা এখন আইকন হিচাপে থাকে, যিটোৱে স্পর্শ কৰিলে পোহৰৰ পৰিমাণ সলনি কৰি তোলে। ঐচ্ছিকভাৱে কোনো নেপথ্য থাকিব পাৰে।",
+ "demoCupertinoAlertsTitle": "সতৰ্কবার্তাসমূহ",
+ "demoCupertinoAlertsSubtitle": "iOS-শৈলীৰ সতর্কবার্তাৰ ডায়ল’গসমূহ",
+ "demoCupertinoAlertTitle": "সতৰ্কবাৰ্তা",
+ "demoCupertinoAlertDescription": "এটা সতর্কবার্তাৰ ডায়ল'গে ব্যৱহাৰকাৰীক স্বীকৃতি আৱশ্যক হোৱা পৰিস্থিতিসমূহৰ বিষয়ে জনায়। এটা সতর্কবার্তাৰ ডায়ল'গত এটা ঐচ্ছিক শিৰোনাম, ঐচ্ছিক সমল আৰু এখন কার্যসমূহৰ ঐচ্ছিক সূচী থাকে। শিৰোনামটো সমলৰ ওপৰত প্ৰদর্শন কৰা হয় আৰু কার্যসমূহ সমলৰ তলত প্ৰদর্শন কৰা হয়।",
+ "demoCupertinoAlertWithTitleTitle": "শিৰোনামৰ সৈতে সতর্কবার্তা",
+ "demoCupertinoAlertButtonsTitle": "সতর্কবার্তাৰ সৈতে বুটামসমূহ",
+ "demoCupertinoAlertButtonsOnlyTitle": "কেৱল সতর্কবার্তাৰ বুটামসমূহ",
+ "demoCupertinoActionSheetTitle": "কার্যৰ শ্বীট",
+ "demoCupertinoActionSheetDescription": "এখন কার্যৰ শ্বীট হৈছে সতর্কবার্তাৰ এক নির্দিষ্ট শৈলী, যি ব্যৱহাৰকাৰীক প্ৰাসংগিক দুটা ছেট অথবা তাতকৈ অধিক বাছনি কৰিব পৰা বিকল্পৰ সৈতে আগবঢ়ায়। এখন কার্য শ্বীটৰ এটা শিৰোনাম, এটা অতিৰিক্ত বার্তা আৰু এখন কার্যসমূহৰ সূচী থাকিব পাৰে।",
+ "demoColorsTitle": "ৰঙবোৰ",
+ "demoColorsSubtitle": "পূৰ্বনিৰ্ধাৰিত সকলোবোৰ ৰং",
+ "demoColorsDescription": "Material Designৰ ৰঙৰ পেলেট প্ৰতিনিধিত্ব কৰা ৰং আৰু ৰঙৰ অপৰিৱর্তিত কণিকাসমূহ।",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "সৃষ্টি কৰক",
+ "dialogSelectedOption": "আপুনি এইটো বাছনি কৰিছে: \"{value}\"",
+ "dialogDiscardTitle": "খচৰা প্ৰত্যাখ্যান কৰিবনে?",
+ "dialogLocationTitle": "Googleৰ অৱস্থান সেৱা ব্যৱহাৰ কৰিবনে?",
+ "dialogLocationDescription": "Googleক এপ্সমূহে অৱস্থান নির্ধাৰণ কৰাত সহায় কৰিবলৈ দিয়ক। এই কার্যই কোনো এপ্ চলি নাথাকিলেও Googleলৈ নামবিহীনভাৱে অৱস্থানৰ ডেটা পঠিওৱা বুজায়।",
+ "dialogCancel": "বাতিল কৰক",
+ "dialogDiscard": "প্ৰত্যাখ্যান কৰক",
+ "dialogDisagree": "অসন্মত",
+ "dialogAgree": "সন্মত",
+ "dialogSetBackup": "বেকআপ একাউণ্ট ছেট কৰক",
+ "colorsBlueGrey": "নীলা ধোঁৱাবৰণীয়া",
+ "dialogShow": "ডায়ল'গ দেখুৱাওক",
+ "dialogFullscreenTitle": "সম্পূর্ণ স্ক্ৰীনৰ ডায়ল'গ",
+ "dialogFullscreenSave": "ছেভ কৰক",
+ "dialogFullscreenDescription": "এটা সম্পূর্ণ স্ক্ৰীনৰ ডায়ল'গ ডেম’",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "নেপথ্যৰ সৈতে",
+ "cupertinoAlertCancel": "বাতিল কৰক",
+ "cupertinoAlertDiscard": "প্ৰত্যাখ্যান কৰক",
+ "cupertinoAlertLocationTitle": "আপুনি এপ্টো ব্যৱহাৰ কৰি থাকোঁতে \"Maps\"ক আপোনাৰ অৱস্থান এক্সেছ কৰিবলৈ অনুমতি দিবনে?",
+ "cupertinoAlertLocationDescription": "আপোনাৰ বর্তমানৰ অৱস্থানটো মেপত প্ৰদর্শন কৰা হ'ব আৰু দিক্-নিৰ্দেশনাসমূহ, নিকটৱৰ্তী সন্ধানৰ ফলাফলসমূহ আৰু আনুমানিক যাত্ৰাৰ সময়বোৰৰ বাবে এইটো ব্যৱহাৰ কৰা হ'ব।",
+ "cupertinoAlertAllow": "অনুমতি দিয়ক",
+ "cupertinoAlertDontAllow": "অনুমতি নিদিব",
+ "cupertinoAlertFavoriteDessert": "প্ৰিয় ডিজার্ট বাছনি কৰক",
+ "cupertinoAlertDessertDescription": "অনুগ্ৰহ কৰি, তলৰ সূচীখনৰ পৰা আপোনাৰ প্ৰিয় ডিজার্টৰ প্ৰকাৰ বাছনি কৰক। আপুনি কৰা বাছনি পৰামর্শ হিচাপে আগবঢ়োৱা আপোনাৰ এলেকাত থকা খাদ্যৰ দোকানসমূহৰ সূচীখন কাষ্টমাইজ কৰিবলৈ ব্যৱহাৰ কৰা হয়।",
+ "cupertinoAlertCheesecake": "চীজেৰে প্ৰস্তুত কৰা কেক",
+ "cupertinoAlertTiramisu": "টিৰামিছু",
+ "cupertinoAlertApplePie": "Apple Pie",
+ "cupertinoAlertChocolateBrownie": "চকলেট ব্ৰাউনি",
+ "cupertinoShowAlert": "সতর্কবার্তা দেখুৱাওক",
+ "colorsRed": "ৰঙা",
+ "colorsPink": "গুলপীয়া",
+ "colorsPurple": "বেঙুনীয়া",
+ "colorsDeepPurple": "ডাঠ বেঙুনীয়া",
+ "colorsIndigo": "ইণ্ডিগ'",
+ "colorsBlue": "নীলা",
+ "colorsLightBlue": "পাতল নীলা",
+ "colorsCyan": "চায়ান",
+ "dialogAddAccount": "একাউণ্ট যোগ কৰক",
+ "Gallery": "গেলাৰী",
+ "Categories": "শিতানসমূহ",
+ "SHRINE": "মন্দিৰ",
+ "Basic shopping app": "শ্বপিং কৰাৰ সাধাৰণ এপ্",
+ "RALLY": "ৰেলী",
+ "CRANE": "ক্ৰে’ন",
+ "Travel app": "ভ্ৰমণ সম্পৰ্কীয় এপ্",
+ "MATERIAL": "সামগ্ৰী",
+ "CUPERTINO": "কুপৰটিনো",
+ "REFERENCE STYLES & MEDIA": "প্ৰাসংগিক শৈলী আৰু মিডিয়া"
+}
diff --git a/gallery/lib/l10n/intl_az.arb b/gallery/lib/l10n/intl_az.arb
new file mode 100644
index 0000000..ae24cb5
--- /dev/null
+++ b/gallery/lib/l10n/intl_az.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "View options",
+ "demoOptionsFeatureDescription": "Tap here to view available options for this demo.",
+ "demoCodeViewerCopyAll": "HAMISINI KOPYALAYIN",
+ "shrineScreenReaderRemoveProductButton": "{product} məhsulunu silin",
+ "shrineScreenReaderProductAddToCart": "Səbətə əlavə edin",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Alış-veriş səbəti, element yoxdur}=1{Alış-veriş səbəti, 1 element}other{Alış-veriş səbəti, {quantity} element}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Mübadilə buferinə kopyalamaq alınmadı: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Mübadilə buferinə kopyalandı.",
+ "craneSleep8SemanticLabel": "Çimərlikdəki qayalıqlarda Maya xarabalığı",
+ "craneSleep4SemanticLabel": "Dağların qarşısında göl kənarı otel",
+ "craneSleep2SemanticLabel": "Maçu Pikçu qalası",
+ "craneSleep1SemanticLabel": "Həmişəyaşıl ağaclar olan qarlı yerdə ağacdan ev",
+ "craneSleep0SemanticLabel": "Suüstü bunqalolar",
+ "craneFly13SemanticLabel": "Palma ağacları olan dənizkənarı hovuz",
+ "craneFly12SemanticLabel": "Palma ağacları olan hovuz",
+ "craneFly11SemanticLabel": "Dənizdə kərpic dəniz fənəri",
+ "craneFly10SemanticLabel": "Gün batımı zamanı Əl-Əzhər Məscidinin minarələri",
+ "craneFly9SemanticLabel": "Qədim mavi avtomobilə söykənən kişi",
+ "craneFly8SemanticLabel": "Supertree Grove parkı",
+ "craneEat9SemanticLabel": "Qənnadı məmulatları düzülmüş kafe piştaxtası",
+ "craneEat2SemanticLabel": "Burger",
+ "craneFly5SemanticLabel": "Dağların qarşısında göl kənarı otel",
+ "demoSelectionControlsSubtitle": "Qeyd xanaları, radio düymələri və dəyişdiricilər",
+ "craneEat10SemanticLabel": "Əlində böyük basdırmalı sandviç olan qadın",
+ "craneFly4SemanticLabel": "Suüstü bunqalolar",
+ "craneEat7SemanticLabel": "Bulka dükanının girişi",
+ "craneEat6SemanticLabel": "Krevetdən hazırlanan xörək",
+ "craneEat5SemanticLabel": "İncəsənət üslublu restoranda oturma sahəsi",
+ "craneEat4SemanticLabel": "Şokolad deserti",
+ "craneEat3SemanticLabel": "Koreya takosu",
+ "craneFly3SemanticLabel": "Maçu Pikçu qalası",
+ "craneEat1SemanticLabel": "Bar oturacaqları olan boş bar",
+ "craneEat0SemanticLabel": "Odun sobasında pizza",
+ "craneSleep11SemanticLabel": "Taybey 101 göydələni",
+ "craneSleep10SemanticLabel": "Gün batımı zamanı Əl-Əzhər Məscidinin minarələri",
+ "craneSleep9SemanticLabel": "Dənizdə kərpic dəniz fənəri",
+ "craneEat8SemanticLabel": "Bir boşqab xərçəng",
+ "craneSleep7SemanticLabel": "Ribeyra Meydanında rəngarəng mənzillər",
+ "craneSleep6SemanticLabel": "Palma ağacları olan hovuz",
+ "craneSleep5SemanticLabel": "Sahədə çadır",
+ "settingsButtonCloseLabel": "Ayarları qapadın",
+ "demoSelectionControlsCheckboxDescription": "Qeyd xanaları istifadəçiyə dəstdən bir neçə seçim etmək imkanı verir. Adi qeyd xanasındakı dəyər doğru və ya yanlış olur, üç vəziyyətli qeyd xanasındakı dəyər isə boş da ola bilər.",
+ "settingsButtonLabel": "Ayarlar",
+ "demoListsTitle": "Siyahılar",
+ "demoListsSubtitle": "Sürüşən siyahı düzənləri",
+ "demoListsDescription": "Adətən mətn, öndə və sonda ikona daxil olan hündürlüyü sabit olan bir sətir.",
+ "demoOneLineListsTitle": "Bir sətir",
+ "demoTwoLineListsTitle": "İki sətir",
+ "demoListsSecondary": "İkinci dərəcəli mətn",
+ "demoSelectionControlsTitle": "Seçim idarə elementləri",
+ "craneFly7SemanticLabel": "Raşmor dağı",
+ "demoSelectionControlsCheckboxTitle": "Qeyd xanası",
+ "craneSleep3SemanticLabel": "Qədim mavi avtomobilə söykənən kişi",
+ "demoSelectionControlsRadioTitle": "Radio",
+ "demoSelectionControlsRadioDescription": "Radio düymələri istifadəçiyə dəstdən bir seçim etmək imkanı verir. İstifadəçinin bütün əlçatan seçimləri yan-yana görməli olduğunu düşünsəniz, eksklüziv seçim üçün radio düymələrindən istifadə edin.",
+ "demoSelectionControlsSwitchTitle": "Dəyişdirici",
+ "demoSelectionControlsSwitchDescription": "Aktiv/deaktiv etmə dəyişdiriciləri bir ayarlar seçiminin vəziyyətini dəyişir. Dəyişdirici vasitəsilə idarə edilən seçim və onun olduğu vəziyyət müvafiq daxili nişandan aydın olmalıdır.",
+ "craneFly0SemanticLabel": "Həmişəyaşıl ağaclar olan qarlı yerdə ağacdan ev",
+ "craneFly1SemanticLabel": "Sahədə çadır",
+ "craneFly2SemanticLabel": "Qarlı dağın qarşısında dua bayraqları",
+ "craneFly6SemanticLabel": "İncəsənət Sarayının yuxarıdan görünüşü",
+ "rallySeeAllAccounts": "Bütün hesablara baxın",
+ "rallyBillAmount": "{date} tarixinə {amount} məbləğində {billName} ödənişi.",
+ "shrineTooltipCloseCart": "Səbəti bağlayın",
+ "shrineTooltipCloseMenu": "Menyunu bağlayın",
+ "shrineTooltipOpenMenu": "Menyunu açın",
+ "shrineTooltipSettings": "Ayarlar",
+ "shrineTooltipSearch": "Axtarış",
+ "demoTabsDescription": "Tablar müxtəlif ekranlar, data dəstləri və digər qarşılıqlı əməliyyatlarda məzmunu təşkil edir.",
+ "demoTabsSubtitle": "Müstəqil şəkildə sürüşdürülə bilən baxışlarla tablar",
+ "demoTabsTitle": "Tablar",
+ "rallyBudgetAmount": "{budgetName} büdcəsi {amountUsed}/{amountTotal} istifadə edilib, {amountLeft} qalıb",
+ "shrineTooltipRemoveItem": "Elementi silin",
+ "rallyAccountAmount": "{amount} ilə {accountName} hesabı {accountNumber}.",
+ "rallySeeAllBudgets": "Bütün büdcələrə baxın",
+ "rallySeeAllBills": "Bütün fakturalara baxın",
+ "craneFormDate": "Tarix seçin",
+ "craneFormOrigin": "Səyahətin başladığı yeri seçin",
+ "craneFly2": "Xumbu vadisi, Nepal",
+ "craneFly3": "Maçu Pikçu, Peru",
+ "craneFly4": "Male, Maldiv adaları",
+ "craneFly5": "Vitznau, İsveçrə",
+ "craneFly6": "Mexiko şəhəri, Meksika",
+ "craneFly7": "Raşmor dağı, ABŞ",
+ "settingsTextDirectionLocaleBased": "Yerli xüsusiyyətlərə əsaslanır",
+ "craneFly9": "Havana, Kuba",
+ "craneFly10": "Qahirə, Misir",
+ "craneFly11": "Lissabon, Portuqaliya",
+ "craneFly12": "Napa, ABŞ",
+ "craneFly13": "Bali, İndoneziya",
+ "craneSleep0": "Male, Maldiv adaları",
+ "craneSleep1": "Aspen, ABŞ",
+ "craneSleep2": "Maçu Pikçu, Peru",
+ "demoCupertinoSegmentedControlTitle": "Seqmentləşdirilmiş Nəzarət",
+ "craneSleep4": "Vitznau, İsveçrə",
+ "craneSleep5": "Biq Sur, ABŞ",
+ "craneSleep6": "Napa, ABŞ",
+ "craneSleep7": "Portu, Portuqaliya",
+ "craneSleep8": "Tulum, Meksika",
+ "craneEat5": "Seul, Cənubi Koreya",
+ "demoChipTitle": "Çiplər",
+ "demoChipSubtitle": "Məlumat, atribut və ya əməliyyatı əks etdirən yığcam elementlər",
+ "demoActionChipTitle": "Əməliyyat Çipi",
+ "demoActionChipDescription": "Əməliyyat çipləri əsas məzmun ilə əlaqədar əməliyyatı işə salan seçimlər qrupudur. Əməliyyat çipləri İstifadəçi İnterfeysində dinamik və kontekstual tərzdə görünməlidir.",
+ "demoChoiceChipTitle": "Seçim Çipi",
+ "demoChoiceChipDescription": "Seçim çipləri qrupun içindən tək bir seçimi təqdim edir. Seçim çipləri əlaqədar təsviri mətn və ya kateqoriyalar ehtiva edir.",
+ "demoFilterChipTitle": "Filtr Çipi",
+ "demoFilterChipDescription": "Filtr çipləri məzmunu filtrləmək üçün teqlərdən və ya təsviri sözlərdən istifadə edir.",
+ "demoInputChipTitle": "Məlumat Çipi",
+ "demoInputChipDescription": "Məlumat çipləri obyekt (şəxs, məkan və ya əşya) və ya danışıq mətni kimi qarışıq məlumatlar toplusunu yığcam formada təqdim edir.",
+ "craneSleep9": "Lissabon, Portuqaliya",
+ "craneEat10": "Lissabon, Portuqaliya",
+ "demoCupertinoSegmentedControlDescription": "Qarşılıqlı eksklüziv variantlar arasından seçmək üçün istifadə edilir. Seqmentləşdirilmiş nəzarətdə bir variant seçildikdə, digər variantları seçmək olmur.",
+ "chipTurnOnLights": "İşıqları yandırın",
+ "chipSmall": "Kiçik",
+ "chipMedium": "Orta",
+ "chipLarge": "Böyük",
+ "chipElevator": "Lift",
+ "chipWasher": "Paltaryuyan",
+ "chipFireplace": "Buxarı",
+ "chipBiking": "Velosiped",
+ "craneFormDiners": "Restoranlar",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Potensial vergi ödənişini artırın! 1 təyin edilməmiş əməliyyata kateqoriya təyin edin.}other{Potensial vergi ödənişini artırın! {count} təyin edilməmiş əməliyyata kateqoriya təyin edin.}}",
+ "craneFormTime": "Vaxt seçin",
+ "craneFormLocation": "Məkan seçin",
+ "craneFormTravelers": "Səyahətçilər",
+ "craneEat8": "Atlanta, ABŞ",
+ "craneFormDestination": "Təyinat yeri seçin",
+ "craneFormDates": "Tarixlər seçin",
+ "craneFly": "UÇUŞ",
+ "craneSleep": "YUXU",
+ "craneEat": "YEMƏK",
+ "craneFlySubhead": "Təyinat yeri üzrə uçuşları araşdırın",
+ "craneSleepSubhead": "Təyinat yeri üzrə əmlakları araşdırın",
+ "craneEatSubhead": "Təyinat yeri üzrə restoranları araşdırın",
+ "craneFlyStops": "{numberOfStops,plural, =0{Birbaşa}=1{1 dayanacaq}other{{numberOfStops} dayanacaq}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{Əlçatan obyekt yoxdur}=1{1 əlçatan obyekt}other{{totalProperties} əlçatan obyekt}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{Restoran yoxdur}=1{1 restoran}other{{totalRestaurants} restoran}}",
+ "craneFly0": "Aspen, ABŞ",
+ "demoCupertinoSegmentedControlSubtitle": "iOS üslubunda seqmentləşdirilmiş nəzarət",
+ "craneSleep10": "Qahirə, Misir",
+ "craneEat9": "Madrid, İspaniya",
+ "craneFly1": "Biq Sur, ABŞ",
+ "craneEat7": "Neşvill, ABŞ",
+ "craneEat6": "Sietl, ABŞ",
+ "craneFly8": "Sinqapur",
+ "craneEat4": "Paris, Fransa",
+ "craneEat3": "Portlend, ABŞ",
+ "craneEat2": "Kordova, Argentina",
+ "craneEat1": "Dallas, ABŞ",
+ "craneEat0": "Neapol, İtaliya",
+ "craneSleep11": "Taybey, Tayvan",
+ "craneSleep3": "Havana, Kuba",
+ "shrineLogoutButtonCaption": "ÇIXIŞ EDİN",
+ "rallyTitleBills": "HESABLAR",
+ "rallyTitleAccounts": "HESABLAR",
+ "shrineProductVagabondSack": "Vegabond çantası",
+ "rallyAccountDetailDataInterestYtd": "Faiz: İlin əvvəlindən bəri",
+ "shrineProductWhitneyBelt": "Vitni kəməri",
+ "shrineProductGardenStrand": "Garden strand",
+ "shrineProductStrutEarrings": "Əl işi sırğalar",
+ "shrineProductVarsitySocks": "Kollec corabları",
+ "shrineProductWeaveKeyring": "Toxunma açarlıq",
+ "shrineProductGatsbyHat": "Yastı papaq",
+ "shrineProductShrugBag": "Çiyin çantası",
+ "shrineProductGiltDeskTrio": "Üçlü masa dəsti",
+ "shrineProductCopperWireRack": "Mis rəngli tor asılqan",
+ "shrineProductSootheCeramicSet": "Soothe keramika dəsti",
+ "shrineProductHurrahsTeaSet": "Əla çay dəsti",
+ "shrineProductBlueStoneMug": "Mavi daş parç",
+ "shrineProductRainwaterTray": "Yağış suyu çuxuru",
+ "shrineProductChambrayNapkins": "Kətan dəsmallar",
+ "shrineProductSucculentPlanters": "Sukkulent bitkilər",
+ "shrineProductQuartetTable": "Dörbucaq masa",
+ "shrineProductKitchenQuattro": "Quattro mətbəxi",
+ "shrineProductClaySweater": "Gil rəngli sviter",
+ "shrineProductSeaTunic": "Dəniz koftası",
+ "shrineProductPlasterTunic": "Açıq rəngli kofta",
+ "rallyBudgetCategoryRestaurants": "Restoranlar",
+ "shrineProductChambrayShirt": "Mavi kətan köynək",
+ "shrineProductSeabreezeSweater": "Dəniz mavisi rəngində sviter",
+ "shrineProductGentryJacket": "Centri gödəkcəsi",
+ "shrineProductNavyTrousers": "Tünd mavi şalvar",
+ "shrineProductWalterHenleyWhite": "Gündəlik kişi koftası (ağ)",
+ "shrineProductSurfAndPerfShirt": "Sörf koftası",
+ "shrineProductGingerScarf": "Zəncəfil rəngində şərf",
+ "shrineProductRamonaCrossover": "Ramona krossover",
+ "shrineProductClassicWhiteCollar": "Klassik ağ yaxalıq",
+ "shrineProductSunshirtDress": "Günəş libası",
+ "rallyAccountDetailDataInterestRate": "Faiz Norması",
+ "rallyAccountDetailDataAnnualPercentageYield": "İllik faiz gəliri",
+ "rallyAccountDataVacation": "Tətil",
+ "shrineProductFineLinesTee": "T formalı, cızıqlı koftalar",
+ "rallyAccountDataHomeSavings": "Ev Qənaəti",
+ "rallyAccountDataChecking": "Yoxlanış",
+ "rallyAccountDetailDataInterestPaidLastYear": "Keçən il ödənilən faiz",
+ "rallyAccountDetailDataNextStatement": "Növbəti bəyanat",
+ "rallyAccountDetailDataAccountOwner": "Hesab Sahibi",
+ "rallyBudgetCategoryCoffeeShops": "Kafelər",
+ "rallyBudgetCategoryGroceries": "Ərzaq dükanları",
+ "shrineProductCeriseScallopTee": "T formalı qırmızı kofta",
+ "rallyBudgetCategoryClothing": "Geyim",
+ "rallySettingsManageAccounts": "Hesabları idarə edin",
+ "rallyAccountDataCarSavings": "Avtomobil Qənaəti",
+ "rallySettingsTaxDocuments": "Vergi Sənədləri",
+ "rallySettingsPasscodeAndTouchId": "Parol və Sensor ID",
+ "rallySettingsNotifications": "Bildirişlər",
+ "rallySettingsPersonalInformation": "Şəxsi Məlumatlar",
+ "rallySettingsPaperlessSettings": "Kağızsız Ayarlar",
+ "rallySettingsFindAtms": "Bankomatlar tapın",
+ "rallySettingsHelp": "Kömək",
+ "rallySettingsSignOut": "Çıxın",
+ "rallyAccountTotal": "Cəmi",
+ "rallyBillsDue": "Son tarix",
+ "rallyBudgetLeft": "Qalıq",
+ "rallyAccounts": "Hesablar",
+ "rallyBills": "Hesablar",
+ "rallyBudgets": "Büdcələr",
+ "rallyAlerts": "Xəbərdarlıqlar",
+ "rallySeeAll": "HAMISINA BAXIN",
+ "rallyFinanceLeft": "QALIQ",
+ "rallyTitleOverview": "İCMAL",
+ "shrineProductShoulderRollsTee": "Çiyni dəyirmi formada açıq olan kofta",
+ "shrineNextButtonCaption": "NÖVBƏTİ",
+ "rallyTitleBudgets": "BÜDCƏLƏR",
+ "rallyTitleSettings": "AYARLAR",
+ "rallyLoginLoginToRally": "Rally'ya daxil olun",
+ "rallyLoginNoAccount": "Hesabınız yoxdur?",
+ "rallyLoginSignUp": "QEYDİYYATDAN KEÇİN",
+ "rallyLoginUsername": "İstifadəçi adı",
+ "rallyLoginPassword": "Parol",
+ "rallyLoginLabelLogin": "Giriş",
+ "rallyLoginRememberMe": "Məni yadda saxlayın",
+ "rallyLoginButtonLogin": "GİRİŞ",
+ "rallyAlertsMessageHeadsUpShopping": "Nəzərə alın ki, bu aylıq Alış-veriş büdcənizin {percent} qədərindən çoxunu istifadə etmisiniz.",
+ "rallyAlertsMessageSpentOnRestaurants": "Bu həftə restoranlarda {amount} xərcləmisiniz.",
+ "rallyAlertsMessageATMFees": "Bu ay bankomat rüsumları üçün {amount} xərcləmisiniz",
+ "rallyAlertsMessageCheckingAccount": "Afərin! Ödəniş hesabınızın balansı keçən ayla müqayisədə {percent} çoxdur.",
+ "shrineMenuCaption": "MENYU",
+ "shrineCategoryNameAll": "HAMISI",
+ "shrineCategoryNameAccessories": "AKSESUARLAR",
+ "shrineCategoryNameClothing": "GEYİM",
+ "shrineCategoryNameHome": "EV",
+ "shrineLoginUsernameLabel": "İstifadəçi adı",
+ "shrineLoginPasswordLabel": "Parol",
+ "shrineCancelButtonCaption": "LƏĞV EDİN",
+ "shrineCartTaxCaption": "Vergi:",
+ "shrineCartPageCaption": "SƏBƏT",
+ "shrineProductQuantity": "Miqdar: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{ELEMENT YOXDUR}=1{1 ELEMENT}other{{quantity} ELEMENT}}",
+ "shrineCartClearButtonCaption": "SƏBƏTİ TƏMİZLƏYİN",
+ "shrineCartTotalCaption": "CƏMİ",
+ "shrineCartSubtotalCaption": "Aralıq cəm:",
+ "shrineCartShippingCaption": "Göndərmə:",
+ "shrineProductGreySlouchTank": "Qolsuz boz kofta",
+ "shrineProductStellaSunglasses": "Stella gün eynəkləri",
+ "shrineProductWhitePinstripeShirt": "Cızıqlı ağ köynək",
+ "demoTextFieldWhereCanWeReachYou": "Sizinlə necə əlaqə saxlaya bilərik?",
+ "settingsTextDirectionLTR": "Soldan sağa",
+ "settingsTextScalingLarge": "Böyük",
+ "demoBottomSheetHeader": "Başlıq",
+ "demoBottomSheetItem": "Element {value}",
+ "demoBottomTextFieldsTitle": "Mətn sahələri",
+ "demoTextFieldTitle": "Mətn sahələri",
+ "demoTextFieldSubtitle": "Redaktə edilə bilən mətn və rəqəmlərdən ibarət tək sıra",
+ "demoTextFieldDescription": "Mətn sahələri istifadəçilərə İstifadəçi İnterfeysinə mətn daxil etmək imkanı verir. Onlar, əsasən, forma və dialoqlarda görünür.",
+ "demoTextFieldShowPasswordLabel": "Parolu göstərin",
+ "demoTextFieldHidePasswordLabel": "Parolu gizlədin",
+ "demoTextFieldFormErrors": "Təqdim etməzdən əvvəl qırmızı rəngdə olan xətalara düzəliş edin.",
+ "demoTextFieldNameRequired": "Ad tələb edilir.",
+ "demoTextFieldOnlyAlphabeticalChars": "Yalnız hərf daxil edin.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - ABŞ telefon nömrəsi daxil edin.",
+ "demoTextFieldEnterPassword": "Parol daxil edin.",
+ "demoTextFieldPasswordsDoNotMatch": "Parollar uyğun gəlmir",
+ "demoTextFieldWhatDoPeopleCallYou": "Adınız nədir?",
+ "demoTextFieldNameField": "Ad*",
+ "demoBottomSheetButtonText": "AŞAĞIDAKI VƏRƏQİ GÖSTƏRİN",
+ "demoTextFieldPhoneNumber": "Telefon nömrəsi*",
+ "demoBottomSheetTitle": "Aşağıdakı vərəq",
+ "demoTextFieldEmail": "E-poçt",
+ "demoTextFieldTellUsAboutYourself": "Özünüz barədə bildirin (məsələn, nə işlə məşğul olduğunuz və ya maraqlarınız barədə yazın)",
+ "demoTextFieldKeepItShort": "Qısa edin. Bu, sadəcə nümayişdir.",
+ "starterAppGenericButton": "DÜYMƏ",
+ "demoTextFieldLifeStory": "Həyat hekayəsi",
+ "demoTextFieldSalary": "Maaş",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "8 simvoldan çox olmamalıdır.",
+ "demoTextFieldPassword": "Parol*",
+ "demoTextFieldRetypePassword": "Parolu yenidən yazın*",
+ "demoTextFieldSubmit": "GÖNDƏRİN",
+ "demoBottomNavigationSubtitle": "Çarpaz solğun görünüşlü alt naviqasiya",
+ "demoBottomSheetAddLabel": "Əlavə edin",
+ "demoBottomSheetModalDescription": "Modal alt vərəq menyu və ya dialoqa alternativdir və istifadəçinin tətbiqin qalan hissələri ilə işləməsinin qarşısını alır.",
+ "demoBottomSheetModalTitle": "Modal alt vərəq",
+ "demoBottomSheetPersistentDescription": "Sabit alt vərəq tətbiqin ilkin məzmununa əlavə edilən məlumatları göstərir. Sabit alt vərəq istifadəçi tətbiqin digər hissələri ilə işlədikdə belə görünür.",
+ "demoBottomSheetPersistentTitle": "Sabit alt vərəq",
+ "demoBottomSheetSubtitle": "Sabit və modal alt vərəqlər",
+ "demoTextFieldNameHasPhoneNumber": "{name} telefon nömrəsi: {phoneNumber}",
+ "buttonText": "DÜYMƏ",
+ "demoTypographyDescription": "Material Dizaynındakı müxtəlif tipoqrafik üslubların izahları.",
+ "demoTypographySubtitle": "Əvvəldən müəyyənləşdirilmiş bütün mətn üslubları",
+ "demoTypographyTitle": "Tipoqrafiya",
+ "demoFullscreenDialogDescription": "Tam ekran dialoqu xüsusiyyəti yeni səhifənin tam ekran modal dialoqu olub-olmadığını göstərir",
+ "demoFlatButtonDescription": "Yastı düyməyə basdıqda mürəkkəb rəngi alır, lakın yuxarı qalxmır. Yastı düymələrdən alətlər panelində, dialoqlarda və sətir içlərində dolğu ilə istifadə edin",
+ "demoBottomNavigationDescription": "Alt naviqasiya panelləri ekranın aşağısında üç-beş təyinat yeri göstərir. Hər bir təyinat yeri ikona və şərti mətn nişanı ilə təqdim edilir. Alt naviqasiya ikonasına toxunulduqda istifadəçi həmin ikona ilə əlaqələndirilən üst səviyyə naviqasiya təyinatına yönləndirilir.",
+ "demoBottomNavigationSelectedLabel": "Seçilmiş nişan",
+ "demoBottomNavigationPersistentLabels": "Sabit nişanlar",
+ "starterAppDrawerItem": "Element {value}",
+ "demoTextFieldRequiredField": "* tələb olunan sahələri göstərir",
+ "demoBottomNavigationTitle": "Alt naviqasiya",
+ "settingsLightTheme": "İşıqlı",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "Sağdan sola",
+ "settingsTextScalingHuge": "Böyük",
+ "cupertinoButton": "Düymə",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Kiçik",
+ "settingsSystemDefault": "Sistem",
+ "settingsTitle": "Ayarlar",
+ "rallyDescription": "Şəxsi maliyyə tətbiqi",
+ "aboutDialogDescription": "Bu tətbiqin mənbə koduna baxmaq üçün {value} ünvanına daxil olun.",
+ "bottomNavigationCommentsTab": "Şərhlər",
+ "starterAppGenericBody": "Əsas",
+ "starterAppGenericHeadline": "Başlıq",
+ "starterAppGenericSubtitle": "Alt başlıq",
+ "starterAppGenericTitle": "Başlıq",
+ "starterAppTooltipSearch": "Axtarış",
+ "starterAppTooltipShare": "Paylaşın",
+ "starterAppTooltipFavorite": "Sevimli",
+ "starterAppTooltipAdd": "Əlavə edin",
+ "bottomNavigationCalendarTab": "Təqvim",
+ "starterAppDescription": "Responsiv starter tətbiq düzəni",
+ "starterAppTitle": "Starter tətbiq",
+ "aboutFlutterSamplesRepo": "Flutter nümunələrinin Github yaddaş yeri",
+ "bottomNavigationContentPlaceholder": "{title} tabeli üçün yertutan",
+ "bottomNavigationCameraTab": "Kamera",
+ "bottomNavigationAlarmTab": "Xəbərdarlıq",
+ "bottomNavigationAccountTab": "Hesab",
+ "demoTextFieldYourEmailAddress": "E-poçt ünvanınız",
+ "demoToggleButtonDescription": "Dəyişdirici düymələrdən əlaqəli seçimləri qruplaşdırmaq üçün istifadə etmək mümkündür. Əlaqəli dəyişdirici düymələr qrupunu vurğulamaq üçün qrupun ümumi konteyneri olmalıdır",
+ "colorsGrey": "BOZ",
+ "colorsBrown": "QƏHVƏYİ",
+ "colorsDeepOrange": "TÜND NARINCI",
+ "colorsOrange": "NARINCI",
+ "colorsAmber": "KƏHRƏBA",
+ "colorsYellow": "SARI",
+ "colorsLime": "AÇIQ YAŞIL",
+ "colorsLightGreen": "AÇIQ YAŞIL",
+ "colorsGreen": "YAŞIL",
+ "homeHeaderGallery": "Qalereya",
+ "homeHeaderCategories": "Kateqoriyalar",
+ "shrineDescription": "Dəbli pərakəndə satış tətbiqi",
+ "craneDescription": "Fərdiləşdirilmiş səyahət tətbiqi",
+ "homeCategoryReference": "İSTİNAD ÜSLUBLAR VƏ MEDİA",
+ "demoInvalidURL": "URL'i göstərmək mümkün olmadı:",
+ "demoOptionsTooltip": "Seçimlər",
+ "demoInfoTooltip": "Məlumat",
+ "demoCodeTooltip": "Kod Nümunə",
+ "demoDocumentationTooltip": "API Sənədi",
+ "demoFullscreenTooltip": "Tam Ekran",
+ "settingsTextScaling": "Mətn miqyası",
+ "settingsTextDirection": "Mətn istiqaməti",
+ "settingsLocale": "Lokal göstərici",
+ "settingsPlatformMechanics": "Platforma mexanikası",
+ "settingsDarkTheme": "Tünd",
+ "settingsSlowMotion": "Aşağı sürətli",
+ "settingsAbout": "Flutter Qalereya haqqında",
+ "settingsFeedback": "Rəy göndərin",
+ "settingsAttribution": "Londonda TOASTER tərəfindən hazırlanmışdır",
+ "demoButtonTitle": "Düymələr",
+ "demoButtonSubtitle": "Yastı, qabarıq, haşiyəli və digərləri",
+ "demoFlatButtonTitle": "Yastı Düymə",
+ "demoRaisedButtonDescription": "Qabarıq düymələr əsasən yastı düzənlərin üzərində ölçücə böyük olur. Onlar dolu və ya geniş səthlərdə funksiyaları vurğulayır.",
+ "demoRaisedButtonTitle": "Qabarıq Düymə",
+ "demoOutlineButtonTitle": "Haşiyəli Düymə",
+ "demoOutlineButtonDescription": "Haşiyəli düymələrə basdıqda qeyri-şəffaf və qabarıq olurlar. Onlar, adətən, alternativ, ikinci dərəcəli əməliyyatı göstərmək üçün qabarıq düymələrlə birləşdirilir.",
+ "demoToggleButtonTitle": "Dəyişdirici Düymələr",
+ "colorsTeal": "FİRUZƏYİ",
+ "demoFloatingButtonTitle": "Üzən Əməliyyat Düyməsi",
+ "demoFloatingButtonDescription": "Üzən əməliyyat düyməsi tətbiqdə əsas əməliyyatı önə çıxarmaq üçün məzmun üzərində hərəkət edən dairəvi ikona düyməsidir.",
+ "demoDialogTitle": "Dialoqlar",
+ "demoDialogSubtitle": "Sadə, xəbərdarlıq və tam ekran",
+ "demoAlertDialogTitle": "Xəbərdarlıq",
+ "demoAlertDialogDescription": "Xəbərdarlıq dialoqu istifadəçiyə razılıq tələb edən məqamlar barədə bildirir. Xəbərdarlıq dialoqunda şərti başlıq və əməliyyatların şərti siyahısı olur.",
+ "demoAlertTitleDialogTitle": "Başlıqlı Xəbərdarlıq",
+ "demoSimpleDialogTitle": "Sadə",
+ "demoSimpleDialogDescription": "Sadə dialoq istifadəçiyə bir neçə seçim təqdim edir. Sadə dialoqda seçimlərin yuxarısında göstərilən şərti başlıq olur.",
+ "demoFullscreenDialogTitle": "Tam ekran",
+ "demoCupertinoButtonsTitle": "Düymələr",
+ "demoCupertinoButtonsSubtitle": "iOS üslublu düymələr",
+ "demoCupertinoButtonsDescription": "iOS üslublu düymə. O, toxunduqda solğunlaşan və tündləşən mətn və/və ya ikonanı əks etdirir. İstəyə uyğun arxa fon təyin edilə bilər.",
+ "demoCupertinoAlertsTitle": "Xəbərdarlıqlar",
+ "demoCupertinoAlertsSubtitle": "iOS üslubunda xəbərdarlıq dialoqları",
+ "demoCupertinoAlertTitle": "Xəbərdarlıq",
+ "demoCupertinoAlertDescription": "Xəbərdarlıq dialoqu istifadəçiyə razılıq tələb edən məqamlar barədə bildirir. Xəbərdarlıq dialoqunda şərti başlıq, şərti məzmun və əməliyyatların şərti siyahısı olur. Başlıq məzmunun yuxarısında, əməliyyatlar isə məzmunun aşağısında göstərilir.",
+ "demoCupertinoAlertWithTitleTitle": "Başlıqlı Xəbərdarlıq",
+ "demoCupertinoAlertButtonsTitle": "Düymələrlə Xəbərdarlıq",
+ "demoCupertinoAlertButtonsOnlyTitle": "Yalnız Xəbərdarlıq Düymələri",
+ "demoCupertinoActionSheetTitle": "Əməliyyat Cədvəli",
+ "demoCupertinoActionSheetDescription": "Əməliyyat cədvəli istifadəçiyə cari kontekstlə əlaqəli iki və ya daha çox seçim dəsti təqdim edən xüsusi xəbərdarlıq üslubudur. Əməliyyat cədvəlində başlıq, əlavə mesaj və əməliyyatların siyahısı ola bilər.",
+ "demoColorsTitle": "Rənglər",
+ "demoColorsSubtitle": "Əvvəlcədən təyin edilmiş rənglərin hamısı",
+ "demoColorsDescription": "Material Dizaynının rəng palitrasını əks etdirən rəng və rəng nümunəsi konstantları.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Yaradın",
+ "dialogSelectedOption": "\"{value}\" seçdiniz",
+ "dialogDiscardTitle": "Qaralama silinsin?",
+ "dialogLocationTitle": "Google'un məkan xidmətindən istifadə edilsin?",
+ "dialogLocationDescription": "Google'a məkanı müəyyənləşdirməkdə tətbiqlərə kömək etmək imkanı verin. Bu, hətta heç bir tətbiq icra olunmadıqda belə Google'a anonim məkan məlumatları göndərmək deməkdir.",
+ "dialogCancel": "LƏĞV EDİN",
+ "dialogDiscard": "İMTİNA EDİN",
+ "dialogDisagree": "RAZI DEYİLƏM",
+ "dialogAgree": "RAZIYAM",
+ "dialogSetBackup": "Yedəkləmə hesabı ayarlayın",
+ "colorsBlueGrey": "MAVİ-BOZ",
+ "dialogShow": "DİALOQU GÖSTƏRİN",
+ "dialogFullscreenTitle": "Tam Ekran Dialoqu",
+ "dialogFullscreenSave": "YADDA SAXLAYIN",
+ "dialogFullscreenDescription": "Tam ekran dialoq demosu",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Arxa fonlu",
+ "cupertinoAlertCancel": "Ləğv edin",
+ "cupertinoAlertDiscard": "İmtina edin",
+ "cupertinoAlertLocationTitle": "Tətbiqdən istifadə etdiyiniz zaman \"Xəritə\"yə məkanınıza giriş imkanı verilsin?",
+ "cupertinoAlertLocationDescription": "Cari məkanınız xəritədə göstəriləcək və istiqamətlər, yaxınlıqdakı axtarış nəticələri və təqribi səyahət vaxtları üçün istifadə ediləcək.",
+ "cupertinoAlertAllow": "İcazə verin",
+ "cupertinoAlertDontAllow": "İcazə verməyin",
+ "cupertinoAlertFavoriteDessert": "Sevimli Desertinizi Seçin",
+ "cupertinoAlertDessertDescription": "Aşağıdakı siyahıdan sevimli desert növünüzü seçin. Seçiminiz ərazinizdə təklif edilən restoranlardan ibarət siyahını fərdiləşdirmək üçün istifadə ediləcək.",
+ "cupertinoAlertCheesecake": "Çizkeyk",
+ "cupertinoAlertTiramisu": "Tiramisu",
+ "cupertinoAlertApplePie": "Alma Piroqu",
+ "cupertinoAlertChocolateBrownie": "Şokoladlı Brauni",
+ "cupertinoShowAlert": "Xəbərdarlığı Göstərin",
+ "colorsRed": "QIRMIZI",
+ "colorsPink": "ÇƏHRAYI",
+ "colorsPurple": "BƏNÖVŞƏYİ",
+ "colorsDeepPurple": "TÜND BƏNÖVŞƏYİ",
+ "colorsIndigo": "GÖY RƏNG",
+ "colorsBlue": "MAVİ",
+ "colorsLightBlue": "AÇIQ MAVİ",
+ "colorsCyan": "MAVİ",
+ "dialogAddAccount": "Hesab əlavə edin",
+ "Gallery": "Qalereya",
+ "Categories": "Kateqoriyalar",
+ "SHRINE": "MƏQBƏRƏ",
+ "Basic shopping app": "Təməl alış-veriş tətbiqi",
+ "RALLY": "RALLİ",
+ "CRANE": "KRAN",
+ "Travel app": "Səyahət tətbiqi",
+ "MATERIAL": "MATERİAL",
+ "CUPERTINO": "KUPERTİNO",
+ "REFERENCE STYLES & MEDIA": "İSTİNAD ÜSLUBLAR VƏ MEDİA"
+}
diff --git a/gallery/lib/l10n/intl_be.arb b/gallery/lib/l10n/intl_be.arb
new file mode 100644
index 0000000..3e22ce4
--- /dev/null
+++ b/gallery/lib/l10n/intl_be.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "View options",
+ "demoOptionsFeatureDescription": "Tap here to view available options for this demo.",
+ "demoCodeViewerCopyAll": "КАПІРАВАЦЬ УСЁ",
+ "shrineScreenReaderRemoveProductButton": "Выдаліць прадукт: {product}",
+ "shrineScreenReaderProductAddToCart": "Дадаць у кошык",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Кошык, няма прадуктаў}=1{Кошык, 1 прадукт}one{Кошык, {quantity} прадукт}few{Кошык, {quantity} прадукты}many{Кошык, {quantity} прадуктаў}other{Кошык, {quantity} прадукту}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Не ўдалося скапіраваць у буфер абмену: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Скапіравана ў буфер абмену.",
+ "craneSleep8SemanticLabel": "Руіны цывілізацыі мая на ўцёсе над пляжам",
+ "craneSleep4SemanticLabel": "Гасцініца на беразе возера пад гарой",
+ "craneSleep2SemanticLabel": "Цытадэль Мачу-Пікчу",
+ "craneSleep1SemanticLabel": "Заснежаны краявід з сельскім домікам і вечназялёнымі дрэвамі",
+ "craneSleep0SemanticLabel": "Бунгала над воднай паверхняй",
+ "craneFly13SemanticLabel": "Басейн з пальмамі з відам на мора",
+ "craneFly12SemanticLabel": "Басейн з пальмамі",
+ "craneFly11SemanticLabel": "Цагельны маяк на моры",
+ "craneFly10SemanticLabel": "Мінарэты мячэці аль-Азхар на захадзе сонца",
+ "craneFly9SemanticLabel": "Мужчына, які абапіраецца на антыкварны сіні аўтамабіль",
+ "craneFly8SemanticLabel": "Сады каля заліва",
+ "craneEat9SemanticLabel": "Прылавак кафэ з кандытарскімі вырабамі",
+ "craneEat2SemanticLabel": "Бургер",
+ "craneFly5SemanticLabel": "Гасцініца на беразе возера пад гарой",
+ "demoSelectionControlsSubtitle": "Палі для птушак, радыёкнопкі і пераключальнікі",
+ "craneEat10SemanticLabel": "Жанчына з вялікім сандвічам пастрамі ў руках",
+ "craneFly4SemanticLabel": "Бунгала над воднай паверхняй",
+ "craneEat7SemanticLabel": "Уваход у пякарню",
+ "craneEat6SemanticLabel": "Страва з крэветкамі",
+ "craneEat5SemanticLabel": "Гасцёўня моднага рэстарана",
+ "craneEat4SemanticLabel": "Шакаладны дэсерт",
+ "craneEat3SemanticLabel": "Така па-карэйскі",
+ "craneFly3SemanticLabel": "Цытадэль Мачу-Пікчу",
+ "craneEat1SemanticLabel": "Пусты бар з круглымі барнымі крэсламі",
+ "craneEat0SemanticLabel": "Піца ў дрывяной печы",
+ "craneSleep11SemanticLabel": "Небаскроб Тайбэй 101",
+ "craneSleep10SemanticLabel": "Мінарэты мячэці аль-Азхар на захадзе сонца",
+ "craneSleep9SemanticLabel": "Цагельны маяк на моры",
+ "craneEat8SemanticLabel": "Талерка з ракамі",
+ "craneSleep7SemanticLabel": "Каляровыя дамы на плошчы Рыбейра",
+ "craneSleep6SemanticLabel": "Басейн з пальмамі",
+ "craneSleep5SemanticLabel": "Палатка ў полі",
+ "settingsButtonCloseLabel": "Закрыць налады",
+ "demoSelectionControlsCheckboxDescription": "Палі для птушак дазваляюць карыстальніку выбраць з набору некалькі параметраў. Звычайнае значэнне ў полі для птушак – гэта \"true\" або \"false\", а значэнне поля для птушак з трыма станамі можа быць роўным нулю.",
+ "settingsButtonLabel": "Налады",
+ "demoListsTitle": "Спісы",
+ "demoListsSubtitle": "Макеты спісаў, якія прагортваюцца",
+ "demoListsDescription": "Адзіны фіксаваны па вышыні радок, які звычайна ўтрымлівае тэкст, а таксама пачатковы і канцавы значкі.",
+ "demoOneLineListsTitle": "Адзін радок",
+ "demoTwoLineListsTitle": "Два радкі",
+ "demoListsSecondary": "Другасны тэкст",
+ "demoSelectionControlsTitle": "Элементы кіравання выбарам",
+ "craneFly7SemanticLabel": "Гара Рашмар",
+ "demoSelectionControlsCheckboxTitle": "Поле для птушкі",
+ "craneSleep3SemanticLabel": "Мужчына, які абапіраецца на антыкварны сіні аўтамабіль",
+ "demoSelectionControlsRadioTitle": "Радыё",
+ "demoSelectionControlsRadioDescription": "Радыёкнопкі дазваляюць карыстальніку выбраць з набору адзін варыянт. Выкарыстоўвайце іх для выбару ў асаблівых сітуацыях, каб карыстальнікі маглі бачыць усе даступныя варыянты.",
+ "demoSelectionControlsSwitchTitle": "Пераключальнік",
+ "demoSelectionControlsSwitchDescription": "Пераключальнікі мяняюць стан аднаго параметра налад з уключанага на выключаны і наадварот. Параметр, якім кіруе пераключальнік, а таксама яго стан павінны адлюстроўвацца ў адпаведнай убудаванай метцы.",
+ "craneFly0SemanticLabel": "Заснежаны краявід з сельскім домікам і вечназялёнымі дрэвамі",
+ "craneFly1SemanticLabel": "Палатка ў полі",
+ "craneFly2SemanticLabel": "Малітвеныя флажкі на фоне заснежанай гары",
+ "craneFly6SemanticLabel": "Від зверху на Палац вытанчаных мастацтваў",
+ "rallySeeAllAccounts": "Прагледзець усе рахункі",
+ "rallyBillAmount": "{billName}: трэба заплаціць {amount} да {date}.",
+ "shrineTooltipCloseCart": "Закрыць кошык",
+ "shrineTooltipCloseMenu": "Закрыць меню",
+ "shrineTooltipOpenMenu": "Адкрыць меню",
+ "shrineTooltipSettings": "Налады",
+ "shrineTooltipSearch": "Пошук",
+ "demoTabsDescription": "Укладкі групуюць змесціва па розных экранах для прагляду, па розных наборах даных і іншых узаемадзеяннях.",
+ "demoTabsSubtitle": "Укладкі, якія можна праглядаць асобна",
+ "demoTabsTitle": "Укладкі",
+ "rallyBudgetAmount": "Бюджэт {budgetName}: выкарыстана {amountUsed} з {amountTotal}, засталося {amountLeft}",
+ "shrineTooltipRemoveItem": "Выдаліць элемент",
+ "rallyAccountAmount": "Рахунак {accountName} {accountNumber} з {amount}.",
+ "rallySeeAllBudgets": "Прагледзець усе бюджэты",
+ "rallySeeAllBills": "Паказаць усе рахункі",
+ "craneFormDate": "Выберыце дату",
+ "craneFormOrigin": "Выберыце пункт адпраўлення",
+ "craneFly2": "Кхумбу, Непал",
+ "craneFly3": "Мачу-Пікчу, Перу",
+ "craneFly4": "Мале, Мальдывы",
+ "craneFly5": "Віцнау, Швейцарыя",
+ "craneFly6": "Мехіка, Мексіка",
+ "craneFly7": "Гара Рашмар, ЗША",
+ "settingsTextDirectionLocaleBased": "На падставе рэгіянальных налад",
+ "craneFly9": "Гавана, Куба",
+ "craneFly10": "Каір, Егіпет",
+ "craneFly11": "Лісабон, Партугалія",
+ "craneFly12": "Напа, ЗША",
+ "craneFly13": "Балі, Інданезія",
+ "craneSleep0": "Мале, Мальдывы",
+ "craneSleep1": "Аспен, ЗША",
+ "craneSleep2": "Мачу-Пікчу, Перу",
+ "demoCupertinoSegmentedControlTitle": "Сегментаваныя элементы кіравання",
+ "craneSleep4": "Віцнау, Швейцарыя",
+ "craneSleep5": "Біг-Сур, ЗША",
+ "craneSleep6": "Напа, ЗША",
+ "craneSleep7": "Порту, Партугалія",
+ "craneSleep8": "Тулум, Мексіка",
+ "craneEat5": "Сеул, Паўднёвая Карэя",
+ "demoChipTitle": "Чыпы",
+ "demoChipSubtitle": "Кампактныя элементы, якія ўвасабляюць увод, атрыбут або дзеянне",
+ "demoActionChipTitle": "Чып дзеяння",
+ "demoActionChipDescription": "Чыпы дзеянняў – гэта набор параметраў, якія запускаюць дзеянне, звязанае з асноўным змесцівам. Чыпы дзеянняў паказваюцца ў карыстальніцкім інтэрфейсе дынамічна і ў залежнасці ад кантэксту.",
+ "demoChoiceChipTitle": "Чып выбару",
+ "demoChoiceChipDescription": "Чыпы выбару дазваляюць выбраць з набору адзін варыянт. Чыпы выбару змяшчаюць звязаны апісальны тэкст або катэгорыі.",
+ "demoFilterChipTitle": "Чып фільтра",
+ "demoFilterChipDescription": "Чыпы фільтраў выкарыстоўваюць цэтлікі ці апісальныя словы для фільтравання змесціва.",
+ "demoInputChipTitle": "Чып уводу",
+ "demoInputChipDescription": "Чыпы ўводу змяшчаюць у кампактнай форме складаныя элементы інфармацыі, такія як аб'ект (асоба, месца або рэч) ці тэкст размовы.",
+ "craneSleep9": "Лісабон, Партугалія",
+ "craneEat10": "Лісабон, Партугалія",
+ "demoCupertinoSegmentedControlDescription": "Выкарыстоўваецца для выбару з некалькіх узаемавыключальных варыянтаў. Калі ў сегментаваным элеменце кіравання выбраны адзін з варыянтаў, іншыя варыянты будуць недаступныя для выбару ў гэтым элеменце.",
+ "chipTurnOnLights": "Уключыць святло",
+ "chipSmall": "Малы",
+ "chipMedium": "Сярэдні",
+ "chipLarge": "Вялікі",
+ "chipElevator": "Ліфт",
+ "chipWasher": "Пральная машына",
+ "chipFireplace": "Камін",
+ "chipBiking": "Язда на веласіпедзе",
+ "craneFormDiners": "Закусачныя",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Павялічце свой патэнцыяльны падатковы вылік! Прызначце катэгорыі для 1 непрызначанай трансакцыі.}one{Павялічце свой патэнцыяльны падатковы вылік! Прызначце катэгорыі для {count} непрызначанай трансакцыі.}few{Павялічце свой патэнцыяльны падатковы вылік! Прызначце катэгорыі для {count} непрызначаных трансакцый.}many{Павялічце свой патэнцыяльны падатковы вылік! Прызначце катэгорыі для {count} непрызначаных трансакцый.}other{Павялічце свой патэнцыяльны падатковы вылік! Прызначце катэгорыі для {count} непрызначаных трансакцый.}}",
+ "craneFormTime": "Выберыце час",
+ "craneFormLocation": "Выберыце месца",
+ "craneFormTravelers": "Падарожнікі",
+ "craneEat8": "Атланта, ЗША",
+ "craneFormDestination": "Выберыце пункт прызначэння",
+ "craneFormDates": "Выберыце даты",
+ "craneFly": "РЭЙС",
+ "craneSleep": "НАЧЛЕГ",
+ "craneEat": "ЕЖА",
+ "craneFlySubhead": "Агляд рэйсаў у пункт прызначэння",
+ "craneSleepSubhead": "Агляд месцаў для пражывання ў пункце прызначэння",
+ "craneEatSubhead": "Агляд рэстаранаў у пункце прызначэння",
+ "craneFlyStops": "{numberOfStops,plural, =0{Без перасадак}=1{1 перасадка}one{{numberOfStops} перасадка}few{{numberOfStops} перасадкі}many{{numberOfStops} перасадак}other{{numberOfStops} перасадкі}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{Няма даступных месцаў для пражывання}=1{Даступна 1 месца для пражывання}one{Даступна {totalProperties} месца для пражывання}few{Даступна {totalProperties} месцы для пражывання}many{Даступна {totalProperties} месцаў для пражывання}other{Даступна {totalProperties} месца для пражывання}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{Няма рэстаранаў}=1{1 рэстаран}one{{totalRestaurants} рэстаран}few{{totalRestaurants} рэстараны}many{{totalRestaurants} рэстаранаў}other{{totalRestaurants} рэстарана}}",
+ "craneFly0": "Аспен, ЗША",
+ "demoCupertinoSegmentedControlSubtitle": "Сегментаваныя элементы кіравання ў стылі iOS",
+ "craneSleep10": "Каір, Егіпет",
+ "craneEat9": "Мадрыд, Іспанія",
+ "craneFly1": "Біг-Сур, ЗША",
+ "craneEat7": "Нашвіл, ЗША",
+ "craneEat6": "Сіэтл, ЗША",
+ "craneFly8": "Сінгапур",
+ "craneEat4": "Парыж, Францыя",
+ "craneEat3": "Портланд, ЗША",
+ "craneEat2": "Кордава, Аргенціна",
+ "craneEat1": "Далас, ЗША",
+ "craneEat0": "Неапаль, Італія",
+ "craneSleep11": "Тайбэй, Тайвань",
+ "craneSleep3": "Гавана, Куба",
+ "shrineLogoutButtonCaption": "ВЫЙСЦІ",
+ "rallyTitleBills": "РАХУНКІ",
+ "rallyTitleAccounts": "УЛІКОВЫЯ ЗАПІСЫ",
+ "shrineProductVagabondSack": "Сумка-ранец",
+ "rallyAccountDetailDataInterestYtd": "Працэнты ад пачатку года да сённяшняга дня",
+ "shrineProductWhitneyBelt": "Скураны рамень",
+ "shrineProductGardenStrand": "Кветачныя пацеркі",
+ "shrineProductStrutEarrings": "Завушніцы \"цвікі\"",
+ "shrineProductVarsitySocks": "Спартыўныя шкарпэткі",
+ "shrineProductWeaveKeyring": "Плеценая бірулька",
+ "shrineProductGatsbyHat": "Картуз",
+ "shrineProductShrugBag": "Сумка балеро",
+ "shrineProductGiltDeskTrio": "Трайны стол",
+ "shrineProductCopperWireRack": "Драцяная стойка",
+ "shrineProductSootheCeramicSet": "Набор керамічнага посуду",
+ "shrineProductHurrahsTeaSet": "Чайны набор",
+ "shrineProductBlueStoneMug": "Сіні кубак",
+ "shrineProductRainwaterTray": "Латок для дажджавой вады",
+ "shrineProductChambrayNapkins": "Ільняныя сурвэткі",
+ "shrineProductSucculentPlanters": "Вазоны для сукулентаў",
+ "shrineProductQuartetTable": "Квадратны стол",
+ "shrineProductKitchenQuattro": "Кухонны набор",
+ "shrineProductClaySweater": "Бэжавы світар",
+ "shrineProductSeaTunic": "Пляжная туніка",
+ "shrineProductPlasterTunic": "Крэмавая туніка",
+ "rallyBudgetCategoryRestaurants": "Рэстараны",
+ "shrineProductChambrayShirt": "Ільняная клятчастая кашуля",
+ "shrineProductSeabreezeSweater": "Джэмпер",
+ "shrineProductGentryJacket": "Куртка ў стылі джэнтры",
+ "shrineProductNavyTrousers": "Цёмна-сінія штаны",
+ "shrineProductWalterHenleyWhite": "Лёгкая кофта (белая)",
+ "shrineProductSurfAndPerfShirt": "Бірузовая футболка",
+ "shrineProductGingerScarf": "Рыжы шаль",
+ "shrineProductRamonaCrossover": "Жаноцкая блузка з захватам",
+ "shrineProductClassicWhiteCollar": "Класічная белая блузка",
+ "shrineProductSunshirtDress": "Летняя сукенка",
+ "rallyAccountDetailDataInterestRate": "Працэнтная стаўка",
+ "rallyAccountDetailDataAnnualPercentageYield": "Гадавая працэнтная даходнасць",
+ "rallyAccountDataVacation": "Адпачынак",
+ "shrineProductFineLinesTee": "Кофта ў палоску",
+ "rallyAccountDataHomeSavings": "Зберажэнні для дома",
+ "rallyAccountDataChecking": "Разліковы",
+ "rallyAccountDetailDataInterestPaidLastYear": "Працэнты, выплачаныя ў мінулым годзе",
+ "rallyAccountDetailDataNextStatement": "Наступная выпіска з банкаўскага рахунку",
+ "rallyAccountDetailDataAccountOwner": "Уладальнік уліковага запісу",
+ "rallyBudgetCategoryCoffeeShops": "Кавярні",
+ "rallyBudgetCategoryGroceries": "Прадуктовыя тавары",
+ "shrineProductCeriseScallopTee": "Светла-вішнёвая футболка",
+ "rallyBudgetCategoryClothing": "Адзенне",
+ "rallySettingsManageAccounts": "Кіраваць уліковымі запісамі",
+ "rallyAccountDataCarSavings": "Зберажэнні на аўтамабіль",
+ "rallySettingsTaxDocuments": "Падатковыя дакументы",
+ "rallySettingsPasscodeAndTouchId": "Пароль і Touch ID",
+ "rallySettingsNotifications": "Апавяшчэнні",
+ "rallySettingsPersonalInformation": "Асабістая інфармацыя",
+ "rallySettingsPaperlessSettings": "Віртуальныя налады",
+ "rallySettingsFindAtms": "Знайсці банкаматы",
+ "rallySettingsHelp": "Даведка",
+ "rallySettingsSignOut": "Выйсці",
+ "rallyAccountTotal": "Усяго",
+ "rallyBillsDue": "Тэрмін пагашэння",
+ "rallyBudgetLeft": "Засталося",
+ "rallyAccounts": "Уліковыя запісы",
+ "rallyBills": "Рахункі",
+ "rallyBudgets": "Бюджэты",
+ "rallyAlerts": "Абвесткі",
+ "rallySeeAll": "ПРАГЛЕДЗЕЦЬ УСЁ",
+ "rallyFinanceLeft": "ЗАСТАЛОСЯ",
+ "rallyTitleOverview": "АГЛЯД",
+ "shrineProductShoulderRollsTee": "Футболка са свабодным рукавом",
+ "shrineNextButtonCaption": "ДАЛЕЙ",
+ "rallyTitleBudgets": "БЮДЖЭТЫ",
+ "rallyTitleSettings": "НАЛАДЫ",
+ "rallyLoginLoginToRally": "Уваход у Rally",
+ "rallyLoginNoAccount": "Няма ўліковага запісу?",
+ "rallyLoginSignUp": "ЗАРЭГІСТРАВАЦЦА",
+ "rallyLoginUsername": "Імя карыстальніка",
+ "rallyLoginPassword": "Пароль",
+ "rallyLoginLabelLogin": "Увайсці",
+ "rallyLoginRememberMe": "Запомніць мяне",
+ "rallyLoginButtonLogin": "УВАЙСЦІ",
+ "rallyAlertsMessageHeadsUpShopping": "Увага! Вы зрасходавалі {percent} свайго месячнага бюджэту на пакупкі.",
+ "rallyAlertsMessageSpentOnRestaurants": "На гэтым тыдні вы выдаткавалі {amount} на рэстараны.",
+ "rallyAlertsMessageATMFees": "У гэтым месяцы вы патрацілі {amount} на аплату камісіі ў банкаматах",
+ "rallyAlertsMessageCheckingAccount": "Выдатна! У гэтым месяцы на вашым разліковым рахунку засталося на {percent} больш сродкаў, чым у мінулым.",
+ "shrineMenuCaption": "МЕНЮ",
+ "shrineCategoryNameAll": "УСЕ",
+ "shrineCategoryNameAccessories": "АКСЕСУАРЫ",
+ "shrineCategoryNameClothing": "АДЗЕННЕ",
+ "shrineCategoryNameHome": "ДОМ",
+ "shrineLoginUsernameLabel": "Імя карыстальніка",
+ "shrineLoginPasswordLabel": "Пароль",
+ "shrineCancelButtonCaption": "СКАСАВАЦЬ",
+ "shrineCartTaxCaption": "Падатак:",
+ "shrineCartPageCaption": "КОШЫК",
+ "shrineProductQuantity": "Колькасць: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{НЯМА ЭЛЕМЕНТАЎ}=1{1 ЭЛЕМЕНТ}one{{quantity} ЭЛЕМЕНТ}few{{quantity} ЭЛЕМЕНТЫ}many{{quantity} ЭЛЕМЕНТАЎ}other{{quantity} ЭЛЕМЕНТА}}",
+ "shrineCartClearButtonCaption": "АЧЫСЦІЦЬ КОШЫК",
+ "shrineCartTotalCaption": "УСЯГО",
+ "shrineCartSubtotalCaption": "Прамежкавы вынік:",
+ "shrineCartShippingCaption": "Дастаўка:",
+ "shrineProductGreySlouchTank": "Шэрая майка",
+ "shrineProductStellaSunglasses": "Сонцаахоўныя акуляры Stella",
+ "shrineProductWhitePinstripeShirt": "Кашуля ў белую палоску",
+ "demoTextFieldWhereCanWeReachYou": "Па якім нумары з вамі можна звязацца?",
+ "settingsTextDirectionLTR": "Злева направа",
+ "settingsTextScalingLarge": "Вялікі",
+ "demoBottomSheetHeader": "Загаловак",
+ "demoBottomSheetItem": "Элемент {value}",
+ "demoBottomTextFieldsTitle": "Тэкставыя палі",
+ "demoTextFieldTitle": "Тэкставыя палі",
+ "demoTextFieldSubtitle": "Адзін радок тэксту і лічбаў, якія можна змяніць",
+ "demoTextFieldDescription": "Тэкставыя палі дазваляюць карыстальнікам уводзіць тэкст у карыстальніцкі інтэрфейс. Звычайна яны паяўляюцца ў формах і дыялогавых вокнах.",
+ "demoTextFieldShowPasswordLabel": "Паказаць пароль",
+ "demoTextFieldHidePasswordLabel": "Схаваць пароль",
+ "demoTextFieldFormErrors": "Перад адпраўкай выправіце памылкі, пазначаныя чырвоным колерам.",
+ "demoTextFieldNameRequired": "Увядзіце назву.",
+ "demoTextFieldOnlyAlphabeticalChars": "Уводзьце толькі літары.",
+ "demoTextFieldEnterUSPhoneNumber": "Увядзіце нумар тэлефона ў ЗША ў наступным фармаце: (###) ###-####.",
+ "demoTextFieldEnterPassword": "Увядзіце пароль.",
+ "demoTextFieldPasswordsDoNotMatch": "Паролі не супадаюць",
+ "demoTextFieldWhatDoPeopleCallYou": "Як вас завуць?",
+ "demoTextFieldNameField": "Імя*",
+ "demoBottomSheetButtonText": "ПАКАЗАЦЬ НІЖНІ АРКУШ",
+ "demoTextFieldPhoneNumber": "Нумар тэлефона*",
+ "demoBottomSheetTitle": "Ніжні аркуш",
+ "demoTextFieldEmail": "Электронная пошта",
+ "demoTextFieldTellUsAboutYourself": "Паведаміце нам пра сябе (напрыклад, напішыце, чым вы захапляецеся)",
+ "demoTextFieldKeepItShort": "Не пішыце многа – біяграфія павінна быць сціслай.",
+ "starterAppGenericButton": "КНОПКА",
+ "demoTextFieldLifeStory": "Біяграфія",
+ "demoTextFieldSalary": "Зарплата",
+ "demoTextFieldUSD": "Долар ЗША",
+ "demoTextFieldNoMoreThan": "Не больш за 8 сімвалаў.",
+ "demoTextFieldPassword": "Пароль*",
+ "demoTextFieldRetypePassword": "Увядзіце пароль яшчэ раз*",
+ "demoTextFieldSubmit": "АДПРАВІЦЬ",
+ "demoBottomNavigationSubtitle": "Ніжняя панэль навігацыі з плаўным пераходам",
+ "demoBottomSheetAddLabel": "Дадаць",
+ "demoBottomSheetModalDescription": "Мадальны ніжні аркуш можна выкарыстоўваць замест меню ці дыялогавага акна. Дзякуючы яму карыстальнік можа не ўзаемадзейнічаць з астатнімі раздзеламі праграмы.",
+ "demoBottomSheetModalTitle": "Мадальны ніжні аркуш",
+ "demoBottomSheetPersistentDescription": "Пастаянны ніжні аркуш паказвае дадатковую інфармацыю да асноўнага змесціва праграмы. Ён заўсёды застаецца бачным, нават калі карыстальнік узаемадзейнічае з іншымі раздзеламі праграмы.",
+ "demoBottomSheetPersistentTitle": "Пастаянны ніжні аркуш",
+ "demoBottomSheetSubtitle": "Пастаянныя і мадальныя ніжнія аркушы",
+ "demoTextFieldNameHasPhoneNumber": "Нумар тэлефона карыстальніка {name}: {phoneNumber}",
+ "buttonText": "КНОПКА",
+ "demoTypographyDescription": "Азначэнні для розных друкарскіх стыляў з каталога матэрыяльнага дызайну.",
+ "demoTypographySubtitle": "Усе стандартныя стылі тэксту",
+ "demoTypographyTitle": "Афармленне тэксту",
+ "demoFullscreenDialogDescription": "Уласцівасць поўнаэкраннасці вызначае, ці будзе ўваходная старонка выглядаць як мадальнае дыялогавае акно ў поўнаэкранным рэжыме",
+ "demoFlatButtonDescription": "Пры націсканні плоскай кнопкі паказваецца эфект чарніла, і кнопка не падымаецца ўверх. Выкарыстоўвайце плоскія кнопкі на панэлі інструментаў, у дыялогавых вокнах і ў тэксце з палямі",
+ "demoBottomNavigationDescription": "На панэлях навігацыі ў ніжняй частцы экрана могуць змяшчацца ад трох да пяці элементаў. Кожны з іх мае значок і (неабавязкова) тэкставую метку. Націснуўшы значок на ніжняй панэлі, карыстальнік пяройдзе на элемент вышэйшага ўзроўню навігацыі, звязаны з гэтым значком.",
+ "demoBottomNavigationSelectedLabel": "Выбраная метка",
+ "demoBottomNavigationPersistentLabels": "Пастаянныя меткі",
+ "starterAppDrawerItem": "Элемент {value}",
+ "demoTextFieldRequiredField": "* абавязковае поле",
+ "demoBottomNavigationTitle": "Навігацыя ўнізе экрана",
+ "settingsLightTheme": "Светлая",
+ "settingsTheme": "Тэма",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "Справа налева",
+ "settingsTextScalingHuge": "Вялізны",
+ "cupertinoButton": "Кнопка",
+ "settingsTextScalingNormal": "Звычайны",
+ "settingsTextScalingSmall": "Дробны",
+ "settingsSystemDefault": "Сістэма",
+ "settingsTitle": "Налады",
+ "rallyDescription": "Праграма для кіравання асабістымі фінансамі",
+ "aboutDialogDescription": "Каб праглядзець зыходны код гэтай праграмы, акрыйце старонку {value}.",
+ "bottomNavigationCommentsTab": "Каментарыі",
+ "starterAppGenericBody": "Асноўны тэкст",
+ "starterAppGenericHeadline": "Загаловак",
+ "starterAppGenericSubtitle": "Падзагаловак",
+ "starterAppGenericTitle": "Назва",
+ "starterAppTooltipSearch": "Пошук",
+ "starterAppTooltipShare": "Абагуліць",
+ "starterAppTooltipFavorite": "Абранае",
+ "starterAppTooltipAdd": "Дадаць",
+ "bottomNavigationCalendarTab": "Каляндар",
+ "starterAppDescription": "Адаптыўны макет запуску",
+ "starterAppTitle": "Праграма запуску",
+ "aboutFlutterSamplesRepo": "Узоры Flutter са сховішча Github",
+ "bottomNavigationContentPlaceholder": "Запаўняльнік для ўкладкі {title}",
+ "bottomNavigationCameraTab": "Камера",
+ "bottomNavigationAlarmTab": "Будзільнік",
+ "bottomNavigationAccountTab": "Уліковы запіс",
+ "demoTextFieldYourEmailAddress": "Ваш адрас электроннай пошты",
+ "demoToggleButtonDescription": "Кнопкі пераключэння могуць выкарыстоўвацца для групавання звязаных параметраў. Каб вылучыць групы звязаных кнопак пераключэння, у групы павінен быць абагулены кантэйнер",
+ "colorsGrey": "ШЭРЫ",
+ "colorsBrown": "КАРЫЧНЕВЫ",
+ "colorsDeepOrange": "ЦЁМНА-АРАНЖАВЫ",
+ "colorsOrange": "АРАНЖАВЫ",
+ "colorsAmber": "ЯНТАРНЫ",
+ "colorsYellow": "ЖОЎТЫ",
+ "colorsLime": "ЛАЙМАВЫ",
+ "colorsLightGreen": "СВЕТЛА-ЗЯЛЁНЫ",
+ "colorsGreen": "ЗЯЛЁНЫ",
+ "homeHeaderGallery": "Галерэя",
+ "homeHeaderCategories": "Катэгорыі",
+ "shrineDescription": "Праграма для куплі модных тавараў",
+ "craneDescription": "Персаналізаваная праграма для падарожжаў",
+ "homeCategoryReference": "АПОРНЫЯ СТЫЛІ І МУЛЬТЫМЕДЫЯ",
+ "demoInvalidURL": "Не ўдалося адлюстраваць URL-адрас:",
+ "demoOptionsTooltip": "Параметры",
+ "demoInfoTooltip": "Інфармацыя",
+ "demoCodeTooltip": "Прыклад кода",
+ "demoDocumentationTooltip": "Дакументацыя API",
+ "demoFullscreenTooltip": "Поўнаэкранны рэжым",
+ "settingsTextScaling": "Маштаб тэксту",
+ "settingsTextDirection": "Напрамак тэксту",
+ "settingsLocale": "Рэгіянальныя налады",
+ "settingsPlatformMechanics": "Механізм платформы",
+ "settingsDarkTheme": "Цёмная",
+ "settingsSlowMotion": "Запаволены рух",
+ "settingsAbout": "Пра Flutter Gallery",
+ "settingsFeedback": "Адправіць водгук",
+ "settingsAttribution": "Дызайн: TOASTER, Лондан",
+ "demoButtonTitle": "Кнопкі",
+ "demoButtonSubtitle": "Плоская, выпуклая, с контурам і іншыя",
+ "demoFlatButtonTitle": "Плоская кнопка",
+ "demoRaisedButtonDescription": "Выпуклыя кнопкі надаюць аб'ёмнасць пераважна плоскім макетам. Яны паказваюць функцыі ў занятых або шырокіх абласцях.",
+ "demoRaisedButtonTitle": "Выпуклая кнопка",
+ "demoOutlineButtonTitle": "Кнопка з контурам",
+ "demoOutlineButtonDescription": "Кнопкі з контурамі цямнеюць і падымаюцца ўгору пры націсканні. Яны часта спалучаюцца з выпуклымі кнопкамі для вызначэння альтэрнатыўнага, другаснага дзеяння.",
+ "demoToggleButtonTitle": "Кнопкі пераключэння",
+ "colorsTeal": "СІНЕ-ЗЯЛЁНЫ",
+ "demoFloatingButtonTitle": "Рухомая кнопка дзеяння",
+ "demoFloatingButtonDescription": "Рухомая кнопка дзеяння – гэта круглы значок, які рухаецца над змесцівам для выканання асноўнага дзеяння ў праграме.",
+ "demoDialogTitle": "Дыялогавыя вокны",
+ "demoDialogSubtitle": "Простае дыялогавае акно, абвестка і поўнаэкраннае акно",
+ "demoAlertDialogTitle": "Абвестка",
+ "demoAlertDialogDescription": "Дыялогавае акно абвесткі інфармуе карыстальніка пра сітуацыі, для якіх патрабуецца пацвярджэнне. Дыялогавае акно абвесткі можа мець назву і спіс дзеянняў.",
+ "demoAlertTitleDialogTitle": "Абвестка з назвай",
+ "demoSimpleDialogTitle": "Простае дыялогавае акно",
+ "demoSimpleDialogDescription": "Простае дыялогавае акно прапануе карыстальніку выбар паміж некалькімі варыянтамі. Простае дыялогавае акно можа мець назву, якая паказваецца над варыянтамі выбару.",
+ "demoFullscreenDialogTitle": "Поўнаэкраннае дыялогавае акно",
+ "demoCupertinoButtonsTitle": "Кнопкі",
+ "demoCupertinoButtonsSubtitle": "Кнопкі ў стылі iOS",
+ "demoCupertinoButtonsDescription": "Кнопка ў стылі iOS. Яна ўключае тэкст і (ці) значок, якія знікаюць і паяўляюцца пры дакрананні. Можа мець фон (неабавязкова).",
+ "demoCupertinoAlertsTitle": "Абвесткі",
+ "demoCupertinoAlertsSubtitle": "Дыялогавыя вокны абвестак у стылі iOS",
+ "demoCupertinoAlertTitle": "Абвестка",
+ "demoCupertinoAlertDescription": "Дыялогавае акно абвесткі інфармуе карыстальніка пра сітуацыі, для якіх патрабуецца пацвярджэнне. Дыялогавае акно абвесткі можа мець назву, змесціва і спіс дзеянняў. Назва паказваецца над змесцівам, а дзеянні – пад ім.",
+ "demoCupertinoAlertWithTitleTitle": "Абвестка з назвай",
+ "demoCupertinoAlertButtonsTitle": "Абвестка з кнопкамі",
+ "demoCupertinoAlertButtonsOnlyTitle": "Толькі кнопкі абвестак",
+ "demoCupertinoActionSheetTitle": "Аркуш дзеяння",
+ "demoCupertinoActionSheetDescription": "Аркуш дзеяння – гэта асаблівы стыль абвесткі, калі карыстальніку ў сувязі з пэўным змесцівам прапануецца на выбар больш за адзін варыянт. Аркуш дзеяння можа мець назву, дадатковае паведамленне і спіс дзеянняў.",
+ "demoColorsTitle": "Колеры",
+ "demoColorsSubtitle": "Усе тыповыя колеры",
+ "demoColorsDescription": "Колеры і ўзоры колераў, якія прадстаўляюць палітру колераў матэрыялу.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Стварыць",
+ "dialogSelectedOption": "Вы выбралі: \"{value}\"",
+ "dialogDiscardTitle": "Адхіліць чарнавік?",
+ "dialogLocationTitle": "Выкарыстоўваць службу геалакацыі Google?",
+ "dialogLocationDescription": "Дазвольце Google вызначаць ваша месцазнаходжанне для розных праграм. Ананімныя даныя пра месцазнаходжанне будуць адпраўляцца ў Google, нават калі ніякія праграмы не запушчаны.",
+ "dialogCancel": "СКАСАВАЦЬ",
+ "dialogDiscard": "АДХІЛІЦЬ",
+ "dialogDisagree": "НЕ ЗГАДЖАЮСЯ",
+ "dialogAgree": "ЗГАДЖАЮСЯ",
+ "dialogSetBackup": "Задаць уліковы запіс для рэзервовага капіравання",
+ "colorsBlueGrey": "ШЫЗЫ",
+ "dialogShow": "ПАКАЗАЦЬ ДЫЯЛОГАВАЕ АКНО",
+ "dialogFullscreenTitle": "Поўнаэкраннае дыялогавае акно",
+ "dialogFullscreenSave": "ЗАХАВАЦЬ",
+ "dialogFullscreenDescription": "Дэманстрацыя поўнаэкраннага дыялогавага акна",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "З фонам",
+ "cupertinoAlertCancel": "Скасаваць",
+ "cupertinoAlertDiscard": "Адхіліць",
+ "cupertinoAlertLocationTitle": "Дазволіць \"Картам\" мець доступ да звестак пра ваша месцазнаходжанне падчас выкарыстання праграмы?",
+ "cupertinoAlertLocationDescription": "Ваша месцазнаходжанне будзе паказвацца на карце і выкарыстоўвацца для пракладкі маршрутаў, пошуку месцаў паблізу і вызначэння прыкладнага часу паездак.",
+ "cupertinoAlertAllow": "Дазволіць",
+ "cupertinoAlertDontAllow": "Не дазваляць",
+ "cupertinoAlertFavoriteDessert": "Выберыце ўлюбёны дэсерт",
+ "cupertinoAlertDessertDescription": "Выберыце ўлюбёны тып дэсерту са спіса ўнізе. З улікам выбранага вамі варыянта будзе складацца спіс месцаў паблізу, дзе гатуюць падобныя ласункі.",
+ "cupertinoAlertCheesecake": "Чызкейк",
+ "cupertinoAlertTiramisu": "Тырамісу",
+ "cupertinoAlertApplePie": "Apple Pie",
+ "cupertinoAlertChocolateBrownie": "Шакаладны браўні",
+ "cupertinoShowAlert": "Паказаць абвестку",
+ "colorsRed": "ЧЫРВОНЫ",
+ "colorsPink": "РУЖОВЫ",
+ "colorsPurple": "ФІЯЛЕТАВЫ",
+ "colorsDeepPurple": "ЦЁМНА-ФІЯЛЕТАВЫ",
+ "colorsIndigo": "ІНДЫГА",
+ "colorsBlue": "СІНІ",
+ "colorsLightBlue": "СВЕТЛА-СІНІ",
+ "colorsCyan": "БЛАКІТНЫ",
+ "dialogAddAccount": "Дадаць уліковы запіс",
+ "Gallery": "Галерэя",
+ "Categories": "Катэгорыі",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "Асноўная праграма для купляў",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "Праграма для падарожжаў",
+ "MATERIAL": "МАТЭРЫЯЛ",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "АПОРНЫЯ СТЫЛІ І МУЛЬТЫМЕДЫЯ"
+}
diff --git a/gallery/lib/l10n/intl_bg.arb b/gallery/lib/l10n/intl_bg.arb
new file mode 100644
index 0000000..0675fe3
--- /dev/null
+++ b/gallery/lib/l10n/intl_bg.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Преглед на опциите",
+ "demoOptionsFeatureDescription": "Докоснете тук, за да видите наличните опции за тази демонстрация.",
+ "demoCodeViewerCopyAll": "КОПИРАНЕ НА ВСИЧКО",
+ "shrineScreenReaderRemoveProductButton": "Премахване на {product}",
+ "shrineScreenReaderProductAddToCart": "Добавяне към кошницата",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Пазарска кошница – няма елементи}=1{Пазарска кошница – 1 елемент}other{Пазарска кошница – {quantity} елемента}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Копирането в буферната памет не бе успешно: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Копирано в буферната памет.",
+ "craneSleep8SemanticLabel": "Майски руини на скала над плажа",
+ "craneSleep4SemanticLabel": "Хотел, разположен на брега на езеро, на фона на планини",
+ "craneSleep2SemanticLabel": "Цитаделата Мачу Пикчу",
+ "craneSleep1SemanticLabel": "Зимен пейзаж с шале и вечнозелени дървета",
+ "craneSleep0SemanticLabel": "Бунгала над водата",
+ "craneFly13SemanticLabel": "Крайбрежен басейн с палми",
+ "craneFly12SemanticLabel": "Басейн с палми",
+ "craneFly11SemanticLabel": "Тухлен фар край морето",
+ "craneFly10SemanticLabel": "Минаретата на джамията Ал-Азхар при залез",
+ "craneFly9SemanticLabel": "Мъж, облегнат на класическа синя кола",
+ "craneFly8SemanticLabel": "Горичка от супердървета",
+ "craneEat9SemanticLabel": "Щанд с печива в кафене",
+ "craneEat2SemanticLabel": "Хамбургер",
+ "craneFly5SemanticLabel": "Хотел, разположен на брега на езеро, на фона на планини",
+ "demoSelectionControlsSubtitle": "Квадратчета за отметка, бутони за избор и превключватели",
+ "craneEat10SemanticLabel": "Жена, която държи огромен сандвич с пастърма",
+ "craneFly4SemanticLabel": "Бунгала над водата",
+ "craneEat7SemanticLabel": "Вход към пекарна",
+ "craneEat6SemanticLabel": "Ястие със скариди",
+ "craneEat5SemanticLabel": "Артистична зона за сядане в ресторант",
+ "craneEat4SemanticLabel": "Шоколадов десерт",
+ "craneEat3SemanticLabel": "Корейско тако",
+ "craneFly3SemanticLabel": "Цитаделата Мачу Пикчу",
+ "craneEat1SemanticLabel": "Празен бар с високи столове",
+ "craneEat0SemanticLabel": "Пица в пещ на дърва",
+ "craneSleep11SemanticLabel": "Небостъргачът Тайпе 101",
+ "craneSleep10SemanticLabel": "Минаретата на джамията Ал-Азхар при залез",
+ "craneSleep9SemanticLabel": "Тухлен фар край морето",
+ "craneEat8SemanticLabel": "Раци в чиния",
+ "craneSleep7SemanticLabel": "Цветни апартаменти на площад „Рибейра“",
+ "craneSleep6SemanticLabel": "Басейн с палми",
+ "craneSleep5SemanticLabel": "Палатка на полето",
+ "settingsButtonCloseLabel": "Затваряне на настройките",
+ "demoSelectionControlsCheckboxDescription": "Квадратчетата за отметка дават възможност на потребителя да избере няколко опции от даден набор. Стойността на нормалните квадратчета за отметка е true или false, а на тези, които имат три състояния, тя може да бъде и null.",
+ "settingsButtonLabel": "Настройки",
+ "demoListsTitle": "Списъци",
+ "demoListsSubtitle": "Оформления с превъртащ се списък",
+ "demoListsDescription": "Един ред с фиксирана височина, който обикновено съдържа текст и икона, поставена в началото или края.",
+ "demoOneLineListsTitle": "Един ред",
+ "demoTwoLineListsTitle": "Два реда",
+ "demoListsSecondary": "Вторичен текст",
+ "demoSelectionControlsTitle": "Контроли за избор",
+ "craneFly7SemanticLabel": "Планината Ръшмор",
+ "demoSelectionControlsCheckboxTitle": "Квадратче за отметка",
+ "craneSleep3SemanticLabel": "Мъж, облегнат на класическа синя кола",
+ "demoSelectionControlsRadioTitle": "Бутон за избор",
+ "demoSelectionControlsRadioDescription": "Бутоните за избор дават възможност на потребителя да избере една опция от даден набор. Използвайте ги, ако смятате, че потребителят трябва да види всички налични опции една до друга.",
+ "demoSelectionControlsSwitchTitle": "Превключвател",
+ "demoSelectionControlsSwitchDescription": "Превключвателите за включване/изключване променят състоянието на една опция в настройките. Състоянието на превключвателя, както и управляваната от него опция, трябва да са ясно посочени в съответния вграден етикет.",
+ "craneFly0SemanticLabel": "Зимен пейзаж с шале и вечнозелени дървета",
+ "craneFly1SemanticLabel": "Палатка на полето",
+ "craneFly2SemanticLabel": "Молитвени знамена на фона на заснежени планини",
+ "craneFly6SemanticLabel": "Дворецът на изящните изкуства от птичи поглед",
+ "rallySeeAllAccounts": "Преглед на всички банкови сметки",
+ "rallyBillAmount": "Сметка за {billName} на стойност {amount}, дължима на {date}.",
+ "shrineTooltipCloseCart": "Затваряне на кошницата",
+ "shrineTooltipCloseMenu": "Затваряне на менюто",
+ "shrineTooltipOpenMenu": "Отваряне на менюто",
+ "shrineTooltipSettings": "Настройки",
+ "shrineTooltipSearch": "Търсене",
+ "demoTabsDescription": "Разделите служат за организиране на съдържанието на различни екрани, набори от данни и други взаимодействия.",
+ "demoTabsSubtitle": "Раздели със самостоятелно превъртащи се изгледи",
+ "demoTabsTitle": "Раздели",
+ "rallyBudgetAmount": "Бюджет за {budgetName}, от който са използвани {amountUsed} от общо {amountTotal} и остават {amountLeft}",
+ "shrineTooltipRemoveItem": "Премахване на артикула",
+ "rallyAccountAmount": "{accountName} сметка {accountNumber} с наличност {amount}.",
+ "rallySeeAllBudgets": "Преглед на всички бюджети",
+ "rallySeeAllBills": "Преглед на всички сметки",
+ "craneFormDate": "Избор на дата",
+ "craneFormOrigin": "Избор на начална точка",
+ "craneFly2": "Долината Кхумбу, Непал",
+ "craneFly3": "Мачу Пикчу, Перу",
+ "craneFly4": "Мале, Малдиви",
+ "craneFly5": "Вицнау, Швейцария",
+ "craneFly6": "Град Мексико, Мексико",
+ "craneFly7": "Планината Ръшмор, САЩ",
+ "settingsTextDirectionLocaleBased": "Въз основа на локала",
+ "craneFly9": "Хавана, Куба",
+ "craneFly10": "Кайро, Египет",
+ "craneFly11": "Лисабон, Португалия",
+ "craneFly12": "Напа, САЩ",
+ "craneFly13": "Бали, Индонезия",
+ "craneSleep0": "Мале, Малдиви",
+ "craneSleep1": "Аспън, САЩ",
+ "craneSleep2": "Мачу Пикчу, Перу",
+ "demoCupertinoSegmentedControlTitle": "Сегментиран превключвател",
+ "craneSleep4": "Вицнау, Швейцария",
+ "craneSleep5": "Биг Сър, САЩ",
+ "craneSleep6": "Напа, САЩ",
+ "craneSleep7": "Порто, Португалия",
+ "craneSleep8": "Тулум, Мексико",
+ "craneEat5": "Сеул, Южна Корея",
+ "demoChipTitle": "Чипове",
+ "demoChipSubtitle": "Компактни елементи, които представят информация за въвеждане, атрибут или действие",
+ "demoActionChipTitle": "Чип за действие",
+ "demoActionChipDescription": "Чиповете за действие представляват набор от опции, които задействат действие, свързано с основното съдържание. Те трябва да се показват в потребителския интерфейс динамично и спрямо контекста.",
+ "demoChoiceChipTitle": "Чип за избор",
+ "demoChoiceChipDescription": "Чиповете за избор представят един избор от даден набор. Те съдържат свързан описателен текст или категории.",
+ "demoFilterChipTitle": "Чип за филтриране",
+ "demoFilterChipDescription": "Чиповете за филтриране използват маркери или описателни думи за филтриране на съдържанието.",
+ "demoInputChipTitle": "Чип за въвеждане",
+ "demoInputChipDescription": "Чиповете за въвеждане представят сложна информация, като например субект (лице, място или предмет) или разговорен текст, в компактен вид.",
+ "craneSleep9": "Лисабон, Португалия",
+ "craneEat10": "Лисабон, Португалия",
+ "demoCupertinoSegmentedControlDescription": "Служи за избор между няколко взаимоизключващи се опции. При избиране на някоя от опциите в сегментирания превключвател останалите се деактивират.",
+ "chipTurnOnLights": "Включване на светлинните индикатори",
+ "chipSmall": "Малък",
+ "chipMedium": "Среден",
+ "chipLarge": "Голям",
+ "chipElevator": "Асансьор",
+ "chipWasher": "Пералня",
+ "chipFireplace": "Камина",
+ "chipBiking": "Колоездене",
+ "craneFormDiners": "Закусвални",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Увеличете потенциалните данъчни облекчения! Задайте категории за 1 транзакция, която няма такива.}other{Увеличете потенциалните данъчни облекчения! Задайте категории за {count} транзакции, които нямат такива.}}",
+ "craneFormTime": "Избор на час",
+ "craneFormLocation": "Избор на местоположение",
+ "craneFormTravelers": "Пътуващи",
+ "craneEat8": "Атланта, САЩ",
+ "craneFormDestination": "Избор на дестинация",
+ "craneFormDates": "Избор на дати",
+ "craneFly": "ПОЛЕТИ",
+ "craneSleep": "СПАНЕ",
+ "craneEat": "ХРАНЕНЕ",
+ "craneFlySubhead": "Разглеждане на полети по дестинация",
+ "craneSleepSubhead": "Разглеждане на имоти по дестинация",
+ "craneEatSubhead": "Разглеждане на ресторанти по дестинация",
+ "craneFlyStops": "{numberOfStops,plural, =0{Директен}=1{1 прекачване}other{{numberOfStops} прекачвания}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{Няма свободни имоти}=1{1 свободен имот}other{{totalProperties} свободни имота}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{Няма ресторанти}=1{1 ресторант}other{{totalRestaurants} ресторанта}}",
+ "craneFly0": "Аспън, САЩ",
+ "demoCupertinoSegmentedControlSubtitle": "Сегментиран превключвател в стил iOS",
+ "craneSleep10": "Кайро, Египет",
+ "craneEat9": "Мадрид, Испания",
+ "craneFly1": "Биг Сър, САЩ",
+ "craneEat7": "Нашвил, САЩ",
+ "craneEat6": "Сиатъл, САЩ",
+ "craneFly8": "Сингапур",
+ "craneEat4": "Париж, Франция",
+ "craneEat3": "Портланд, САЩ",
+ "craneEat2": "Кордоба, Аржентина",
+ "craneEat1": "Далас, САЩ",
+ "craneEat0": "Неапол, Италия",
+ "craneSleep11": "Тайпе, Тайван",
+ "craneSleep3": "Хавана, Куба",
+ "shrineLogoutButtonCaption": "ИЗХОД",
+ "rallyTitleBills": "СМЕТКИ",
+ "rallyTitleAccounts": "СМЕТКИ",
+ "shrineProductVagabondSack": "Раница",
+ "rallyAccountDetailDataInterestYtd": "Лихва от началото на годината",
+ "shrineProductWhitneyBelt": "Кафяв колан",
+ "shrineProductGardenStrand": "Огърлица",
+ "shrineProductStrutEarrings": "Обици",
+ "shrineProductVarsitySocks": "Спортни чорапи",
+ "shrineProductWeaveKeyring": "Халка за ключове с плетена дръжка",
+ "shrineProductGatsbyHat": "Шапка с периферия",
+ "shrineProductShrugBag": "Чанта за рамо",
+ "shrineProductGiltDeskTrio": "Комплект за бюро",
+ "shrineProductCopperWireRack": "Полица от медна тел",
+ "shrineProductSootheCeramicSet": "Керамичен сервиз",
+ "shrineProductHurrahsTeaSet": "Сервиз за чай",
+ "shrineProductBlueStoneMug": "Синя керамична чаша",
+ "shrineProductRainwaterTray": "Поднос",
+ "shrineProductChambrayNapkins": "Салфетки от шамбре",
+ "shrineProductSucculentPlanters": "Сукулентни растения",
+ "shrineProductQuartetTable": "Маса",
+ "shrineProductKitchenQuattro": "Кухненски комплект",
+ "shrineProductClaySweater": "Пастелен пуловер",
+ "shrineProductSeaTunic": "Туника",
+ "shrineProductPlasterTunic": "Бяла туника",
+ "rallyBudgetCategoryRestaurants": "Ресторанти",
+ "shrineProductChambrayShirt": "Риза от шамбре",
+ "shrineProductSeabreezeSweater": "Светлосин пуловер",
+ "shrineProductGentryJacket": "Мъжко яке",
+ "shrineProductNavyTrousers": "Тъмносини панталони",
+ "shrineProductWalterHenleyWhite": "Бяла блуза",
+ "shrineProductSurfAndPerfShirt": "Светлосиня тениска",
+ "shrineProductGingerScarf": "Бежов шал",
+ "shrineProductRamonaCrossover": "Дамска риза",
+ "shrineProductClassicWhiteCollar": "Класическа бяла якичка",
+ "shrineProductSunshirtDress": "Плажна рокля",
+ "rallyAccountDetailDataInterestRate": "Лихвен процент",
+ "rallyAccountDetailDataAnnualPercentageYield": "Годишна доходност",
+ "rallyAccountDataVacation": "Почивка",
+ "shrineProductFineLinesTee": "Тениска на райета",
+ "rallyAccountDataHomeSavings": "Депозит за жилище",
+ "rallyAccountDataChecking": "Разплащателна сметка",
+ "rallyAccountDetailDataInterestPaidLastYear": "Лихва през миналата година",
+ "rallyAccountDetailDataNextStatement": "Следващото извлечение",
+ "rallyAccountDetailDataAccountOwner": "Титуляр на сметката",
+ "rallyBudgetCategoryCoffeeShops": "Кафенета",
+ "rallyBudgetCategoryGroceries": "Хранителни стоки",
+ "shrineProductCeriseScallopTee": "Черешова тениска",
+ "rallyBudgetCategoryClothing": "Облекло",
+ "rallySettingsManageAccounts": "Управление на сметките",
+ "rallyAccountDataCarSavings": "Депозит за автомобил",
+ "rallySettingsTaxDocuments": "Данъчни документи",
+ "rallySettingsPasscodeAndTouchId": "Код за достъп и Touch ID",
+ "rallySettingsNotifications": "Известия",
+ "rallySettingsPersonalInformation": "Лична информация",
+ "rallySettingsPaperlessSettings": "Настройки за работа без хартия",
+ "rallySettingsFindAtms": "Намиране на банкомати",
+ "rallySettingsHelp": "Помощ",
+ "rallySettingsSignOut": "Изход",
+ "rallyAccountTotal": "Общо",
+ "rallyBillsDue": "Дължими",
+ "rallyBudgetLeft": "Остават",
+ "rallyAccounts": "Сметки",
+ "rallyBills": "Сметки",
+ "rallyBudgets": "Бюджети",
+ "rallyAlerts": "Сигнали",
+ "rallySeeAll": "ПРЕГЛЕД НА ВСИЧКИ",
+ "rallyFinanceLeft": "ОСТАВАТ",
+ "rallyTitleOverview": "ОБЩ ПРЕГЛЕД",
+ "shrineProductShoulderRollsTee": "Тениска",
+ "shrineNextButtonCaption": "НАПРЕД",
+ "rallyTitleBudgets": "БЮДЖЕТИ",
+ "rallyTitleSettings": "НАСТРОЙКИ",
+ "rallyLoginLoginToRally": "Вход в Rally",
+ "rallyLoginNoAccount": "Нямате профил?",
+ "rallyLoginSignUp": "РЕГИСТРИРАНЕ",
+ "rallyLoginUsername": "Потребителско име",
+ "rallyLoginPassword": "Парола",
+ "rallyLoginLabelLogin": "Вход",
+ "rallyLoginRememberMe": "Запомнете ме",
+ "rallyLoginButtonLogin": "ВХОД",
+ "rallyAlertsMessageHeadsUpShopping": "Внимание! Изхарчихте {percent} от бюджета си за пазаруване за този месец.",
+ "rallyAlertsMessageSpentOnRestaurants": "Тази седмица сте изхарчили {amount} за ресторанти.",
+ "rallyAlertsMessageATMFees": "Този месец сте изхарчили {amount} за такси за банкомат",
+ "rallyAlertsMessageCheckingAccount": "Браво! Разплащателната ви сметка е с(ъс) {percent} повече средства спрямо миналия месец.",
+ "shrineMenuCaption": "МЕНЮ",
+ "shrineCategoryNameAll": "ВСИЧКИ",
+ "shrineCategoryNameAccessories": "АКСЕСОАРИ",
+ "shrineCategoryNameClothing": "ОБЛЕКЛО",
+ "shrineCategoryNameHome": "ДОМАШНИ",
+ "shrineLoginUsernameLabel": "Потребителско име",
+ "shrineLoginPasswordLabel": "Парола",
+ "shrineCancelButtonCaption": "ОТКАЗ",
+ "shrineCartTaxCaption": "Данък:",
+ "shrineCartPageCaption": "КОШНИЦА",
+ "shrineProductQuantity": "Количество: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{НЯМА АРТИКУЛИ}=1{1 АРТИКУЛ}other{{quantity} АРТИКУЛА}}",
+ "shrineCartClearButtonCaption": "ИЗЧИСТВАНЕ НА КОШНИЦАТА",
+ "shrineCartTotalCaption": "ОБЩО",
+ "shrineCartSubtotalCaption": "Междинна сума:",
+ "shrineCartShippingCaption": "Доставка:",
+ "shrineProductGreySlouchTank": "Сива фланелка без ръкави",
+ "shrineProductStellaSunglasses": "Слънчеви очила Stella",
+ "shrineProductWhitePinstripeShirt": "Бяла риза с тънки райета",
+ "demoTextFieldWhereCanWeReachYou": "Как можем да се свържем с вас?",
+ "settingsTextDirectionLTR": "От ляво надясно",
+ "settingsTextScalingLarge": "Голям",
+ "demoBottomSheetHeader": "Заглавка",
+ "demoBottomSheetItem": "Артикул {value}",
+ "demoBottomTextFieldsTitle": "Текстови полета",
+ "demoTextFieldTitle": "Текстови полета",
+ "demoTextFieldSubtitle": "Един ред от текст и числа, който може да се редактира",
+ "demoTextFieldDescription": "Текстовите полета дават възможност на потребителите да въвеждат текст в потребителския интерфейс. Те обикновено се срещат в диалогови прозорци и формуляри.",
+ "demoTextFieldShowPasswordLabel": "Показване на паролата",
+ "demoTextFieldHidePasswordLabel": "Скриване на паролата",
+ "demoTextFieldFormErrors": "Моля, коригирайте грешките в червено, преди да изпратите.",
+ "demoTextFieldNameRequired": "Трябва да въведете име.",
+ "demoTextFieldOnlyAlphabeticalChars": "Моля, въведете само букви.",
+ "demoTextFieldEnterUSPhoneNumber": "(XXX) XXX-XXXX – Въведете телефонен номер от САЩ.",
+ "demoTextFieldEnterPassword": "Моля, въведете парола.",
+ "demoTextFieldPasswordsDoNotMatch": "Паролите не съвпадат",
+ "demoTextFieldWhatDoPeopleCallYou": "Как ви наричат хората?",
+ "demoTextFieldNameField": "Име*",
+ "demoBottomSheetButtonText": "ПОКАЗВАНЕ НА ДОЛНИЯ ЛИСТ",
+ "demoTextFieldPhoneNumber": "Телефонен номер*",
+ "demoBottomSheetTitle": "Долен лист",
+ "demoTextFieldEmail": "Имейл адрес",
+ "demoTextFieldTellUsAboutYourself": "Разкажете ни за себе си (напр. напишете с какво се занимавате или какви хобита имате)",
+ "demoTextFieldKeepItShort": "Пишете кратко, това е демонстрация.",
+ "starterAppGenericButton": "БУТОН",
+ "demoTextFieldLifeStory": "Биография",
+ "demoTextFieldSalary": "Заплата",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Не повече от 8 знака.",
+ "demoTextFieldPassword": "Парола*",
+ "demoTextFieldRetypePassword": "Въведете отново паролата*",
+ "demoTextFieldSubmit": "ИЗПРАЩАНЕ",
+ "demoBottomNavigationSubtitle": "Долна навигация с преливащи се изгледи",
+ "demoBottomSheetAddLabel": "Добавяне",
+ "demoBottomSheetModalDescription": "Модалният долен лист е алтернатива на менюто или диалоговия прозорец, като не допуска потребителят да взаимодейства с останалата част от приложението.",
+ "demoBottomSheetModalTitle": "Модален долен лист",
+ "demoBottomSheetPersistentDescription": "Постоянният долен лист показва информация, допълваща основното съдържание на приложението. Той остава видим дори когато потребителят взаимодейства с други части на приложението.",
+ "demoBottomSheetPersistentTitle": "Постоянен долен лист",
+ "demoBottomSheetSubtitle": "Постоянен и модален долен лист",
+ "demoTextFieldNameHasPhoneNumber": "Телефонният номер на {name} е {phoneNumber}",
+ "buttonText": "БУТОН",
+ "demoTypographyDescription": "Дефиниции за различните типографски стилове в Material Design.",
+ "demoTypographySubtitle": "Всички предварително дефинирани текстови стилове",
+ "demoTypographyTitle": "Типография",
+ "demoFullscreenDialogDescription": "Свойството fullscreenDialog посочва дали входящата страница е модален диалогов прозорец на цял екран",
+ "demoFlatButtonDescription": "При натискане плоските бутони показват разливане на мастило, но не се повдигат. Използвайте този тип бутони в ленти с инструменти, диалогови прозорци и при вграждане с вътрешни полета",
+ "demoBottomNavigationDescription": "Долните ленти за навигация са в долната част на екрана и в тях се показват от три до пет дестинации. Всяка дестинация е означена с икона и незадължителен текстов етикет. Когато потребителят докосне долна икона за навигация, преминава към навигационната дестинация от първо ниво, свързана с иконата.",
+ "demoBottomNavigationSelectedLabel": "Избран етикет",
+ "demoBottomNavigationPersistentLabels": "Постоянни етикети",
+ "starterAppDrawerItem": "Артикул {value}",
+ "demoTextFieldRequiredField": "* указва задължително поле",
+ "demoBottomNavigationTitle": "Долна навигация",
+ "settingsLightTheme": "Светла",
+ "settingsTheme": "Тема",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "От дясно наляво",
+ "settingsTextScalingHuge": "Огромен",
+ "cupertinoButton": "Бутон",
+ "settingsTextScalingNormal": "Нормален",
+ "settingsTextScalingSmall": "Малък",
+ "settingsSystemDefault": "Система",
+ "settingsTitle": "Настройки",
+ "rallyDescription": "Приложение за лични финанси",
+ "aboutDialogDescription": "За да видите изходния код за това приложение, моля, посетете {value}.",
+ "bottomNavigationCommentsTab": "Коментари",
+ "starterAppGenericBody": "Основен текст",
+ "starterAppGenericHeadline": "Заглавие",
+ "starterAppGenericSubtitle": "Подзаглавие",
+ "starterAppGenericTitle": "Заглавие",
+ "starterAppTooltipSearch": "Търсене",
+ "starterAppTooltipShare": "Споделяне",
+ "starterAppTooltipFavorite": "Означаване като любимо",
+ "starterAppTooltipAdd": "Добавяне",
+ "bottomNavigationCalendarTab": "Календар",
+ "starterAppDescription": "Адаптивно оформление за стартиране",
+ "starterAppTitle": "Приложение Starter",
+ "aboutFlutterSamplesRepo": "Хранилище в Github с примери за Flutter",
+ "bottomNavigationContentPlaceholder": "Заместващ текст за раздел {title}",
+ "bottomNavigationCameraTab": "Камера",
+ "bottomNavigationAlarmTab": "Будилник",
+ "bottomNavigationAccountTab": "Сметка",
+ "demoTextFieldYourEmailAddress": "Имейл адресът ви",
+ "demoToggleButtonDescription": "Бутоните за превключване могат да се използват за групиране на сродни опции. За да изпъкнат групите със сродни бутони за превключване, всяка група трябва да споделя общ контейнер",
+ "colorsGrey": "СИВО",
+ "colorsBrown": "КАФЯВО",
+ "colorsDeepOrange": "НАСИТЕНО ОРАНЖЕВО",
+ "colorsOrange": "ОРАНЖЕВО",
+ "colorsAmber": "КЕХЛИБАРЕНО",
+ "colorsYellow": "ЖЪЛТО",
+ "colorsLime": "ЛИМОНОВОЗЕЛЕНО",
+ "colorsLightGreen": "СВЕТЛОЗЕЛЕНО",
+ "colorsGreen": "ЗЕЛЕНО",
+ "homeHeaderGallery": "Галерия",
+ "homeHeaderCategories": "Категории",
+ "shrineDescription": "Приложение за продажба на модни стоки",
+ "craneDescription": "Персонализирано приложение за пътувания",
+ "homeCategoryReference": "СТИЛОВЕ ЗА СПРАВОЧНИЦИТЕ И МУЛТИМЕДИЯ",
+ "demoInvalidURL": "URL адресът не се показа:",
+ "demoOptionsTooltip": "Опции",
+ "demoInfoTooltip": "Информация",
+ "demoCodeTooltip": "Примерен код",
+ "demoDocumentationTooltip": "Документация на API",
+ "demoFullscreenTooltip": "Цял екран",
+ "settingsTextScaling": "Промяна на мащаба на текста",
+ "settingsTextDirection": "Посока на текста",
+ "settingsLocale": "Локал",
+ "settingsPlatformMechanics": "Механика на платформата",
+ "settingsDarkTheme": "Тъмна",
+ "settingsSlowMotion": "Забавен каданс",
+ "settingsAbout": "Всичко за галерията на Flutter",
+ "settingsFeedback": "Изпращане на отзиви",
+ "settingsAttribution": "Дизайн от TOASTER от Лондон",
+ "demoButtonTitle": "Бутони",
+ "demoButtonSubtitle": "Плоски, повдигащи се, с контури и др.",
+ "demoFlatButtonTitle": "Плосък бутон",
+ "demoRaisedButtonDescription": "Повдигащите се бутони добавят измерение към оформленията, които са предимно плоски. Така функциите изпъкват в претрупани или големи области.",
+ "demoRaisedButtonTitle": "Повдигащ се бутон",
+ "demoOutlineButtonTitle": "Бутон с контури",
+ "demoOutlineButtonDescription": "При натискане бутоните с контури стават плътни и се повдигат. Често са в двойка с повдигащ се бутон, за да посочат алтернативно вторично действие.",
+ "demoToggleButtonTitle": "Бутони за превключване",
+ "colorsTeal": "СИНЬО-ЗЕЛЕНО",
+ "demoFloatingButtonTitle": "Плаващ бутон за действие (ПБД)",
+ "demoFloatingButtonDescription": "Плаващият бутон за действие представлява бутон с кръгла икона, която се задържа над съдържанието, за да подпомогне основно действие в приложението.",
+ "demoDialogTitle": "Диалогови прозорци",
+ "demoDialogSubtitle": "Опростени, със сигнал и на цял екран",
+ "demoAlertDialogTitle": "Сигнал",
+ "demoAlertDialogDescription": "Диалоговият прозорец със сигнал информира потребителя за ситуации, в които се изисква потвърждение. Той включва незадължителни заглавие и списък с действия.",
+ "demoAlertTitleDialogTitle": "Сигнал със заглавие",
+ "demoSimpleDialogTitle": "Опростен",
+ "demoSimpleDialogDescription": "Опростеният диалогов прозорец предлага на потребителя възможност за избор между няколко опции. Той включва незадължително заглавие, което се показва над възможностите за избор.",
+ "demoFullscreenDialogTitle": "На цял екран",
+ "demoCupertinoButtonsTitle": "Бутони",
+ "demoCupertinoButtonsSubtitle": "Бутони в стил iOS",
+ "demoCupertinoButtonsDescription": "Бутон в стил iOS. Включва текст и/или икона, които плавно избледняват и се появяват при докосване. По избор може да има фон.",
+ "demoCupertinoAlertsTitle": "Сигнали",
+ "demoCupertinoAlertsSubtitle": "Диалогови прозорци със сигнали в стил iOS",
+ "demoCupertinoAlertTitle": "Сигнал",
+ "demoCupertinoAlertDescription": "Диалоговият прозорец със сигнал информира потребителя за ситуации, в които се изисква потвърждение. Той включва незадължителни заглавие, съдържание и списък с действия. Заглавието се показва над съдържанието, а действията – под него.",
+ "demoCupertinoAlertWithTitleTitle": "Сигнал със заглавие",
+ "demoCupertinoAlertButtonsTitle": "Сигнал с бутони",
+ "demoCupertinoAlertButtonsOnlyTitle": "Само бутоните за сигнали",
+ "demoCupertinoActionSheetTitle": "Таблица с действия",
+ "demoCupertinoActionSheetDescription": "Таблицата с действия представлява конкретен стил за сигнали, при който на потребителя се предоставя набор от две или повече възможности за избор, свързани с текущия контекст. Тя може да има заглавие, допълнително съобщение и списък с действия.",
+ "demoColorsTitle": "Цветове",
+ "demoColorsSubtitle": "Всички предварително зададени цветове",
+ "demoColorsDescription": "Цветове и константите на цветовите образци, които представляват цветовата палитра на Material Design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Създаване",
+ "dialogSelectedOption": "Избрахте: {value}",
+ "dialogDiscardTitle": "Да се отхвърли ли черновата?",
+ "dialogLocationTitle": "Да се използва ли услугата на Google за местоположението?",
+ "dialogLocationDescription": "Позволете на Google да помага на приложенията да определят местоположението. Това означава, че ще ни изпращате анонимни данни за него дори когато не се изпълняват приложения.",
+ "dialogCancel": "ОТКАЗ",
+ "dialogDiscard": "ОТХВЪРЛЯНЕ",
+ "dialogDisagree": "НЕ ПРИЕМАМ",
+ "dialogAgree": "ПРИЕМАМ",
+ "dialogSetBackup": "Задаване на профил за резервни копия",
+ "colorsBlueGrey": "СИНЬО-СИВО",
+ "dialogShow": "ПОКАЗВАНЕ НА ДИАЛОГОВИЯ ПРОЗОРЕЦ",
+ "dialogFullscreenTitle": "Диалогов прозорец на цял екран",
+ "dialogFullscreenSave": "ЗАПАЗВАНЕ",
+ "dialogFullscreenDescription": "Демонстрация на диалогов прозорец на цял екран",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "С фон",
+ "cupertinoAlertCancel": "Отказ",
+ "cupertinoAlertDiscard": "Отхвърляне",
+ "cupertinoAlertLocationTitle": "Да се разреши ли на Карти да осъществява достъп до местоположението ви, докато използвате приложението?",
+ "cupertinoAlertLocationDescription": "Текущото ви местоположение ще се показва на картата и ще се използва за упътвания, резултати от търсенето в района и приблизително време на пътуване.",
+ "cupertinoAlertAllow": "Разрешаване",
+ "cupertinoAlertDontAllow": "Без разрешаване",
+ "cupertinoAlertFavoriteDessert": "Изберете любим десерт",
+ "cupertinoAlertDessertDescription": "Моля, посочете любимия си десерт от списъка по-долу. Изборът ви ще се използва за персонализиране на предложения списък със заведения за хранене в района ви.",
+ "cupertinoAlertCheesecake": "Чийзкейк",
+ "cupertinoAlertTiramisu": "Тирамису",
+ "cupertinoAlertApplePie": "Ябълков сладкиш",
+ "cupertinoAlertChocolateBrownie": "Шоколадово брауни",
+ "cupertinoShowAlert": "Показване на сигнала",
+ "colorsRed": "ЧЕРВЕНО",
+ "colorsPink": "РОЗОВО",
+ "colorsPurple": "ЛИЛАВО",
+ "colorsDeepPurple": "НАСИТЕНО ЛИЛАВО",
+ "colorsIndigo": "ИНДИГО",
+ "colorsBlue": "СИНЬО",
+ "colorsLightBlue": "СВЕТЛОСИНЬО",
+ "colorsCyan": "СИНЬО-ЗЕЛЕНО",
+ "dialogAddAccount": "Добавяне на профил",
+ "Gallery": "Галерия",
+ "Categories": "Категории",
+ "SHRINE": "ОЛТАР",
+ "Basic shopping app": "Основно приложение за пазаруване",
+ "RALLY": "РАЛИ",
+ "CRANE": "ЖЕРАВ",
+ "Travel app": "Приложение за пътуване",
+ "MATERIAL": "МАТЕРИАЛ",
+ "CUPERTINO": "КУПЪРТИНО",
+ "REFERENCE STYLES & MEDIA": "СТИЛОВЕ ЗА СПРАВОЧНИЦИТЕ И МУЛТИМЕДИЯ"
+}
diff --git a/gallery/lib/l10n/intl_bn.arb b/gallery/lib/l10n/intl_bn.arb
new file mode 100644
index 0000000..fe24d51
--- /dev/null
+++ b/gallery/lib/l10n/intl_bn.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "বিকল্প দেখুন",
+ "demoOptionsFeatureDescription": "এই ডেমোর জন্য উপলভ্য বিকল্প দেখতে এখানে ট্যাপ করুন।",
+ "demoCodeViewerCopyAll": "সব কিছু কপি করুন",
+ "shrineScreenReaderRemoveProductButton": "সরান {প্রোডাক্ট}",
+ "shrineScreenReaderProductAddToCart": "কার্টে যোগ করুন",
+ "shrineScreenReaderCart": "{quantity,plural, =0{শপিং কার্ট, কোনও আইটেম নেই}=1{শপিং কার্ট, ১টি আইটেম আছে}one{শপিং কার্ট, {quantity}টি আইটেম আছে}other{শপিং কার্ট, {quantity}টি আইটেম আছে}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "ক্লিপবোর্ডে কপি করা যায়নি: {সমস্যা}",
+ "demoCodeViewerCopiedToClipboardMessage": "ক্লিপবোর্ডে কপি করা হয়েছে।",
+ "craneSleep8SemanticLabel": "সমুদ্র সৈকতের কোনও একটি পাহাড়ে মায়ান সভ্যতার ধ্বংসাবশেষ",
+ "craneSleep4SemanticLabel": "পাহাড়ের সামনে লেক সাইড হোটেল",
+ "craneSleep2SemanticLabel": "মাচু পিচ্চু দুর্গ",
+ "craneSleep1SemanticLabel": "চিরসবুজ গাছ সহ একটি তুষারময় আড়াআড়ি কুটীর",
+ "craneSleep0SemanticLabel": "ওভার ওয়াটার বাংলো",
+ "craneFly13SemanticLabel": "তাল গাছ সহ সমুদ্রের পাশের পুল",
+ "craneFly12SemanticLabel": "তাল গাছ সহ পুল",
+ "craneFly11SemanticLabel": "সমুদ্রে ইটের বাতিঘর",
+ "craneFly10SemanticLabel": "সূর্যাস্তের সময় আল-আজহার মসজিদের টাওয়ার",
+ "craneFly9SemanticLabel": "একজন পুরনো নীল গাড়িতে ঝুঁকে দেখছে",
+ "craneFly8SemanticLabel": "সুপারট্রি গ্রোভ",
+ "craneEat9SemanticLabel": "পেস্ট্রি সহ ক্যাফে কাউন্টার",
+ "craneEat2SemanticLabel": "বার্গার",
+ "craneFly5SemanticLabel": "পাহাড়ের সামনে লেক সাইড হোটেল",
+ "demoSelectionControlsSubtitle": "চেকবক্স, রেডিও বোতাম এবং সুইচ",
+ "craneEat10SemanticLabel": "মহিলাটি বিশাল পাস্ট্রমি স্যান্ডউইচ ধরে রয়েছে",
+ "craneFly4SemanticLabel": "ওভার ওয়াটার বাংলো",
+ "craneEat7SemanticLabel": "বেকারির প্রবেশদ্বার",
+ "craneEat6SemanticLabel": "চিংড়ি মাছের খাবার",
+ "craneEat5SemanticLabel": "আর্টসির রেস্তোঁরা বসার জায়গা",
+ "craneEat4SemanticLabel": "চকোলেট ডেজার্ট",
+ "craneEat3SemanticLabel": "কোরিয়ান ট্যাকো",
+ "craneFly3SemanticLabel": "মাচু পিচ্চু দুর্গ",
+ "craneEat1SemanticLabel": "ডিনার স্টাইলের চেয়ারের সাথে খালি বার",
+ "craneEat0SemanticLabel": "কাঠের চুলায় পিৎজা",
+ "craneSleep11SemanticLabel": "তাইপেই ১০১ স্কাই স্ক্র্যাপার",
+ "craneSleep10SemanticLabel": "সূর্যাস্তের সময় আল-আজহার মসজিদের টাওয়ার",
+ "craneSleep9SemanticLabel": "সমুদ্রে ইটের বাতিঘর",
+ "craneEat8SemanticLabel": "প্লেট ভর্তি চিংড়ি মাছ",
+ "craneSleep7SemanticLabel": "রিবেরিয়া স্কোয়ারে রঙিন অ্যাপার্টমেন্ট",
+ "craneSleep6SemanticLabel": "তাল গাছ সহ পুল",
+ "craneSleep5SemanticLabel": "ফিল্ডে টেন্ট",
+ "settingsButtonCloseLabel": "সেটিংস বন্ধ করুন",
+ "demoSelectionControlsCheckboxDescription": "চেকবক্স ব্যবহারকারীকে একটি সেট থেকে একাধিক বিকল্প বেছে নিতে দেয়। একটি সাধারণ চেকবক্সের মান সত্য বা মিথ্যা এবং একটি ট্রাইস্টেট চেকবক্সের মানটিও শূন্য হতে পারে।",
+ "settingsButtonLabel": "সেটিংস",
+ "demoListsTitle": "তালিকা",
+ "demoListsSubtitle": "তালিকার লে-আউট স্ক্রল করা হচ্ছে",
+ "demoListsDescription": "একক নির্দিষ্ট উচ্চতাসম্পন্ন সারি যেখানে কিছু টেক্সট সহ লিডিং অথবা ট্রেলিং আইকন রয়েছে।",
+ "demoOneLineListsTitle": "প্রতি সারিতে একটি লাইন",
+ "demoTwoLineListsTitle": "প্রতি সারিতে দু'টি লাইন",
+ "demoListsSecondary": "গৌণ টেক্সট",
+ "demoSelectionControlsTitle": "বেছে নেওয়ার বিষয়ে নিয়ন্ত্রণ",
+ "craneFly7SemanticLabel": "মাউন্ট রাশমোর",
+ "demoSelectionControlsCheckboxTitle": "চেকবক্স",
+ "craneSleep3SemanticLabel": "একজন পুরনো নীল গাড়িতে ঝুঁকে দেখছে",
+ "demoSelectionControlsRadioTitle": "রেডিও",
+ "demoSelectionControlsRadioDescription": "রেডিও বোতাম সেট থেকে ব্যবহারকারীকে একটি বিকল্প বেছে নিতে দেয়। একচেটিয়া নির্বাচনের জন্য রেডিও বোতামগুলি ব্যবহার করুন যদি আপনি মনে করেন যে ব্যবহারকারীর পাশাপাশি সমস্ত উপলভ্য বিকল্পগুলি দেখতে হবে।",
+ "demoSelectionControlsSwitchTitle": "পাল্টান",
+ "demoSelectionControlsSwitchDescription": "অন/অফ করার সুইচগুলি একটি সিঙ্গেল সেটিংসের বিকল্পের স্ট্যাটাসকে পরিবর্তন করে। যে বিকল্পটি স্যুইচ নিয়ন্ত্রণ করে এবং সেই সাথে এটির মধ্যে থাকা স্ট্যাটাস সম্পর্কিত ইনলাইন লেবেল থেকে মুছে ফেলা উচিত।",
+ "craneFly0SemanticLabel": "চিরসবুজ গাছ সহ একটি তুষারময় আড়াআড়ি কুটীর",
+ "craneFly1SemanticLabel": "ফিল্ডে টেন্ট",
+ "craneFly2SemanticLabel": "বরফের পাহাড়ের সামনে প্রার্থনার পতাকা",
+ "craneFly6SemanticLabel": "প্যালাসিও দে বেলারাস আর্টেসের এরিয়াল ভিউ",
+ "rallySeeAllAccounts": "সব অ্যাকাউন্ট দেখুন",
+ "rallyBillAmount": "{billName} {date}-এ {amount} টাকার বিল বাকি আছে।",
+ "shrineTooltipCloseCart": "কার্ট বন্ধ করুন",
+ "shrineTooltipCloseMenu": "মেনু বন্ধ করুন",
+ "shrineTooltipOpenMenu": "মেনু খুলুন",
+ "shrineTooltipSettings": "সেটিংস",
+ "shrineTooltipSearch": "সার্চ করুন",
+ "demoTabsDescription": "বিভিন্ন স্ক্রিনে, ডেটা সেটে ও অন্যান্য ইন্টার্যাকশনে ট্যাবগুলি কন্টেন্ট সাজায়।",
+ "demoTabsSubtitle": "আলাদাভাবে স্ক্রল করা যায় এমন ভিউ সহ ট্যাব",
+ "demoTabsTitle": "ট্যাব",
+ "rallyBudgetAmount": "{budgetName} বাজেটের {amountTotal}-এর মধ্যে {amountUsed} খরচ হয়েছে, {amountLeft} বাকি আছে",
+ "shrineTooltipRemoveItem": "আইটেম সরান",
+ "rallyAccountAmount": "{accountName} অ্যাকাউন্ট {accountNumber}-এ {amount}।",
+ "rallySeeAllBudgets": "সব বাজেট দেখুন",
+ "rallySeeAllBills": "সব বিল দেখুন",
+ "craneFormDate": "তারিখ বেছে নিন",
+ "craneFormOrigin": "উৎপত্তি স্থল বেছে নিন",
+ "craneFly2": "কুম্ভ উপত্যকা, নেপাল",
+ "craneFly3": "মাচু পিচ্চু, পেরু",
+ "craneFly4": "মালে, মালদ্বীপ",
+ "craneFly5": "ভিতজানাউ, সুইজারল্যান্ড",
+ "craneFly6": "মেক্সিকো সিটি, মেক্সিকো",
+ "craneFly7": "মাউন্ট রুসমোর, মার্কিন যুক্তরাষ্ট্র",
+ "settingsTextDirectionLocaleBased": "লোকেলের উপর ভিত্তি করে",
+ "craneFly9": "হাভানা, কিউবা",
+ "craneFly10": "কায়েরো, মিশর",
+ "craneFly11": "লিসবন, পর্তুগাল",
+ "craneFly12": "নাপা, মার্কিন যুক্তরাষ্ট্র",
+ "craneFly13": "বালি, ইন্দোনেশিয়া",
+ "craneSleep0": "মালে, মালদ্বীপ",
+ "craneSleep1": "অ্যাসপেন, মার্কিন যুক্তরাষ্ট্র",
+ "craneSleep2": "মাচু পিচ্চু, পেরু",
+ "demoCupertinoSegmentedControlTitle": "বিভাগীয় নিয়ন্ত্রন",
+ "craneSleep4": "ভিতজানাউ, সুইজারল্যান্ড",
+ "craneSleep5": "বিগ সার, মার্কিন যুক্তরাষ্ট্র",
+ "craneSleep6": "নাপা, মার্কিন যুক্তরাষ্ট্র",
+ "craneSleep7": "পোর্টো, পর্তুগাল",
+ "craneSleep8": "তুলুম, মেক্সিকো",
+ "craneEat5": "সিওল, দক্ষিণ কোরিয়া",
+ "demoChipTitle": "চিপস",
+ "demoChipSubtitle": "সারিবদ্ধ এলিমেন্ট যা ইনপুট, অ্যাট্রিবিউট বা অ্যাকশনকে তুলে ধরে",
+ "demoActionChipTitle": "অ্যাকশন চিপ",
+ "demoActionChipDescription": "অ্যাকশন চিপ হল বিকল্পগুলির একটি সেট যা প্রাথমিক কন্টেন্ট সম্পর্কিত অ্যাকশন ট্রিগার করে। অ্যাকশন চিপ নিয়ম করে কতটা প্রাসঙ্গিক সেই হিসেবে UI-তে দেখা যায়।",
+ "demoChoiceChipTitle": "পছন্দের চিপ",
+ "demoChoiceChipDescription": "পছন্দের চিপ সেটের থেকে একটি পছন্দকে তুলে ধরে। পছন্দের চিপে প্রাসঙ্গিক বর্ণনামূলক টেক্সট বা বিভাগ থাকে।",
+ "demoFilterChipTitle": "ফিল্টার চিপ",
+ "demoFilterChipDescription": "কন্টেন্ট ফিল্টার করার একটি পদ্ধতি হিসেবে ফিল্টার চিপ ট্যাগ বা বর্ণনামূলক শব্দ ব্যবহার করে।",
+ "demoInputChipTitle": "ইনপুট চিপ",
+ "demoInputChipDescription": "ইনপুট চিপে কোনও একটি এন্টিটি (ব্যক্তি, জায়গা অথবা বস্তু) বা কথোপকথন সংক্রান্ত টেক্সট সারিবদ্ধভাবে থাকে যেখানে জটিল তথ্য দেওয়া থাকে।",
+ "craneSleep9": "লিসবন, পর্তুগাল",
+ "craneEat10": "লিসবন, পর্তুগাল",
+ "demoCupertinoSegmentedControlDescription": "একটি ব্যবহার করলে অন্যটি ফ্রিজ হয়ে যাবে এমন কিছু বিকল্পের মধ্যে থেকে বেছে নেওয়ার জন্য ব্যবহার করা হয়। বিভাগীয় নিয়ন্ত্রনে একটি বিকল্প বেছে নিলে, অন্য বিকল্পগুলি আর বেছে নেওয়া যাবে না।",
+ "chipTurnOnLights": "লাইট চালু করুন",
+ "chipSmall": "ছোট",
+ "chipMedium": "মাজারি",
+ "chipLarge": "বড়",
+ "chipElevator": "লিফ্ট",
+ "chipWasher": "ওয়াশিং মেশিন",
+ "chipFireplace": "ফায়ারপ্লেস",
+ "chipBiking": "সাইকেল চালানো",
+ "craneFormDiners": "ডাইনার্স",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{আপনার ট্যাক্সের সম্ভাব্য ছাড় বাড়ান! ১টি অ্যাসাইন না করা ট্রানজ্যাকশনে বিভাগ অ্যাসাইন করুন।}one{আপনার ট্যাক্সের সম্ভাব্য ছাড় বাড়ান! {count}টি অ্যাসাইন না করা ট্রানজ্যাকশনে বিভাগ অ্যাসাইন করুন।}other{আপনার ট্যাক্সের সম্ভাব্য ছাড় বাড়ান! {count}টি অ্যাসাইন না করা ট্রানজ্যাকশনে বিভাগ অ্যাসাইন করুন।}}",
+ "craneFormTime": "সময় বেছে নিন",
+ "craneFormLocation": "লোকেশন বেছে নিন",
+ "craneFormTravelers": "ভ্রমণকারী",
+ "craneEat8": "আটলান্টা, মার্কিন যুক্তরাষ্ট্র",
+ "craneFormDestination": "গন্তব্য বেছে নিন",
+ "craneFormDates": "তারিখ বেছে নিন",
+ "craneFly": "উড়া",
+ "craneSleep": "ঘুম",
+ "craneEat": "খাদ্য",
+ "craneFlySubhead": "গন্তব্যের হিসেবে ফ্লাইট খুঁজুন",
+ "craneSleepSubhead": "গন্তব্যের হিসেবে প্রপার্টি দেখুন",
+ "craneEatSubhead": "গন্তব্যের হিসেবে রেস্তোরাঁ দেখুন",
+ "craneFlyStops": "{numberOfStops,plural, =0{ননস্টপ}=1{১টি স্টপ}one{{numberOfStops}টি স্টপ}other{{numberOfStops}টি স্টপ}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{কোনও প্রপার্টি ভাড়া পাওয়া যাবে না}=1{১টি প্রপার্টি ভাড়া পাওয়া যাবে}one{{totalProperties}টি প্রপার্টি ভাড়া পাওয়া যাবে}other{{totalProperties}টি প্রপার্টি ভাড়া পাওয়া যাবে}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{রেস্তোরাঁ নেই}=1{১টি রেস্তোঁরা}one{{totalRestaurants}টি রেস্তোঁরা}other{{totalRestaurants}টি রেস্তোঁরা}}",
+ "craneFly0": "অ্যাসপেন, মার্কিন যুক্তরাষ্ট্র",
+ "demoCupertinoSegmentedControlSubtitle": "iOS-স্টাইলে বিভাগীয় নিয়ন্ত্রন",
+ "craneSleep10": "কায়েরো, মিশর",
+ "craneEat9": "মাদ্রিদ, স্পেন",
+ "craneFly1": "বিগ সার, মার্কিন যুক্তরাষ্ট্র",
+ "craneEat7": "ন্যাসভেলি, মার্কিন যুক্তরাষ্ট্র",
+ "craneEat6": "সিয়াটেল, মার্কিন যুক্তরাষ্ট্র",
+ "craneFly8": "সিঙ্গাপুর",
+ "craneEat4": "প্যারিস, ফ্রান্স",
+ "craneEat3": "পোর্টল্যান্ড, মার্কিন যুক্তরাষ্ট্র",
+ "craneEat2": "কর্ডোবা, আর্জেন্টিনা",
+ "craneEat1": "ডালাস, মার্কিন যুক্তরাষ্ট্র",
+ "craneEat0": "ন্যাপলি, ইতালি",
+ "craneSleep11": "তাইপেই, তাইওয়ান",
+ "craneSleep3": "হাভানা, কিউবা",
+ "shrineLogoutButtonCaption": "লগ-আউট",
+ "rallyTitleBills": "বিল",
+ "rallyTitleAccounts": "অ্যাকাউন্ট",
+ "shrineProductVagabondSack": "ভ্যাগাবন্ড স্যাক",
+ "rallyAccountDetailDataInterestYtd": "সুদ YTD",
+ "shrineProductWhitneyBelt": "হুইটনি বেল্ট",
+ "shrineProductGardenStrand": "গার্ডেন স্ট্র্যান্ড",
+ "shrineProductStrutEarrings": "স্ট্রাট ইয়াররিং",
+ "shrineProductVarsitySocks": "ভারসিটি সক্স",
+ "shrineProductWeaveKeyring": "উইভ কীরিং",
+ "shrineProductGatsbyHat": "গ্যাস্টবি হ্যাট",
+ "shrineProductShrugBag": "শ্রাগ ব্যাগ",
+ "shrineProductGiltDeskTrio": "গিল্ট ডেস্ক ট্রাও",
+ "shrineProductCopperWireRack": "কপার ওয়্যার তাক",
+ "shrineProductSootheCeramicSet": "মসৃণ সেরামিক সেট",
+ "shrineProductHurrahsTeaSet": "হারাহ্য়ের টি সেট",
+ "shrineProductBlueStoneMug": "নীল রঙের পাথরের মগ",
+ "shrineProductRainwaterTray": "বৃষ্টির জল পাস করানোর ট্রে",
+ "shrineProductChambrayNapkins": "শ্যামব্র্যয় ন্যাপকিন",
+ "shrineProductSucculentPlanters": "সাকলেন্ট প্ল্যান্টার্স",
+ "shrineProductQuartetTable": "চৌকো টেবিল",
+ "shrineProductKitchenQuattro": "কিচেন কোয়াট্রো",
+ "shrineProductClaySweater": "ক্লে সোয়েটার",
+ "shrineProductSeaTunic": "সি টিউনিক",
+ "shrineProductPlasterTunic": "প্লাস্টার টিউনিক",
+ "rallyBudgetCategoryRestaurants": "রেস্তোরাঁ",
+ "shrineProductChambrayShirt": "শ্যামব্র্যয় শার্ট",
+ "shrineProductSeabreezeSweater": "সিব্রিজ সোয়েটার",
+ "shrineProductGentryJacket": "জেন্ট্রি জ্যাকেট",
+ "shrineProductNavyTrousers": "নীল পায়জামা",
+ "shrineProductWalterHenleyWhite": "ওয়াল্টার হেনলি (সাদা)",
+ "shrineProductSurfAndPerfShirt": "সার্ফ এবং পার্ফ শার্ট",
+ "shrineProductGingerScarf": "জিনজার স্কার্ফ",
+ "shrineProductRamonaCrossover": "রামোনা ক্রসওভার",
+ "shrineProductClassicWhiteCollar": "ক্লাসিক হোয়াইট কলার",
+ "shrineProductSunshirtDress": "সানশার্ট ড্রেস",
+ "rallyAccountDetailDataInterestRate": "সুদের হার",
+ "rallyAccountDetailDataAnnualPercentageYield": "বার্ষিক লাভের শতাংশ",
+ "rallyAccountDataVacation": "ছুটি",
+ "shrineProductFineLinesTee": "ফাইন লাইন টি",
+ "rallyAccountDataHomeSavings": "হোম সেভিংস",
+ "rallyAccountDataChecking": "চেক করা হচ্ছে",
+ "rallyAccountDetailDataInterestPaidLastYear": "গত বছরে পে করা সুদ",
+ "rallyAccountDetailDataNextStatement": "পরবর্তী স্টেটমেন্ট",
+ "rallyAccountDetailDataAccountOwner": "অ্যাকাউন্টের মালিক",
+ "rallyBudgetCategoryCoffeeShops": "কফি শপ",
+ "rallyBudgetCategoryGroceries": "মুদিখানা",
+ "shrineProductCeriseScallopTee": "সেরাইজ স্ক্যালোপ টি",
+ "rallyBudgetCategoryClothing": "জামাকাপড়",
+ "rallySettingsManageAccounts": "অ্যাকাউন্ট ম্যানেজ করুন",
+ "rallyAccountDataCarSavings": "গাড়ির জন্য সেভিং",
+ "rallySettingsTaxDocuments": "ট্যাক্স ডকুমেন্ট",
+ "rallySettingsPasscodeAndTouchId": "পাসকোড এবং টাচ আইডি",
+ "rallySettingsNotifications": "বিজ্ঞপ্তি",
+ "rallySettingsPersonalInformation": "ব্যক্তিগত তথ্য",
+ "rallySettingsPaperlessSettings": "বিনা পেপারের সেটিংস",
+ "rallySettingsFindAtms": "এটিএম খুঁজুন",
+ "rallySettingsHelp": "সহায়তা",
+ "rallySettingsSignOut": "সাইন-আউট করুন",
+ "rallyAccountTotal": "মোট",
+ "rallyBillsDue": "বাকি আছে",
+ "rallyBudgetLeft": "বাকি আছে",
+ "rallyAccounts": "অ্যাকাউন্ট",
+ "rallyBills": "বিল",
+ "rallyBudgets": "বাজেট",
+ "rallyAlerts": "সতর্কতা",
+ "rallySeeAll": "সবগুলি দেখুন",
+ "rallyFinanceLeft": "বাকি আছে",
+ "rallyTitleOverview": "এক নজরে",
+ "shrineProductShoulderRollsTee": "শোল্ডার রোল টি",
+ "shrineNextButtonCaption": "পরবর্তী",
+ "rallyTitleBudgets": "বাজেট",
+ "rallyTitleSettings": "সেটিংস",
+ "rallyLoginLoginToRally": "Rally-তে লগ-ইন করুন",
+ "rallyLoginNoAccount": "কোনো অ্যাকাউন্ট নেই?",
+ "rallyLoginSignUp": "সাইন আপ করুন",
+ "rallyLoginUsername": "ইউজারনেম",
+ "rallyLoginPassword": "পাসওয়ার্ড",
+ "rallyLoginLabelLogin": "লগ-ইন",
+ "rallyLoginRememberMe": "আমাকে মনে রাখো",
+ "rallyLoginButtonLogin": "লগ-ইন",
+ "rallyAlertsMessageHeadsUpShopping": "আপডেট, আপনি এই মাসে {percent} কেনাকাটার বাজেট ব্যবহার করে ফেলেছেন।",
+ "rallyAlertsMessageSpentOnRestaurants": "এই সপ্তাহে রেস্তোরাঁয় আপনি {amount} খরচ করেছেন।",
+ "rallyAlertsMessageATMFees": "এই মাসে এটিএম ফি হিসেবে আপনি {amount} খরচ করেছেন",
+ "rallyAlertsMessageCheckingAccount": "ভাল হয়েছে! আপনার চেকিং অ্যাকাউন্ট আগের মাসের থেকে {percent} বেশি।",
+ "shrineMenuCaption": "মেনু",
+ "shrineCategoryNameAll": "সব",
+ "shrineCategoryNameAccessories": "অ্যাক্সেসরি",
+ "shrineCategoryNameClothing": "পোশাক",
+ "shrineCategoryNameHome": "বাড়ি",
+ "shrineLoginUsernameLabel": "ইউজারনেম",
+ "shrineLoginPasswordLabel": "পাসওয়ার্ড",
+ "shrineCancelButtonCaption": "বাতিল করুন",
+ "shrineCartTaxCaption": "ট্যাক্স:",
+ "shrineCartPageCaption": "কার্ট",
+ "shrineProductQuantity": "পরিমাণ: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{কোনও আইটেম নেই}=1{১টি আইটেম}one{{quantity}টি আইটেম}other{{quantity}টি আইটেম}}",
+ "shrineCartClearButtonCaption": "কার্ট মুছে দিন",
+ "shrineCartTotalCaption": "মোট",
+ "shrineCartSubtotalCaption": "সাবটোটাল:",
+ "shrineCartShippingCaption": "শিপিং:",
+ "shrineProductGreySlouchTank": "গ্রে স্লচ ট্যাঙ্ক",
+ "shrineProductStellaSunglasses": "স্টেলা সানগ্লাস",
+ "shrineProductWhitePinstripeShirt": "সাদা পিনস্ট্রাইপ শার্ট",
+ "demoTextFieldWhereCanWeReachYou": "আমরা আপনার সাথে কীভাবে যোগাযোগ করব?",
+ "settingsTextDirectionLTR": "LTR",
+ "settingsTextScalingLarge": "বড়",
+ "demoBottomSheetHeader": "হেডার",
+ "demoBottomSheetItem": "আইটেম {value}",
+ "demoBottomTextFieldsTitle": "টেক্সট ফিল্ড",
+ "demoTextFieldTitle": "টেক্সট ফিল্ড",
+ "demoTextFieldSubtitle": "এডিট করা যাবে এমন টেক্সট ও নম্বরের সিঙ্গল লাইন",
+ "demoTextFieldDescription": "টেক্সট ফিল্ড ব্যবহারকারীকে UI-এ টেক্সট লেখার অনুমতি দেয়। সেগুলি সাধারণত ফর্ম ও ডায়ালগ হিসেবে দেখা যায়।",
+ "demoTextFieldShowPasswordLabel": "পাসওয়ার্ড দেখুন",
+ "demoTextFieldHidePasswordLabel": "পাসওয়ার্ড লুকান",
+ "demoTextFieldFormErrors": "জমা দেওয়ার আগে লাল রঙের ভুলগুলি সংশোধন করুন।",
+ "demoTextFieldNameRequired": "নাম লিখতে হবে।",
+ "demoTextFieldOnlyAlphabeticalChars": "কেবল বর্ণানুক্রমিক অক্ষর লিখুন।",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - একটি মার্কিন যুক্তরাষ্ট্রের ফোন নম্বর লিখুন।",
+ "demoTextFieldEnterPassword": "পাসওয়ার্ড লিখুন।",
+ "demoTextFieldPasswordsDoNotMatch": "পাসওয়ার্ড মিলছে না",
+ "demoTextFieldWhatDoPeopleCallYou": "লোকজন আপনাকে কী বলে ডাকে?",
+ "demoTextFieldNameField": "নাম*",
+ "demoBottomSheetButtonText": "বটম শিট দেখান",
+ "demoTextFieldPhoneNumber": "ফোন নম্বর*",
+ "demoBottomSheetTitle": "বটম শিট",
+ "demoTextFieldEmail": "ইমেল",
+ "demoTextFieldTellUsAboutYourself": "আপনার সম্পর্কে আমাদের জানান (যেমন, আপনি কী করেন অথবা আপনি কী করতে পছন্দ করেন)",
+ "demoTextFieldKeepItShort": "ছোট রাখুন, এটি শুধুমাত্র একটি ডেমো।",
+ "starterAppGenericButton": "বোতাম",
+ "demoTextFieldLifeStory": "জীবনের গল্প",
+ "demoTextFieldSalary": "বেতন",
+ "demoTextFieldUSD": "মার্কিন ডলার",
+ "demoTextFieldNoMoreThan": "৮ অক্ষরের বেশি হওয়া চলবে না।",
+ "demoTextFieldPassword": "পাসওয়ার্ড*",
+ "demoTextFieldRetypePassword": "পাসওয়ার্ড আবার টাইপ করুন*",
+ "demoTextFieldSubmit": "জমা দিন",
+ "demoBottomNavigationSubtitle": "ক্রস-ফেডিং ভিউ সহ নিচের দিকে নেভিগেশন",
+ "demoBottomSheetAddLabel": "যোগ করুন",
+ "demoBottomSheetModalDescription": "'মোডাল বটম শিট' হল মেনু অথবা ডায়ালগের একটি বিকল্প এবং এটি ব্যবহারকারীকে অ্যাপের অন্যান্য ফিচার ইন্টার্যাক্ট করতে বাধা দেয়।",
+ "demoBottomSheetModalTitle": "মোডাল বটম শিট",
+ "demoBottomSheetPersistentDescription": "সব সময় দেখা যায় এমন বোটম শিট অ্যাপের প্রধান কন্টেন্টের সাথে সম্পর্কিত অন্যান্য তথ্য দেখায়। ব্যবহারকারী অ্যাপের অন্যান্য ফিচারেরে সাথে ইন্ট্যারঅ্যাক্ট করলে সব সময় দেখা যায় এমন বোটম শিট।",
+ "demoBottomSheetPersistentTitle": "সব সময় দেখা যায় এমন বোটম শিট",
+ "demoBottomSheetSubtitle": "সব সময় দেখা যায় এমন এবং মোডাল বটম শিট",
+ "demoTextFieldNameHasPhoneNumber": "{name} ফোন নম্বর হল {phoneNumber}",
+ "buttonText": "বোতাম",
+ "demoTypographyDescription": "মেটেরিয়াল ডিজাইনে খুঁজে পাওয়া বিভিন্ন লেখার স্টাইল।",
+ "demoTypographySubtitle": "পূর্বনির্ধারিত সব টেক্সট স্টাইল",
+ "demoTypographyTitle": "লেখার ধরন",
+ "demoFullscreenDialogDescription": "ফুল-স্ক্রিন ডায়ালগ প্রপার্টি নির্দিষ্ট করে পরের পৃষ্ঠাটি একটি ফুল-স্ক্রিন মোডাল ডায়ালগ হবে কিনা",
+ "demoFlatButtonDescription": "ফ্ল্যাট বোতাম প্রেস করলে কালি ছড়িয়ে পড়ে কিন্তু লিফ্ট করে না। প্যাডিং সহ ফ্ল্যাট বোতাম টুলবার, ডায়ালগ এবং ইনলাইনে ব্যবহার করুন",
+ "demoBottomNavigationDescription": "নিচের নেভিগেশন বার কোনও স্ক্রিনের নীচের দিকে তিন থেকে পাঁচটি গন্তব্য দেখায়। প্রতিটি গন্তব্য একটি আইকন এবং একটি এচ্ছিক টেক্সট লেবেল দিয়ে দেখানো হয়। নিচের নেভিগেশন আইকন ট্যাপ করা হলে, ব্যবহারকারীকে সেই আইকনের সাথে জড়িত একেবারে উপরের নেভিগেশন গন্তব্যে নিয়ে যাওয়া হয়।",
+ "demoBottomNavigationSelectedLabel": "বেছে নেওয়া লেবেল",
+ "demoBottomNavigationPersistentLabels": "সব সময় দেখা যাবে এমন লেবেল",
+ "starterAppDrawerItem": "আইটেম {value}",
+ "demoTextFieldRequiredField": "* প্রয়োজনীয় ফিল্ড নির্দেশ করে",
+ "demoBottomNavigationTitle": "নিচের দিকে নেভিগেশন",
+ "settingsLightTheme": "আলো",
+ "settingsTheme": "থিম",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "RTL",
+ "settingsTextScalingHuge": "সবচেয়ে বড়",
+ "cupertinoButton": "বোতাম",
+ "settingsTextScalingNormal": "সাধারণ",
+ "settingsTextScalingSmall": "ছোট",
+ "settingsSystemDefault": "সিস্টেম",
+ "settingsTitle": "সেটিংস",
+ "rallyDescription": "ব্যক্তিগত ফাইনান্স অ্যাপ",
+ "aboutDialogDescription": "এই অ্যাপের সোর্স কোড দেখতে {value}-এ দেখুন।",
+ "bottomNavigationCommentsTab": "মন্তব্য",
+ "starterAppGenericBody": "মুখ্য অংশ",
+ "starterAppGenericHeadline": "শিরোনাম",
+ "starterAppGenericSubtitle": "সাবটাইটেল",
+ "starterAppGenericTitle": "শীর্ষক",
+ "starterAppTooltipSearch": "খুঁজুন",
+ "starterAppTooltipShare": "শেয়ার করুন",
+ "starterAppTooltipFavorite": "পছন্দ",
+ "starterAppTooltipAdd": "যোগ করুন",
+ "bottomNavigationCalendarTab": "ক্যালেন্ডার",
+ "starterAppDescription": "কাজ করে এমন শুরু করার লেআউট",
+ "starterAppTitle": "শুরু করার অ্যাপ",
+ "aboutFlutterSamplesRepo": "Flutter স্যাম্পেল Github রিপোজিটরি",
+ "bottomNavigationContentPlaceholder": "{title} ট্যাবের প্লেসহোল্ডার",
+ "bottomNavigationCameraTab": "ক্যামেরা",
+ "bottomNavigationAlarmTab": "অ্যালার্ম",
+ "bottomNavigationAccountTab": "অ্যাকাউন্ট",
+ "demoTextFieldYourEmailAddress": "আপনার ইমেল আইডি",
+ "demoToggleButtonDescription": "টগল বোতাম ব্যবহার করে একই ধরনের বিকল্প গ্রুপ করতে পারেন। সম্পর্কিত টগল বোতামের একটি গ্রুপে গুরুত্ব দিতে, সাধারণ কন্টেনার শেয়ার করতে হবে",
+ "colorsGrey": "ধূসর",
+ "colorsBrown": "বাদামি",
+ "colorsDeepOrange": "গাঢ় কমলা",
+ "colorsOrange": "কমলা",
+ "colorsAmber": "হলদে বাদামি",
+ "colorsYellow": "হলুদ",
+ "colorsLime": "লেবু রঙ",
+ "colorsLightGreen": "হালকা সবুজ",
+ "colorsGreen": "সবুজ",
+ "homeHeaderGallery": "গ্যালারি",
+ "homeHeaderCategories": "বিভাগ",
+ "shrineDescription": "ফ্যাশ্যানেবল রিটেল অ্যাপ",
+ "craneDescription": "নিজের মতো সাজিয়ে নেওয়া ট্রাভেল অ্যাপ",
+ "homeCategoryReference": "রেফারেন্স স্টাইল এবং মিডিয়া",
+ "demoInvalidURL": "URL ডিসপ্লে করতে পারছে না:",
+ "demoOptionsTooltip": "বিকল্প",
+ "demoInfoTooltip": "তথ্য",
+ "demoCodeTooltip": "কোডের উদাহরণ",
+ "demoDocumentationTooltip": "এপিআই ডকুমেন্টেশান",
+ "demoFullscreenTooltip": "ফুল-স্ক্রিন",
+ "settingsTextScaling": "টেক্সট স্কেলিং",
+ "settingsTextDirection": "টেক্সটের মাধ্যমে দিকনির্দেশ",
+ "settingsLocale": "লোকেল",
+ "settingsPlatformMechanics": "প্ল্যাটফর্ম মেকানিক্স",
+ "settingsDarkTheme": "গাঢ়",
+ "settingsSlowMotion": "স্লো মোশন",
+ "settingsAbout": "ফ্লাটার গ্যালারি সম্পর্কে",
+ "settingsFeedback": "মতামত জানান",
+ "settingsAttribution": "লন্ডনে TOASTER দ্বারা ডিজাইন করা হয়েছে",
+ "demoButtonTitle": "বোতাম",
+ "demoButtonSubtitle": "ফ্ল্যাট, বাড়ানো, আউটলাইন এবং অনেক কিছু",
+ "demoFlatButtonTitle": "ফ্ল্যাট বোতাম",
+ "demoRaisedButtonDescription": "বড় হওয়া বোতাম প্রায়ই ফ্ল্যাট লে-আউটকে আকার দিতে সাহায্য করে। ব্যস্ত বা চওড়া জায়গাতে তারা আরও গুরুত্ব দেয়।",
+ "demoRaisedButtonTitle": "ক্রমশ উপরের দিকে যাওয়া বোতাম",
+ "demoOutlineButtonTitle": "আউটলাইন বোতাম",
+ "demoOutlineButtonDescription": "আউটলাইন বোতাম প্রেস করলে অস্বচ্ছ হয়ে বড় হয়ে যায়। সেটি প্রায়ই একটি বিকল্প সেকেন্ডারি অ্যাকশন নির্দেশ করতে বড় হওয়া বোতামের সাথে ব্যবহার হয়।",
+ "demoToggleButtonTitle": "টগল বোতাম",
+ "colorsTeal": "সবজে নীল",
+ "demoFloatingButtonTitle": "ভাসমান অ্যাকশন বোতাম",
+ "demoFloatingButtonDescription": "ফ্লোটিং অ্যাকশন বোতাম হল একটি সার্কুলার আইকন বোতাম যা কন্টেন্টের উপরে থাকে, অ্যাপ্লিকেশনের প্রাথমিক অ্যাকশন দেখানোর জন্য।",
+ "demoDialogTitle": "ডায়ালগ",
+ "demoDialogSubtitle": "সাধারণ, সতর্কতা, ফুল-স্ক্রিন",
+ "demoAlertDialogTitle": "সতর্কতা",
+ "demoAlertDialogDescription": "সতর্কতা সংক্রান্ত ডায়ালগ পরিস্থিতি সম্পর্কে ব্যবহারকারীকে জানায়, যা খেয়াল রাখতে হয়। সতর্কতা সংক্রান্ত ডায়ালগে ঐচ্ছিক শীর্ষক এবং ঐচ্ছিক অ্যাকশনের তালিকা দেওয়া থাকে।",
+ "demoAlertTitleDialogTitle": "সতর্ক বার্তার শীর্ষক",
+ "demoSimpleDialogTitle": "সাধারণ",
+ "demoSimpleDialogDescription": "একটি সাধারণ ডায়ালগ ব্যবহারকারীদের কাছে একাধিক বিকল্পের মধ্যে একটি বেছে নেওয়ার সুযোগ করে দেয়। একটি সাধারণ ডায়ালগে একটি ঐচ্ছিক শীর্ষক থাকলে, তা বেছে নেওয়ার বিকল্পগুলি উপরে উল্লেখ করা আছে।",
+ "demoFullscreenDialogTitle": "ফুল-স্ক্রিন",
+ "demoCupertinoButtonsTitle": "বোতাম",
+ "demoCupertinoButtonsSubtitle": "iOS-স্টাইল বোতাম",
+ "demoCupertinoButtonsDescription": "একটি iOS-স্টাইল বোতাম। এটির সাহায্যে আপনি টেক্সট এবং/বা কোনও একটি আইকন যা টাচ করলে ফেড-আউট বা ফেড-ইন হয়। বিকল্প হিসেবে একটি ব্যাকগ্রাউন্ড থাকতে পারে।",
+ "demoCupertinoAlertsTitle": "সতর্কতা",
+ "demoCupertinoAlertsSubtitle": "iOS-স্টাইলে সতর্কতা ডায়ালগ",
+ "demoCupertinoAlertTitle": "সতর্কতা",
+ "demoCupertinoAlertDescription": "সতর্কতা সংক্রান্ত ডায়ালগ পরিস্থিতি সম্পর্কে ব্যবহারকারীকে জানায়, যা খেয়াল রাখতে হয়। সতর্কতা সংক্রান্ত ডায়ালগে ঐচ্ছিক শীর্ষক, ঐচ্ছিক কন্টেন্ট এবং ঐচ্ছিক অ্যাকশনের তালিকা দেওয়া থাকে। শীর্ষক কন্টেন্টের উপরে দেওয়া থাকে এবং অ্যাকশন কন্টেন্টের নিচে উল্লেখ করা থাকে।",
+ "demoCupertinoAlertWithTitleTitle": "শীর্ষক সহ সতর্কতা",
+ "demoCupertinoAlertButtonsTitle": "সতর্কতা সংক্রান্ত বোতাম",
+ "demoCupertinoAlertButtonsOnlyTitle": "শুধুমাত্র সতর্কতা বিষয়ক বোতাম",
+ "demoCupertinoActionSheetTitle": "অ্যাকশন শিট",
+ "demoCupertinoActionSheetDescription": "একটি অ্যাকশন শিট হল নির্দিষ্ট ধরনের অ্যালার্ট যা ব্যবহারকারীদের কাছে বর্তমান প্রসঙ্গ সম্পর্কিত দুটি বা তারও বেশি সেট তুলে ধরে. অ্যাকশন শিটে শীর্ষক, অতিরিক্ত মেসেজ এবং অ্যাকশনের তালিকা থাকতে পারে।",
+ "demoColorsTitle": "রঙ",
+ "demoColorsSubtitle": "আগে থেকে যেসব দেখানো রঙ",
+ "demoColorsDescription": "রঙ এবং গ্রেডিয়েন্টের জন্য ধ্রুবক যা মেটেরিয়াল ডিজাইনের রঙের প্যালেট তুলে ধরে।",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "তৈরি করুন",
+ "dialogSelectedOption": "আপনি বেছে নিয়েছেন: \"{value}\"",
+ "dialogDiscardTitle": "ড্রাফ্ট বাতিল করতে চান?",
+ "dialogLocationTitle": "Google-এর লোকেশন সংক্রান্ত পরিষেবা ব্যবহার করতে চান?",
+ "dialogLocationDescription": "অ্যাপ যাতে লোকেশন বেছে নিতে পারে তার জন্য Google-কে সাহায্য করুন। এর মানে হল, যখন কোন অ্যাপ চালা থাকে না, তখনও Google-এ যে কোনও লোকেশনের তথ্য পাঠানো হবে।",
+ "dialogCancel": "বাতিল করুন",
+ "dialogDiscard": "বাতিল করুন",
+ "dialogDisagree": "অসম্মত",
+ "dialogAgree": "সম্মত",
+ "dialogSetBackup": "ব্যাক-আপ অ্যাকাউন্ট সেট করুন",
+ "colorsBlueGrey": "নীলচে ধূসর",
+ "dialogShow": "ডায়ালগ দেখান",
+ "dialogFullscreenTitle": "ফুল-স্ক্রিন ডায়ালগ",
+ "dialogFullscreenSave": "সেভ করুন",
+ "dialogFullscreenDescription": "ফুল-স্ক্রিন ডায়ালগ ডেমো",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "ব্যাকগ্রাউন্ড সহ",
+ "cupertinoAlertCancel": "বাতিল করুন",
+ "cupertinoAlertDiscard": "বাতিল করুন",
+ "cupertinoAlertLocationTitle": "অ্যাপ ব্যবহার করার সময়ে \"Maps\"-কে আপনার লোকেশন অ্যাক্সেস করার অনুমতি দিতে চান?",
+ "cupertinoAlertLocationDescription": "আপনার বর্তমান লোকেশন ম্যাপে দেখানো হবে এবং সেই সাথে দিকনির্দেশের ও আশেপাশের সার্চের ফলাফলের জন্য ব্যবহার হবে এবং যাত্রাপথের আনুমানিক সময় জানতে ব্যবহার হবে।",
+ "cupertinoAlertAllow": "অনুমতি দিন",
+ "cupertinoAlertDontAllow": "অনুমতি দেবেন না",
+ "cupertinoAlertFavoriteDessert": "পছন্দের মিষ্টি বেছে নিন",
+ "cupertinoAlertDessertDescription": "নিচে উল্লেখ করা তালিকা থেকে পছন্দের মিষ্টি বেছে নিন। আপনার পছন্দের হিসেবে এলাকার খাবারের দোকানের সাজেস্ট করা একটি তালিকা কাস্টমাইজ করা হবে।",
+ "cupertinoAlertCheesecake": "চিজকেক",
+ "cupertinoAlertTiramisu": "তিরামিসু",
+ "cupertinoAlertApplePie": "আপেল পাই",
+ "cupertinoAlertChocolateBrownie": "চকলেট ব্রাউনি",
+ "cupertinoShowAlert": "সতর্কতা দেখান",
+ "colorsRed": "লাল",
+ "colorsPink": "গোলাপী",
+ "colorsPurple": "বেগুনি",
+ "colorsDeepPurple": "গাঢ় লাল-বেগুনি",
+ "colorsIndigo": "নীলচে বেগুনি",
+ "colorsBlue": "নীল",
+ "colorsLightBlue": "হালকা নীল",
+ "colorsCyan": "সবুজ-নীল",
+ "dialogAddAccount": "অ্যাকাউন্ট যোগ করুন",
+ "Gallery": "গ্যালারি",
+ "Categories": "বিভাগ",
+ "SHRINE": "শ্রাইন",
+ "Basic shopping app": "সাধারণ কেনাকাটার অ্যাপ",
+ "RALLY": "র্যালি",
+ "CRANE": "ক্রেন",
+ "Travel app": "ট্রাভেল সংক্রান্ত অ্যাপ",
+ "MATERIAL": "উপাদান",
+ "CUPERTINO": "কুপারটিনো",
+ "REFERENCE STYLES & MEDIA": "রেফারেন্স স্টাইল এবং মিডিয়া"
+}
diff --git a/gallery/lib/l10n/intl_bs.arb b/gallery/lib/l10n/intl_bs.arb
new file mode 100644
index 0000000..8e15f0c
--- /dev/null
+++ b/gallery/lib/l10n/intl_bs.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Pogledajte opcije",
+ "demoOptionsFeatureDescription": "Dodirnite ovdje da pogledate opcije dostupne za ovu demonstraciju.",
+ "demoCodeViewerCopyAll": "KOPIRAJ SVE",
+ "shrineScreenReaderRemoveProductButton": "Uklonite proizvod {product}",
+ "shrineScreenReaderProductAddToCart": "Dodavanje u korpu",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Korpa za kupovinu bez artikala}=1{Korpa za kupovinu sa 1 artiklom}one{Korpa za kupovinu sa {quantity} artiklom}few{Korpa za kupovinu sa {quantity} artikla}other{Korpa za kupovinu sa {quantity} artikala}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Kopiranje u međumemoriju nije uspjelo: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Kopirano u međumemoriju.",
+ "craneSleep8SemanticLabel": "Majanske ruševine na litici iznad plaže",
+ "craneSleep4SemanticLabel": "Hotel pored jezera ispred planina",
+ "craneSleep2SemanticLabel": "Tvrđava Machu Picchu",
+ "craneSleep1SemanticLabel": "Planinska kućica u snježnom krajoliku sa zimzelenim drvećem",
+ "craneSleep0SemanticLabel": "Kućice na vodi",
+ "craneFly13SemanticLabel": "Bazen pored mora okružen palmama",
+ "craneFly12SemanticLabel": "Bazen okružen palmama",
+ "craneFly11SemanticLabel": "Svjetionik od cigle na moru",
+ "craneFly10SemanticLabel": "Minareti džamije Al-Azhar u suton",
+ "craneFly9SemanticLabel": "Muškarac naslonjen na starinski plavi automobil",
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "craneEat9SemanticLabel": "Štand za kafu i peciva",
+ "craneEat2SemanticLabel": "Pljeskavica",
+ "craneFly5SemanticLabel": "Hotel pored jezera ispred planina",
+ "demoSelectionControlsSubtitle": "Polja za potvrdu, dugmad za izbor i prekidači",
+ "craneEat10SemanticLabel": "Žena drži ogromni sendvič s dimljenom govedinom",
+ "craneFly4SemanticLabel": "Kućice na vodi",
+ "craneEat7SemanticLabel": "Ulaz u pekaru",
+ "craneEat6SemanticLabel": "Jelo od škampi",
+ "craneEat5SemanticLabel": "Prostor za sjedenje u umjetničkom restoranu",
+ "craneEat4SemanticLabel": "Čokoladni desert",
+ "craneEat3SemanticLabel": "Korejski tako",
+ "craneFly3SemanticLabel": "Tvrđava Machu Picchu",
+ "craneEat1SemanticLabel": "Prazan bar s barskim stolicama",
+ "craneEat0SemanticLabel": "Pizza u krušnoj peći",
+ "craneSleep11SemanticLabel": "Neboder Taipei 101",
+ "craneSleep10SemanticLabel": "Minareti džamije Al-Azhar u suton",
+ "craneSleep9SemanticLabel": "Svjetionik od cigle na moru",
+ "craneEat8SemanticLabel": "Tanjir s rečnim rakovima",
+ "craneSleep7SemanticLabel": "Šareni stanovi na Trgu Riberia",
+ "craneSleep6SemanticLabel": "Bazen okružen palmama",
+ "craneSleep5SemanticLabel": "Šator u polju",
+ "settingsButtonCloseLabel": "Zatvori postavke",
+ "demoSelectionControlsCheckboxDescription": "Polja za potvrdu omogućavaju korisniku da odabere više opcija iz skupa. Normalna vrijednost polja za potvrdu je tačno ili netačno, a treća vrijednost polja za potvrdu može biti i nula.",
+ "settingsButtonLabel": "Postavke",
+ "demoListsTitle": "Liste",
+ "demoListsSubtitle": "Izgledi liste koju je moguće klizati",
+ "demoListsDescription": "Jedan red fiksne visine koji uglavnom sadrži tekst te ikonu na početku ili na kraju.",
+ "demoOneLineListsTitle": "Jedan red",
+ "demoTwoLineListsTitle": "Dva reda",
+ "demoListsSecondary": "Sekundarni tekst",
+ "demoSelectionControlsTitle": "Kontrole odabira",
+ "craneFly7SemanticLabel": "Planina Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Polje za potvrdu",
+ "craneSleep3SemanticLabel": "Muškarac naslonjen na starinski plavi automobil",
+ "demoSelectionControlsRadioTitle": "Dugme za izbor",
+ "demoSelectionControlsRadioDescription": "Dugmad za izbor omogućava korisniku da odabere jednu opciju iz seta. Koristite dugmad za izbor za ekskluzivni odabir ako smatrate da korisnik treba vidjeti sve dostupne opcije jednu pored druge.",
+ "demoSelectionControlsSwitchTitle": "Prekidač",
+ "demoSelectionControlsSwitchDescription": "Prekidači za uključivanje/isključivanje mijenjaju stanje jedne opcije postavki. Opcija koju kontrolirira prekidač, kao i status te opcije, trebaju biti jasno naglašeni u odgovarajućoj direktnoj oznaci.",
+ "craneFly0SemanticLabel": "Planinska kućica u snježnom krajoliku sa zimzelenim drvećem",
+ "craneFly1SemanticLabel": "Šator u polju",
+ "craneFly2SemanticLabel": "Molitvene zastave ispred snijegom prekrivene planine",
+ "craneFly6SemanticLabel": "Pogled iz zraka na Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Vidi sve račune",
+ "rallyBillAmount": "Rok za plaćanje računa ({billName}) u iznosu od {amount} je {date}.",
+ "shrineTooltipCloseCart": "Zatvaranje korpe",
+ "shrineTooltipCloseMenu": "Zatvaranje menija",
+ "shrineTooltipOpenMenu": "Otvaranje menija",
+ "shrineTooltipSettings": "Postavke",
+ "shrineTooltipSearch": "Pretraživanje",
+ "demoTabsDescription": "Kartice organiziraju sadržaj na različitim ekranima, skupovima podataka i drugim interakcijama.",
+ "demoTabsSubtitle": "Kartice s prikazima koji se mogu nezavisno klizati",
+ "demoTabsTitle": "Kartice",
+ "rallyBudgetAmount": "Od ukupnog budžeta ({budgetName}) od {amountTotal} iskorišteno je {amountUsed}, a preostalo je {amountLeft}",
+ "shrineTooltipRemoveItem": "Uklanjanje stavke",
+ "rallyAccountAmount": "Na račun ({accountName}) s brojem {accountNumber} je uplaćen iznos od {amount}.",
+ "rallySeeAllBudgets": "Vidi sve budžete",
+ "rallySeeAllBills": "Prikaži sve račune",
+ "craneFormDate": "Odaberite datum",
+ "craneFormOrigin": "Odaberite polazište",
+ "craneFly2": "Dolina Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Peru",
+ "craneFly4": "Malé, Maldivi",
+ "craneFly5": "Vitznau, Švicarska",
+ "craneFly6": "Mexico City, Meksiko",
+ "craneFly7": "Planina Rushmore, Sjedinjene Američke Države",
+ "settingsTextDirectionLocaleBased": "Na osnovu jezika/zemlje",
+ "craneFly9": "Havana, Kuba",
+ "craneFly10": "Kairo, Egipat",
+ "craneFly11": "Lisabon, Portugal",
+ "craneFly12": "Napa, Sjedinjene Američke Države",
+ "craneFly13": "Bali, Indonezija",
+ "craneSleep0": "Malé, Maldivi",
+ "craneSleep1": "Aspen, Sjedinjene Američke Države",
+ "craneSleep2": "Machu Picchu, Peru",
+ "demoCupertinoSegmentedControlTitle": "Segmentirano kontroliranje",
+ "craneSleep4": "Vitznau, Švicarska",
+ "craneSleep5": "Big Sur, Sjedinjene Američke Države",
+ "craneSleep6": "Napa, Sjedinjene Američke Države",
+ "craneSleep7": "Porto, Portugal",
+ "craneSleep8": "Tulum, Meksiko",
+ "craneEat5": "Seul, Južna Koreja",
+ "demoChipTitle": "Čipovi",
+ "demoChipSubtitle": "Kompaktni elementi koji predstavljaju unos, atribut ili radnju",
+ "demoActionChipTitle": "Čip za radnju",
+ "demoActionChipDescription": "Čipovi za radnje su skupovi opcija koje aktiviraju određenu radnju povezanu s primarnim sadržajem. Čipovi za radnje trebali bi se prikazivati dinamički i kontekstualno u korisničkom interfejsu.",
+ "demoChoiceChipTitle": "Čip za odabir",
+ "demoChoiceChipDescription": "Čipovi za odabir predstavljaju izbor jedne stavke iz ponuđenog skupa. Čipovi za odabir sadrže povezani tekst s opisom ili kategorije.",
+ "demoFilterChipTitle": "Čip za filtriranje",
+ "demoFilterChipDescription": "Čipovi za filtriranje koriste oznake ili opisne riječi kao način za filtriranje sadržaja.",
+ "demoInputChipTitle": "Čip unosa",
+ "demoInputChipDescription": "Čipovi unosa predstavljaju kompleksne informacije, kao što su entitet (osoba, mjesto ili stvar) ili tekst razgovora, u kompaktnoj formi.",
+ "craneSleep9": "Lisabon, Portugal",
+ "craneEat10": "Lisabon, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Koristi se za odabir između više opcija koje se međusobno isključuju. Kada se u segmentiranom kontroliranju odabere jedna opcija, poništava se odabir ostalih opcija.",
+ "chipTurnOnLights": "Uključivanje svjetla",
+ "chipSmall": "Malo",
+ "chipMedium": "Srednje",
+ "chipLarge": "Veliko",
+ "chipElevator": "Lift",
+ "chipWasher": "Veš mašina",
+ "chipFireplace": "Kamin",
+ "chipBiking": "Vožnja bicikla",
+ "craneFormDiners": "Mali restorani",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Povećajte potencijalne porezne olakšice! Dodijelite kategorije za 1 nedodijeljenu transakciju.}one{Povećajte potencijalne porezne olakšice! Dodijelite kategorije za {count} nedodijeljenu transakciju.}few{Povećajte potencijalne porezne olakšice! Dodijelite kategorije za {count} nedodijeljene transakcije.}other{Povećajte potencijalne porezne olakšice! Dodijelite kategorije za {count} nedodijeljenih transakcija.}}",
+ "craneFormTime": "Odaberite vrijeme",
+ "craneFormLocation": "Odaberite lokaciju",
+ "craneFormTravelers": "Putnici",
+ "craneEat8": "Atlanta, Sjedinjene Američke Države",
+ "craneFormDestination": "Odaberite odredište",
+ "craneFormDates": "Odaberite datume",
+ "craneFly": "LETITE",
+ "craneSleep": "STANJE MIROVANJA",
+ "craneEat": "HRANA",
+ "craneFlySubhead": "Istražite letove po odredištima",
+ "craneSleepSubhead": "Istražite smještaje po odredištima",
+ "craneEatSubhead": "Istražite restorane po odredištima",
+ "craneFlyStops": "{numberOfStops,plural, =0{Bez presjedanja}=1{1 presjedanje}one{{numberOfStops} presjedanje}few{{numberOfStops} presjedanja}other{{numberOfStops} presjedanja}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{Nema dostupnih smještaja}=1{1 dostupan smještaj}one{{totalProperties} dostupan smještaj}few{{totalProperties} dostupna smještaja}other{{totalProperties} dostupnih smještaja}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{Nema restorana}=1{1 restoran}one{{totalRestaurants} restoran}few{{totalRestaurants} restorana}other{{totalRestaurants} restorana}}",
+ "craneFly0": "Aspen, Sjedinjene Američke Države",
+ "demoCupertinoSegmentedControlSubtitle": "Segmentirano kontroliranje u stilu iOS-a",
+ "craneSleep10": "Kairo, Egipat",
+ "craneEat9": "Madrid, Španija",
+ "craneFly1": "Big Sur, Sjedinjene Američke Države",
+ "craneEat7": "Nashville, Sjedinjene Američke Države",
+ "craneEat6": "Seattle, Sjedinjene Američke Države",
+ "craneFly8": "Singapur",
+ "craneEat4": "Pariz, Francuska",
+ "craneEat3": "Portland, Sjedinjene Američke Države",
+ "craneEat2": "Kordoba, Argentina",
+ "craneEat1": "Dalas, Sjedinjene Američke Države",
+ "craneEat0": "Napulj, Italija",
+ "craneSleep11": "Taipei, Tajvan",
+ "craneSleep3": "Havana, Kuba",
+ "shrineLogoutButtonCaption": "ODJAVA",
+ "rallyTitleBills": "RAČUNI",
+ "rallyTitleAccounts": "RAČUNI",
+ "shrineProductVagabondSack": "Torba Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Kamate od početka godine do danas",
+ "shrineProductWhitneyBelt": "Pojas Whitney",
+ "shrineProductGardenStrand": "Vrtno ukrasno uže",
+ "shrineProductStrutEarrings": "Naušnice Strut",
+ "shrineProductVarsitySocks": "Čarape s prugama",
+ "shrineProductWeaveKeyring": "Pleteni privjesak za ključeve",
+ "shrineProductGatsbyHat": "Kapa Gatsby",
+ "shrineProductShrugBag": "Torba za nošenje na ramenu",
+ "shrineProductGiltDeskTrio": "Tri pozlaćena stolića",
+ "shrineProductCopperWireRack": "Bakarna vješalica",
+ "shrineProductSootheCeramicSet": "Keramički set Soothe",
+ "shrineProductHurrahsTeaSet": "Čajni set Hurrahs",
+ "shrineProductBlueStoneMug": "Plava kamena šolja",
+ "shrineProductRainwaterTray": "Posuda za kišnicu",
+ "shrineProductChambrayNapkins": "Ubrusi od chambraya",
+ "shrineProductSucculentPlanters": "Posude za sukulentne biljke",
+ "shrineProductQuartetTable": "Stol za četiri osobe",
+ "shrineProductKitchenQuattro": "Četverodijelni kuhinjski set",
+ "shrineProductClaySweater": "Džemper boje gline",
+ "shrineProductSeaTunic": "Morska tunika",
+ "shrineProductPlasterTunic": "Tunika boje gipsa",
+ "rallyBudgetCategoryRestaurants": "Restorani",
+ "shrineProductChambrayShirt": "Košulja od chambraya",
+ "shrineProductSeabreezeSweater": "Džemper boje mora",
+ "shrineProductGentryJacket": "Jakna Gentry",
+ "shrineProductNavyTrousers": "Tamnoplave hlače",
+ "shrineProductWalterHenleyWhite": "Majica s Henley ovratnikom (bijela)",
+ "shrineProductSurfAndPerfShirt": "Surferska majica",
+ "shrineProductGingerScarf": "Šal boje đumbira",
+ "shrineProductRamonaCrossover": "Ramona crossover",
+ "shrineProductClassicWhiteCollar": "Klasična bijela košulja",
+ "shrineProductSunshirtDress": "Haljina za plažu",
+ "rallyAccountDetailDataInterestRate": "Kamatna stopa",
+ "rallyAccountDetailDataAnnualPercentageYield": "Godišnji procenat prinosa",
+ "rallyAccountDataVacation": "Odmor",
+ "shrineProductFineLinesTee": "Majica s tankim crtama",
+ "rallyAccountDataHomeSavings": "Štednja za kupovinu kuće",
+ "rallyAccountDataChecking": "Provjera",
+ "rallyAccountDetailDataInterestPaidLastYear": "Kamate plaćene prošle godine",
+ "rallyAccountDetailDataNextStatement": "Sljedeći izvod",
+ "rallyAccountDetailDataAccountOwner": "Vlasnik računa",
+ "rallyBudgetCategoryCoffeeShops": "Kafići",
+ "rallyBudgetCategoryGroceries": "Namirnice",
+ "shrineProductCeriseScallopTee": "Tamnoroza majica sa zaobljenim rubom",
+ "rallyBudgetCategoryClothing": "Odjeća",
+ "rallySettingsManageAccounts": "Upravljajte računima",
+ "rallyAccountDataCarSavings": "Štednja za automobil",
+ "rallySettingsTaxDocuments": "Porezni dokumenti",
+ "rallySettingsPasscodeAndTouchId": "Šifra i Touch ID",
+ "rallySettingsNotifications": "Obavještenja",
+ "rallySettingsPersonalInformation": "Lični podaci",
+ "rallySettingsPaperlessSettings": "Postavke bez papira",
+ "rallySettingsFindAtms": "Pronađite bankomate",
+ "rallySettingsHelp": "Pomoć",
+ "rallySettingsSignOut": "Odjava",
+ "rallyAccountTotal": "Ukupno",
+ "rallyBillsDue": "Rok",
+ "rallyBudgetLeft": "Preostalo",
+ "rallyAccounts": "Računi",
+ "rallyBills": "Računi",
+ "rallyBudgets": "Budžeti",
+ "rallyAlerts": "Obavještenja",
+ "rallySeeAll": "PRIKAŽI SVE",
+ "rallyFinanceLeft": "PREOSTALO",
+ "rallyTitleOverview": "PREGLED",
+ "shrineProductShoulderRollsTee": "Majica s podvrnutim rukavima",
+ "shrineNextButtonCaption": "NAPRIJED",
+ "rallyTitleBudgets": "BUDŽETI",
+ "rallyTitleSettings": "POSTAVKE",
+ "rallyLoginLoginToRally": "Prijavite se u aplikaciju Rally",
+ "rallyLoginNoAccount": "Nemate račun?",
+ "rallyLoginSignUp": "REGISTRACIJA",
+ "rallyLoginUsername": "Korisničko ime",
+ "rallyLoginPassword": "Lozinka",
+ "rallyLoginLabelLogin": "Prijava",
+ "rallyLoginRememberMe": "Zapamti me",
+ "rallyLoginButtonLogin": "PRIJAVA",
+ "rallyAlertsMessageHeadsUpShopping": "Pažnja! Iskoristili ste {percent} budžeta za kupovinu za ovaj mjesec.",
+ "rallyAlertsMessageSpentOnRestaurants": "Ove sedmice ste potrošili {amount} na restorane.",
+ "rallyAlertsMessageATMFees": "Ovog mjeseca ste potrošili {amount} na naknade bankomata",
+ "rallyAlertsMessageCheckingAccount": "Odlično! Na tekućem računu imate {percent} više nego prošlog mjeseca.",
+ "shrineMenuCaption": "MENI",
+ "shrineCategoryNameAll": "SVE",
+ "shrineCategoryNameAccessories": "ODJEVNI DODACI",
+ "shrineCategoryNameClothing": "ODJEĆA",
+ "shrineCategoryNameHome": "Tipka DOM",
+ "shrineLoginUsernameLabel": "Korisničko ime",
+ "shrineLoginPasswordLabel": "Lozinka",
+ "shrineCancelButtonCaption": "OTKAŽI",
+ "shrineCartTaxCaption": "Porez:",
+ "shrineCartPageCaption": "KORPA",
+ "shrineProductQuantity": "Količina: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{NEMA STAVKI}=1{1 STAVKA}one{{quantity} STAVKA}few{{quantity} STAVKE}other{{quantity} STAVKI}}",
+ "shrineCartClearButtonCaption": "ISPRAZNI KORPU",
+ "shrineCartTotalCaption": "UKUPNO",
+ "shrineCartSubtotalCaption": "Međuzbir:",
+ "shrineCartShippingCaption": "Isporuka:",
+ "shrineProductGreySlouchTank": "Siva majica bez rukava",
+ "shrineProductStellaSunglasses": "Sunčane naočale Stella",
+ "shrineProductWhitePinstripeShirt": "Prugasta bijela košulja",
+ "demoTextFieldWhereCanWeReachYou": "Putem kojeg broja vas možemo kontaktirati?",
+ "settingsTextDirectionLTR": "Slijeva nadesno",
+ "settingsTextScalingLarge": "Veliko",
+ "demoBottomSheetHeader": "Zaglavlje",
+ "demoBottomSheetItem": "Stavka {value}",
+ "demoBottomTextFieldsTitle": "Polja za tekst",
+ "demoTextFieldTitle": "Polja za tekst",
+ "demoTextFieldSubtitle": "Jedan red teksta i brojeva koji se mogu uređivati",
+ "demoTextFieldDescription": "Polja za tekst omogućavaju korisnicima da unesu tekst u korisnički interfejs. Obično su u obliku obrazaca i dijaloških okvira.",
+ "demoTextFieldShowPasswordLabel": "Prikaži lozinku",
+ "demoTextFieldHidePasswordLabel": "Sakrivanje lozinke",
+ "demoTextFieldFormErrors": "Prije slanja, ispravite greške označene crvenom bojom.",
+ "demoTextFieldNameRequired": "Ime i prezime je obavezno.",
+ "demoTextFieldOnlyAlphabeticalChars": "Unesite samo slova abecede.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### – unesite broj telefona u SAD-u.",
+ "demoTextFieldEnterPassword": "Unesite lozinku.",
+ "demoTextFieldPasswordsDoNotMatch": "Lozinke se ne podudaraju",
+ "demoTextFieldWhatDoPeopleCallYou": "Kako vas drugi zovu?",
+ "demoTextFieldNameField": "Ime i prezime*",
+ "demoBottomSheetButtonText": "PRIKAŽI DONJU TABELU",
+ "demoTextFieldPhoneNumber": "Broj telefona*",
+ "demoBottomSheetTitle": "Donja tabela",
+ "demoTextFieldEmail": "Adresa e-pošte",
+ "demoTextFieldTellUsAboutYourself": "Recite nam nešto o sebi (npr. napišite čime se bavite ili koji su vam hobiji)",
+ "demoTextFieldKeepItShort": "Neka bude kratko, ovo je samo demonstracija.",
+ "starterAppGenericButton": "DUGME",
+ "demoTextFieldLifeStory": "Životna priča",
+ "demoTextFieldSalary": "Plata",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Ne možete unijeti više od 8 znakova.",
+ "demoTextFieldPassword": "Lozinka*",
+ "demoTextFieldRetypePassword": "Ponovo unesite lozinku*",
+ "demoTextFieldSubmit": "POŠALJI",
+ "demoBottomNavigationSubtitle": "Donja navigacija koja se postupno prikazuje i nestaje",
+ "demoBottomSheetAddLabel": "Dodajte",
+ "demoBottomSheetModalDescription": "Modalna donja tabela je alternativa meniju ili dijaloškom okviru i onemogućava korisnicima interakciju s ostatkom aplikacije.",
+ "demoBottomSheetModalTitle": "Modalna donja tabela",
+ "demoBottomSheetPersistentDescription": "Fiksna donja tabela prikazuje informacije koje nadopunjuju primarni sadržaj aplikacije. Fiksna donja tabela ostaje vidljiva čak i tokom interakcije korisnika s drugim dijelovima aplikacije.",
+ "demoBottomSheetPersistentTitle": "Fiksna donja tabela",
+ "demoBottomSheetSubtitle": "Fiksna i modalna donja tabela",
+ "demoTextFieldNameHasPhoneNumber": "Broj telefona korisnika {name} je {phoneNumber}",
+ "buttonText": "DUGME",
+ "demoTypographyDescription": "Definicije raznih tipografskih stilova u materijalnom dizajnu.",
+ "demoTypographySubtitle": "Svi unaprijed definirani stilovi teksta",
+ "demoTypographyTitle": "Tipografija",
+ "demoFullscreenDialogDescription": "Funkcija fullscreenDialog određuje da li se sljedeća stranica otvara u dijaloškom okviru preko cijelog ekrana",
+ "demoFlatButtonDescription": "Ravno dugme prikazuje mrlju od tinte kada ga pritisnete, ali se ne podiže. Koristite ravnu dugmad na alatnim trakama, u dijalozijma i u tekstu s razmakom",
+ "demoBottomNavigationDescription": "Donje navigacijske trake prikazuju tri do pet odredišta na dnu ekrana. Svako odredište predstavlja ikona i tekstualna oznaka koja nije obavezna. Kada korisnik dodirne ikonu donje navigacije, otvorit će se odredište navigacije na najvišem nivou povezano s tom ikonom.",
+ "demoBottomNavigationSelectedLabel": "Odabrana oznaka",
+ "demoBottomNavigationPersistentLabels": "Fiksne oznake",
+ "starterAppDrawerItem": "Stavka {value}",
+ "demoTextFieldRequiredField": "* označava obavezno polje",
+ "demoBottomNavigationTitle": "Donja navigacija",
+ "settingsLightTheme": "Svijetla",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "Zdesna nalijevo",
+ "settingsTextScalingHuge": "Ogromno",
+ "cupertinoButton": "Dugme",
+ "settingsTextScalingNormal": "Normalno",
+ "settingsTextScalingSmall": "Malo",
+ "settingsSystemDefault": "Sistem",
+ "settingsTitle": "Postavke",
+ "rallyDescription": "Aplikacija za lične finansije",
+ "aboutDialogDescription": "Da vidite izvorni kôd za ovu aplikaciju, posjetite {value}.",
+ "bottomNavigationCommentsTab": "Komentari",
+ "starterAppGenericBody": "Glavni tekst",
+ "starterAppGenericHeadline": "Naslov",
+ "starterAppGenericSubtitle": "Titlovi",
+ "starterAppGenericTitle": "Naslov",
+ "starterAppTooltipSearch": "Pretražite",
+ "starterAppTooltipShare": "Dijeljenje",
+ "starterAppTooltipFavorite": "Omiljeno",
+ "starterAppTooltipAdd": "Dodajte",
+ "bottomNavigationCalendarTab": "Kalendar",
+ "starterAppDescription": "Prilagodljiv izgled aplikacije za pokretanje",
+ "starterAppTitle": "Aplikacija za pokretanje",
+ "aboutFlutterSamplesRepo": "Spremište primjera za Flutter na Githubu",
+ "bottomNavigationContentPlaceholder": "Rezervirano mjesto za karticu {title}",
+ "bottomNavigationCameraTab": "Kamera",
+ "bottomNavigationAlarmTab": "Alarm",
+ "bottomNavigationAccountTab": "Račun",
+ "demoTextFieldYourEmailAddress": "Vaša adresa e-pošte",
+ "demoToggleButtonDescription": "Dugmad za uključivanje/isključivanje može se koristiti za grupisanje srodnih opcija. Da naglasite grupe srodne dugmadi za uključivanje/isključivanje, grupa treba imati zajednički spremnik",
+ "colorsGrey": "SIVA",
+ "colorsBrown": "SMEĐA",
+ "colorsDeepOrange": "JAKA NARANDŽASTA",
+ "colorsOrange": "NARANDŽASTA",
+ "colorsAmber": "TAMNOŽUTA",
+ "colorsYellow": "ŽUTA",
+ "colorsLime": "ŽUTOZELENA",
+ "colorsLightGreen": "SVIJETLOZELENA",
+ "colorsGreen": "ZELENA",
+ "homeHeaderGallery": "Galerija",
+ "homeHeaderCategories": "Kategorije",
+ "shrineDescription": "Moderna aplikacija za maloprodaju",
+ "craneDescription": "Personalizirana aplikacija za putovanja",
+ "homeCategoryReference": "REFERENTNI STILOVI I MEDIJSKI SADRŽAJ",
+ "demoInvalidURL": "Prikazivanje URL-a nije uspjelo:",
+ "demoOptionsTooltip": "Opcije",
+ "demoInfoTooltip": "Informacije",
+ "demoCodeTooltip": "Uzorak koda",
+ "demoDocumentationTooltip": "Dokumentacija za API",
+ "demoFullscreenTooltip": "Preko cijelog ekrana",
+ "settingsTextScaling": "Promjena veličine teksta",
+ "settingsTextDirection": "Smjer unosa teksta",
+ "settingsLocale": "Jezik/zemlja",
+ "settingsPlatformMechanics": "Mehanika platforme",
+ "settingsDarkTheme": "Tamna",
+ "settingsSlowMotion": "Usporeni snimak",
+ "settingsAbout": "O usluzi Flutter Gallery",
+ "settingsFeedback": "Pošalji povratne informacije",
+ "settingsAttribution": "Dizajnirala agencija TOASTER iz Londona",
+ "demoButtonTitle": "Dugmad",
+ "demoButtonSubtitle": "Ravno, izdignuto, ocrtano i još mnogo toga",
+ "demoFlatButtonTitle": "Ravno dugme",
+ "demoRaisedButtonDescription": "Izdignuta dugmad daje trodimenzionalni izgled uglavnom ravnim prikazima. Ona naglašava funkcije u prostorima s puno elemenata ili širokim prostorima.",
+ "demoRaisedButtonTitle": "Izdignuto dugme",
+ "demoOutlineButtonTitle": "Ocrtano dugme",
+ "demoOutlineButtonDescription": "Ocrtana dugmad postaje neprozirna i podiže se kada se pritisne. Obično se uparuje s izdignutom dugmadi kako bi se ukazalo na alternativnu, sekundarnu radnju.",
+ "demoToggleButtonTitle": "Dugmad za uključivanje/isključivanje",
+ "colorsTeal": "TIRKIZNA",
+ "demoFloatingButtonTitle": "Plutajuće dugme za radnju",
+ "demoFloatingButtonDescription": "Plutajuće dugme za radnju je okrugla ikona dugmeta koja se nalazi iznad sadržaja kako bi istakla primarnu radnju u aplikaciji.",
+ "demoDialogTitle": "Dijaloški okviri",
+ "demoDialogSubtitle": "Jednostavno, obavještenje i preko cijelog ekrana",
+ "demoAlertDialogTitle": "Obavještenje",
+ "demoAlertDialogDescription": "Dijaloški okvir za obavještenje informira korisnika o situacijama koje zahtijevaju potvrdu. Dijaloški okvir za obavještenje ima opcionalni naslov i opcionalni spisak radnji.",
+ "demoAlertTitleDialogTitle": "Obavještenje s naslovom",
+ "demoSimpleDialogTitle": "Jednostavno",
+ "demoSimpleDialogDescription": "Jednostavni dijaloški okvir korisniku nudi izbor između nekoliko opcija. Jednostavni dijaloški okvir ima opcionalni naslov koji se prikazuje iznad izbora.",
+ "demoFullscreenDialogTitle": "Preko cijelog ekrana",
+ "demoCupertinoButtonsTitle": "Dugmad",
+ "demoCupertinoButtonsSubtitle": "Dugmad u stilu iOS-a",
+ "demoCupertinoButtonsDescription": "Dugme u stilu iOS-a. Sadrži tekst i/ili ikonu koja nestaje ili se prikazuje kada se dugme dodirne. Opcionalno može imati pozadinu.",
+ "demoCupertinoAlertsTitle": "Obavještenja",
+ "demoCupertinoAlertsSubtitle": "Dijaloški okvir za obavještenja u stilu iOS-a",
+ "demoCupertinoAlertTitle": "Obavještenje",
+ "demoCupertinoAlertDescription": "Dijaloški okvir za obavještenje informira korisnika o situacijama koje zahtijevaju potvrdu. Dijaloški okvir za obavještenje ima opcionalni naslov, opcionalni sadržaj i opcionalni spisak radnji. Naslov se prikazuje iznad sadržaja, a radnje se prikazuju ispod sadržaja.",
+ "demoCupertinoAlertWithTitleTitle": "Obavještenje s naslovom",
+ "demoCupertinoAlertButtonsTitle": "Obavještenje s dugmadi",
+ "demoCupertinoAlertButtonsOnlyTitle": "Samo dugmad za obavještenje",
+ "demoCupertinoActionSheetTitle": "Tabela radnji",
+ "demoCupertinoActionSheetDescription": "Tabela radnji je posebna vrsta obavještenja koja korisniku daje dva ili više izbora u vezi s trenutnim kontekstom. Tabela radnji može imati naslov, dodatnu poruku i spisak radnji.",
+ "demoColorsTitle": "Boje",
+ "demoColorsSubtitle": "Sve unaprijed definirane boje",
+ "demoColorsDescription": "Boja i uzorci boja koji predstavljaju paletu boja materijalnog dizajna.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Kreirajte",
+ "dialogSelectedOption": "Odabrali ste: \"{value}\"",
+ "dialogDiscardTitle": "Odbaciti nedovršenu verziju?",
+ "dialogLocationTitle": "Koristiti Googleovu uslugu lokacije?",
+ "dialogLocationDescription": "Dozvolite da Google pomogne aplikacijama da odrede lokaciju. To podrazumijeva slanje anonimnih podataka o lokaciji Googleu, čak i kada nijedna aplikacija nije pokrenuta.",
+ "dialogCancel": "OTKAŽI",
+ "dialogDiscard": "ODBACI",
+ "dialogDisagree": "NE SLAŽEM SE",
+ "dialogAgree": "PRIHVATAM",
+ "dialogSetBackup": "Postavljanje računa za sigurnosne kopije",
+ "colorsBlueGrey": "PLAVOSIVA",
+ "dialogShow": "PRIKAŽI DIJALOŠKI OKVIR",
+ "dialogFullscreenTitle": "DIjaloški okvir preko cijelog ekrana",
+ "dialogFullscreenSave": "SAČUVAJ",
+ "dialogFullscreenDescription": "Demo prikaz dijaloškog okvira preko cijelog ekrana",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "S pozadinom",
+ "cupertinoAlertCancel": "Otkaži",
+ "cupertinoAlertDiscard": "Odbaci",
+ "cupertinoAlertLocationTitle": "Dozvoliti \"Mapama\" pristup vašoj lokaciji dok koristite aplikaciju?",
+ "cupertinoAlertLocationDescription": "Vaša trenutna lokacija bit će prikazana na mapi i koristit će se za smjernice, rezultate pretraživanje stvari u blizini i procjenu trajanja putovanja.",
+ "cupertinoAlertAllow": "Dozvoli",
+ "cupertinoAlertDontAllow": "Nemoj dozvoliti",
+ "cupertinoAlertFavoriteDessert": "Odaberite omiljeni desert",
+ "cupertinoAlertDessertDescription": "Odaberite omiljenu vrstu deserta s liste u nastavku. Vaš odabir koristit će se za prilagođavanje liste prijedloga restorana u vašem području.",
+ "cupertinoAlertCheesecake": "Torta sa sirom",
+ "cupertinoAlertTiramisu": "Tiramisu",
+ "cupertinoAlertApplePie": "Pita od jabuka",
+ "cupertinoAlertChocolateBrownie": "Čokoladni kolač",
+ "cupertinoShowAlert": "Prikaži obavještenje",
+ "colorsRed": "CRVENA",
+ "colorsPink": "RUŽIČASTA",
+ "colorsPurple": "LJUBIČASTA",
+ "colorsDeepPurple": "TAMNOLJUBIČASTA",
+ "colorsIndigo": "INDIGO",
+ "colorsBlue": "PLAVA",
+ "colorsLightBlue": "SVIJETLOPLAVA",
+ "colorsCyan": "CIJAN",
+ "dialogAddAccount": "Dodaj račun",
+ "Gallery": "Galerija",
+ "Categories": "Kategorije",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "Osnovna aplikacija za kupovinu",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "Aplikacija za putovanja",
+ "MATERIAL": "MATERIJAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "REFERENTNI STILOVI I MEDIJSKI SADRŽAJ"
+}
diff --git a/gallery/lib/l10n/intl_ca.arb b/gallery/lib/l10n/intl_ca.arb
new file mode 100644
index 0000000..45a4bda
--- /dev/null
+++ b/gallery/lib/l10n/intl_ca.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Mostra les opcions",
+ "demoOptionsFeatureDescription": "Toca aquí per veure les opcions disponibles per a aquesta demostració.",
+ "demoCodeViewerCopyAll": "COPIA-HO TOT",
+ "shrineScreenReaderRemoveProductButton": "Suprimeix {product}",
+ "shrineScreenReaderProductAddToCart": "Afegeix al carretó",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carretó, cap article}=1{Carretó, 1 article}other{Carretó, {quantity} articles}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No s'ha pogut copiar al porta-retalls: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "S'ha copiat al porta-retalls.",
+ "craneSleep8SemanticLabel": "Ruïnes maies en un cingle a la platja",
+ "craneSleep4SemanticLabel": "Hotel vora un llac i davant d'unes muntanyes",
+ "craneSleep2SemanticLabel": "Ciutadella de Machu Picchu",
+ "craneSleep1SemanticLabel": "Xalet en un paisatge nevat amb arbres de fulla perenne",
+ "craneSleep0SemanticLabel": "Bungalous flotants",
+ "craneFly13SemanticLabel": "Piscina vora el mar amb palmeres",
+ "craneFly12SemanticLabel": "Piscina amb palmeres",
+ "craneFly11SemanticLabel": "Far de maons al mar",
+ "craneFly10SemanticLabel": "Torres de la mesquita d'Al-Azhar durant la posta de sol",
+ "craneFly9SemanticLabel": "Home recolzat en un cotxe blau antic",
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "craneEat9SemanticLabel": "Mostrador d'una cafeteria amb pastes",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel vora un llac i davant d'unes muntanyes",
+ "demoSelectionControlsSubtitle": "Caselles de selecció, botons d'opció i interruptors",
+ "craneEat10SemanticLabel": "Dona amb un entrepà de pastrami enorme",
+ "craneFly4SemanticLabel": "Bungalous flotants",
+ "craneEat7SemanticLabel": "Entrada d'una fleca",
+ "craneEat6SemanticLabel": "Plat de gambes",
+ "craneEat5SemanticLabel": "Taules d'un restaurant artístic",
+ "craneEat4SemanticLabel": "Postres de xocolata",
+ "craneEat3SemanticLabel": "Taco coreà",
+ "craneFly3SemanticLabel": "Ciutadella de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar buit amb tamborets d'estil americà",
+ "craneEat0SemanticLabel": "Pizza al forn de llenya",
+ "craneSleep11SemanticLabel": "Gratacel Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mesquita d'Al-Azhar durant la posta de sol",
+ "craneSleep9SemanticLabel": "Far de maons al mar",
+ "craneEat8SemanticLabel": "Plat de cranc de riu",
+ "craneSleep7SemanticLabel": "Apartaments acolorits a la Praça da Ribeira",
+ "craneSleep6SemanticLabel": "Piscina amb palmeres",
+ "craneSleep5SemanticLabel": "Tenda de campanya al camp",
+ "settingsButtonCloseLabel": "Tanca la configuració",
+ "demoSelectionControlsCheckboxDescription": "Les caselles de selecció permeten que l'usuari seleccioni diverses opcions d'un conjunt. Normalment, el valor d'una casella de selecció és vertader o fals; en cas d'una casella de selecció amb tres estats, el tercer valor també pot ser nul.",
+ "settingsButtonLabel": "Configuració",
+ "demoListsTitle": "Llistes",
+ "demoListsSubtitle": "Desplaçar-se per dissenys de llistes",
+ "demoListsDescription": "Una fila d'alçada fixa que normalment conté text i una icona al principi o al final.",
+ "demoOneLineListsTitle": "Una línia",
+ "demoTwoLineListsTitle": "Dues línies",
+ "demoListsSecondary": "Text secundari",
+ "demoSelectionControlsTitle": "Controls de selecció",
+ "craneFly7SemanticLabel": "Mont Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casella de selecció",
+ "craneSleep3SemanticLabel": "Home recolzat en un cotxe blau antic",
+ "demoSelectionControlsRadioTitle": "Opció",
+ "demoSelectionControlsRadioDescription": "Els botons d'opció permeten que l'usuari seleccioni una opció d'un conjunt. Fes-los servir si vols que l'usuari pugui veure totes les opcions disponibles, però només en pugui triar una.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Els interruptors commuten l'estat d'una única opció de configuració. L'etiqueta inserida corresponent ha de descriure l'opció que controla l'interruptor i l'estat en què es troba.",
+ "craneFly0SemanticLabel": "Xalet en un paisatge nevat amb arbres de fulla perenne",
+ "craneFly1SemanticLabel": "Tenda de campanya al camp",
+ "craneFly2SemanticLabel": "Banderes de pregària amb una muntanya nevada en segon pla",
+ "craneFly6SemanticLabel": "Vista aèria del Palau de Belles Arts",
+ "rallySeeAllAccounts": "Mostra tots els comptes",
+ "rallyBillAmount": "Data de venciment de la factura {billName} ({amount}): {date}.",
+ "shrineTooltipCloseCart": "Tanca el carretó",
+ "shrineTooltipCloseMenu": "Tanca el menú",
+ "shrineTooltipOpenMenu": "Obre el menú",
+ "shrineTooltipSettings": "Configuració",
+ "shrineTooltipSearch": "Cerca",
+ "demoTabsDescription": "Les pestanyes organitzen el contingut en diferents pantalles, conjunts de dades i altres interaccions.",
+ "demoTabsSubtitle": "Pestanyes amb visualitzacions desplaçables de manera independent",
+ "demoTabsTitle": "Pestanyes",
+ "rallyBudgetAmount": "Has gastat {amountUsed} de {amountTotal} del pressupost {budgetName}; import restant: {amountLeft}",
+ "shrineTooltipRemoveItem": "Suprimeix l'article",
+ "rallyAccountAmount": "Import al compte {accountName} amb el número {accountNumber}: {amount}.",
+ "rallySeeAllBudgets": "Mostra tots els pressupostos",
+ "rallySeeAllBills": "Mostra totes les factures",
+ "craneFormDate": "Selecciona la data",
+ "craneFormOrigin": "Tria l'origen",
+ "craneFly2": "Vall del Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Male, Maldives",
+ "craneFly5": "Vitznau, Suïssa",
+ "craneFly6": "Ciutat de Mèxic, Mèxic",
+ "craneFly7": "Mont Rushmore, Estats Units",
+ "settingsTextDirectionLocaleBased": "Segons la configuració regional",
+ "craneFly9": "L'Havana, Cuba",
+ "craneFly10": "El Caire, Egipte",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estats Units",
+ "craneFly13": "Bali, Indonèsia",
+ "craneSleep0": "Male, Maldives",
+ "craneSleep1": "Aspen, Estats Units",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentat",
+ "craneSleep4": "Vitznau, Suïssa",
+ "craneSleep5": "Big Sur, Estats Units",
+ "craneSleep6": "Napa, Estats Units",
+ "craneSleep7": "Porto, Portugal",
+ "craneSleep8": "Tulum, Mèxic",
+ "craneEat5": "Seül, Corea del Sud",
+ "demoChipTitle": "Etiquetes",
+ "demoChipSubtitle": "Elements compactes que representen una entrada, un atribut o una acció",
+ "demoActionChipTitle": "Etiqueta d'acció",
+ "demoActionChipDescription": "Les etiquetes d'acció són un conjunt d'opcions que activen una acció relacionada amb el contingut principal. Es mostren de manera dinàmica i contextual a les interfícies d'usuari.",
+ "demoChoiceChipTitle": "Etiqueta de selecció",
+ "demoChoiceChipDescription": "Les etiquetes de selecció representen una opció única d'entre les d'un conjunt i contenen text descriptiu relacionat o categories.",
+ "demoFilterChipTitle": "Etiqueta de filtre",
+ "demoFilterChipDescription": "Les etiquetes de filtre utilitzen etiquetes o paraules descriptives per filtrar contingut.",
+ "demoInputChipTitle": "Etiqueta d'entrada",
+ "demoInputChipDescription": "Les etiquetes d'entrada representen una informació complexa, com ara una entitat (persona, lloc o cosa) o un text de conversa, en format compacte.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "S'utilitza per triar una opció d'entre diverses que són excloents entre si. Quan se selecciona una opció al control segmentat, les altres deixen d'estar disponibles.",
+ "chipTurnOnLights": "Encén els llums",
+ "chipSmall": "Petita",
+ "chipMedium": "Mitjana",
+ "chipLarge": "Gran",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Rentadora",
+ "chipFireplace": "Llar de foc",
+ "chipBiking": "Ciclisme",
+ "craneFormDiners": "Comensals",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Augmenta la teva possible deducció fiscal. Assigna categories a 1 transacció sense assignar.}other{Augmenta la teva possible deducció fiscal. Assigna categories a {count} transaccions sense assignar.}}",
+ "craneFormTime": "Selecciona l'hora",
+ "craneFormLocation": "Selecciona la ubicació",
+ "craneFormTravelers": "Viatgers",
+ "craneEat8": "Atlanta, Estats Units",
+ "craneFormDestination": "Tria una destinació",
+ "craneFormDates": "Selecciona les dates",
+ "craneFly": "VOLAR",
+ "craneSleep": "DORMIR",
+ "craneEat": "MENJAR",
+ "craneFlySubhead": "Explora vols per destinació",
+ "craneSleepSubhead": "Explora propietats per destinació",
+ "craneEatSubhead": "Explora restaurants per destinació",
+ "craneFlyStops": "{numberOfStops,plural, =0{Sense escales}=1{1 escala}other{{numberOfStops} escales}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{Cap propietat disponible}=1{1 propietat disponible}other{{totalProperties} propietats disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{Cap restaurant}=1{1 restaurant}other{{totalRestaurants} restaurants}}",
+ "craneFly0": "Aspen, Estats Units",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentat d'estil iOS",
+ "craneSleep10": "El Caire, Egipte",
+ "craneEat9": "Madrid, Espanya",
+ "craneFly1": "Big Sur, Estats Units",
+ "craneEat7": "Nashville, Estats Units",
+ "craneEat6": "Seattle, Estats Units",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, França",
+ "craneEat3": "Portland, Estats Units",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estats Units",
+ "craneEat0": "Nàpols, Itàlia",
+ "craneSleep11": "Taipei, Taiwan",
+ "craneSleep3": "L'Havana, Cuba",
+ "shrineLogoutButtonCaption": "TANCA LA SESSIÓ",
+ "rallyTitleBills": "FACTURES",
+ "rallyTitleAccounts": "COMPTES",
+ "shrineProductVagabondSack": "Motxilla Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interessos fins a l'actualitat",
+ "shrineProductWhitneyBelt": "Cinturó Whitney",
+ "shrineProductGardenStrand": "Collarets de granadura",
+ "shrineProductStrutEarrings": "Arracades",
+ "shrineProductVarsitySocks": "Mitjons d'estil universitari",
+ "shrineProductWeaveKeyring": "Clauer teixit",
+ "shrineProductGatsbyHat": "Barret Gatsby",
+ "shrineProductShrugBag": "Bossa",
+ "shrineProductGiltDeskTrio": "Accessoris d'escriptori daurats",
+ "shrineProductCopperWireRack": "Cistella de reixeta de coure",
+ "shrineProductSootheCeramicSet": "Joc de ceràmica relaxant",
+ "shrineProductHurrahsTeaSet": "Joc per al te",
+ "shrineProductBlueStoneMug": "Tassa Blue Stone",
+ "shrineProductRainwaterTray": "Safata",
+ "shrineProductChambrayNapkins": "Tovallons de cambrai",
+ "shrineProductSucculentPlanters": "Testos per a suculentes",
+ "shrineProductQuartetTable": "Taula rodona",
+ "shrineProductKitchenQuattro": "Estris de cuina",
+ "shrineProductClaySweater": "Jersei color teula",
+ "shrineProductSeaTunic": "Samarreta llarga blau clar",
+ "shrineProductPlasterTunic": "Túnica color guix",
+ "rallyBudgetCategoryRestaurants": "Restaurants",
+ "shrineProductChambrayShirt": "Camisa cambrai",
+ "shrineProductSeabreezeSweater": "Jersei color blau clar",
+ "shrineProductGentryJacket": "Jaqueta noble",
+ "shrineProductNavyTrousers": "Pantalons blau marí",
+ "shrineProductWalterHenleyWhite": "Samarreta de ratlles (blanc)",
+ "shrineProductSurfAndPerfShirt": "Samarreta surfera",
+ "shrineProductGingerScarf": "Bufanda ataronjada",
+ "shrineProductRamonaCrossover": "Camisa encreuada Ramona",
+ "shrineProductClassicWhiteCollar": "Coll blanc clàssic",
+ "shrineProductSunshirtDress": "Vestit estiuenc",
+ "rallyAccountDetailDataInterestRate": "Taxa d'interès",
+ "rallyAccountDetailDataAnnualPercentageYield": "Percentatge de rendiment anual",
+ "rallyAccountDataVacation": "Vacances",
+ "shrineProductFineLinesTee": "Samarreta a ratlles fines",
+ "rallyAccountDataHomeSavings": "Estalvis de la llar",
+ "rallyAccountDataChecking": "Compte corrent",
+ "rallyAccountDetailDataInterestPaidLastYear": "Interessos pagats l'any passat",
+ "rallyAccountDetailDataNextStatement": "Extracte següent",
+ "rallyAccountDetailDataAccountOwner": "Propietari del compte",
+ "rallyBudgetCategoryCoffeeShops": "Cafeteries",
+ "rallyBudgetCategoryGroceries": "Queviures",
+ "shrineProductCeriseScallopTee": "Samarreta de coll rodó color cirera",
+ "rallyBudgetCategoryClothing": "Roba",
+ "rallySettingsManageAccounts": "Gestiona els comptes",
+ "rallyAccountDataCarSavings": "Estalvis del cotxe",
+ "rallySettingsTaxDocuments": "Documents fiscals",
+ "rallySettingsPasscodeAndTouchId": "Contrasenya i Touch ID",
+ "rallySettingsNotifications": "Notificacions",
+ "rallySettingsPersonalInformation": "Informació personal",
+ "rallySettingsPaperlessSettings": "Configuració del format digital",
+ "rallySettingsFindAtms": "Troba un caixer automàtic",
+ "rallySettingsHelp": "Ajuda",
+ "rallySettingsSignOut": "Tanca la sessió",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Venciment",
+ "rallyBudgetLeft": "Restant",
+ "rallyAccounts": "Comptes",
+ "rallyBills": "Factures",
+ "rallyBudgets": "Pressupostos",
+ "rallyAlerts": "Alertes",
+ "rallySeeAll": "MOSTRA-HO TOT",
+ "rallyFinanceLeft": "RESTANT",
+ "rallyTitleOverview": "INFORMACIÓ GENERAL",
+ "shrineProductShoulderRollsTee": "Samarreta amb muscle descobert",
+ "shrineNextButtonCaption": "SEGÜENT",
+ "rallyTitleBudgets": "PRESSUPOSTOS",
+ "rallyTitleSettings": "CONFIGURACIÓ",
+ "rallyLoginLoginToRally": "Inicia la sessió a Rally",
+ "rallyLoginNoAccount": "No tens cap compte?",
+ "rallyLoginSignUp": "REGISTRA'T",
+ "rallyLoginUsername": "Nom d'usuari",
+ "rallyLoginPassword": "Contrasenya",
+ "rallyLoginLabelLogin": "Inicia la sessió",
+ "rallyLoginRememberMe": "Recorda'm",
+ "rallyLoginButtonLogin": "INICIA LA SESSIÓ",
+ "rallyAlertsMessageHeadsUpShopping": "Atenció! Has fet servir un {percent} del teu pressupost per a compres d'aquest mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Has gastat {amount} en restaurants aquesta setmana.",
+ "rallyAlertsMessageATMFees": "Has gastat {amount} en comissions de caixers automàtics aquest mes",
+ "rallyAlertsMessageCheckingAccount": "Ben fet. El teu compte corrent és un {percent} superior al mes passat.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TOT",
+ "shrineCategoryNameAccessories": "ACCESSORIS",
+ "shrineCategoryNameClothing": "ROBA",
+ "shrineCategoryNameHome": "CASA",
+ "shrineLoginUsernameLabel": "Nom d'usuari",
+ "shrineLoginPasswordLabel": "Contrasenya",
+ "shrineCancelButtonCaption": "CANCEL·LA",
+ "shrineCartTaxCaption": "Impostos:",
+ "shrineCartPageCaption": "CARRETÓ",
+ "shrineProductQuantity": "Quantitat: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{CAP ARTICLE}=1{1 ARTICLE}other{{quantity} ARTICLES}}",
+ "shrineCartClearButtonCaption": "BUIDA EL CARRETÓ",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Enviament:",
+ "shrineProductGreySlouchTank": "Samarreta de tirants ampla grisa",
+ "shrineProductStellaSunglasses": "Ulleres de sol Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa a ratlles blanca",
+ "demoTextFieldWhereCanWeReachYou": "Com ens podem posar en contacte amb tu?",
+ "settingsTextDirectionLTR": "Text d'esquerra a dreta",
+ "settingsTextScalingLarge": "Gran",
+ "demoBottomSheetHeader": "Capçalera",
+ "demoBottomSheetItem": "Article {value}",
+ "demoBottomTextFieldsTitle": "Camps de text",
+ "demoTextFieldTitle": "Camps de text",
+ "demoTextFieldSubtitle": "Línia de text i xifres editables",
+ "demoTextFieldDescription": "Els camps de text permeten als usuaris introduir text en una interfície d'usuari. Normalment s'inclouen en formularis i quadres de diàleg.",
+ "demoTextFieldShowPasswordLabel": "Mostra la contrasenya",
+ "demoTextFieldHidePasswordLabel": "Amaga la contrasenya",
+ "demoTextFieldFormErrors": "Resol els errors marcats en vermell abans d'enviar el formulari.",
+ "demoTextFieldNameRequired": "El nom és obligatori.",
+ "demoTextFieldOnlyAlphabeticalChars": "Introdueix només caràcters alfabètics.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-####: introdueix un número de telèfon dels EUA.",
+ "demoTextFieldEnterPassword": "Introdueix una contrasenya.",
+ "demoTextFieldPasswordsDoNotMatch": "Les contrasenyes no coincideixen",
+ "demoTextFieldWhatDoPeopleCallYou": "Com et dius?",
+ "demoTextFieldNameField": "Nom*",
+ "demoBottomSheetButtonText": "MOSTRA LA PÀGINA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de telèfon*",
+ "demoBottomSheetTitle": "Pàgina inferior",
+ "demoTextFieldEmail": "Adreça electrònica",
+ "demoTextFieldTellUsAboutYourself": "Explica'ns alguna cosa sobre tu (p. ex., escriu a què et dediques o quines són les teves aficions)",
+ "demoTextFieldKeepItShort": "Sigues breu, es tracta d'una demostració.",
+ "starterAppGenericButton": "BOTÓ",
+ "demoTextFieldLifeStory": "Biografia",
+ "demoTextFieldSalary": "Salari",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "No pot tenir més de 8 caràcters.",
+ "demoTextFieldPassword": "Contrasenya*",
+ "demoTextFieldRetypePassword": "Torna a escriure la contrasenya*",
+ "demoTextFieldSubmit": "ENVIA",
+ "demoBottomNavigationSubtitle": "Navegació inferior amb visualitzacions d'esvaïment encreuat",
+ "demoBottomSheetAddLabel": "Afegeix",
+ "demoBottomSheetModalDescription": "Una pàgina modal inferior és una alternativa al menú o al diàleg i evita que l'usuari interaccioni amb la resta de l'aplicació.",
+ "demoBottomSheetModalTitle": "Pàgina modal inferior",
+ "demoBottomSheetPersistentDescription": "Una pàgina persistent inferior mostra informació que complementa el contingut principal de l'aplicació. A més, continua visible quan l'usuari interacciona amb altres parts de l'aplicació.",
+ "demoBottomSheetPersistentTitle": "Pàgina persistent inferior",
+ "demoBottomSheetSubtitle": "Pàgines modal i persistent inferiors",
+ "demoTextFieldNameHasPhoneNumber": "El número de telèfon de {name} és {phoneNumber}",
+ "buttonText": "BOTÓ",
+ "demoTypographyDescription": "Definicions dels diversos estils tipogràfics trobats a Material Design.",
+ "demoTypographySubtitle": "Tots els estils de text predefinits",
+ "demoTypographyTitle": "Tipografia",
+ "demoFullscreenDialogDescription": "La propietat fullscreenDialog indica si la pàgina entrant és un quadre de diàleg modal de pantalla completa",
+ "demoFlatButtonDescription": "Un botó pla mostra un esquitx de tinta en prémer-lo, però no s'eleva. Utilitza els botons plans en barres d'eines, en quadres de diàleg i entre línies amb farciment",
+ "demoBottomNavigationDescription": "A les barres de navegació inferior es mostren entre tres i cinc destinacions. Cada destinació es representa amb una icona i una etiqueta de text opcional. En tocar una icona de la navegació inferior, es redirigirà l'usuari a la destinació de navegació de nivell superior associada amb la icona.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetes persistents",
+ "starterAppDrawerItem": "Article {value}",
+ "demoTextFieldRequiredField": "* indica que el camp és obligatori",
+ "demoBottomNavigationTitle": "Navegació inferior",
+ "settingsLightTheme": "Clar",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "Dreta a esquerra",
+ "settingsTextScalingHuge": "Molt gran",
+ "cupertinoButton": "Botó",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Petit",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuració",
+ "rallyDescription": "Una aplicació de finances personal",
+ "aboutDialogDescription": "Per consultar el codi font d'aquesta aplicació, ves a {value}.",
+ "bottomNavigationCommentsTab": "Comentaris",
+ "starterAppGenericBody": "Cos",
+ "starterAppGenericHeadline": "Títol",
+ "starterAppGenericSubtitle": "Subtítol",
+ "starterAppGenericTitle": "Títol",
+ "starterAppTooltipSearch": "Cerca",
+ "starterAppTooltipShare": "Comparteix",
+ "starterAppTooltipFavorite": "Preferit",
+ "starterAppTooltipAdd": "Afegeix",
+ "bottomNavigationCalendarTab": "Calendari",
+ "starterAppDescription": "Un disseny d'inici responsiu",
+ "starterAppTitle": "Aplicació d'inici",
+ "aboutFlutterSamplesRepo": "Repositori Github de mostres Flutter",
+ "bottomNavigationContentPlaceholder": "Espai reservat per a la pestanya {title}",
+ "bottomNavigationCameraTab": "Càmera",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Compte",
+ "demoTextFieldYourEmailAddress": "La teva adreça electrònica",
+ "demoToggleButtonDescription": "Els botons de commutació poden utilitzar-se per agrupar opcions relacionades. Per destacar grups de botons de commutació relacionats, un grup ha de compartir un contenidor comú.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓ",
+ "colorsDeepOrange": "TARONJA INTENS",
+ "colorsOrange": "TARONJA",
+ "colorsAmber": "AMBRE",
+ "colorsYellow": "GROC",
+ "colorsLime": "VERD LLIMA",
+ "colorsLightGreen": "VERD CLAR",
+ "colorsGreen": "VERD",
+ "homeHeaderGallery": "Galeria",
+ "homeHeaderCategories": "Categories",
+ "shrineDescription": "Una aplicació de botigues de moda",
+ "craneDescription": "Una aplicació de viatges personalitzada",
+ "homeCategoryReference": "ESTILS I MITJANS DE REFERÈNCIA",
+ "demoInvalidURL": "No s'ha pogut mostrar l'URL:",
+ "demoOptionsTooltip": "Opcions",
+ "demoInfoTooltip": "Informació",
+ "demoCodeTooltip": "Exemple de codi",
+ "demoDocumentationTooltip": "Documentació de l'API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Canvia la mida del text",
+ "settingsTextDirection": "Direcció del text",
+ "settingsLocale": "Configuració regional",
+ "settingsPlatformMechanics": "Mecànica de la plataforma",
+ "settingsDarkTheme": "Fosc",
+ "settingsSlowMotion": "Càmera lenta",
+ "settingsAbout": "Sobre Flutter Gallery",
+ "settingsFeedback": "Envia suggeriments",
+ "settingsAttribution": "Dissenyat per TOASTER a Londres",
+ "demoButtonTitle": "Botons",
+ "demoButtonSubtitle": "Pla, amb relleu, perfilat i més",
+ "demoFlatButtonTitle": "Botó pla",
+ "demoRaisedButtonDescription": "Els botons amb relleu aporten dimensió als dissenys plans. Destacar les funcions en espais amplis o amb molts elements.",
+ "demoRaisedButtonTitle": "Botó amb relleu",
+ "demoOutlineButtonTitle": "Botó perfilat",
+ "demoOutlineButtonDescription": "Els botons perfilats es tornen opacs i s'eleven en prémer-los. Normalment estan vinculats amb botons amb relleu per indicar una acció secundaria o alternativa.",
+ "demoToggleButtonTitle": "Botons de commutació",
+ "colorsTeal": "VERD BLAVÓS",
+ "demoFloatingButtonTitle": "Botó d'acció flotant",
+ "demoFloatingButtonDescription": "Un botó d'acció flotant és un botó d'icona circular que passa per sobre de contingut per promoure una acció principal a l'aplicació.",
+ "demoDialogTitle": "Quadres de diàleg",
+ "demoDialogSubtitle": "Simple, alerta i pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un quadre de diàleg d'alerta informa l'usuari sobre situacions que requereixen la seva aprovació. Inclou un títol i una llista opcional d'accions.",
+ "demoAlertTitleDialogTitle": "Alerta amb el títol",
+ "demoSimpleDialogTitle": "Senzill",
+ "demoSimpleDialogDescription": "Un quadre de diàleg simple ofereix a l'usuari diverses opcions per triar-ne una. Pot tenir un títol opcional que es mostra a sobre dels resultats.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botons",
+ "demoCupertinoButtonsSubtitle": "Botons d'estil iOS",
+ "demoCupertinoButtonsDescription": "Botó d'estil iOS. Té forma de text o d'icona que s'atenuen o apareixen en tocar-los. Opcionalment pot tenir fons.",
+ "demoCupertinoAlertsTitle": "Alertes",
+ "demoCupertinoAlertsSubtitle": "Quadres de diàleg d'alerta d'estil iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un quadre de diàleg d'alerta informa l'usuari sobre situacions que requereixen la seva aprovació. Inclou un títol, una llista d'accions i contingut opcionals. El títol es mostra a sobre del contingut i les accions, a sota.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta amb el títol",
+ "demoCupertinoAlertButtonsTitle": "Alerta amb botons",
+ "demoCupertinoAlertButtonsOnlyTitle": "Només botons d'alerta",
+ "demoCupertinoActionSheetTitle": "Full d'accions",
+ "demoCupertinoActionSheetDescription": "Un full d'accions és un estil específic d'alertes que ofereix a l'usuari dues o més opcions relacionades amb el context actual. Pot incloure un títol, un missatge addicional i una llista d'accions.",
+ "demoColorsTitle": "Colors",
+ "demoColorsSubtitle": "Tots els colors predefinits",
+ "demoColorsDescription": "Constants de mostres i colors que representen la paleta de colors de Material Design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crea",
+ "dialogSelectedOption": "Has seleccionat: \"{value}\"",
+ "dialogDiscardTitle": "Vols descartar l'esborrany?",
+ "dialogLocationTitle": "Vols fer servir els serveis d'ubicació de Google?",
+ "dialogLocationDescription": "Permet que Google pugui ajudar les aplicacions a determinar la ubicació, és a dir, que s'enviïn dades d'ubicació anònimes a Google fins i tot quan no s'estigui executant cap aplicació.",
+ "dialogCancel": "CANCEL·LA",
+ "dialogDiscard": "DESCARTA",
+ "dialogDisagree": "NO ACCEPTIS",
+ "dialogAgree": "ACCEPTA",
+ "dialogSetBackup": "Defineix el compte de la còpia de seguretat",
+ "colorsBlueGrey": "GRIS BLAVÓS",
+ "dialogShow": "MOSTRA EL QUADRE DE DIÀLEG",
+ "dialogFullscreenTitle": "Quadre de diàleg de pantalla completa",
+ "dialogFullscreenSave": "DESA",
+ "dialogFullscreenDescription": "Demostració d'un quadre de diàleg de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Amb fons",
+ "cupertinoAlertCancel": "Cancel·la",
+ "cupertinoAlertDiscard": "Descarta",
+ "cupertinoAlertLocationTitle": "Vols permetre que Maps accedeixi a la teva ubicació quan utilitzis l'aplicació?",
+ "cupertinoAlertLocationDescription": "La teva ubicació actual es mostrarà al mapa i s'utilitzarà per donar indicacions, oferir resultats propers de cerca i indicar la durada estimada dels trajectes.",
+ "cupertinoAlertAllow": "Permet",
+ "cupertinoAlertDontAllow": "No permetis",
+ "cupertinoAlertFavoriteDessert": "Selecciona les teves postres preferides",
+ "cupertinoAlertDessertDescription": "Selecciona el teu tipus de postres preferides de la llista que hi ha més avall. La teva selecció s'utilitzarà per personalitzar la llista de suggeriments de restaurants de la teva zona.",
+ "cupertinoAlertCheesecake": "Pastís de formatge",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastís de poma",
+ "cupertinoAlertChocolateBrownie": "Brownie de xocolata",
+ "cupertinoShowAlert": "Mostra l'alerta",
+ "colorsRed": "VERMELL",
+ "colorsPink": "ROSA",
+ "colorsPurple": "PORPRA",
+ "colorsDeepPurple": "PORPRA INTENS",
+ "colorsIndigo": "ANYIL",
+ "colorsBlue": "BLAU",
+ "colorsLightBlue": "BLAU CLAR",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Afegeix un compte",
+ "Gallery": "Galeria",
+ "Categories": "Categories",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "Aplicació bàsica de compra",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "Aplicació de viatges",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILS I MITJANS DE REFERÈNCIA"
+}
diff --git a/gallery/lib/l10n/intl_cs.arb b/gallery/lib/l10n/intl_cs.arb
new file mode 100644
index 0000000..5f0c318
--- /dev/null
+++ b/gallery/lib/l10n/intl_cs.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Zobrazit možnosti",
+ "demoOptionsFeatureDescription": "Klepnutím sem zobrazíte dostupné možnosti pro tuto ukázku.",
+ "demoCodeViewerCopyAll": "KOPÍROVAT VŠE",
+ "shrineScreenReaderRemoveProductButton": "Odstranit produkt {product}",
+ "shrineScreenReaderProductAddToCart": "Přidat do košíku",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Nákupní košík, prázdný}=1{Nákupní košík, 1 položka}few{Nákupní košík, {quantity} položky}many{Nákupní košík, {quantity} položky}other{Nákupní košík, {quantity} položek}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Kopírování do schránky se nezdařilo: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Zkopírováno do schránky.",
+ "craneSleep8SemanticLabel": "Mayské ruiny na útesu nad pláží",
+ "craneSleep4SemanticLabel": "Hotel u jezera na úpatí hor",
+ "craneSleep2SemanticLabel": "Pevnost Machu Picchu",
+ "craneSleep1SemanticLabel": "Chata v zasněžené krajině se stálezelenými stromy",
+ "craneSleep0SemanticLabel": "Bungalovy nad vodou",
+ "craneFly13SemanticLabel": "Bazén u moře s palmami",
+ "craneFly12SemanticLabel": "Bazén s palmami",
+ "craneFly11SemanticLabel": "Cihlový maják u moře",
+ "craneFly10SemanticLabel": "Minarety mešity al-Azhar při západu slunce",
+ "craneFly9SemanticLabel": "Muž opírající se o staré modré auto",
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "craneEat9SemanticLabel": "Kavárenský pult s cukrovím",
+ "craneEat2SemanticLabel": "Hamburger",
+ "craneFly5SemanticLabel": "Hotel u jezera na úpatí hor",
+ "demoSelectionControlsSubtitle": "Zaškrtávací tlačítka, tlačítkové přepínače a přepínače",
+ "craneEat10SemanticLabel": "Žena držící velký sendvič pastrami",
+ "craneFly4SemanticLabel": "Bungalovy nad vodou",
+ "craneEat7SemanticLabel": "Vchod do pekárny",
+ "craneEat6SemanticLabel": "Pokrm z krevet",
+ "craneEat5SemanticLabel": "Posezení ve stylové restauraci",
+ "craneEat4SemanticLabel": "Čokoládový dezert",
+ "craneEat3SemanticLabel": "Korejské taco",
+ "craneFly3SemanticLabel": "Pevnost Machu Picchu",
+ "craneEat1SemanticLabel": "Prázdný bar s vysokými stoličkami",
+ "craneEat0SemanticLabel": "Pizza v peci na dřevo",
+ "craneSleep11SemanticLabel": "Mrakodrap Tchaj-pej 101",
+ "craneSleep10SemanticLabel": "Minarety mešity al-Azhar při západu slunce",
+ "craneSleep9SemanticLabel": "Cihlový maják u moře",
+ "craneEat8SemanticLabel": "Talíř s humrem",
+ "craneSleep7SemanticLabel": "Pestrobarevné domy na náměstí Ribeira",
+ "craneSleep6SemanticLabel": "Bazén s palmami",
+ "craneSleep5SemanticLabel": "Stan na poli",
+ "settingsButtonCloseLabel": "Zavřít nastavení",
+ "demoSelectionControlsCheckboxDescription": "Zaškrtávací políčka umožňují uživatelům vybrat několik možností z celé sady. Běžná hodnota zaškrtávacího políčka je True nebo False, ale zaškrtávací políčko se třemi stavy může mít také hodnotu Null.",
+ "settingsButtonLabel": "Nastavení",
+ "demoListsTitle": "Seznamy",
+ "demoListsSubtitle": "Rozložení posouvacích seznamů",
+ "demoListsDescription": "Jeden řádek s pevnou výškou, který obvykle obsahuje text a ikonu na začátku nebo na konci.",
+ "demoOneLineListsTitle": "Jeden řádek",
+ "demoTwoLineListsTitle": "Dva řádky",
+ "demoListsSecondary": "Sekundární text",
+ "demoSelectionControlsTitle": "Ovládací prvky výběru",
+ "craneFly7SemanticLabel": "Mount Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Zaškrtávací políčko",
+ "craneSleep3SemanticLabel": "Muž opírající se o staré modré auto",
+ "demoSelectionControlsRadioTitle": "Tlačítkový přepínač",
+ "demoSelectionControlsRadioDescription": "Tlačítkové přepínače umožňují uživatelům vybrat jednu možnost z celé sady. Tlačítkové přepínače použijte pro výběr, pokud se domníváte, že uživatel potřebuje vidět všechny dostupné možnosti vedle sebe.",
+ "demoSelectionControlsSwitchTitle": "Přepínač",
+ "demoSelectionControlsSwitchDescription": "Přepínače mění stav jedné možnosti nastavení. Možnost, kterou přepínač ovládá, i stav, ve kterém se nachází, musejí být zřejmé z příslušného textového štítku.",
+ "craneFly0SemanticLabel": "Chata v zasněžené krajině se stálezelenými stromy",
+ "craneFly1SemanticLabel": "Stan na poli",
+ "craneFly2SemanticLabel": "Modlitební praporky se zasněženou horou v pozadí",
+ "craneFly6SemanticLabel": "Letecký snímek Paláce výtvarných umění",
+ "rallySeeAllAccounts": "Zobrazit všechny účty",
+ "rallyBillAmount": "Faktura {billName} ve výši {amount} je splatná do {date}.",
+ "shrineTooltipCloseCart": "Zavřít košík",
+ "shrineTooltipCloseMenu": "Zavřít nabídku",
+ "shrineTooltipOpenMenu": "Otevřít nabídku",
+ "shrineTooltipSettings": "Nastavení",
+ "shrineTooltipSearch": "Hledat",
+ "demoTabsDescription": "Karty třídí obsah z různých obrazovek, datových sad a dalších interakcí.",
+ "demoTabsSubtitle": "Karty se zobrazením, která lze nezávisle na sobě posouvat",
+ "demoTabsTitle": "Karty",
+ "rallyBudgetAmount": "Rozpočet {budgetName}: využito {amountUsed} z {amountTotal}, zbývá {amountLeft}",
+ "shrineTooltipRemoveItem": "Odstranit položku",
+ "rallyAccountAmount": "Účet {accountName} č. {accountNumber} s částkou {amount}.",
+ "rallySeeAllBudgets": "Zobrazit všechny rozpočty",
+ "rallySeeAllBills": "Zobrazit všechny faktury",
+ "craneFormDate": "Vyberte datum",
+ "craneFormOrigin": "Vyberte počátek cesty",
+ "craneFly2": "Údolí Khumbu, Nepál",
+ "craneFly3": "Machu Picchu, Peru",
+ "craneFly4": "Malé, Maledivy",
+ "craneFly5": "Vitznau, Švýcarsko",
+ "craneFly6": "Ciudad de México, Mexiko",
+ "craneFly7": "Mount Rushmore, USA",
+ "settingsTextDirectionLocaleBased": "Podle jazyka",
+ "craneFly9": "Havana, Kuba",
+ "craneFly10": "Káhira, Egypt",
+ "craneFly11": "Lisabon, Portugalsko",
+ "craneFly12": "Napa, USA",
+ "craneFly13": "Bali, Indonésie",
+ "craneSleep0": "Malé, Maledivy",
+ "craneSleep1": "Aspen, USA",
+ "craneSleep2": "Machu Picchu, Peru",
+ "demoCupertinoSegmentedControlTitle": "Segmentová kontrola",
+ "craneSleep4": "Vitznau, Švýcarsko",
+ "craneSleep5": "Big Sur, USA",
+ "craneSleep6": "Napa, USA",
+ "craneSleep7": "Porto, Portugalsko",
+ "craneSleep8": "Tulum, Mexiko",
+ "craneEat5": "Soul, Jižní Korea",
+ "demoChipTitle": "Prvky",
+ "demoChipSubtitle": "Kompaktní prvky představující vstup, atribut nebo akci",
+ "demoActionChipTitle": "Prvek akce",
+ "demoActionChipDescription": "Prvky akce jsou sada možností, které spustí akci související s primárním obsahem. Měly by se objevovat dynamicky a kontextově v uživatelském rozhraní.",
+ "demoChoiceChipTitle": "Prvek volby",
+ "demoChoiceChipDescription": "Prvky volby představují jednu volbu ze sady. Obsahují související popisný text nebo kategorie.",
+ "demoFilterChipTitle": "Prvek filtru",
+ "demoFilterChipDescription": "Prvky filtru filtrují obsah pomocí značek nebo popisných slov.",
+ "demoInputChipTitle": "Prvek vstupu",
+ "demoInputChipDescription": "Prvky vstupu představují komplexní informaci v kompaktní podobě, např. entitu (osobu, místo či věc) nebo text konverzace.",
+ "craneSleep9": "Lisabon, Portugalsko",
+ "craneEat10": "Lisabon, Portugalsko",
+ "demoCupertinoSegmentedControlDescription": "Slouží k výběru mezi možnostmi, které se vzájemně vylučují. Výběrem jedné možnosti segmentové kontroly zrušíte výběr ostatních možností.",
+ "chipTurnOnLights": "Zapnout osvětlení",
+ "chipSmall": "Malý",
+ "chipMedium": "Střední",
+ "chipLarge": "Velký",
+ "chipElevator": "Výtah",
+ "chipWasher": "Pračka",
+ "chipFireplace": "Krb",
+ "chipBiking": "Cyklistika",
+ "craneFormDiners": "Bary s občerstvením",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Zvyšte potenciální odečet z daní! Přiřaďte k 1 nezařazené transakci kategorie.}few{Zvyšte potenciální odečet z daní! Přiřaďte ke {count} nezařazeným transakcím kategorie.}many{Zvyšte potenciální odečet z daní! Přiřaďte k {count} nezařazené transakce kategorie.}other{Zvyšte potenciální odečet z daní! Přiřaďte k {count} nezařazeným transakcím kategorie.}}",
+ "craneFormTime": "Vyberte čas",
+ "craneFormLocation": "Vyberte místo",
+ "craneFormTravelers": "Cestovatelé",
+ "craneEat8": "Atlanta, USA",
+ "craneFormDestination": "Zvolte cíl",
+ "craneFormDates": "Zvolte data",
+ "craneFly": "LÉTÁNÍ",
+ "craneSleep": "SPÁNEK",
+ "craneEat": "JÍDLO",
+ "craneFlySubhead": "Objevte lety podle destinace",
+ "craneSleepSubhead": "Objevte ubytování podle destinace",
+ "craneEatSubhead": "Objevte restaurace podle destinace",
+ "craneFlyStops": "{numberOfStops,plural, =0{Bez mezipřistání}=1{1 mezipřistání}few{{numberOfStops} mezipřistání}many{{numberOfStops} mezipřistání}other{{numberOfStops} mezipřistání}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{Žádné dostupné služby}=1{1 dostupná služba}few{{totalProperties} dostupné služby}many{{totalProperties} dostupné služby}other{{totalProperties} dostupných služeb}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{Žádné restaurace}=1{1 restaurace}few{{totalRestaurants} restaurace}many{{totalRestaurants} restaurace}other{{totalRestaurants} restaurací}}",
+ "craneFly0": "Aspen, USA",
+ "demoCupertinoSegmentedControlSubtitle": "Segmentová kontrola ve stylu iOS",
+ "craneSleep10": "Káhira, Egypt",
+ "craneEat9": "Madrid, Španělsko",
+ "craneFly1": "Big Sur, USA",
+ "craneEat7": "Nashville, USA",
+ "craneEat6": "Seattle, USA",
+ "craneFly8": "Singapur",
+ "craneEat4": "Paříž, Francie",
+ "craneEat3": "Portland, USA",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, USA",
+ "craneEat0": "Neapol, Itálie",
+ "craneSleep11": "Tchaj-pej, Tchaj-wan",
+ "craneSleep3": "Havana, Kuba",
+ "shrineLogoutButtonCaption": "ODHLÁSIT SE",
+ "rallyTitleBills": "FAKTURY",
+ "rallyTitleAccounts": "ÚČTY",
+ "shrineProductVagabondSack": "Batoh Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Úrok od začátku roku do dnes",
+ "shrineProductWhitneyBelt": "Pásek Whitney",
+ "shrineProductGardenStrand": "Pás zahrady",
+ "shrineProductStrutEarrings": "Parádní náušnice",
+ "shrineProductVarsitySocks": "Ponožky s pruhem",
+ "shrineProductWeaveKeyring": "Pletená klíčenka",
+ "shrineProductGatsbyHat": "Bekovka",
+ "shrineProductShrugBag": "Taška na rameno",
+ "shrineProductGiltDeskTrio": "Trojice pozlacených stolků",
+ "shrineProductCopperWireRack": "Regál z měděného drátu",
+ "shrineProductSootheCeramicSet": "Uklidňující keramická sada",
+ "shrineProductHurrahsTeaSet": "Čajová sada Hurrahs",
+ "shrineProductBlueStoneMug": "Břidlicový hrnek",
+ "shrineProductRainwaterTray": "Kanálek na dešťovou vodu",
+ "shrineProductChambrayNapkins": "Kapesníky Chambray",
+ "shrineProductSucculentPlanters": "Květináče se sukulenty",
+ "shrineProductQuartetTable": "Stůl pro čtyři",
+ "shrineProductKitchenQuattro": "Kuchyňská čtyřka",
+ "shrineProductClaySweater": "Svetr barvy jílu",
+ "shrineProductSeaTunic": "Tunika barvy moře",
+ "shrineProductPlasterTunic": "Tělová tunika",
+ "rallyBudgetCategoryRestaurants": "Restaurace",
+ "shrineProductChambrayShirt": "Košile Chambray",
+ "shrineProductSeabreezeSweater": "Svetr jako mořský vánek",
+ "shrineProductGentryJacket": "Sako Gentry",
+ "shrineProductNavyTrousers": "Kalhoty barvy námořnické modři",
+ "shrineProductWalterHenleyWhite": "Triko s knoflíkovou légou Walter (bílé)",
+ "shrineProductSurfAndPerfShirt": "Funkční triko na surfování",
+ "shrineProductGingerScarf": "Zázvorová šála",
+ "shrineProductRamonaCrossover": "Crossover Ramona",
+ "shrineProductClassicWhiteCollar": "Klasický bílý límeček",
+ "shrineProductSunshirtDress": "Košilové šaty proti slunci",
+ "rallyAccountDetailDataInterestRate": "Úroková sazba",
+ "rallyAccountDetailDataAnnualPercentageYield": "Roční procentuální výtěžek",
+ "rallyAccountDataVacation": "Dovolená",
+ "shrineProductFineLinesTee": "Tričko s jemným proužkem",
+ "rallyAccountDataHomeSavings": "Úspory na domácnost",
+ "rallyAccountDataChecking": "Běžný",
+ "rallyAccountDetailDataInterestPaidLastYear": "Úrok zaplacený minulý rok",
+ "rallyAccountDetailDataNextStatement": "Další výpis",
+ "rallyAccountDetailDataAccountOwner": "Vlastník účtu",
+ "rallyBudgetCategoryCoffeeShops": "Kavárny",
+ "rallyBudgetCategoryGroceries": "Potraviny",
+ "shrineProductCeriseScallopTee": "Třešňové triko se zaobleným lemem",
+ "rallyBudgetCategoryClothing": "Oblečení",
+ "rallySettingsManageAccounts": "Spravovat účty",
+ "rallyAccountDataCarSavings": "Úspory na auto",
+ "rallySettingsTaxDocuments": "Daňové doklady",
+ "rallySettingsPasscodeAndTouchId": "Heslo a Touch ID",
+ "rallySettingsNotifications": "Oznámení",
+ "rallySettingsPersonalInformation": "Osobní údaje",
+ "rallySettingsPaperlessSettings": "Nastavení bezpapírového přístupu",
+ "rallySettingsFindAtms": "Najít bankomaty",
+ "rallySettingsHelp": "Nápověda",
+ "rallySettingsSignOut": "Odhlásit se",
+ "rallyAccountTotal": "Celkem",
+ "rallyBillsDue": "Splatnost",
+ "rallyBudgetLeft": "Zbývá",
+ "rallyAccounts": "Účty",
+ "rallyBills": "Faktury",
+ "rallyBudgets": "Rozpočty",
+ "rallyAlerts": "Upozornění",
+ "rallySeeAll": "ZOBRAZIT VŠE",
+ "rallyFinanceLeft": "ZBÝVÁ",
+ "rallyTitleOverview": "PŘEHLED",
+ "shrineProductShoulderRollsTee": "Tričko s odhalenými rameny",
+ "shrineNextButtonCaption": "DALŠÍ",
+ "rallyTitleBudgets": "ROZPOČTY",
+ "rallyTitleSettings": "NASTAVENÍ",
+ "rallyLoginLoginToRally": "Přihlášení do aplikace Rally",
+ "rallyLoginNoAccount": "Nemáte účet?",
+ "rallyLoginSignUp": "ZAREGISTROVAT SE",
+ "rallyLoginUsername": "Uživatelské jméno",
+ "rallyLoginPassword": "Heslo",
+ "rallyLoginLabelLogin": "Přihlásit se",
+ "rallyLoginRememberMe": "Zapamatovat si mě",
+ "rallyLoginButtonLogin": "PŘIHLÁSIT SE",
+ "rallyAlertsMessageHeadsUpShopping": "Pozor, už jste využili {percent} rozpočtu na nákupy na tento měsíc.",
+ "rallyAlertsMessageSpentOnRestaurants": "Tento týden jste utratili {amount} za restaurace",
+ "rallyAlertsMessageATMFees": "Tento měsíc jste utratili {amount} za poplatky za bankomat",
+ "rallyAlertsMessageCheckingAccount": "Dobrá práce! Na běžném účtu máte o {percent} vyšší zůstatek než minulý měsíc.",
+ "shrineMenuCaption": "NABÍDKA",
+ "shrineCategoryNameAll": "VŠE",
+ "shrineCategoryNameAccessories": "DOPLŇKY",
+ "shrineCategoryNameClothing": "OBLEČENÍ",
+ "shrineCategoryNameHome": "DOMÁCNOST",
+ "shrineLoginUsernameLabel": "Uživatelské jméno",
+ "shrineLoginPasswordLabel": "Heslo",
+ "shrineCancelButtonCaption": "ZRUŠIT",
+ "shrineCartTaxCaption": "Daň:",
+ "shrineCartPageCaption": "KOŠÍK",
+ "shrineProductQuantity": "Počet: {quantity}",
+ "shrineProductPrice": "× {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{ŽÁDNÉ POLOŽKY}=1{1 POLOŽKA}few{{quantity} POLOŽKY}many{{quantity} POLOŽKY}other{{quantity} POLOŽEK}}",
+ "shrineCartClearButtonCaption": "VYSYPAT KOŠÍK",
+ "shrineCartTotalCaption": "CELKEM",
+ "shrineCartSubtotalCaption": "Mezisoučet:",
+ "shrineCartShippingCaption": "Doprava:",
+ "shrineProductGreySlouchTank": "Volné šedé tílko",
+ "shrineProductStellaSunglasses": "Slunečná brýle Stella",
+ "shrineProductWhitePinstripeShirt": "Košile s úzkým bílým proužkem",
+ "demoTextFieldWhereCanWeReachYou": "Kde vás můžeme zastihnout?",
+ "settingsTextDirectionLTR": "Zleva doprava",
+ "settingsTextScalingLarge": "Velké",
+ "demoBottomSheetHeader": "Záhlaví",
+ "demoBottomSheetItem": "Položka {value}",
+ "demoBottomTextFieldsTitle": "Textová pole",
+ "demoTextFieldTitle": "Textová pole",
+ "demoTextFieldSubtitle": "Jeden řádek s upravitelným textem a čísly",
+ "demoTextFieldDescription": "Textová pole uživatelům umožňují zadat do uživatelského rozhraní text. Obvykle se vyskytují ve formulářích a dialogových oknech.",
+ "demoTextFieldShowPasswordLabel": "Zobrazit heslo",
+ "demoTextFieldHidePasswordLabel": "Skrýt heslo",
+ "demoTextFieldFormErrors": "Před odesláním formuláře opravte červeně zvýrazněné chyby.",
+ "demoTextFieldNameRequired": "Jméno je povinné.",
+ "demoTextFieldOnlyAlphabeticalChars": "Zadejte jen písmena abecedy.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### – Zadejte telefonní číslo do USA.",
+ "demoTextFieldEnterPassword": "Zadejte heslo.",
+ "demoTextFieldPasswordsDoNotMatch": "Hesla se neshodují",
+ "demoTextFieldWhatDoPeopleCallYou": "Jak vám lidé říkají?",
+ "demoTextFieldNameField": "Jméno*",
+ "demoBottomSheetButtonText": "ZOBRAZIT SPODNÍ TABULKU",
+ "demoTextFieldPhoneNumber": "Telefonní číslo*",
+ "demoBottomSheetTitle": "Spodní tabulka",
+ "demoTextFieldEmail": "E-mail",
+ "demoTextFieldTellUsAboutYourself": "Řekněte nám něco o sobě (např. napište, co děláte nebo jaké máte koníčky)",
+ "demoTextFieldKeepItShort": "Buďte struční, je to jen ukázka.",
+ "starterAppGenericButton": "TLAČÍTKO",
+ "demoTextFieldLifeStory": "Životní příběh",
+ "demoTextFieldSalary": "Plat",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Maximálně osm znaků.",
+ "demoTextFieldPassword": "Heslo*",
+ "demoTextFieldRetypePassword": "Zadejte heslo znovu*",
+ "demoTextFieldSubmit": "ODESLAT",
+ "demoBottomNavigationSubtitle": "Spodní navigace s prolínajícím zobrazením",
+ "demoBottomSheetAddLabel": "Přidat",
+ "demoBottomSheetModalDescription": "Modální spodní tabulka je alternativou k nabídce nebo dialogovému oknu a zabraňuje uživateli v interakci se zbytkem aplikace.",
+ "demoBottomSheetModalTitle": "Modální spodní tabulka",
+ "demoBottomSheetPersistentDescription": "Stálá spodní tabulka zobrazuje informace, které doplňují primární obsah aplikace. Stálá spodní tabulka zůstává viditelná i při interakci uživatele s ostatními částmi aplikace.",
+ "demoBottomSheetPersistentTitle": "Trvalá spodní tabulka",
+ "demoBottomSheetSubtitle": "Trvalé a modální spodní tabulky",
+ "demoTextFieldNameHasPhoneNumber": "{name} má telefonní číslo {phoneNumber}",
+ "buttonText": "TLAČÍTKO",
+ "demoTypographyDescription": "Definice různých typografických stylů, které se vyskytují ve vzhledu Material Design.",
+ "demoTypographySubtitle": "Všechny předdefinované styly textu",
+ "demoTypographyTitle": "Typografie",
+ "demoFullscreenDialogDescription": "Hodnota fullscreenDialog určuje, zda následující stránka bude mít podobu modálního dialogového okna na celou obrazovku",
+ "demoFlatButtonDescription": "Ploché tlačítko při stisknutí zobrazí inkoustovou kaňku, ale nezvedne se. Plochá tlačítka používejte na lištách, v dialogových oknech a v textu s odsazením",
+ "demoBottomNavigationDescription": "Spodní navigační panely zobrazují ve spodní části obrazovky tři až pět cílů. Každý cíl zastupuje ikona a volitelný textový štítek. Po klepnutí na spodní navigační ikonu je uživatel přenesen na nejvyšší úroveň cíle navigace, který je k dané ikoně přidružen.",
+ "demoBottomNavigationSelectedLabel": "Vybraný štítek",
+ "demoBottomNavigationPersistentLabels": "Trvale zobrazené štítky",
+ "starterAppDrawerItem": "Položka {value}",
+ "demoTextFieldRequiredField": "Hvězdička (*) označuje povinné pole",
+ "demoBottomNavigationTitle": "Spodní navigace",
+ "settingsLightTheme": "Světlý",
+ "settingsTheme": "Motiv",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "Zprava doleva",
+ "settingsTextScalingHuge": "Velmi velké",
+ "cupertinoButton": "Tlačítko",
+ "settingsTextScalingNormal": "Normální",
+ "settingsTextScalingSmall": "Malé",
+ "settingsSystemDefault": "Systém",
+ "settingsTitle": "Nastavení",
+ "rallyDescription": "Aplikace pro osobní finance",
+ "aboutDialogDescription": "Chcete-li zobrazit zdrojový kód této aplikace, přejděte na {value}.",
+ "bottomNavigationCommentsTab": "Komentáře",
+ "starterAppGenericBody": "Text",
+ "starterAppGenericHeadline": "Nadpis",
+ "starterAppGenericSubtitle": "Podtitul",
+ "starterAppGenericTitle": "Název",
+ "starterAppTooltipSearch": "Hledat",
+ "starterAppTooltipShare": "Sdílet",
+ "starterAppTooltipFavorite": "Oblíbené",
+ "starterAppTooltipAdd": "Přidat",
+ "bottomNavigationCalendarTab": "Kalendář",
+ "starterAppDescription": "Responzivní rozvržení úvodní aplikace",
+ "starterAppTitle": "Úvodní aplikace",
+ "aboutFlutterSamplesRepo": "Ukázky pro Flutter v repozitáři Github",
+ "bottomNavigationContentPlaceholder": "Zástupný symbol karty {title}",
+ "bottomNavigationCameraTab": "Fotoaparát",
+ "bottomNavigationAlarmTab": "Upozornění",
+ "bottomNavigationAccountTab": "Účet",
+ "demoTextFieldYourEmailAddress": "Vaše e-mailová adresa",
+ "demoToggleButtonDescription": "Přepínače lze použít k seskupení souvisejících možností. Chcete-li zvýraznit skupiny souvisejících přepínačů, umístěte skupinu do stejného kontejneru",
+ "colorsGrey": "ŠEDÁ",
+ "colorsBrown": "HNĚDÁ",
+ "colorsDeepOrange": "TMAVĚ ORANŽOVÁ",
+ "colorsOrange": "ORANŽOVÁ",
+ "colorsAmber": "JANTAROVÁ",
+ "colorsYellow": "ŽLUTÁ",
+ "colorsLime": "LIMETKOVÁ",
+ "colorsLightGreen": "SVĚTLE ZELENÁ",
+ "colorsGreen": "ZELENÁ",
+ "homeHeaderGallery": "Galerie",
+ "homeHeaderCategories": "Kategorie",
+ "shrineDescription": "Elegantní maloobchodní aplikace",
+ "craneDescription": "Personalizovaná cestovní aplikace",
+ "homeCategoryReference": "REFERENČNÍ STYLY A MÉDIA",
+ "demoInvalidURL": "Adresu URL nelze zobrazit:",
+ "demoOptionsTooltip": "Možnosti",
+ "demoInfoTooltip": "Informace",
+ "demoCodeTooltip": "Ukázka kódu",
+ "demoDocumentationTooltip": "Dokumentace API",
+ "demoFullscreenTooltip": "Celá obrazovka",
+ "settingsTextScaling": "Zvětšení/zmenšení textu",
+ "settingsTextDirection": "Směr textu",
+ "settingsLocale": "Národní prostředí",
+ "settingsPlatformMechanics": "Mechanika platformy",
+ "settingsDarkTheme": "Tmavý",
+ "settingsSlowMotion": "Zpomalení",
+ "settingsAbout": "Informace o aplikaci Flutter Gallery",
+ "settingsFeedback": "Odeslat zpětnou vazbu",
+ "settingsAttribution": "Design: TOASTER, Londýn",
+ "demoButtonTitle": "Tlačítka",
+ "demoButtonSubtitle": "Ploché, zvýšené, obrysové a další",
+ "demoFlatButtonTitle": "Ploché tlačítko",
+ "demoRaisedButtonDescription": "Zvýšená tlačítka vnášejí rozměr do převážně plochých rozvržení. Upozorňují na funkce v místech, která jsou hodně navštěvovaná nebo rozsáhlá.",
+ "demoRaisedButtonTitle": "Zvýšené tlačítko",
+ "demoOutlineButtonTitle": "Obrysové tlačítko",
+ "demoOutlineButtonDescription": "Obrysová tlačítka se při stisknutí zdvihnou a zneprůhlední. Obvykle se vyskytují v páru se zvýšenými tlačítky za účelem označení alternativní, sekundární akce.",
+ "demoToggleButtonTitle": "Přepínače",
+ "colorsTeal": "ŠEDOZELENÁ",
+ "demoFloatingButtonTitle": "Plovoucí tlačítko akce",
+ "demoFloatingButtonDescription": "Plovoucí tlačítko akce je kruhové tlačítko akce, které se vznáší nad obsahem za účelem upozornění na hlavní akci v aplikaci.",
+ "demoDialogTitle": "Dialogová okna",
+ "demoDialogSubtitle": "Jednoduché, s upozorněním a na celou obrazovku",
+ "demoAlertDialogTitle": "Upozornění",
+ "demoAlertDialogDescription": "Dialogové okno s upozorněním uživatele informuje o situacích, které vyžadují pozornost. Dialogové okno s upozorněním má volitelný název a volitelný seznam akcí.",
+ "demoAlertTitleDialogTitle": "Upozornění s názvem",
+ "demoSimpleDialogTitle": "Jednoduché",
+ "demoSimpleDialogDescription": "Jednoduché dialogové okno nabízí uživateli na výběr mezi několika možnostmi. Jednoduché dialogové okno má volitelný název, který je zobrazen nad možnostmi.",
+ "demoFullscreenDialogTitle": "Celá obrazovka",
+ "demoCupertinoButtonsTitle": "Tlačítka",
+ "demoCupertinoButtonsSubtitle": "Tlačítka ve stylu iOS",
+ "demoCupertinoButtonsDescription": "Tlačítko ve stylu systému iOS. Jedná se o text nebo ikonu, která při dotyku postupně zmizí nebo se objeví. Volitelně může mít i pozadí.",
+ "demoCupertinoAlertsTitle": "Upozornění",
+ "demoCupertinoAlertsSubtitle": "Dialogová okna s upozorněním ve stylu iOS",
+ "demoCupertinoAlertTitle": "Upozornění",
+ "demoCupertinoAlertDescription": "Dialogové okno s upozorněním uživatele informuje o situacích, které vyžadují pozornost. Dialogové okno s upozorněním má volitelný název, volitelný obsah a volitelný seznam akcí. Název je zobrazen nad obsahem a akce jsou zobrazeny pod obsahem.",
+ "demoCupertinoAlertWithTitleTitle": "Upozornění s názvem",
+ "demoCupertinoAlertButtonsTitle": "Upozornění s tlačítky",
+ "demoCupertinoAlertButtonsOnlyTitle": "Pouze tlačítka s upozorněním",
+ "demoCupertinoActionSheetTitle": "List akcí",
+ "demoCupertinoActionSheetDescription": "List akcí je zvláštní typ upozornění, které uživateli předkládá sadu dvou či více možností souvisejících se stávající situací. List akcí může obsahovat název, další zprávu a seznam akcí.",
+ "demoColorsTitle": "Barvy",
+ "demoColorsSubtitle": "Všechny předdefinované barvy",
+ "demoColorsDescription": "Konstanty barvy a vzorníku barev, které představují barevnou škálu vzhledu Material Design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Vytvořit",
+ "dialogSelectedOption": "Vybrali jste: „{value}“",
+ "dialogDiscardTitle": "Zahodit koncept?",
+ "dialogLocationTitle": "Chcete používat službu určování polohy Google?",
+ "dialogLocationDescription": "Povolte, aby Google mohl aplikacím pomáhat s určováním polohy. To znamená, že budete do Googlu odesílat anonymní údaje o poloze, i když nebudou spuštěny žádné aplikace.",
+ "dialogCancel": "ZRUŠIT",
+ "dialogDiscard": "ZAHODIT",
+ "dialogDisagree": "NESOUHLASÍM",
+ "dialogAgree": "SOUHLASÍM",
+ "dialogSetBackup": "Nastavit záložní účet",
+ "colorsBlueGrey": "ŠEDOMODRÁ",
+ "dialogShow": "ZOBRAZIT DIALOGOVÉ OKNO",
+ "dialogFullscreenTitle": "Dialogové okno na celou obrazovku",
+ "dialogFullscreenSave": "ULOŽIT",
+ "dialogFullscreenDescription": "Ukázka dialogového okna na celou obrazovku",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "S pozadím",
+ "cupertinoAlertCancel": "Zrušit",
+ "cupertinoAlertDiscard": "Zahodit",
+ "cupertinoAlertLocationTitle": "Povolit Mapám přístup k poloze, když budete aplikaci používat?",
+ "cupertinoAlertLocationDescription": "Vaše aktuální poloha se bude zobrazovat na mapě a bude sloužit k zobrazení tras, výsledků vyhledávání v okolí a odhadovaných časů cesty.",
+ "cupertinoAlertAllow": "Povolit",
+ "cupertinoAlertDontAllow": "Nepovolovat",
+ "cupertinoAlertFavoriteDessert": "Vyberte oblíbený zákusek",
+ "cupertinoAlertDessertDescription": "Ze seznamu níže vyberte svůj oblíbený zákusek. Na základě výběru vám přizpůsobíme navrhovaný seznam stravovacích zařízení ve vašem okolí.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisu",
+ "cupertinoAlertApplePie": "Jablečný koláč",
+ "cupertinoAlertChocolateBrownie": "Čokoládové brownie",
+ "cupertinoShowAlert": "Zobrazit upozornění",
+ "colorsRed": "ČERVENÁ",
+ "colorsPink": "RŮŽOVÁ",
+ "colorsPurple": "NACHOVÁ",
+ "colorsDeepPurple": "TMAVĚ NACHOVÁ",
+ "colorsIndigo": "INDIGOVÁ",
+ "colorsBlue": "MODRÁ",
+ "colorsLightBlue": "SVĚTLE MODRÁ",
+ "colorsCyan": "AZUROVÁ",
+ "dialogAddAccount": "Přidat účet",
+ "Gallery": "Galerie",
+ "Categories": "Kategorie",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "Základní aplikace pro nakupování",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "Cestovní aplikace",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "REFERENČNÍ STYLY A MÉDIA"
+}
diff --git a/gallery/lib/l10n/intl_da.arb b/gallery/lib/l10n/intl_da.arb
new file mode 100644
index 0000000..13b38ab
--- /dev/null
+++ b/gallery/lib/l10n/intl_da.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Se valgmuligheder",
+ "demoOptionsFeatureDescription": "Tryk her for at se de tilgængelige muligheder for denne demo.",
+ "demoCodeViewerCopyAll": "KOPIER ALT",
+ "shrineScreenReaderRemoveProductButton": "Fjern {product}",
+ "shrineScreenReaderProductAddToCart": "Læg i kurven",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Indkøbskurv, ingen varer}=1{Indkøbskurv, 1 vare}one{Indkøbskurv, {quantity} vare}other{Indkøbskurv, {quantity} varer}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Kunne ikke kopieres til udklipsholderen: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Kopieret til udklipsholderen.",
+ "craneSleep8SemanticLabel": "Mayaruiner på en klippeskrænt ved en strand",
+ "craneSleep4SemanticLabel": "Hotel ved søen foran bjerge",
+ "craneSleep2SemanticLabel": "Machu Picchu-citadel",
+ "craneSleep1SemanticLabel": "Hytte i et snelandskab med stedsegrønne træer",
+ "craneSleep0SemanticLabel": "Bungalows over vandet",
+ "craneFly13SemanticLabel": "Swimmingpool ved havet med palmer",
+ "craneFly12SemanticLabel": "Swimmingpool med palmetræer",
+ "craneFly11SemanticLabel": "Murstensfyrtårn ved havet",
+ "craneFly10SemanticLabel": "Al-Azhar-moskéens tårne ved solnedgang",
+ "craneFly9SemanticLabel": "Mand, der læner sig op ad en blå retro bil",
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "craneEat9SemanticLabel": "Cafédisk med kager",
+ "craneEat2SemanticLabel": "Burger",
+ "craneFly5SemanticLabel": "Hotel ved søen foran bjerge",
+ "demoSelectionControlsSubtitle": "Afkrydsningsfelter, alternativknapper og kontakter",
+ "craneEat10SemanticLabel": "Kvinde med en kæmpe pastramisandwich",
+ "craneFly4SemanticLabel": "Bungalows over vandet",
+ "craneEat7SemanticLabel": "Indgang til bager",
+ "craneEat6SemanticLabel": "Ret med rejer",
+ "craneEat5SemanticLabel": "Siddepladser på en fin restaurant",
+ "craneEat4SemanticLabel": "Dessert med chokolade",
+ "craneEat3SemanticLabel": "Koreansk taco",
+ "craneFly3SemanticLabel": "Machu Picchu-citadel",
+ "craneEat1SemanticLabel": "Tom bar med dinerstole",
+ "craneEat0SemanticLabel": "En pizza i en træfyret ovn",
+ "craneSleep11SemanticLabel": "Taipei 101-skyskraber",
+ "craneSleep10SemanticLabel": "Al-Azhar-moskéens tårne ved solnedgang",
+ "craneSleep9SemanticLabel": "Murstensfyrtårn ved havet",
+ "craneEat8SemanticLabel": "Tallerken med krebs",
+ "craneSleep7SemanticLabel": "Farverige lejligheder på Ribeira Square",
+ "craneSleep6SemanticLabel": "Swimmingpool med palmetræer",
+ "craneSleep5SemanticLabel": "Telt på en mark",
+ "settingsButtonCloseLabel": "Luk indstillinger",
+ "demoSelectionControlsCheckboxDescription": "Afkrydsningsfelter giver brugerne mulighed for at vælge flere valgmuligheder fra et sæt. Et normalt afkrydsningsfelt kan angives til værdierne sand eller falsk, og et afkrydsningsfelt med tre værdier kan også angives til nul.",
+ "settingsButtonLabel": "Indstillinger",
+ "demoListsTitle": "Lister",
+ "demoListsSubtitle": "Layout for rullelister",
+ "demoListsDescription": "En enkelt række med fast højde, som typisk indeholder tekst samt et foranstillet eller efterstillet ikon.",
+ "demoOneLineListsTitle": "Én linje",
+ "demoTwoLineListsTitle": "To linjer",
+ "demoListsSecondary": "Sekundær tekst",
+ "demoSelectionControlsTitle": "Kontrolelementer til markering",
+ "craneFly7SemanticLabel": "Mount Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Afkrydsningsfelt",
+ "craneSleep3SemanticLabel": "Mand, der læner sig op ad en blå retro bil",
+ "demoSelectionControlsRadioTitle": "Alternativknap",
+ "demoSelectionControlsRadioDescription": "Alternativknapper giver brugeren mulighed for at vælge en valgmulighed fra et sæt. Brug alternativknapper til eksklusivt valg, hvis du mener, at brugeren har brug for at se alle tilgængelige valgmuligheder side om side.",
+ "demoSelectionControlsSwitchTitle": "Kontakt",
+ "demoSelectionControlsSwitchDescription": "Til/fra-kontakter skifter en indstillings status. Den indstilling, som kontakten styrer, og dens status, bør tydeliggøres i den tilsvarende indlejrede etiket.",
+ "craneFly0SemanticLabel": "Hytte i et snelandskab med stedsegrønne træer",
+ "craneFly1SemanticLabel": "Telt på en mark",
+ "craneFly2SemanticLabel": "Bedeflag foran snebeklædt bjerg",
+ "craneFly6SemanticLabel": "Palacio de Bellas Artes set fra luften",
+ "rallySeeAllAccounts": "Se alle konti",
+ "rallyBillAmount": "Regningen {billName} på {amount}, som skal betales {date}.",
+ "shrineTooltipCloseCart": "Luk kurven",
+ "shrineTooltipCloseMenu": "Luk menuen",
+ "shrineTooltipOpenMenu": "Åbn menuen",
+ "shrineTooltipSettings": "Indstillinger",
+ "shrineTooltipSearch": "Søg",
+ "demoTabsDescription": "Med faner kan indhold fra forskellige skærme, datasæt og andre interaktioner organiseres.",
+ "demoTabsSubtitle": "Faner med visninger, der kan rulle uafhængigt af hinanden",
+ "demoTabsTitle": "Faner",
+ "rallyBudgetAmount": "Budgettet {budgetName}, hvor {amountUsed} ud af {amountTotal} er brugt, og der er {amountLeft} tilbage",
+ "shrineTooltipRemoveItem": "Fjern varen",
+ "rallyAccountAmount": "Kontoen \"{accountName}\" {accountNumber} med saldoen {amount}.",
+ "rallySeeAllBudgets": "Se alle budgetter",
+ "rallySeeAllBills": "Se alle regninger",
+ "craneFormDate": "Vælg dato",
+ "craneFormOrigin": "Vælg afrejsested",
+ "craneFly2": "Khumbu Valley, Nepal",
+ "craneFly3": "Machu Picchu, Peru",
+ "craneFly4": "Malé, Maldiverne",
+ "craneFly5": "Vitznau, Schweiz",
+ "craneFly6": "Mexico City, Mexico",
+ "craneFly7": "Mount Rushmore, USA",
+ "settingsTextDirectionLocaleBased": "Baseret på landestandard",
+ "craneFly9": "Havana, Cuba",
+ "craneFly10": "Cairo, Egypten",
+ "craneFly11": "Lissabon, Portugal",
+ "craneFly12": "Napa, USA",
+ "craneFly13": "Bali, Indonesien",
+ "craneSleep0": "Malé, Maldiverne",
+ "craneSleep1": "Aspen, USA",
+ "craneSleep2": "Machu Picchu, Peru",
+ "demoCupertinoSegmentedControlTitle": "Segmenteret styring",
+ "craneSleep4": "Vitznau, Schweiz",
+ "craneSleep5": "Big Sur, USA",
+ "craneSleep6": "Napa, USA",
+ "craneSleep7": "Porto, Portugal",
+ "craneSleep8": "Tulum, Mexico",
+ "craneEat5": "Seoul, Sydkorea",
+ "demoChipTitle": "Tips",
+ "demoChipSubtitle": "Kompakte elementer, der repræsenterer et input, en attribut eller en handling",
+ "demoActionChipTitle": "Handlingstip",
+ "demoActionChipDescription": "Handlingstips er en række muligheder, som udløser en handling relateret til det primære indhold. Handlingstips bør vises på en dynamisk og kontekstafhængig måde på en brugerflade.",
+ "demoChoiceChipTitle": "Valgtip",
+ "demoChoiceChipDescription": "Valgtips repræsenterer et enkelt valg fra et sæt. Valgtips indeholder relateret beskrivende tekst eller relaterede kategorier.",
+ "demoFilterChipTitle": "Filtertip",
+ "demoFilterChipDescription": "Filtertips bruger tags eller beskrivende ord til at filtrere indhold.",
+ "demoInputChipTitle": "Inputtip",
+ "demoInputChipDescription": "Inputtips repræsenterer en kompleks oplysning, f.eks. en enhed (person, sted eller ting) eller en samtaletekst, i kompakt form.",
+ "craneSleep9": "Lissabon, Portugal",
+ "craneEat10": "Lissabon, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Bruges til at vælge mellem et antal muligheder, som gensidigt udelukker hinanden. Når én af mulighederne i den segmenterede styring er valgt, er de øvrige muligheder i den segmenterede styring ikke valgt.",
+ "chipTurnOnLights": "Tænd lyset",
+ "chipSmall": "Lille",
+ "chipMedium": "Mellem",
+ "chipLarge": "Stor",
+ "chipElevator": "Elevator",
+ "chipWasher": "Vaskemaskine",
+ "chipFireplace": "Pejs",
+ "chipBiking": "Cykling",
+ "craneFormDiners": "Spisende",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Hæv dit potentielle skattefradrag. Tildel kategorier til 1 transaktion, som ingen har.}one{Hæv dit potentielle skattefradrag. Tildel kategorier til {count} transaktion, som ingen har.}other{Hæv dit potentielle skattefradrag. Tildel kategorier til {count} transaktioner, som ingen har.}}",
+ "craneFormTime": "Vælg tidspunkt",
+ "craneFormLocation": "Vælg placering",
+ "craneFormTravelers": "Rejsende",
+ "craneEat8": "Atlanta, USA",
+ "craneFormDestination": "Vælg destination",
+ "craneFormDates": "Vælg datoer",
+ "craneFly": "FLYV",
+ "craneSleep": "OVERNAT",
+ "craneEat": "SPIS",
+ "craneFlySubhead": "Find fly efter destination",
+ "craneSleepSubhead": "Find ejendomme efter placering",
+ "craneEatSubhead": "Find restauranter efter destination",
+ "craneFlyStops": "{numberOfStops,plural, =0{Direkte}=1{1 mellemlanding}one{{numberOfStops} mellemlanding}other{{numberOfStops} mellemlandinger}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{Ingen ledige ejendomme}=1{1 ledig ejendom}one{{totalProperties} ledig ejendom}other{{totalProperties} ledige ejendomme}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{Ingen restauranter}=1{1 restaurant}one{{totalRestaurants} restaurant}other{{totalRestaurants} restauranter}}",
+ "craneFly0": "Aspen, USA",
+ "demoCupertinoSegmentedControlSubtitle": "Segmenteret styring i iOS-stil",
+ "craneSleep10": "Cairo, Egypten",
+ "craneEat9": "Madrid, Spanien",
+ "craneFly1": "Big Sur, USA",
+ "craneEat7": "Nashville, USA",
+ "craneEat6": "Seattle, USA",
+ "craneFly8": "Singapore",
+ "craneEat4": "Paris, Frankrig",
+ "craneEat3": "Portland, USA",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, USA",
+ "craneEat0": "Napoli, Italien",
+ "craneSleep11": "Taipei, Taiwan",
+ "craneSleep3": "Havana, Cuba",
+ "shrineLogoutButtonCaption": "LOG UD",
+ "rallyTitleBills": "FAKTURAER",
+ "rallyTitleAccounts": "KONTI",
+ "shrineProductVagabondSack": "Vagabond-rygsæk",
+ "rallyAccountDetailDataInterestYtd": "Renter ÅTD",
+ "shrineProductWhitneyBelt": "Whitney-bælte",
+ "shrineProductGardenStrand": "Garden strand",
+ "shrineProductStrutEarrings": "Strut-øreringe",
+ "shrineProductVarsitySocks": "Varsity-sokker",
+ "shrineProductWeaveKeyring": "Weave-nøglering",
+ "shrineProductGatsbyHat": "Gatsby-hat",
+ "shrineProductShrugBag": "Shrug-taske",
+ "shrineProductGiltDeskTrio": "Tre-i-et-skrivebord fra Gilt",
+ "shrineProductCopperWireRack": "Hylde med kobbergitter",
+ "shrineProductSootheCeramicSet": "Soothe-keramiksæt",
+ "shrineProductHurrahsTeaSet": "Hurrahs-testel",
+ "shrineProductBlueStoneMug": "Blue Stone-krus",
+ "shrineProductRainwaterTray": "Rende til regnvand",
+ "shrineProductChambrayNapkins": "Chambrayservietter",
+ "shrineProductSucculentPlanters": "Sukkulente planter",
+ "shrineProductQuartetTable": "Bord med fire stole",
+ "shrineProductKitchenQuattro": "Kitchen quattro",
+ "shrineProductClaySweater": "Clay-sweater",
+ "shrineProductSeaTunic": "Havblå tunika",
+ "shrineProductPlasterTunic": "Beige tunika",
+ "rallyBudgetCategoryRestaurants": "Restauranter",
+ "shrineProductChambrayShirt": "Chambrayskjorte",
+ "shrineProductSeabreezeSweater": "Seabreeze-sweater",
+ "shrineProductGentryJacket": "Gentry-jakke",
+ "shrineProductNavyTrousers": "Marineblå bukser",
+ "shrineProductWalterHenleyWhite": "Walter-henley (hvid)",
+ "shrineProductSurfAndPerfShirt": "Surfertrøje",
+ "shrineProductGingerScarf": "Rødt halstørklæde",
+ "shrineProductRamonaCrossover": "Ramona-samarbejde",
+ "shrineProductClassicWhiteCollar": "Klassisk hvid krave",
+ "shrineProductSunshirtDress": "Kjole, der beskytter mod solen",
+ "rallyAccountDetailDataInterestRate": "Rentesats",
+ "rallyAccountDetailDataAnnualPercentageYield": "Årligt afkast i procent",
+ "rallyAccountDataVacation": "Ferie",
+ "shrineProductFineLinesTee": "T-shirt med tynde striber",
+ "rallyAccountDataHomeSavings": "Opsparing til hjemmet",
+ "rallyAccountDataChecking": "Bankkonto",
+ "rallyAccountDetailDataInterestPaidLastYear": "Betalte renter sidste år",
+ "rallyAccountDetailDataNextStatement": "Næste kontoudtog",
+ "rallyAccountDetailDataAccountOwner": "Kontoejer",
+ "rallyBudgetCategoryCoffeeShops": "Kaffebarer",
+ "rallyBudgetCategoryGroceries": "Dagligvarer",
+ "shrineProductCeriseScallopTee": "Lyserød Cerise-t-shirt",
+ "rallyBudgetCategoryClothing": "Tøj",
+ "rallySettingsManageAccounts": "Administrer konti",
+ "rallyAccountDataCarSavings": "Opsparing til bil",
+ "rallySettingsTaxDocuments": "Skattedokumenter",
+ "rallySettingsPasscodeAndTouchId": "Adgangskode og Touch ID",
+ "rallySettingsNotifications": "Notifikationer",
+ "rallySettingsPersonalInformation": "Personlige oplysninger",
+ "rallySettingsPaperlessSettings": "Indstillinger for Paperless",
+ "rallySettingsFindAtms": "Find hæveautomater",
+ "rallySettingsHelp": "Hjælp",
+ "rallySettingsSignOut": "Log ud",
+ "rallyAccountTotal": "I alt",
+ "rallyBillsDue": "Betalingsdato",
+ "rallyBudgetLeft": "Tilbage",
+ "rallyAccounts": "Konti",
+ "rallyBills": "Fakturaer",
+ "rallyBudgets": "Budgetter",
+ "rallyAlerts": "Underretninger",
+ "rallySeeAll": "SE ALLE",
+ "rallyFinanceLeft": "TILBAGE",
+ "rallyTitleOverview": "OVERSIGT",
+ "shrineProductShoulderRollsTee": "T-shirt med åbning til skuldrene",
+ "shrineNextButtonCaption": "NÆSTE",
+ "rallyTitleBudgets": "BUDGETTER",
+ "rallyTitleSettings": "INDSTILLINGER",
+ "rallyLoginLoginToRally": "Log ind for at bruge Rally",
+ "rallyLoginNoAccount": "Har du ikke en konto?",
+ "rallyLoginSignUp": "TILMELD DIG",
+ "rallyLoginUsername": "Brugernavn",
+ "rallyLoginPassword": "Adgangskode",
+ "rallyLoginLabelLogin": "Log ind",
+ "rallyLoginRememberMe": "Husk mig",
+ "rallyLoginButtonLogin": "LOG IND",
+ "rallyAlertsMessageHeadsUpShopping": "Vær opmærksom på, at du har brugt {percent} af denne måneds shoppingbudget.",
+ "rallyAlertsMessageSpentOnRestaurants": "Du har brugt {amount} på restaurantbesøg i denne uge.",
+ "rallyAlertsMessageATMFees": "Du har brugt {amount} på hæveautomatsgebyrer i denne måned",
+ "rallyAlertsMessageCheckingAccount": "Flot! Din bankkonto er steget med {percent} i forhold til sidste måned.",
+ "shrineMenuCaption": "MENU",
+ "shrineCategoryNameAll": "ALLE",
+ "shrineCategoryNameAccessories": "TILBEHØR",
+ "shrineCategoryNameClothing": "TØJ",
+ "shrineCategoryNameHome": "STARTSIDE",
+ "shrineLoginUsernameLabel": "Brugernavn",
+ "shrineLoginPasswordLabel": "Adgangskode",
+ "shrineCancelButtonCaption": "ANNULLER",
+ "shrineCartTaxCaption": "Afgifter:",
+ "shrineCartPageCaption": "KURV",
+ "shrineProductQuantity": "Antal: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{INGEN VARER}=1{1 VARE}one{{quantity} VARE}other{{quantity} VARER}}",
+ "shrineCartClearButtonCaption": "RYD KURV",
+ "shrineCartTotalCaption": "I ALT",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Forsendelse:",
+ "shrineProductGreySlouchTank": "Grå løstsiddende tanktop",
+ "shrineProductStellaSunglasses": "Stella-solbriller",
+ "shrineProductWhitePinstripeShirt": "Nålestribet skjorte i hvid",
+ "demoTextFieldWhereCanWeReachYou": "Hvordan kan vi kontakte dig?",
+ "settingsTextDirectionLTR": "VTH",
+ "settingsTextScalingLarge": "Stor",
+ "demoBottomSheetHeader": "Overskrift",
+ "demoBottomSheetItem": "Vare {value}",
+ "demoBottomTextFieldsTitle": "Tekstfelter",
+ "demoTextFieldTitle": "Tekstfelter",
+ "demoTextFieldSubtitle": "En enkelt linje med tekst og tal, der kan redigeres",
+ "demoTextFieldDescription": "Tekstfelterne giver brugerne mulighed for at angive tekst i en brugerflade. De vises normalt i formularer og dialogbokse.",
+ "demoTextFieldShowPasswordLabel": "Vis adgangskode",
+ "demoTextFieldHidePasswordLabel": "Skjul adgangskode",
+ "demoTextFieldFormErrors": "Ret de fejl, der er angivet med rød farve, før du sender.",
+ "demoTextFieldNameRequired": "Du skal angive et navn.",
+ "demoTextFieldOnlyAlphabeticalChars": "Angiv kun alfabetiske tegn.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### – angiv et amerikansk telefonnummer.",
+ "demoTextFieldEnterPassword": "Angiv en adgangskode.",
+ "demoTextFieldPasswordsDoNotMatch": "Adgangskoderne matcher ikke",
+ "demoTextFieldWhatDoPeopleCallYou": "Hvad kalder andre dig?",
+ "demoTextFieldNameField": "Navn*",
+ "demoBottomSheetButtonText": "VIS FELTET I BUNDEN",
+ "demoTextFieldPhoneNumber": "Telefonnummer*",
+ "demoBottomSheetTitle": "Felt i bunden",
+ "demoTextFieldEmail": "Mail",
+ "demoTextFieldTellUsAboutYourself": "Fortæl os, hvem du er (du kan f.eks. skrive, hvad du laver, eller hvilke fritidsinteresser du har)",
+ "demoTextFieldKeepItShort": "Vær kortfattet; det her er kun en demo.",
+ "starterAppGenericButton": "KNAP",
+ "demoTextFieldLifeStory": "Livshistorie",
+ "demoTextFieldSalary": "Løn",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Du må højst angive otte tegn.",
+ "demoTextFieldPassword": "Adgangskode*",
+ "demoTextFieldRetypePassword": "Angiv adgangskoden igen*",
+ "demoTextFieldSubmit": "SEND",
+ "demoBottomNavigationSubtitle": "Navigation i bunden med tværudtoning",
+ "demoBottomSheetAddLabel": "Tilføj",
+ "demoBottomSheetModalDescription": "Et modalt felt i bunden er et alternativ til en menu eller dialogboks og forhindrer, at brugeren interagerer med resten af appen.",
+ "demoBottomSheetModalTitle": "Modalt felt i bunden",
+ "demoBottomSheetPersistentDescription": "Et fast felt i bunden viser oplysninger, der supplerer det primære indhold i appen. Et fast felt i bunden forbliver synligt, selvom brugeren interagerer med andre elementer i appen.",
+ "demoBottomSheetPersistentTitle": "Fast felt i bunden",
+ "demoBottomSheetSubtitle": "Faste og modale felter i bunden",
+ "demoTextFieldNameHasPhoneNumber": "Telefonnummeret til {name} er {phoneNumber}",
+ "buttonText": "KNAP",
+ "demoTypographyDescription": "Definitioner for de forskellige typografier, der blev fundet i Material Design.",
+ "demoTypographySubtitle": "Alle de foruddefinerede typografier",
+ "demoTypographyTitle": "Typografi",
+ "demoFullscreenDialogDescription": "Egenskaben fullscreenDialog angiver, om den delte side er en modal dialogboks i fuld skærm.",
+ "demoFlatButtonDescription": "En flad knap viser en blækklat, når den trykkes ned, men den hæves ikke. Brug flade knapper på værktøjslinjer, i dialogbokse og indlejret i den indre margen.",
+ "demoBottomNavigationDescription": "Navigationslinjer i bunden viser tre til fem destinationer nederst på en skærm. Hver destination er angivet med et ikon og en valgfri tekstetiket. Når der trykkes på et navigationsikon nederst på en skærm, føres brugeren til den overordnede navigationsdestination, der er knyttet til det pågældende ikon.",
+ "demoBottomNavigationSelectedLabel": "Valgt etiket",
+ "demoBottomNavigationPersistentLabels": "Faste etiketter",
+ "starterAppDrawerItem": "Vare {value}",
+ "demoTextFieldRequiredField": "* angiver et obligatorisk felt",
+ "demoBottomNavigationTitle": "Navigation i bunden",
+ "settingsLightTheme": "Lyst",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "HTV",
+ "settingsTextScalingHuge": "Meget stor",
+ "cupertinoButton": "Knap",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Lille",
+ "settingsSystemDefault": "System",
+ "settingsTitle": "Indstillinger",
+ "rallyDescription": "En personlig økonomiapp",
+ "aboutDialogDescription": "Gå til {value} for at se kildekoden for denne app.",
+ "bottomNavigationCommentsTab": "Kommentarer",
+ "starterAppGenericBody": "Brødtekst",
+ "starterAppGenericHeadline": "Overskrift",
+ "starterAppGenericSubtitle": "Undertekst",
+ "starterAppGenericTitle": "Titel",
+ "starterAppTooltipSearch": "Søg",
+ "starterAppTooltipShare": "Del",
+ "starterAppTooltipFavorite": "Angiv som favorit",
+ "starterAppTooltipAdd": "Tilføj",
+ "bottomNavigationCalendarTab": "Kalender",
+ "starterAppDescription": "Et responsivt opstartslayout",
+ "starterAppTitle": "Begynderapp",
+ "aboutFlutterSamplesRepo": "Flutter samples Github repo",
+ "bottomNavigationContentPlaceholder": "Pladsholder for fanen {title}",
+ "bottomNavigationCameraTab": "Kamera",
+ "bottomNavigationAlarmTab": "Alarm",
+ "bottomNavigationAccountTab": "Konto",
+ "demoTextFieldYourEmailAddress": "Din mailadresse",
+ "demoToggleButtonDescription": "Til/fra-knapper kan bruges til at gruppere relaterede indstillinger. For at fremhæve grupper af relaterede til/fra-knapper bør grupperne dele en fælles container.",
+ "colorsGrey": "GRÅ",
+ "colorsBrown": "BRUN",
+ "colorsDeepOrange": "DYB ORANGE",
+ "colorsOrange": "ORANGE",
+ "colorsAmber": "ORANGEGUL",
+ "colorsYellow": "GUL",
+ "colorsLime": "LIMEGRØN",
+ "colorsLightGreen": "LYSEGRØN",
+ "colorsGreen": "GRØN",
+ "homeHeaderGallery": "Galleri",
+ "homeHeaderCategories": "Kategorier",
+ "shrineDescription": "En modebevidst forhandlerapp",
+ "craneDescription": "En personligt tilpasset rejseapp",
+ "homeCategoryReference": "REFERENCESTILE OG MEDIER",
+ "demoInvalidURL": "Kunne ikke vise webadressen:",
+ "demoOptionsTooltip": "Valgmuligheder",
+ "demoInfoTooltip": "Oplysninger",
+ "demoCodeTooltip": "Eksempel på et kodestykke",
+ "demoDocumentationTooltip": "API-dokumentation",
+ "demoFullscreenTooltip": "Fuld skærm",
+ "settingsTextScaling": "Skalering af tekst",
+ "settingsTextDirection": "Tekstretning",
+ "settingsLocale": "Landestandard",
+ "settingsPlatformMechanics": "Platformmekanik",
+ "settingsDarkTheme": "Mørkt",
+ "settingsSlowMotion": "Slowmotion",
+ "settingsAbout": "Om Flutter Gallery",
+ "settingsFeedback": "Send feedback",
+ "settingsAttribution": "Designet af TOASTER i London",
+ "demoButtonTitle": "Knapper",
+ "demoButtonSubtitle": "Flade, hævede, kontur og meget mere",
+ "demoFlatButtonTitle": "Flad knap",
+ "demoRaisedButtonDescription": "Hævede knapper giver en tredje dimension til layouts, der primært er flade. De fremhæver funktioner i tætpakkede eller åbne områder.",
+ "demoRaisedButtonTitle": "Hævet knap",
+ "demoOutlineButtonTitle": "Konturknap",
+ "demoOutlineButtonDescription": "Konturknapper bliver uigennemsigtige og hæves, når der trykkes på dem. De kombineres ofte med hævede knapper for at angive en alternativ, sekundær handling.",
+ "demoToggleButtonTitle": "Til/fra-knapper",
+ "colorsTeal": "GRØNBLÅ",
+ "demoFloatingButtonTitle": "Svævende handlingsknap",
+ "demoFloatingButtonDescription": "En svævende handlingsknap er en rund ikonknap, der svæver over indholdet for at fremhæve en primær handling i appen.",
+ "demoDialogTitle": "Dialogbokse",
+ "demoDialogSubtitle": "Enkel, underretning og fuld skærm",
+ "demoAlertDialogTitle": "Underretning",
+ "demoAlertDialogDescription": "En underretningsdialogboks oplyser brugeren om situationer, der kræver handling. En underretningsdialogboks har en valgfri titel og en valgfri liste med handlinger.",
+ "demoAlertTitleDialogTitle": "Underretning med titel",
+ "demoSimpleDialogTitle": "Enkel",
+ "demoSimpleDialogDescription": "En enkel dialogboks giver brugeren et valg mellem flere muligheder. En enkel dialogboks har en valgfri titel, der vises oven over valgmulighederne.",
+ "demoFullscreenDialogTitle": "Fuld skærm",
+ "demoCupertinoButtonsTitle": "Knapper",
+ "demoCupertinoButtonsSubtitle": "Knapper i stil med iOS",
+ "demoCupertinoButtonsDescription": "En knap i samme stil som iOS. Tydeligheden af teksten og/eller ikonet skifter, når knappen berøres. Der kan tilvælges en baggrund til knappen.",
+ "demoCupertinoAlertsTitle": "Underretninger",
+ "demoCupertinoAlertsSubtitle": "Dialogbokse til underretning i samme stil som iOS",
+ "demoCupertinoAlertTitle": "Underretning",
+ "demoCupertinoAlertDescription": "En underretningsdialogboks oplyser brugeren om situationer, der kræver handling. En underretningsdialogboks har en valgfri titel, valgfrit indhold og en valgfri liste med handlinger. Titlen vises oven over indholdet, og handlinger vises under indholdet.",
+ "demoCupertinoAlertWithTitleTitle": "Underretning med titel",
+ "demoCupertinoAlertButtonsTitle": "Underretning med knapper",
+ "demoCupertinoAlertButtonsOnlyTitle": "Kun underretningsknapper",
+ "demoCupertinoActionSheetTitle": "Handlingsark",
+ "demoCupertinoActionSheetDescription": "Et handlingsark angiver, hvilken slags underretning der vises for brugeren med to eller flere valg, der er relevante i sammenhængen. Et handlingsark kan have en titel, en ekstra meddelelse og en liste med handlinger.",
+ "demoColorsTitle": "Farver",
+ "demoColorsSubtitle": "Alle de foruddefinerede farver",
+ "demoColorsDescription": "Faste farver og farveskemaer, som repræsenterer farvepaletten for Material Design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Opret",
+ "dialogSelectedOption": "Du valgte: \"{value}\"",
+ "dialogDiscardTitle": "Vil du kassere kladden?",
+ "dialogLocationTitle": "Vil du bruge Googles placeringstjeneste?",
+ "dialogLocationDescription": "Lad Google gøre det nemmere for apps at fastlægge din placering. Det betyder, at der sendes anonyme placeringsdata til Google, også når der ikke er nogen apps, der kører.",
+ "dialogCancel": "ANNULLER",
+ "dialogDiscard": "KASSÉR",
+ "dialogDisagree": "ACCEPTÉR IKKE",
+ "dialogAgree": "ACCEPTÉR",
+ "dialogSetBackup": "Konfigurer konto til backup",
+ "colorsBlueGrey": "BLÅGRÅ",
+ "dialogShow": "VIS DIALOGBOKS",
+ "dialogFullscreenTitle": "Dialogboks i fuld skærm",
+ "dialogFullscreenSave": "GEM",
+ "dialogFullscreenDescription": "Demonstration af en dialogboks i fuld skærm",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Med baggrund",
+ "cupertinoAlertCancel": "Annuller",
+ "cupertinoAlertDiscard": "Kassér",
+ "cupertinoAlertLocationTitle": "Vil du give \"Maps\" adgang til din placering, når du bruger appen?",
+ "cupertinoAlertLocationDescription": "Din aktuelle placering vises på kortet og bruges til rutevejledning, søgeresultater i nærheden og til at beregne rejsetider.",
+ "cupertinoAlertAllow": "Tillad",
+ "cupertinoAlertDontAllow": "Tillad ikke",
+ "cupertinoAlertFavoriteDessert": "Vælg en favoritdessert",
+ "cupertinoAlertDessertDescription": "Vælg din yndlingsdessert på listen nedenfor. Dit valg bruges til at tilpasse den foreslåede liste over spisesteder i dit område.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisu",
+ "cupertinoAlertApplePie": "Æbletærte",
+ "cupertinoAlertChocolateBrownie": "Chokoladebrownie",
+ "cupertinoShowAlert": "Vis underretning",
+ "colorsRed": "RØD",
+ "colorsPink": "PINK",
+ "colorsPurple": "LILLA",
+ "colorsDeepPurple": "DYB LILLA",
+ "colorsIndigo": "INDIGO",
+ "colorsBlue": "BLÅ",
+ "colorsLightBlue": "LYSEBLÅ",
+ "colorsCyan": "CYAN",
+ "dialogAddAccount": "Tilføj konto",
+ "Gallery": "Galleri",
+ "Categories": "Kategorier",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "Simpel app til shopping",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "Rejseapp",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "REFERENCESTILE OG MEDIER"
+}
diff --git a/gallery/lib/l10n/intl_de.arb b/gallery/lib/l10n/intl_de.arb
new file mode 100644
index 0000000..f521b68
--- /dev/null
+++ b/gallery/lib/l10n/intl_de.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Optionen für die Ansicht",
+ "demoOptionsFeatureDescription": "Tippe hier, um die verfügbaren Optionen für diese Demo anzuzeigen.",
+ "demoCodeViewerCopyAll": "ALLES KOPIEREN",
+ "shrineScreenReaderRemoveProductButton": "{product} entfernen",
+ "shrineScreenReaderProductAddToCart": "In den Einkaufswagen",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Einkaufswagen, keine Artikel}=1{Einkaufswagen, 1 Artikel}other{Einkaufswagen, {quantity} Artikel}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Fehler beim Kopieren in die Zwischenablage: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "In die Zwischenablage kopiert.",
+ "craneSleep8SemanticLabel": "Maya-Ruinen auf einer Klippe oberhalb eines Strandes",
+ "craneSleep4SemanticLabel": "Hotel an einem See mit Bergen im Hintergrund",
+ "craneSleep2SemanticLabel": "Zitadelle von Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalet in einer Schneelandschaft mit immergrünen Bäumen",
+ "craneSleep0SemanticLabel": "Overwater-Bungalows",
+ "craneFly13SemanticLabel": "Pool am Meer mit Palmen",
+ "craneFly12SemanticLabel": "Pool mit Palmen",
+ "craneFly11SemanticLabel": "Aus Ziegelsteinen gemauerter Leuchtturm am Meer",
+ "craneFly10SemanticLabel": "Minarette der al-Azhar-Moschee bei Sonnenuntergang",
+ "craneFly9SemanticLabel": "Mann, der sich gegen einen blauen Oldtimer lehnt",
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "craneEat9SemanticLabel": "Café-Theke mit Gebäck",
+ "craneEat2SemanticLabel": "Hamburger",
+ "craneFly5SemanticLabel": "Hotel an einem See mit Bergen im Hintergrund",
+ "demoSelectionControlsSubtitle": "Kästchen, Optionsfelder und Schieberegler",
+ "craneEat10SemanticLabel": "Frau mit riesigem Pastrami-Sandwich",
+ "craneFly4SemanticLabel": "Overwater-Bungalows",
+ "craneEat7SemanticLabel": "Eingang einer Bäckerei",
+ "craneEat6SemanticLabel": "Garnelengericht",
+ "craneEat5SemanticLabel": "Sitzbereich eines künstlerisch eingerichteten Restaurants",
+ "craneEat4SemanticLabel": "Schokoladendessert",
+ "craneEat3SemanticLabel": "Koreanischer Taco",
+ "craneFly3SemanticLabel": "Zitadelle von Machu Picchu",
+ "craneEat1SemanticLabel": "Leere Bar mit Barhockern",
+ "craneEat0SemanticLabel": "Pizza in einem Holzofen",
+ "craneSleep11SemanticLabel": "Taipei 101",
+ "craneSleep10SemanticLabel": "Minarette der al-Azhar-Moschee bei Sonnenuntergang",
+ "craneSleep9SemanticLabel": "Aus Ziegelsteinen gemauerter Leuchtturm am Meer",
+ "craneEat8SemanticLabel": "Teller mit Flusskrebsen",
+ "craneSleep7SemanticLabel": "Bunte Häuser am Praça da Ribeira",
+ "craneSleep6SemanticLabel": "Pool mit Palmen",
+ "craneSleep5SemanticLabel": "Zelt auf einem Feld",
+ "settingsButtonCloseLabel": "Einstellungen schließen",
+ "demoSelectionControlsCheckboxDescription": "Über Kästchen können Nutzer mehrere Optionen gleichzeitig auswählen. Üblicherweise ist der Wert eines Kästchens entweder \"true\" (ausgewählt) oder \"false\" (nicht ausgewählt) – Kästchen mit drei Auswahlmöglichkeiten können jedoch auch den Wert \"null\" haben.",
+ "settingsButtonLabel": "Einstellungen",
+ "demoListsTitle": "Listen",
+ "demoListsSubtitle": "Layouts der scrollbaren Liste",
+ "demoListsDescription": "Eine Zeile in der Liste hat eine feste Höhe und enthält normalerweise Text und ein anführendes bzw. abschließendes Symbol.",
+ "demoOneLineListsTitle": "Eine Zeile",
+ "demoTwoLineListsTitle": "Zwei Zeilen",
+ "demoListsSecondary": "Sekundärer Text",
+ "demoSelectionControlsTitle": "Auswahlsteuerung",
+ "craneFly7SemanticLabel": "Mount Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Kästchen",
+ "craneSleep3SemanticLabel": "Mann, der sich gegen einen blauen Oldtimer lehnt",
+ "demoSelectionControlsRadioTitle": "Optionsfeld",
+ "demoSelectionControlsRadioDescription": "Über Optionsfelder können Nutzer eine Option auswählen. Optionsfelder sind ideal, wenn nur eine einzige Option ausgewählt werden kann, aber alle verfügbaren Auswahlmöglichkeiten auf einen Blick erkennbar sein sollen.",
+ "demoSelectionControlsSwitchTitle": "Schieberegler",
+ "demoSelectionControlsSwitchDescription": "Mit Schiebereglern können Nutzer den Status einzelner Einstellungen ändern. Anhand des verwendeten Inline-Labels sollte man erkennen können, um welche Einstellung es sich handelt und wie der aktuelle Status ist.",
+ "craneFly0SemanticLabel": "Chalet in einer Schneelandschaft mit immergrünen Bäumen",
+ "craneFly1SemanticLabel": "Zelt auf einem Feld",
+ "craneFly2SemanticLabel": "Gebetsfahnen vor einem schneebedeckten Berg",
+ "craneFly6SemanticLabel": "Luftbild des Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Alle Konten anzeigen",
+ "rallyBillAmount": "Rechnung \"{billName}\" in Höhe von {amount} am {date} fällig.",
+ "shrineTooltipCloseCart": "Seite \"Warenkorb\" schließen",
+ "shrineTooltipCloseMenu": "Menü schließen",
+ "shrineTooltipOpenMenu": "Menü öffnen",
+ "shrineTooltipSettings": "Einstellungen",
+ "shrineTooltipSearch": "Suchen",
+ "demoTabsDescription": "Mit Tabs lassen sich Inhalte über Bildschirme, Datensätze und andere Interaktionen hinweg organisieren.",
+ "demoTabsSubtitle": "Tabs mit unabhängig scrollbaren Ansichten",
+ "demoTabsTitle": "Tabs",
+ "rallyBudgetAmount": "Budget \"{budgetName}\" mit einem Gesamtbetrag von {amountTotal} ({amountUsed} verwendet, {amountLeft} verbleibend)",
+ "shrineTooltipRemoveItem": "Element entfernen",
+ "rallyAccountAmount": "Konto \"{accountName}\" {accountNumber} mit einem Kontostand von {amount}.",
+ "rallySeeAllBudgets": "Alle Budgets anzeigen",
+ "rallySeeAllBills": "Alle Rechnungen anzeigen",
+ "craneFormDate": "Datum auswählen",
+ "craneFormOrigin": "Abflugort auswählen",
+ "craneFly2": "Khumbu Valley, Nepal",
+ "craneFly3": "Machu Picchu, Peru",
+ "craneFly4": "Malé, Malediven",
+ "craneFly5": "Vitznau, Schweiz",
+ "craneFly6": "Mexiko-Stadt, Mexiko",
+ "craneFly7": "Mount Rushmore, USA",
+ "settingsTextDirectionLocaleBased": "Abhängig von der Sprache",
+ "craneFly9": "Havanna, Kuba",
+ "craneFly10": "Kairo, Ägypten",
+ "craneFly11": "Lissabon, Portugal",
+ "craneFly12": "Napa, USA",
+ "craneFly13": "Bali, Indonesien",
+ "craneSleep0": "Malé, Malediven",
+ "craneSleep1": "Aspen, USA",
+ "craneSleep2": "Machu Picchu, Peru",
+ "demoCupertinoSegmentedControlTitle": "Segmentierte Steuerung",
+ "craneSleep4": "Vitznau, Schweiz",
+ "craneSleep5": "Big Sur, USA",
+ "craneSleep6": "Napa, USA",
+ "craneSleep7": "Porto, Portugal",
+ "craneSleep8": "Tulum, Mexiko",
+ "craneEat5": "Seoul, Südkorea",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Kompakte Elemente, die für eine Eingabe, ein Attribut oder eine Aktion stehen",
+ "demoActionChipTitle": "Aktions-Chip",
+ "demoActionChipDescription": "Aktions-Chips sind eine Gruppe von Optionen, die eine Aktion im Zusammenhang mit wichtigen Inhalten auslösen. Aktions-Chips sollten in der Benutzeroberfläche dynamisch und kontextorientiert erscheinen.",
+ "demoChoiceChipTitle": "Auswahl-Chip",
+ "demoChoiceChipDescription": "Auswahl-Chips stehen für eine einzelne Auswahl aus einer Gruppe von Optionen. Auswahl-Chips enthalten zugehörigen beschreibenden Text oder zugehörige Kategorien.",
+ "demoFilterChipTitle": "Filter Chip",
+ "demoFilterChipDescription": "Filter-Chips dienen zum Filtern von Inhalten anhand von Tags oder beschreibenden Wörtern.",
+ "demoInputChipTitle": "Eingabe-Chip",
+ "demoInputChipDescription": "Eingabe-Chips stehen für eine komplexe Information, wie eine Entität (Person, Ort oder Gegenstand) oder für Gesprächstext in kompakter Form.",
+ "craneSleep9": "Lissabon, Portugal",
+ "craneEat10": "Lissabon, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Wird verwendet, um aus einer Reihe von Optionen zu wählen, die sich gegenseitig ausschließen. Wenn eine Option in der segmentierten Steuerung ausgewählt ist, wird dadurch die Auswahl für die anderen Optionen aufgehoben.",
+ "chipTurnOnLights": "Beleuchtung einschalten",
+ "chipSmall": "Klein",
+ "chipMedium": "Mittel",
+ "chipLarge": "Groß",
+ "chipElevator": "Fahrstuhl",
+ "chipWasher": "Waschmaschine",
+ "chipFireplace": "Kamin",
+ "chipBiking": "Radfahren",
+ "craneFormDiners": "Personenzahl",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Erhöhe deine potenziellen Steuervergünstigungen! Du kannst 1 nicht zugewiesenen Transaktion Kategorien zuordnen.}other{Erhöhe deine potenziellen Steuervergünstigungen! Du kannst {count} nicht zugewiesenen Transaktionen Kategorien zuordnen.}}",
+ "craneFormTime": "Uhrzeit auswählen",
+ "craneFormLocation": "Ort auswählen",
+ "craneFormTravelers": "Reisende",
+ "craneEat8": "Atlanta, USA",
+ "craneFormDestination": "Reiseziel auswählen",
+ "craneFormDates": "Daten auswählen",
+ "craneFly": "FLIEGEN",
+ "craneSleep": "SCHLAFEN",
+ "craneEat": "ESSEN",
+ "craneFlySubhead": "Flüge nach Reiseziel suchen",
+ "craneSleepSubhead": "Unterkünfte am Zielort finden",
+ "craneEatSubhead": "Restaurants am Zielort finden",
+ "craneFlyStops": "{numberOfStops,plural, =0{Nonstop}=1{1 Zwischenstopp}other{{numberOfStops} Zwischenstopps}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{Keine Unterkünfte verfügbar}=1{1 verfügbare Unterkunft}other{{totalProperties} verfügbare Unterkünfte}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{Keine Restaurants}=1{1 Restaurant}other{{totalRestaurants} Restaurants}}",
+ "craneFly0": "Aspen, USA",
+ "demoCupertinoSegmentedControlSubtitle": "Segmentierte Steuerung im Stil von iOS",
+ "craneSleep10": "Kairo, Ägypten",
+ "craneEat9": "Madrid, Spanien",
+ "craneFly1": "Big Sur, USA",
+ "craneEat7": "Nashville, USA",
+ "craneEat6": "Seattle, USA",
+ "craneFly8": "Singapur",
+ "craneEat4": "Paris, Frankreich",
+ "craneEat3": "Portland, USA",
+ "craneEat2": "Córdoba, Argentinien",
+ "craneEat1": "Dallas, USA",
+ "craneEat0": "Neapel, Italien",
+ "craneSleep11": "Taipeh, Taiwan",
+ "craneSleep3": "Havanna, Kuba",
+ "shrineLogoutButtonCaption": "ABMELDEN",
+ "rallyTitleBills": "RECHNUNGEN",
+ "rallyTitleAccounts": "KONTEN",
+ "shrineProductVagabondSack": "Vagabond-Tasche",
+ "rallyAccountDetailDataInterestYtd": "Zinsen seit Jahresbeginn",
+ "shrineProductWhitneyBelt": "Whitney-Gürtel",
+ "shrineProductGardenStrand": "Garden-Schmuck",
+ "shrineProductStrutEarrings": "Strut-Ohrringe",
+ "shrineProductVarsitySocks": "Varsity-Socken",
+ "shrineProductWeaveKeyring": "Weave-Schlüsselring",
+ "shrineProductGatsbyHat": "Gatsby-Hut",
+ "shrineProductShrugBag": "Shrug-Tasche",
+ "shrineProductGiltDeskTrio": "Goldenes Schreibtischtrio",
+ "shrineProductCopperWireRack": "Kupferdrahtkorb",
+ "shrineProductSootheCeramicSet": "Soothe-Keramikset",
+ "shrineProductHurrahsTeaSet": "Hurrahs-Teeservice",
+ "shrineProductBlueStoneMug": "Blauer Steinkrug",
+ "shrineProductRainwaterTray": "Regenwasserbehälter",
+ "shrineProductChambrayNapkins": "Chambray-Servietten",
+ "shrineProductSucculentPlanters": "Blumentöpfe für Sukkulenten",
+ "shrineProductQuartetTable": "Vierbeiniger Tisch",
+ "shrineProductKitchenQuattro": "Vierteiliges Küchen-Set",
+ "shrineProductClaySweater": "Clay-Pullover",
+ "shrineProductSeaTunic": "Sea-Tunika",
+ "shrineProductPlasterTunic": "Plaster-Tunika",
+ "rallyBudgetCategoryRestaurants": "Restaurants",
+ "shrineProductChambrayShirt": "Chambray-Hemd",
+ "shrineProductSeabreezeSweater": "Seabreeze-Pullover",
+ "shrineProductGentryJacket": "Gentry-Jacke",
+ "shrineProductNavyTrousers": "Navy-Hose",
+ "shrineProductWalterHenleyWhite": "Walter Henley (weiß)",
+ "shrineProductSurfAndPerfShirt": "Surf-and-perf-Hemd",
+ "shrineProductGingerScarf": "Ginger-Schal",
+ "shrineProductRamonaCrossover": "Ramona-Crossover",
+ "shrineProductClassicWhiteCollar": "Klassisch mit weißem Kragen",
+ "shrineProductSunshirtDress": "Sunshirt-Kleid",
+ "rallyAccountDetailDataInterestRate": "Zinssatz",
+ "rallyAccountDetailDataAnnualPercentageYield": "Jährlicher Ertrag in Prozent",
+ "rallyAccountDataVacation": "Urlaub",
+ "shrineProductFineLinesTee": "Fine Lines-T-Shirt",
+ "rallyAccountDataHomeSavings": "Ersparnisse für Zuhause",
+ "rallyAccountDataChecking": "Girokonto",
+ "rallyAccountDetailDataInterestPaidLastYear": "Letztes Jahr gezahlte Zinsen",
+ "rallyAccountDetailDataNextStatement": "Nächster Auszug",
+ "rallyAccountDetailDataAccountOwner": "Kontoinhaber",
+ "rallyBudgetCategoryCoffeeShops": "Cafés",
+ "rallyBudgetCategoryGroceries": "Lebensmittel",
+ "shrineProductCeriseScallopTee": "Cerise-Scallop-T-Shirt",
+ "rallyBudgetCategoryClothing": "Kleidung",
+ "rallySettingsManageAccounts": "Konten verwalten",
+ "rallyAccountDataCarSavings": "Ersparnisse für Auto",
+ "rallySettingsTaxDocuments": "Steuerdokumente",
+ "rallySettingsPasscodeAndTouchId": "Sicherheitscode und Touch ID",
+ "rallySettingsNotifications": "Benachrichtigungen",
+ "rallySettingsPersonalInformation": "Personenbezogene Daten",
+ "rallySettingsPaperlessSettings": "Papierloseinstellungen",
+ "rallySettingsFindAtms": "Geldautomaten finden",
+ "rallySettingsHelp": "Hilfe",
+ "rallySettingsSignOut": "Abmelden",
+ "rallyAccountTotal": "Summe",
+ "rallyBillsDue": "Fällig:",
+ "rallyBudgetLeft": "verbleibend",
+ "rallyAccounts": "Konten",
+ "rallyBills": "Rechnungen",
+ "rallyBudgets": "Budgets",
+ "rallyAlerts": "Benachrichtigungen",
+ "rallySeeAll": "ALLES ANZEIGEN",
+ "rallyFinanceLeft": "VERBLEIBEND",
+ "rallyTitleOverview": "ÜBERSICHT",
+ "shrineProductShoulderRollsTee": "Shoulder-rolls-T-Shirt",
+ "shrineNextButtonCaption": "WEITER",
+ "rallyTitleBudgets": "BUDGETS",
+ "rallyTitleSettings": "EINSTELLUNGEN",
+ "rallyLoginLoginToRally": "In Rally anmelden",
+ "rallyLoginNoAccount": "Du hast noch kein Konto?",
+ "rallyLoginSignUp": "REGISTRIEREN",
+ "rallyLoginUsername": "Nutzername",
+ "rallyLoginPassword": "Passwort",
+ "rallyLoginLabelLogin": "Anmelden",
+ "rallyLoginRememberMe": "Angemeldet bleiben",
+ "rallyLoginButtonLogin": "ANMELDEN",
+ "rallyAlertsMessageHeadsUpShopping": "Hinweis: Du hast {percent} deines Einkaufsbudgets für diesen Monat verbraucht.",
+ "rallyAlertsMessageSpentOnRestaurants": "Du hast diesen Monat {amount} in Restaurants ausgegeben",
+ "rallyAlertsMessageATMFees": "Du hast diesen Monat {amount} Geldautomatengebühren bezahlt",
+ "rallyAlertsMessageCheckingAccount": "Sehr gut! Auf deinem Girokonto ist {percent} mehr Geld als im letzten Monat.",
+ "shrineMenuCaption": "MENÜ",
+ "shrineCategoryNameAll": "ALLE",
+ "shrineCategoryNameAccessories": "ACCESSOIRES",
+ "shrineCategoryNameClothing": "KLEIDUNG",
+ "shrineCategoryNameHome": "ZUHAUSE",
+ "shrineLoginUsernameLabel": "Nutzername",
+ "shrineLoginPasswordLabel": "Passwort",
+ "shrineCancelButtonCaption": "ABBRECHEN",
+ "shrineCartTaxCaption": "Steuern:",
+ "shrineCartPageCaption": "EINKAUFSWAGEN",
+ "shrineProductQuantity": "Anzahl: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{KEINE ELEMENTE}=1{1 ELEMENT}other{{quantity} ELEMENTE}}",
+ "shrineCartClearButtonCaption": "EINKAUFSWAGEN LEEREN",
+ "shrineCartTotalCaption": "SUMME",
+ "shrineCartSubtotalCaption": "Zwischensumme:",
+ "shrineCartShippingCaption": "Versand:",
+ "shrineProductGreySlouchTank": "Graues Slouchy-Tanktop",
+ "shrineProductStellaSunglasses": "Stella-Sonnenbrille",
+ "shrineProductWhitePinstripeShirt": "Weißes Nadelstreifenhemd",
+ "demoTextFieldWhereCanWeReachYou": "Unter welcher Nummer können wir dich erreichen?",
+ "settingsTextDirectionLTR": "Rechtsläufig",
+ "settingsTextScalingLarge": "Groß",
+ "demoBottomSheetHeader": "Kopfzeile",
+ "demoBottomSheetItem": "Artikel: {value}",
+ "demoBottomTextFieldsTitle": "Textfelder",
+ "demoTextFieldTitle": "Textfelder",
+ "demoTextFieldSubtitle": "Einzelne Linie mit Text und Zahlen, die bearbeitet werden können",
+ "demoTextFieldDescription": "Über Textfelder können Nutzer Text auf einer Benutzeroberfläche eingeben. Sie sind in der Regel in Formularen und Dialogfeldern zu finden.",
+ "demoTextFieldShowPasswordLabel": "Passwort anzeigen",
+ "demoTextFieldHidePasswordLabel": "Passwort ausblenden",
+ "demoTextFieldFormErrors": "Bitte behebe vor dem Senden die rot markierten Probleme.",
+ "demoTextFieldNameRequired": "Name ist erforderlich.",
+ "demoTextFieldOnlyAlphabeticalChars": "Bitte gib nur Zeichen aus dem Alphabet ein.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### – Gib eine US-amerikanische Telefonnummer ein.",
+ "demoTextFieldEnterPassword": "Gib ein Passwort ein.",
+ "demoTextFieldPasswordsDoNotMatch": "Die Passwörter stimmen nicht überein",
+ "demoTextFieldWhatDoPeopleCallYou": "Wie lautet dein Name?",
+ "demoTextFieldNameField": "Name*",
+ "demoBottomSheetButtonText": "BLATT AM UNTEREN RAND ANZEIGEN",
+ "demoTextFieldPhoneNumber": "Telefonnummer*",
+ "demoBottomSheetTitle": "Blatt am unteren Rand",
+ "demoTextFieldEmail": "E-Mail-Adresse",
+ "demoTextFieldTellUsAboutYourself": "Erzähl uns etwas über dich (z. B., welcher Tätigkeit du nachgehst oder welche Hobbys du hast)",
+ "demoTextFieldKeepItShort": "Schreib nicht zu viel, das hier ist nur eine Demonstration.",
+ "starterAppGenericButton": "SCHALTFLÄCHE",
+ "demoTextFieldLifeStory": "Lebensgeschichte",
+ "demoTextFieldSalary": "Gehalt",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Nicht mehr als 8 Zeichen.",
+ "demoTextFieldPassword": "Passwort*",
+ "demoTextFieldRetypePassword": "Passwort wiederholen*",
+ "demoTextFieldSubmit": "SENDEN",
+ "demoBottomNavigationSubtitle": "Navigation am unteren Rand mit sich überblendenden Ansichten",
+ "demoBottomSheetAddLabel": "Hinzufügen",
+ "demoBottomSheetModalDescription": "Ein modales Blatt am unteren Rand ist eine Alternative zu einem Menü oder einem Dialogfeld und verhindert, dass Nutzer mit dem Rest der App interagieren.",
+ "demoBottomSheetModalTitle": "Modales Blatt am unteren Rand",
+ "demoBottomSheetPersistentDescription": "Auf einem persistenten Blatt am unteren Rand werden Informationen angezeigt, die den Hauptinhalt der App ergänzen. Ein solches Blatt bleibt immer sichtbar, auch dann, wenn der Nutzer mit anderen Teilen der App interagiert.",
+ "demoBottomSheetPersistentTitle": "Persistentes Blatt am unteren Rand",
+ "demoBottomSheetSubtitle": "Persistente und modale Blätter am unteren Rand",
+ "demoTextFieldNameHasPhoneNumber": "Telefonnummer von {name} ist {phoneNumber}",
+ "buttonText": "SCHALTFLÄCHE",
+ "demoTypographyDescription": "Definitionen für die verschiedenen Typografiestile im Material Design.",
+ "demoTypographySubtitle": "Alle vordefinierten Textstile",
+ "demoTypographyTitle": "Typografie",
+ "demoFullscreenDialogDescription": "Das Attribut \"fullscreenDialog\" gibt an, ob eine eingehende Seite ein modales Vollbild-Dialogfeld ist",
+ "demoFlatButtonDescription": "Eine flache Schaltfläche, die beim Drücken eine Farbreaktion zeigt, aber nicht erhöht dargestellt wird. Du kannst flache Schaltflächen in Symbolleisten, Dialogfeldern und inline mit Abständen verwenden.",
+ "demoBottomNavigationDescription": "Auf Navigationsleisten am unteren Bildschirmrand werden zwischen drei und fünf Zielseiten angezeigt. Jede Zielseite wird durch ein Symbol und eine optionale Beschriftung dargestellt. Wenn ein Navigationssymbol am unteren Rand angetippt wird, wird der Nutzer zur Zielseite auf der obersten Ebene der Navigation weitergeleitet, die diesem Symbol zugeordnet ist.",
+ "demoBottomNavigationSelectedLabel": "Ausgewähltes Label",
+ "demoBottomNavigationPersistentLabels": "Persistente Labels",
+ "starterAppDrawerItem": "Artikel: {value}",
+ "demoTextFieldRequiredField": "* Pflichtfeld",
+ "demoBottomNavigationTitle": "Navigation am unteren Rand",
+ "settingsLightTheme": "Hell",
+ "settingsTheme": "Design",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "Linksläufig",
+ "settingsTextScalingHuge": "Sehr groß",
+ "cupertinoButton": "Schaltfläche",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Klein",
+ "settingsSystemDefault": "System",
+ "settingsTitle": "Einstellungen",
+ "rallyDescription": "Persönliche Finanz-App",
+ "aboutDialogDescription": "Den Quellcode dieser App findest du hier: {value}.",
+ "bottomNavigationCommentsTab": "Kommentare",
+ "starterAppGenericBody": "Text",
+ "starterAppGenericHeadline": "Überschrift",
+ "starterAppGenericSubtitle": "Untertitel",
+ "starterAppGenericTitle": "Titel",
+ "starterAppTooltipSearch": "Suchen",
+ "starterAppTooltipShare": "Teilen",
+ "starterAppTooltipFavorite": "Zu Favoriten hinzufügen",
+ "starterAppTooltipAdd": "Hinzufügen",
+ "bottomNavigationCalendarTab": "Kalender",
+ "starterAppDescription": "Ein responsives Anfangslayout",
+ "starterAppTitle": "Start-App",
+ "aboutFlutterSamplesRepo": "GitHub-Repository mit Flutter-Beispielen",
+ "bottomNavigationContentPlaceholder": "Platzhalter für den Tab \"{title}\"",
+ "bottomNavigationCameraTab": "Kamera",
+ "bottomNavigationAlarmTab": "Weckruf",
+ "bottomNavigationAccountTab": "Konto",
+ "demoTextFieldYourEmailAddress": "Deine E-Mail-Adresse",
+ "demoToggleButtonDescription": "Ein-/Aus-Schaltflächen können verwendet werden, um ähnliche Optionen zu gruppieren. Die Gruppe sollte einen gemeinsamen Container haben, um hervorzuheben, dass die Ein-/Aus-Schaltflächen eine ähnliche Funktion erfüllen.",
+ "colorsGrey": "GRAU",
+ "colorsBrown": "BRAUN",
+ "colorsDeepOrange": "DUNKLES ORANGE",
+ "colorsOrange": "ORANGE",
+ "colorsAmber": "BERNSTEINGELB",
+ "colorsYellow": "GELB",
+ "colorsLime": "GELBGRÜN",
+ "colorsLightGreen": "HELLGRÜN",
+ "colorsGreen": "GRÜN",
+ "homeHeaderGallery": "Galerie",
+ "homeHeaderCategories": "Kategorien",
+ "shrineDescription": "Einzelhandels-App für Mode",
+ "craneDescription": "Personalisierte Reise-App",
+ "homeCategoryReference": "STIL DER REFERENZEN & MEDIEN",
+ "demoInvalidURL": "URL konnte nicht angezeigt werden:",
+ "demoOptionsTooltip": "Optionen",
+ "demoInfoTooltip": "Info",
+ "demoCodeTooltip": "Codebeispiel",
+ "demoDocumentationTooltip": "API-Dokumentation",
+ "demoFullscreenTooltip": "Vollbild",
+ "settingsTextScaling": "Textskalierung",
+ "settingsTextDirection": "Textrichtung",
+ "settingsLocale": "Sprache",
+ "settingsPlatformMechanics": "Funktionsweise der Plattform",
+ "settingsDarkTheme": "Dunkel",
+ "settingsSlowMotion": "Zeitlupe",
+ "settingsAbout": "Über Flutter Gallery",
+ "settingsFeedback": "Feedback geben",
+ "settingsAttribution": "Design von TOASTER, London",
+ "demoButtonTitle": "Schaltflächen",
+ "demoButtonSubtitle": "Flach, erhöht, mit Umriss und mehr",
+ "demoFlatButtonTitle": "Flache Schaltfläche",
+ "demoRaisedButtonDescription": "Erhöhte Schaltflächen verleihen flachen Layouts mehr Dimension. Sie können verwendet werden, um Funktionen auf überladenen oder leeren Flächen hervorzuheben.",
+ "demoRaisedButtonTitle": "Erhöhte Schaltfläche",
+ "demoOutlineButtonTitle": "Schaltfläche mit Umriss",
+ "demoOutlineButtonDescription": "Schaltflächen mit Umriss werden undurchsichtig und erhöht dargestellt, wenn sie gedrückt werden. Sie werden häufig mit erhöhten Schaltflächen kombiniert, um eine alternative oder sekundäre Aktion zu kennzeichnen.",
+ "demoToggleButtonTitle": "Ein-/Aus-Schaltflächen",
+ "colorsTeal": "BLAUGRÜN",
+ "demoFloatingButtonTitle": "Unverankerte Aktionsschaltfläche",
+ "demoFloatingButtonDescription": "Eine unverankerte Aktionsschaltfläche ist eine runde Symbolschaltfläche, die über dem Inhalt schwebt und Zugriff auf eine primäre Aktion der App bietet.",
+ "demoDialogTitle": "Dialogfelder",
+ "demoDialogSubtitle": "Einfach, Benachrichtigung und Vollbild",
+ "demoAlertDialogTitle": "Benachrichtigung",
+ "demoAlertDialogDescription": "Ein Benachrichtigungsdialog informiert Nutzer über Situationen, die ihre Aufmerksamkeit erfordern. Er kann einen Titel und eine Liste mit Aktionen enthalten. Beides ist optional.",
+ "demoAlertTitleDialogTitle": "Benachrichtigung mit Titel",
+ "demoSimpleDialogTitle": "Einfach",
+ "demoSimpleDialogDescription": "Ein einfaches Dialogfeld bietet Nutzern mehrere Auswahlmöglichkeiten. Optional kann über den Auswahlmöglichkeiten ein Titel angezeigt werden.",
+ "demoFullscreenDialogTitle": "Vollbild",
+ "demoCupertinoButtonsTitle": "Schaltflächen",
+ "demoCupertinoButtonsSubtitle": "Schaltflächen im Stil von iOS",
+ "demoCupertinoButtonsDescription": "Eine Schaltfläche im Stil von iOS. Sie kann Text und/oder ein Symbol enthalten, die bei Berührung aus- und eingeblendet werden. Optional ist auch ein Hintergrund möglich.",
+ "demoCupertinoAlertsTitle": "Benachrichtigungen",
+ "demoCupertinoAlertsSubtitle": "Dialogfelder für Benachrichtigungen im Stil von iOS",
+ "demoCupertinoAlertTitle": "Benachrichtigung",
+ "demoCupertinoAlertDescription": "Ein Benachrichtigungsdialog informiert den Nutzer über Situationen, die seine Aufmerksamkeit erfordern. Optional kann er einen Titel, Inhalt und eine Liste mit Aktionen enthalten. Der Titel wird über dem Inhalt angezeigt, die Aktionen darunter.",
+ "demoCupertinoAlertWithTitleTitle": "Benachrichtigung mit Titel",
+ "demoCupertinoAlertButtonsTitle": "Benachrichtigung mit Schaltflächen",
+ "demoCupertinoAlertButtonsOnlyTitle": "Nur Schaltflächen für Benachrichtigungen",
+ "demoCupertinoActionSheetTitle": "Aktionstabelle",
+ "demoCupertinoActionSheetDescription": "Eine Aktionstabelle ist eine Art von Benachrichtigung, bei der Nutzern zwei oder mehr Auswahlmöglichkeiten zum aktuellen Kontext angezeigt werden. Sie kann einen Titel, eine zusätzliche Nachricht und eine Liste von Aktionen enthalten.",
+ "demoColorsTitle": "Farben",
+ "demoColorsSubtitle": "Alle vordefinierten Farben",
+ "demoColorsDescription": "Farben und Farbmuster, die die Farbpalette von Material Design widerspiegeln.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Erstellen",
+ "dialogSelectedOption": "Deine Auswahl: \"{value}\"",
+ "dialogDiscardTitle": "Entwurf verwerfen?",
+ "dialogLocationTitle": "Standortdienst von Google nutzen?",
+ "dialogLocationDescription": "Die Standortdienste von Google erleichtern die Standortbestimmung durch Apps. Dabei werden anonyme Standortdaten an Google gesendet, auch wenn gerade keine Apps ausgeführt werden.",
+ "dialogCancel": "ABBRECHEN",
+ "dialogDiscard": "VERWERFEN",
+ "dialogDisagree": "NICHT ZUSTIMMEN",
+ "dialogAgree": "ZUSTIMMEN",
+ "dialogSetBackup": "Sicherungskonto einrichten",
+ "colorsBlueGrey": "BLAUGRAU",
+ "dialogShow": "DIALOGFELD ANZEIGEN",
+ "dialogFullscreenTitle": "Vollbild-Dialogfeld",
+ "dialogFullscreenSave": "SPEICHERN",
+ "dialogFullscreenDescription": "Demo eines Vollbild-Dialogfelds",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Mit Hintergrund",
+ "cupertinoAlertCancel": "Abbrechen",
+ "cupertinoAlertDiscard": "Verwerfen",
+ "cupertinoAlertLocationTitle": "Maps erlauben, während der Nutzung der App auf deinen Standort zuzugreifen?",
+ "cupertinoAlertLocationDescription": "Dein aktueller Standort wird auf der Karte angezeigt und für Wegbeschreibungen, Suchergebnisse für Dinge in der Nähe und zur Einschätzung von Fahrtzeiten verwendet.",
+ "cupertinoAlertAllow": "Zulassen",
+ "cupertinoAlertDontAllow": "Nicht zulassen",
+ "cupertinoAlertFavoriteDessert": "Lieblingsdessert auswählen",
+ "cupertinoAlertDessertDescription": "Bitte wähle in der Liste unten dein Lieblingsdessert aus. Mithilfe deiner Auswahl wird die Liste der Restaurantvorschläge in deiner Nähe personalisiert.",
+ "cupertinoAlertCheesecake": "Käsekuchen",
+ "cupertinoAlertTiramisu": "Tiramisu",
+ "cupertinoAlertApplePie": "Apfelkuchen",
+ "cupertinoAlertChocolateBrownie": "Schokoladenbrownie",
+ "cupertinoShowAlert": "Benachrichtigung anzeigen",
+ "colorsRed": "ROT",
+ "colorsPink": "PINK",
+ "colorsPurple": "LILA",
+ "colorsDeepPurple": "DUNKLES LILA",
+ "colorsIndigo": "INDIGO",
+ "colorsBlue": "BLAU",
+ "colorsLightBlue": "HELLBLAU",
+ "colorsCyan": "CYAN",
+ "dialogAddAccount": "Konto hinzufügen",
+ "Gallery": "Galerie",
+ "Categories": "Kategorien",
+ "SHRINE": "SCHREIN",
+ "Basic shopping app": "Einfache Shopping-App",
+ "RALLY": "RALLYE",
+ "CRANE": "KRAN",
+ "Travel app": "Reise-App",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "STIL DER REFERENZEN & MEDIEN"
+}
diff --git a/gallery/lib/l10n/intl_de_AT.arb b/gallery/lib/l10n/intl_de_AT.arb
new file mode 100644
index 0000000..f521b68
--- /dev/null
+++ b/gallery/lib/l10n/intl_de_AT.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Optionen für die Ansicht",
+ "demoOptionsFeatureDescription": "Tippe hier, um die verfügbaren Optionen für diese Demo anzuzeigen.",
+ "demoCodeViewerCopyAll": "ALLES KOPIEREN",
+ "shrineScreenReaderRemoveProductButton": "{product} entfernen",
+ "shrineScreenReaderProductAddToCart": "In den Einkaufswagen",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Einkaufswagen, keine Artikel}=1{Einkaufswagen, 1 Artikel}other{Einkaufswagen, {quantity} Artikel}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Fehler beim Kopieren in die Zwischenablage: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "In die Zwischenablage kopiert.",
+ "craneSleep8SemanticLabel": "Maya-Ruinen auf einer Klippe oberhalb eines Strandes",
+ "craneSleep4SemanticLabel": "Hotel an einem See mit Bergen im Hintergrund",
+ "craneSleep2SemanticLabel": "Zitadelle von Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalet in einer Schneelandschaft mit immergrünen Bäumen",
+ "craneSleep0SemanticLabel": "Overwater-Bungalows",
+ "craneFly13SemanticLabel": "Pool am Meer mit Palmen",
+ "craneFly12SemanticLabel": "Pool mit Palmen",
+ "craneFly11SemanticLabel": "Aus Ziegelsteinen gemauerter Leuchtturm am Meer",
+ "craneFly10SemanticLabel": "Minarette der al-Azhar-Moschee bei Sonnenuntergang",
+ "craneFly9SemanticLabel": "Mann, der sich gegen einen blauen Oldtimer lehnt",
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "craneEat9SemanticLabel": "Café-Theke mit Gebäck",
+ "craneEat2SemanticLabel": "Hamburger",
+ "craneFly5SemanticLabel": "Hotel an einem See mit Bergen im Hintergrund",
+ "demoSelectionControlsSubtitle": "Kästchen, Optionsfelder und Schieberegler",
+ "craneEat10SemanticLabel": "Frau mit riesigem Pastrami-Sandwich",
+ "craneFly4SemanticLabel": "Overwater-Bungalows",
+ "craneEat7SemanticLabel": "Eingang einer Bäckerei",
+ "craneEat6SemanticLabel": "Garnelengericht",
+ "craneEat5SemanticLabel": "Sitzbereich eines künstlerisch eingerichteten Restaurants",
+ "craneEat4SemanticLabel": "Schokoladendessert",
+ "craneEat3SemanticLabel": "Koreanischer Taco",
+ "craneFly3SemanticLabel": "Zitadelle von Machu Picchu",
+ "craneEat1SemanticLabel": "Leere Bar mit Barhockern",
+ "craneEat0SemanticLabel": "Pizza in einem Holzofen",
+ "craneSleep11SemanticLabel": "Taipei 101",
+ "craneSleep10SemanticLabel": "Minarette der al-Azhar-Moschee bei Sonnenuntergang",
+ "craneSleep9SemanticLabel": "Aus Ziegelsteinen gemauerter Leuchtturm am Meer",
+ "craneEat8SemanticLabel": "Teller mit Flusskrebsen",
+ "craneSleep7SemanticLabel": "Bunte Häuser am Praça da Ribeira",
+ "craneSleep6SemanticLabel": "Pool mit Palmen",
+ "craneSleep5SemanticLabel": "Zelt auf einem Feld",
+ "settingsButtonCloseLabel": "Einstellungen schließen",
+ "demoSelectionControlsCheckboxDescription": "Über Kästchen können Nutzer mehrere Optionen gleichzeitig auswählen. Üblicherweise ist der Wert eines Kästchens entweder \"true\" (ausgewählt) oder \"false\" (nicht ausgewählt) – Kästchen mit drei Auswahlmöglichkeiten können jedoch auch den Wert \"null\" haben.",
+ "settingsButtonLabel": "Einstellungen",
+ "demoListsTitle": "Listen",
+ "demoListsSubtitle": "Layouts der scrollbaren Liste",
+ "demoListsDescription": "Eine Zeile in der Liste hat eine feste Höhe und enthält normalerweise Text und ein anführendes bzw. abschließendes Symbol.",
+ "demoOneLineListsTitle": "Eine Zeile",
+ "demoTwoLineListsTitle": "Zwei Zeilen",
+ "demoListsSecondary": "Sekundärer Text",
+ "demoSelectionControlsTitle": "Auswahlsteuerung",
+ "craneFly7SemanticLabel": "Mount Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Kästchen",
+ "craneSleep3SemanticLabel": "Mann, der sich gegen einen blauen Oldtimer lehnt",
+ "demoSelectionControlsRadioTitle": "Optionsfeld",
+ "demoSelectionControlsRadioDescription": "Über Optionsfelder können Nutzer eine Option auswählen. Optionsfelder sind ideal, wenn nur eine einzige Option ausgewählt werden kann, aber alle verfügbaren Auswahlmöglichkeiten auf einen Blick erkennbar sein sollen.",
+ "demoSelectionControlsSwitchTitle": "Schieberegler",
+ "demoSelectionControlsSwitchDescription": "Mit Schiebereglern können Nutzer den Status einzelner Einstellungen ändern. Anhand des verwendeten Inline-Labels sollte man erkennen können, um welche Einstellung es sich handelt und wie der aktuelle Status ist.",
+ "craneFly0SemanticLabel": "Chalet in einer Schneelandschaft mit immergrünen Bäumen",
+ "craneFly1SemanticLabel": "Zelt auf einem Feld",
+ "craneFly2SemanticLabel": "Gebetsfahnen vor einem schneebedeckten Berg",
+ "craneFly6SemanticLabel": "Luftbild des Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Alle Konten anzeigen",
+ "rallyBillAmount": "Rechnung \"{billName}\" in Höhe von {amount} am {date} fällig.",
+ "shrineTooltipCloseCart": "Seite \"Warenkorb\" schließen",
+ "shrineTooltipCloseMenu": "Menü schließen",
+ "shrineTooltipOpenMenu": "Menü öffnen",
+ "shrineTooltipSettings": "Einstellungen",
+ "shrineTooltipSearch": "Suchen",
+ "demoTabsDescription": "Mit Tabs lassen sich Inhalte über Bildschirme, Datensätze und andere Interaktionen hinweg organisieren.",
+ "demoTabsSubtitle": "Tabs mit unabhängig scrollbaren Ansichten",
+ "demoTabsTitle": "Tabs",
+ "rallyBudgetAmount": "Budget \"{budgetName}\" mit einem Gesamtbetrag von {amountTotal} ({amountUsed} verwendet, {amountLeft} verbleibend)",
+ "shrineTooltipRemoveItem": "Element entfernen",
+ "rallyAccountAmount": "Konto \"{accountName}\" {accountNumber} mit einem Kontostand von {amount}.",
+ "rallySeeAllBudgets": "Alle Budgets anzeigen",
+ "rallySeeAllBills": "Alle Rechnungen anzeigen",
+ "craneFormDate": "Datum auswählen",
+ "craneFormOrigin": "Abflugort auswählen",
+ "craneFly2": "Khumbu Valley, Nepal",
+ "craneFly3": "Machu Picchu, Peru",
+ "craneFly4": "Malé, Malediven",
+ "craneFly5": "Vitznau, Schweiz",
+ "craneFly6": "Mexiko-Stadt, Mexiko",
+ "craneFly7": "Mount Rushmore, USA",
+ "settingsTextDirectionLocaleBased": "Abhängig von der Sprache",
+ "craneFly9": "Havanna, Kuba",
+ "craneFly10": "Kairo, Ägypten",
+ "craneFly11": "Lissabon, Portugal",
+ "craneFly12": "Napa, USA",
+ "craneFly13": "Bali, Indonesien",
+ "craneSleep0": "Malé, Malediven",
+ "craneSleep1": "Aspen, USA",
+ "craneSleep2": "Machu Picchu, Peru",
+ "demoCupertinoSegmentedControlTitle": "Segmentierte Steuerung",
+ "craneSleep4": "Vitznau, Schweiz",
+ "craneSleep5": "Big Sur, USA",
+ "craneSleep6": "Napa, USA",
+ "craneSleep7": "Porto, Portugal",
+ "craneSleep8": "Tulum, Mexiko",
+ "craneEat5": "Seoul, Südkorea",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Kompakte Elemente, die für eine Eingabe, ein Attribut oder eine Aktion stehen",
+ "demoActionChipTitle": "Aktions-Chip",
+ "demoActionChipDescription": "Aktions-Chips sind eine Gruppe von Optionen, die eine Aktion im Zusammenhang mit wichtigen Inhalten auslösen. Aktions-Chips sollten in der Benutzeroberfläche dynamisch und kontextorientiert erscheinen.",
+ "demoChoiceChipTitle": "Auswahl-Chip",
+ "demoChoiceChipDescription": "Auswahl-Chips stehen für eine einzelne Auswahl aus einer Gruppe von Optionen. Auswahl-Chips enthalten zugehörigen beschreibenden Text oder zugehörige Kategorien.",
+ "demoFilterChipTitle": "Filter Chip",
+ "demoFilterChipDescription": "Filter-Chips dienen zum Filtern von Inhalten anhand von Tags oder beschreibenden Wörtern.",
+ "demoInputChipTitle": "Eingabe-Chip",
+ "demoInputChipDescription": "Eingabe-Chips stehen für eine komplexe Information, wie eine Entität (Person, Ort oder Gegenstand) oder für Gesprächstext in kompakter Form.",
+ "craneSleep9": "Lissabon, Portugal",
+ "craneEat10": "Lissabon, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Wird verwendet, um aus einer Reihe von Optionen zu wählen, die sich gegenseitig ausschließen. Wenn eine Option in der segmentierten Steuerung ausgewählt ist, wird dadurch die Auswahl für die anderen Optionen aufgehoben.",
+ "chipTurnOnLights": "Beleuchtung einschalten",
+ "chipSmall": "Klein",
+ "chipMedium": "Mittel",
+ "chipLarge": "Groß",
+ "chipElevator": "Fahrstuhl",
+ "chipWasher": "Waschmaschine",
+ "chipFireplace": "Kamin",
+ "chipBiking": "Radfahren",
+ "craneFormDiners": "Personenzahl",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Erhöhe deine potenziellen Steuervergünstigungen! Du kannst 1 nicht zugewiesenen Transaktion Kategorien zuordnen.}other{Erhöhe deine potenziellen Steuervergünstigungen! Du kannst {count} nicht zugewiesenen Transaktionen Kategorien zuordnen.}}",
+ "craneFormTime": "Uhrzeit auswählen",
+ "craneFormLocation": "Ort auswählen",
+ "craneFormTravelers": "Reisende",
+ "craneEat8": "Atlanta, USA",
+ "craneFormDestination": "Reiseziel auswählen",
+ "craneFormDates": "Daten auswählen",
+ "craneFly": "FLIEGEN",
+ "craneSleep": "SCHLAFEN",
+ "craneEat": "ESSEN",
+ "craneFlySubhead": "Flüge nach Reiseziel suchen",
+ "craneSleepSubhead": "Unterkünfte am Zielort finden",
+ "craneEatSubhead": "Restaurants am Zielort finden",
+ "craneFlyStops": "{numberOfStops,plural, =0{Nonstop}=1{1 Zwischenstopp}other{{numberOfStops} Zwischenstopps}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{Keine Unterkünfte verfügbar}=1{1 verfügbare Unterkunft}other{{totalProperties} verfügbare Unterkünfte}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{Keine Restaurants}=1{1 Restaurant}other{{totalRestaurants} Restaurants}}",
+ "craneFly0": "Aspen, USA",
+ "demoCupertinoSegmentedControlSubtitle": "Segmentierte Steuerung im Stil von iOS",
+ "craneSleep10": "Kairo, Ägypten",
+ "craneEat9": "Madrid, Spanien",
+ "craneFly1": "Big Sur, USA",
+ "craneEat7": "Nashville, USA",
+ "craneEat6": "Seattle, USA",
+ "craneFly8": "Singapur",
+ "craneEat4": "Paris, Frankreich",
+ "craneEat3": "Portland, USA",
+ "craneEat2": "Córdoba, Argentinien",
+ "craneEat1": "Dallas, USA",
+ "craneEat0": "Neapel, Italien",
+ "craneSleep11": "Taipeh, Taiwan",
+ "craneSleep3": "Havanna, Kuba",
+ "shrineLogoutButtonCaption": "ABMELDEN",
+ "rallyTitleBills": "RECHNUNGEN",
+ "rallyTitleAccounts": "KONTEN",
+ "shrineProductVagabondSack": "Vagabond-Tasche",
+ "rallyAccountDetailDataInterestYtd": "Zinsen seit Jahresbeginn",
+ "shrineProductWhitneyBelt": "Whitney-Gürtel",
+ "shrineProductGardenStrand": "Garden-Schmuck",
+ "shrineProductStrutEarrings": "Strut-Ohrringe",
+ "shrineProductVarsitySocks": "Varsity-Socken",
+ "shrineProductWeaveKeyring": "Weave-Schlüsselring",
+ "shrineProductGatsbyHat": "Gatsby-Hut",
+ "shrineProductShrugBag": "Shrug-Tasche",
+ "shrineProductGiltDeskTrio": "Goldenes Schreibtischtrio",
+ "shrineProductCopperWireRack": "Kupferdrahtkorb",
+ "shrineProductSootheCeramicSet": "Soothe-Keramikset",
+ "shrineProductHurrahsTeaSet": "Hurrahs-Teeservice",
+ "shrineProductBlueStoneMug": "Blauer Steinkrug",
+ "shrineProductRainwaterTray": "Regenwasserbehälter",
+ "shrineProductChambrayNapkins": "Chambray-Servietten",
+ "shrineProductSucculentPlanters": "Blumentöpfe für Sukkulenten",
+ "shrineProductQuartetTable": "Vierbeiniger Tisch",
+ "shrineProductKitchenQuattro": "Vierteiliges Küchen-Set",
+ "shrineProductClaySweater": "Clay-Pullover",
+ "shrineProductSeaTunic": "Sea-Tunika",
+ "shrineProductPlasterTunic": "Plaster-Tunika",
+ "rallyBudgetCategoryRestaurants": "Restaurants",
+ "shrineProductChambrayShirt": "Chambray-Hemd",
+ "shrineProductSeabreezeSweater": "Seabreeze-Pullover",
+ "shrineProductGentryJacket": "Gentry-Jacke",
+ "shrineProductNavyTrousers": "Navy-Hose",
+ "shrineProductWalterHenleyWhite": "Walter Henley (weiß)",
+ "shrineProductSurfAndPerfShirt": "Surf-and-perf-Hemd",
+ "shrineProductGingerScarf": "Ginger-Schal",
+ "shrineProductRamonaCrossover": "Ramona-Crossover",
+ "shrineProductClassicWhiteCollar": "Klassisch mit weißem Kragen",
+ "shrineProductSunshirtDress": "Sunshirt-Kleid",
+ "rallyAccountDetailDataInterestRate": "Zinssatz",
+ "rallyAccountDetailDataAnnualPercentageYield": "Jährlicher Ertrag in Prozent",
+ "rallyAccountDataVacation": "Urlaub",
+ "shrineProductFineLinesTee": "Fine Lines-T-Shirt",
+ "rallyAccountDataHomeSavings": "Ersparnisse für Zuhause",
+ "rallyAccountDataChecking": "Girokonto",
+ "rallyAccountDetailDataInterestPaidLastYear": "Letztes Jahr gezahlte Zinsen",
+ "rallyAccountDetailDataNextStatement": "Nächster Auszug",
+ "rallyAccountDetailDataAccountOwner": "Kontoinhaber",
+ "rallyBudgetCategoryCoffeeShops": "Cafés",
+ "rallyBudgetCategoryGroceries": "Lebensmittel",
+ "shrineProductCeriseScallopTee": "Cerise-Scallop-T-Shirt",
+ "rallyBudgetCategoryClothing": "Kleidung",
+ "rallySettingsManageAccounts": "Konten verwalten",
+ "rallyAccountDataCarSavings": "Ersparnisse für Auto",
+ "rallySettingsTaxDocuments": "Steuerdokumente",
+ "rallySettingsPasscodeAndTouchId": "Sicherheitscode und Touch ID",
+ "rallySettingsNotifications": "Benachrichtigungen",
+ "rallySettingsPersonalInformation": "Personenbezogene Daten",
+ "rallySettingsPaperlessSettings": "Papierloseinstellungen",
+ "rallySettingsFindAtms": "Geldautomaten finden",
+ "rallySettingsHelp": "Hilfe",
+ "rallySettingsSignOut": "Abmelden",
+ "rallyAccountTotal": "Summe",
+ "rallyBillsDue": "Fällig:",
+ "rallyBudgetLeft": "verbleibend",
+ "rallyAccounts": "Konten",
+ "rallyBills": "Rechnungen",
+ "rallyBudgets": "Budgets",
+ "rallyAlerts": "Benachrichtigungen",
+ "rallySeeAll": "ALLES ANZEIGEN",
+ "rallyFinanceLeft": "VERBLEIBEND",
+ "rallyTitleOverview": "ÜBERSICHT",
+ "shrineProductShoulderRollsTee": "Shoulder-rolls-T-Shirt",
+ "shrineNextButtonCaption": "WEITER",
+ "rallyTitleBudgets": "BUDGETS",
+ "rallyTitleSettings": "EINSTELLUNGEN",
+ "rallyLoginLoginToRally": "In Rally anmelden",
+ "rallyLoginNoAccount": "Du hast noch kein Konto?",
+ "rallyLoginSignUp": "REGISTRIEREN",
+ "rallyLoginUsername": "Nutzername",
+ "rallyLoginPassword": "Passwort",
+ "rallyLoginLabelLogin": "Anmelden",
+ "rallyLoginRememberMe": "Angemeldet bleiben",
+ "rallyLoginButtonLogin": "ANMELDEN",
+ "rallyAlertsMessageHeadsUpShopping": "Hinweis: Du hast {percent} deines Einkaufsbudgets für diesen Monat verbraucht.",
+ "rallyAlertsMessageSpentOnRestaurants": "Du hast diesen Monat {amount} in Restaurants ausgegeben",
+ "rallyAlertsMessageATMFees": "Du hast diesen Monat {amount} Geldautomatengebühren bezahlt",
+ "rallyAlertsMessageCheckingAccount": "Sehr gut! Auf deinem Girokonto ist {percent} mehr Geld als im letzten Monat.",
+ "shrineMenuCaption": "MENÜ",
+ "shrineCategoryNameAll": "ALLE",
+ "shrineCategoryNameAccessories": "ACCESSOIRES",
+ "shrineCategoryNameClothing": "KLEIDUNG",
+ "shrineCategoryNameHome": "ZUHAUSE",
+ "shrineLoginUsernameLabel": "Nutzername",
+ "shrineLoginPasswordLabel": "Passwort",
+ "shrineCancelButtonCaption": "ABBRECHEN",
+ "shrineCartTaxCaption": "Steuern:",
+ "shrineCartPageCaption": "EINKAUFSWAGEN",
+ "shrineProductQuantity": "Anzahl: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{KEINE ELEMENTE}=1{1 ELEMENT}other{{quantity} ELEMENTE}}",
+ "shrineCartClearButtonCaption": "EINKAUFSWAGEN LEEREN",
+ "shrineCartTotalCaption": "SUMME",
+ "shrineCartSubtotalCaption": "Zwischensumme:",
+ "shrineCartShippingCaption": "Versand:",
+ "shrineProductGreySlouchTank": "Graues Slouchy-Tanktop",
+ "shrineProductStellaSunglasses": "Stella-Sonnenbrille",
+ "shrineProductWhitePinstripeShirt": "Weißes Nadelstreifenhemd",
+ "demoTextFieldWhereCanWeReachYou": "Unter welcher Nummer können wir dich erreichen?",
+ "settingsTextDirectionLTR": "Rechtsläufig",
+ "settingsTextScalingLarge": "Groß",
+ "demoBottomSheetHeader": "Kopfzeile",
+ "demoBottomSheetItem": "Artikel: {value}",
+ "demoBottomTextFieldsTitle": "Textfelder",
+ "demoTextFieldTitle": "Textfelder",
+ "demoTextFieldSubtitle": "Einzelne Linie mit Text und Zahlen, die bearbeitet werden können",
+ "demoTextFieldDescription": "Über Textfelder können Nutzer Text auf einer Benutzeroberfläche eingeben. Sie sind in der Regel in Formularen und Dialogfeldern zu finden.",
+ "demoTextFieldShowPasswordLabel": "Passwort anzeigen",
+ "demoTextFieldHidePasswordLabel": "Passwort ausblenden",
+ "demoTextFieldFormErrors": "Bitte behebe vor dem Senden die rot markierten Probleme.",
+ "demoTextFieldNameRequired": "Name ist erforderlich.",
+ "demoTextFieldOnlyAlphabeticalChars": "Bitte gib nur Zeichen aus dem Alphabet ein.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### – Gib eine US-amerikanische Telefonnummer ein.",
+ "demoTextFieldEnterPassword": "Gib ein Passwort ein.",
+ "demoTextFieldPasswordsDoNotMatch": "Die Passwörter stimmen nicht überein",
+ "demoTextFieldWhatDoPeopleCallYou": "Wie lautet dein Name?",
+ "demoTextFieldNameField": "Name*",
+ "demoBottomSheetButtonText": "BLATT AM UNTEREN RAND ANZEIGEN",
+ "demoTextFieldPhoneNumber": "Telefonnummer*",
+ "demoBottomSheetTitle": "Blatt am unteren Rand",
+ "demoTextFieldEmail": "E-Mail-Adresse",
+ "demoTextFieldTellUsAboutYourself": "Erzähl uns etwas über dich (z. B., welcher Tätigkeit du nachgehst oder welche Hobbys du hast)",
+ "demoTextFieldKeepItShort": "Schreib nicht zu viel, das hier ist nur eine Demonstration.",
+ "starterAppGenericButton": "SCHALTFLÄCHE",
+ "demoTextFieldLifeStory": "Lebensgeschichte",
+ "demoTextFieldSalary": "Gehalt",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Nicht mehr als 8 Zeichen.",
+ "demoTextFieldPassword": "Passwort*",
+ "demoTextFieldRetypePassword": "Passwort wiederholen*",
+ "demoTextFieldSubmit": "SENDEN",
+ "demoBottomNavigationSubtitle": "Navigation am unteren Rand mit sich überblendenden Ansichten",
+ "demoBottomSheetAddLabel": "Hinzufügen",
+ "demoBottomSheetModalDescription": "Ein modales Blatt am unteren Rand ist eine Alternative zu einem Menü oder einem Dialogfeld und verhindert, dass Nutzer mit dem Rest der App interagieren.",
+ "demoBottomSheetModalTitle": "Modales Blatt am unteren Rand",
+ "demoBottomSheetPersistentDescription": "Auf einem persistenten Blatt am unteren Rand werden Informationen angezeigt, die den Hauptinhalt der App ergänzen. Ein solches Blatt bleibt immer sichtbar, auch dann, wenn der Nutzer mit anderen Teilen der App interagiert.",
+ "demoBottomSheetPersistentTitle": "Persistentes Blatt am unteren Rand",
+ "demoBottomSheetSubtitle": "Persistente und modale Blätter am unteren Rand",
+ "demoTextFieldNameHasPhoneNumber": "Telefonnummer von {name} ist {phoneNumber}",
+ "buttonText": "SCHALTFLÄCHE",
+ "demoTypographyDescription": "Definitionen für die verschiedenen Typografiestile im Material Design.",
+ "demoTypographySubtitle": "Alle vordefinierten Textstile",
+ "demoTypographyTitle": "Typografie",
+ "demoFullscreenDialogDescription": "Das Attribut \"fullscreenDialog\" gibt an, ob eine eingehende Seite ein modales Vollbild-Dialogfeld ist",
+ "demoFlatButtonDescription": "Eine flache Schaltfläche, die beim Drücken eine Farbreaktion zeigt, aber nicht erhöht dargestellt wird. Du kannst flache Schaltflächen in Symbolleisten, Dialogfeldern und inline mit Abständen verwenden.",
+ "demoBottomNavigationDescription": "Auf Navigationsleisten am unteren Bildschirmrand werden zwischen drei und fünf Zielseiten angezeigt. Jede Zielseite wird durch ein Symbol und eine optionale Beschriftung dargestellt. Wenn ein Navigationssymbol am unteren Rand angetippt wird, wird der Nutzer zur Zielseite auf der obersten Ebene der Navigation weitergeleitet, die diesem Symbol zugeordnet ist.",
+ "demoBottomNavigationSelectedLabel": "Ausgewähltes Label",
+ "demoBottomNavigationPersistentLabels": "Persistente Labels",
+ "starterAppDrawerItem": "Artikel: {value}",
+ "demoTextFieldRequiredField": "* Pflichtfeld",
+ "demoBottomNavigationTitle": "Navigation am unteren Rand",
+ "settingsLightTheme": "Hell",
+ "settingsTheme": "Design",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "Linksläufig",
+ "settingsTextScalingHuge": "Sehr groß",
+ "cupertinoButton": "Schaltfläche",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Klein",
+ "settingsSystemDefault": "System",
+ "settingsTitle": "Einstellungen",
+ "rallyDescription": "Persönliche Finanz-App",
+ "aboutDialogDescription": "Den Quellcode dieser App findest du hier: {value}.",
+ "bottomNavigationCommentsTab": "Kommentare",
+ "starterAppGenericBody": "Text",
+ "starterAppGenericHeadline": "Überschrift",
+ "starterAppGenericSubtitle": "Untertitel",
+ "starterAppGenericTitle": "Titel",
+ "starterAppTooltipSearch": "Suchen",
+ "starterAppTooltipShare": "Teilen",
+ "starterAppTooltipFavorite": "Zu Favoriten hinzufügen",
+ "starterAppTooltipAdd": "Hinzufügen",
+ "bottomNavigationCalendarTab": "Kalender",
+ "starterAppDescription": "Ein responsives Anfangslayout",
+ "starterAppTitle": "Start-App",
+ "aboutFlutterSamplesRepo": "GitHub-Repository mit Flutter-Beispielen",
+ "bottomNavigationContentPlaceholder": "Platzhalter für den Tab \"{title}\"",
+ "bottomNavigationCameraTab": "Kamera",
+ "bottomNavigationAlarmTab": "Weckruf",
+ "bottomNavigationAccountTab": "Konto",
+ "demoTextFieldYourEmailAddress": "Deine E-Mail-Adresse",
+ "demoToggleButtonDescription": "Ein-/Aus-Schaltflächen können verwendet werden, um ähnliche Optionen zu gruppieren. Die Gruppe sollte einen gemeinsamen Container haben, um hervorzuheben, dass die Ein-/Aus-Schaltflächen eine ähnliche Funktion erfüllen.",
+ "colorsGrey": "GRAU",
+ "colorsBrown": "BRAUN",
+ "colorsDeepOrange": "DUNKLES ORANGE",
+ "colorsOrange": "ORANGE",
+ "colorsAmber": "BERNSTEINGELB",
+ "colorsYellow": "GELB",
+ "colorsLime": "GELBGRÜN",
+ "colorsLightGreen": "HELLGRÜN",
+ "colorsGreen": "GRÜN",
+ "homeHeaderGallery": "Galerie",
+ "homeHeaderCategories": "Kategorien",
+ "shrineDescription": "Einzelhandels-App für Mode",
+ "craneDescription": "Personalisierte Reise-App",
+ "homeCategoryReference": "STIL DER REFERENZEN & MEDIEN",
+ "demoInvalidURL": "URL konnte nicht angezeigt werden:",
+ "demoOptionsTooltip": "Optionen",
+ "demoInfoTooltip": "Info",
+ "demoCodeTooltip": "Codebeispiel",
+ "demoDocumentationTooltip": "API-Dokumentation",
+ "demoFullscreenTooltip": "Vollbild",
+ "settingsTextScaling": "Textskalierung",
+ "settingsTextDirection": "Textrichtung",
+ "settingsLocale": "Sprache",
+ "settingsPlatformMechanics": "Funktionsweise der Plattform",
+ "settingsDarkTheme": "Dunkel",
+ "settingsSlowMotion": "Zeitlupe",
+ "settingsAbout": "Über Flutter Gallery",
+ "settingsFeedback": "Feedback geben",
+ "settingsAttribution": "Design von TOASTER, London",
+ "demoButtonTitle": "Schaltflächen",
+ "demoButtonSubtitle": "Flach, erhöht, mit Umriss und mehr",
+ "demoFlatButtonTitle": "Flache Schaltfläche",
+ "demoRaisedButtonDescription": "Erhöhte Schaltflächen verleihen flachen Layouts mehr Dimension. Sie können verwendet werden, um Funktionen auf überladenen oder leeren Flächen hervorzuheben.",
+ "demoRaisedButtonTitle": "Erhöhte Schaltfläche",
+ "demoOutlineButtonTitle": "Schaltfläche mit Umriss",
+ "demoOutlineButtonDescription": "Schaltflächen mit Umriss werden undurchsichtig und erhöht dargestellt, wenn sie gedrückt werden. Sie werden häufig mit erhöhten Schaltflächen kombiniert, um eine alternative oder sekundäre Aktion zu kennzeichnen.",
+ "demoToggleButtonTitle": "Ein-/Aus-Schaltflächen",
+ "colorsTeal": "BLAUGRÜN",
+ "demoFloatingButtonTitle": "Unverankerte Aktionsschaltfläche",
+ "demoFloatingButtonDescription": "Eine unverankerte Aktionsschaltfläche ist eine runde Symbolschaltfläche, die über dem Inhalt schwebt und Zugriff auf eine primäre Aktion der App bietet.",
+ "demoDialogTitle": "Dialogfelder",
+ "demoDialogSubtitle": "Einfach, Benachrichtigung und Vollbild",
+ "demoAlertDialogTitle": "Benachrichtigung",
+ "demoAlertDialogDescription": "Ein Benachrichtigungsdialog informiert Nutzer über Situationen, die ihre Aufmerksamkeit erfordern. Er kann einen Titel und eine Liste mit Aktionen enthalten. Beides ist optional.",
+ "demoAlertTitleDialogTitle": "Benachrichtigung mit Titel",
+ "demoSimpleDialogTitle": "Einfach",
+ "demoSimpleDialogDescription": "Ein einfaches Dialogfeld bietet Nutzern mehrere Auswahlmöglichkeiten. Optional kann über den Auswahlmöglichkeiten ein Titel angezeigt werden.",
+ "demoFullscreenDialogTitle": "Vollbild",
+ "demoCupertinoButtonsTitle": "Schaltflächen",
+ "demoCupertinoButtonsSubtitle": "Schaltflächen im Stil von iOS",
+ "demoCupertinoButtonsDescription": "Eine Schaltfläche im Stil von iOS. Sie kann Text und/oder ein Symbol enthalten, die bei Berührung aus- und eingeblendet werden. Optional ist auch ein Hintergrund möglich.",
+ "demoCupertinoAlertsTitle": "Benachrichtigungen",
+ "demoCupertinoAlertsSubtitle": "Dialogfelder für Benachrichtigungen im Stil von iOS",
+ "demoCupertinoAlertTitle": "Benachrichtigung",
+ "demoCupertinoAlertDescription": "Ein Benachrichtigungsdialog informiert den Nutzer über Situationen, die seine Aufmerksamkeit erfordern. Optional kann er einen Titel, Inhalt und eine Liste mit Aktionen enthalten. Der Titel wird über dem Inhalt angezeigt, die Aktionen darunter.",
+ "demoCupertinoAlertWithTitleTitle": "Benachrichtigung mit Titel",
+ "demoCupertinoAlertButtonsTitle": "Benachrichtigung mit Schaltflächen",
+ "demoCupertinoAlertButtonsOnlyTitle": "Nur Schaltflächen für Benachrichtigungen",
+ "demoCupertinoActionSheetTitle": "Aktionstabelle",
+ "demoCupertinoActionSheetDescription": "Eine Aktionstabelle ist eine Art von Benachrichtigung, bei der Nutzern zwei oder mehr Auswahlmöglichkeiten zum aktuellen Kontext angezeigt werden. Sie kann einen Titel, eine zusätzliche Nachricht und eine Liste von Aktionen enthalten.",
+ "demoColorsTitle": "Farben",
+ "demoColorsSubtitle": "Alle vordefinierten Farben",
+ "demoColorsDescription": "Farben und Farbmuster, die die Farbpalette von Material Design widerspiegeln.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Erstellen",
+ "dialogSelectedOption": "Deine Auswahl: \"{value}\"",
+ "dialogDiscardTitle": "Entwurf verwerfen?",
+ "dialogLocationTitle": "Standortdienst von Google nutzen?",
+ "dialogLocationDescription": "Die Standortdienste von Google erleichtern die Standortbestimmung durch Apps. Dabei werden anonyme Standortdaten an Google gesendet, auch wenn gerade keine Apps ausgeführt werden.",
+ "dialogCancel": "ABBRECHEN",
+ "dialogDiscard": "VERWERFEN",
+ "dialogDisagree": "NICHT ZUSTIMMEN",
+ "dialogAgree": "ZUSTIMMEN",
+ "dialogSetBackup": "Sicherungskonto einrichten",
+ "colorsBlueGrey": "BLAUGRAU",
+ "dialogShow": "DIALOGFELD ANZEIGEN",
+ "dialogFullscreenTitle": "Vollbild-Dialogfeld",
+ "dialogFullscreenSave": "SPEICHERN",
+ "dialogFullscreenDescription": "Demo eines Vollbild-Dialogfelds",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Mit Hintergrund",
+ "cupertinoAlertCancel": "Abbrechen",
+ "cupertinoAlertDiscard": "Verwerfen",
+ "cupertinoAlertLocationTitle": "Maps erlauben, während der Nutzung der App auf deinen Standort zuzugreifen?",
+ "cupertinoAlertLocationDescription": "Dein aktueller Standort wird auf der Karte angezeigt und für Wegbeschreibungen, Suchergebnisse für Dinge in der Nähe und zur Einschätzung von Fahrtzeiten verwendet.",
+ "cupertinoAlertAllow": "Zulassen",
+ "cupertinoAlertDontAllow": "Nicht zulassen",
+ "cupertinoAlertFavoriteDessert": "Lieblingsdessert auswählen",
+ "cupertinoAlertDessertDescription": "Bitte wähle in der Liste unten dein Lieblingsdessert aus. Mithilfe deiner Auswahl wird die Liste der Restaurantvorschläge in deiner Nähe personalisiert.",
+ "cupertinoAlertCheesecake": "Käsekuchen",
+ "cupertinoAlertTiramisu": "Tiramisu",
+ "cupertinoAlertApplePie": "Apfelkuchen",
+ "cupertinoAlertChocolateBrownie": "Schokoladenbrownie",
+ "cupertinoShowAlert": "Benachrichtigung anzeigen",
+ "colorsRed": "ROT",
+ "colorsPink": "PINK",
+ "colorsPurple": "LILA",
+ "colorsDeepPurple": "DUNKLES LILA",
+ "colorsIndigo": "INDIGO",
+ "colorsBlue": "BLAU",
+ "colorsLightBlue": "HELLBLAU",
+ "colorsCyan": "CYAN",
+ "dialogAddAccount": "Konto hinzufügen",
+ "Gallery": "Galerie",
+ "Categories": "Kategorien",
+ "SHRINE": "SCHREIN",
+ "Basic shopping app": "Einfache Shopping-App",
+ "RALLY": "RALLYE",
+ "CRANE": "KRAN",
+ "Travel app": "Reise-App",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "STIL DER REFERENZEN & MEDIEN"
+}
diff --git a/gallery/lib/l10n/intl_de_CH.arb b/gallery/lib/l10n/intl_de_CH.arb
new file mode 100644
index 0000000..9fd00c4
--- /dev/null
+++ b/gallery/lib/l10n/intl_de_CH.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Optionen für die Ansicht",
+ "demoOptionsFeatureDescription": "Tippe hier, um die verfügbaren Optionen für diese Demo anzuzeigen.",
+ "demoCodeViewerCopyAll": "ALLES KOPIEREN",
+ "shrineScreenReaderRemoveProductButton": "{product} entfernen",
+ "shrineScreenReaderProductAddToCart": "In den Einkaufswagen",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Einkaufswagen, keine Artikel}=1{Einkaufswagen, 1 Artikel}other{Einkaufswagen, {quantity} Artikel}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Fehler beim Kopieren in die Zwischenablage: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "In die Zwischenablage kopiert.",
+ "craneSleep8SemanticLabel": "Maya-Ruinen auf einer Klippe oberhalb eines Strandes",
+ "craneSleep4SemanticLabel": "Hotel an einem See mit Bergen im Hintergrund",
+ "craneSleep2SemanticLabel": "Zitadelle von Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalet in einer Schneelandschaft mit immergrünen Bäumen",
+ "craneSleep0SemanticLabel": "Overwater-Bungalows",
+ "craneFly13SemanticLabel": "Pool am Meer mit Palmen",
+ "craneFly12SemanticLabel": "Pool mit Palmen",
+ "craneFly11SemanticLabel": "Aus Ziegelsteinen gemauerter Leuchtturm am Meer",
+ "craneFly10SemanticLabel": "Minarette der al-Azhar-Moschee bei Sonnenuntergang",
+ "craneFly9SemanticLabel": "Mann, der sich gegen einen blauen Oldtimer lehnt",
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "craneEat9SemanticLabel": "Café-Theke mit Gebäck",
+ "craneEat2SemanticLabel": "Hamburger",
+ "craneFly5SemanticLabel": "Hotel an einem See mit Bergen im Hintergrund",
+ "demoSelectionControlsSubtitle": "Kästchen, Optionsfelder und Schieberegler",
+ "craneEat10SemanticLabel": "Frau mit riesigem Pastrami-Sandwich",
+ "craneFly4SemanticLabel": "Overwater-Bungalows",
+ "craneEat7SemanticLabel": "Eingang einer Bäckerei",
+ "craneEat6SemanticLabel": "Garnelengericht",
+ "craneEat5SemanticLabel": "Sitzbereich eines künstlerisch eingerichteten Restaurants",
+ "craneEat4SemanticLabel": "Schokoladendessert",
+ "craneEat3SemanticLabel": "Koreanischer Taco",
+ "craneFly3SemanticLabel": "Zitadelle von Machu Picchu",
+ "craneEat1SemanticLabel": "Leere Bar mit Barhockern",
+ "craneEat0SemanticLabel": "Pizza in einem Holzofen",
+ "craneSleep11SemanticLabel": "Taipei 101",
+ "craneSleep10SemanticLabel": "Minarette der al-Azhar-Moschee bei Sonnenuntergang",
+ "craneSleep9SemanticLabel": "Aus Ziegelsteinen gemauerter Leuchtturm am Meer",
+ "craneEat8SemanticLabel": "Teller mit Flusskrebsen",
+ "craneSleep7SemanticLabel": "Bunte Häuser am Praça da Ribeira",
+ "craneSleep6SemanticLabel": "Pool mit Palmen",
+ "craneSleep5SemanticLabel": "Zelt auf einem Feld",
+ "settingsButtonCloseLabel": "Einstellungen schliessen",
+ "demoSelectionControlsCheckboxDescription": "Über Kästchen können Nutzer mehrere Optionen gleichzeitig auswählen. Üblicherweise ist der Wert eines Kästchens entweder \"true\" (ausgewählt) oder \"false\" (nicht ausgewählt) – Kästchen mit drei Auswahlmöglichkeiten können jedoch auch den Wert \"null\" haben.",
+ "settingsButtonLabel": "Einstellungen",
+ "demoListsTitle": "Listen",
+ "demoListsSubtitle": "Layouts der scrollbaren Liste",
+ "demoListsDescription": "Eine Zeile in der Liste hat eine feste Höhe und enthält normalerweise Text und ein anführendes bzw. abschliessendes Symbol.",
+ "demoOneLineListsTitle": "Eine Zeile",
+ "demoTwoLineListsTitle": "Zwei Zeilen",
+ "demoListsSecondary": "Sekundärer Text",
+ "demoSelectionControlsTitle": "Auswahlsteuerung",
+ "craneFly7SemanticLabel": "Mount Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Kästchen",
+ "craneSleep3SemanticLabel": "Mann, der sich gegen einen blauen Oldtimer lehnt",
+ "demoSelectionControlsRadioTitle": "Optionsfeld",
+ "demoSelectionControlsRadioDescription": "Über Optionsfelder können Nutzer eine Option auswählen. Optionsfelder sind ideal, wenn nur eine einzige Option ausgewählt werden kann, aber alle verfügbaren Auswahlmöglichkeiten auf einen Blick erkennbar sein sollen.",
+ "demoSelectionControlsSwitchTitle": "Schieberegler",
+ "demoSelectionControlsSwitchDescription": "Mit Schiebereglern können Nutzer den Status einzelner Einstellungen ändern. Anhand des verwendeten Inline-Labels sollte man erkennen können, um welche Einstellung es sich handelt und wie der aktuelle Status ist.",
+ "craneFly0SemanticLabel": "Chalet in einer Schneelandschaft mit immergrünen Bäumen",
+ "craneFly1SemanticLabel": "Zelt auf einem Feld",
+ "craneFly2SemanticLabel": "Gebetsfahnen vor einem schneebedeckten Berg",
+ "craneFly6SemanticLabel": "Luftbild des Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Alle Konten anzeigen",
+ "rallyBillAmount": "Rechnung \"{billName}\" in Höhe von {amount} am {date} fällig.",
+ "shrineTooltipCloseCart": "Seite \"Warenkorb\" schliessen",
+ "shrineTooltipCloseMenu": "Menü schliessen",
+ "shrineTooltipOpenMenu": "Menü öffnen",
+ "shrineTooltipSettings": "Einstellungen",
+ "shrineTooltipSearch": "Suchen",
+ "demoTabsDescription": "Mit Tabs lassen sich Inhalte über Bildschirme, Datensätze und andere Interaktionen hinweg organisieren.",
+ "demoTabsSubtitle": "Tabs mit unabhängig scrollbaren Ansichten",
+ "demoTabsTitle": "Tabs",
+ "rallyBudgetAmount": "Budget \"{budgetName}\" mit einem Gesamtbetrag von {amountTotal} ({amountUsed} verwendet, {amountLeft} verbleibend)",
+ "shrineTooltipRemoveItem": "Element entfernen",
+ "rallyAccountAmount": "Konto \"{accountName}\" {accountNumber} mit einem Kontostand von {amount}.",
+ "rallySeeAllBudgets": "Alle Budgets anzeigen",
+ "rallySeeAllBills": "Alle Rechnungen anzeigen",
+ "craneFormDate": "Datum auswählen",
+ "craneFormOrigin": "Abflugort auswählen",
+ "craneFly2": "Khumbu Valley, Nepal",
+ "craneFly3": "Machu Picchu, Peru",
+ "craneFly4": "Malé, Malediven",
+ "craneFly5": "Vitznau, Schweiz",
+ "craneFly6": "Mexiko-Stadt, Mexiko",
+ "craneFly7": "Mount Rushmore, USA",
+ "settingsTextDirectionLocaleBased": "Abhängig von der Sprache",
+ "craneFly9": "Havanna, Kuba",
+ "craneFly10": "Kairo, Ägypten",
+ "craneFly11": "Lissabon, Portugal",
+ "craneFly12": "Napa, USA",
+ "craneFly13": "Bali, Indonesien",
+ "craneSleep0": "Malé, Malediven",
+ "craneSleep1": "Aspen, USA",
+ "craneSleep2": "Machu Picchu, Peru",
+ "demoCupertinoSegmentedControlTitle": "Segmentierte Steuerung",
+ "craneSleep4": "Vitznau, Schweiz",
+ "craneSleep5": "Big Sur, USA",
+ "craneSleep6": "Napa, USA",
+ "craneSleep7": "Porto, Portugal",
+ "craneSleep8": "Tulum, Mexiko",
+ "craneEat5": "Seoul, Südkorea",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Kompakte Elemente, die für eine Eingabe, ein Attribut oder eine Aktion stehen",
+ "demoActionChipTitle": "Aktions-Chip",
+ "demoActionChipDescription": "Aktions-Chips sind eine Gruppe von Optionen, die eine Aktion im Zusammenhang mit wichtigen Inhalten auslösen. Aktions-Chips sollten in der Benutzeroberfläche dynamisch und kontextorientiert erscheinen.",
+ "demoChoiceChipTitle": "Auswahl-Chip",
+ "demoChoiceChipDescription": "Auswahl-Chips stehen für eine einzelne Auswahl aus einer Gruppe von Optionen. Auswahl-Chips enthalten zugehörigen beschreibenden Text oder zugehörige Kategorien.",
+ "demoFilterChipTitle": "Filter Chip",
+ "demoFilterChipDescription": "Filter-Chips dienen zum Filtern von Inhalten anhand von Tags oder beschreibenden Wörtern.",
+ "demoInputChipTitle": "Eingabe-Chip",
+ "demoInputChipDescription": "Eingabe-Chips stehen für eine komplexe Information, wie eine Entität (Person, Ort oder Gegenstand) oder für Gesprächstext in kompakter Form.",
+ "craneSleep9": "Lissabon, Portugal",
+ "craneEat10": "Lissabon, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Wird verwendet, um aus einer Reihe von Optionen zu wählen, die sich gegenseitig ausschliessen. Wenn eine Option in der segmentierten Steuerung ausgewählt ist, wird dadurch die Auswahl für die anderen Optionen aufgehoben.",
+ "chipTurnOnLights": "Beleuchtung einschalten",
+ "chipSmall": "Klein",
+ "chipMedium": "Mittel",
+ "chipLarge": "Gross",
+ "chipElevator": "Fahrstuhl",
+ "chipWasher": "Waschmaschine",
+ "chipFireplace": "Kamin",
+ "chipBiking": "Radfahren",
+ "craneFormDiners": "Personenzahl",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Erhöhe deine potenziellen Steuervergünstigungen! Du kannst 1 nicht zugewiesenen Transaktion Kategorien zuordnen.}other{Erhöhe deine potenziellen Steuervergünstigungen! Du kannst {count} nicht zugewiesenen Transaktionen Kategorien zuordnen.}}",
+ "craneFormTime": "Uhrzeit auswählen",
+ "craneFormLocation": "Ort auswählen",
+ "craneFormTravelers": "Reisende",
+ "craneEat8": "Atlanta, USA",
+ "craneFormDestination": "Reiseziel auswählen",
+ "craneFormDates": "Daten auswählen",
+ "craneFly": "FLIEGEN",
+ "craneSleep": "SCHLAFEN",
+ "craneEat": "ESSEN",
+ "craneFlySubhead": "Flüge nach Reiseziel suchen",
+ "craneSleepSubhead": "Unterkünfte am Zielort finden",
+ "craneEatSubhead": "Restaurants am Zielort finden",
+ "craneFlyStops": "{numberOfStops,plural, =0{Nonstop}=1{1 Zwischenstopp}other{{numberOfStops} Zwischenstopps}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{Keine Unterkünfte verfügbar}=1{1 verfügbare Unterkunft}other{{totalProperties} verfügbare Unterkünfte}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{Keine Restaurants}=1{1 Restaurant}other{{totalRestaurants} Restaurants}}",
+ "craneFly0": "Aspen, USA",
+ "demoCupertinoSegmentedControlSubtitle": "Segmentierte Steuerung im Stil von iOS",
+ "craneSleep10": "Kairo, Ägypten",
+ "craneEat9": "Madrid, Spanien",
+ "craneFly1": "Big Sur, USA",
+ "craneEat7": "Nashville, USA",
+ "craneEat6": "Seattle, USA",
+ "craneFly8": "Singapur",
+ "craneEat4": "Paris, Frankreich",
+ "craneEat3": "Portland, USA",
+ "craneEat2": "Córdoba, Argentinien",
+ "craneEat1": "Dallas, USA",
+ "craneEat0": "Neapel, Italien",
+ "craneSleep11": "Taipeh, Taiwan",
+ "craneSleep3": "Havanna, Kuba",
+ "shrineLogoutButtonCaption": "ABMELDEN",
+ "rallyTitleBills": "RECHNUNGEN",
+ "rallyTitleAccounts": "KONTEN",
+ "shrineProductVagabondSack": "Vagabond-Tasche",
+ "rallyAccountDetailDataInterestYtd": "Zinsen seit Jahresbeginn",
+ "shrineProductWhitneyBelt": "Whitney-Gürtel",
+ "shrineProductGardenStrand": "Garden-Schmuck",
+ "shrineProductStrutEarrings": "Strut-Ohrringe",
+ "shrineProductVarsitySocks": "Varsity-Socken",
+ "shrineProductWeaveKeyring": "Weave-Schlüsselring",
+ "shrineProductGatsbyHat": "Gatsby-Hut",
+ "shrineProductShrugBag": "Shrug-Tasche",
+ "shrineProductGiltDeskTrio": "Goldenes Schreibtischtrio",
+ "shrineProductCopperWireRack": "Kupferdrahtkorb",
+ "shrineProductSootheCeramicSet": "Soothe-Keramikset",
+ "shrineProductHurrahsTeaSet": "Hurrahs-Teeservice",
+ "shrineProductBlueStoneMug": "Blauer Steinkrug",
+ "shrineProductRainwaterTray": "Regenwasserbehälter",
+ "shrineProductChambrayNapkins": "Chambray-Servietten",
+ "shrineProductSucculentPlanters": "Blumentöpfe für Sukkulenten",
+ "shrineProductQuartetTable": "Vierbeiniger Tisch",
+ "shrineProductKitchenQuattro": "Vierteiliges Küchen-Set",
+ "shrineProductClaySweater": "Clay-Pullover",
+ "shrineProductSeaTunic": "Sea-Tunika",
+ "shrineProductPlasterTunic": "Plaster-Tunika",
+ "rallyBudgetCategoryRestaurants": "Restaurants",
+ "shrineProductChambrayShirt": "Chambray-Hemd",
+ "shrineProductSeabreezeSweater": "Seabreeze-Pullover",
+ "shrineProductGentryJacket": "Gentry-Jacke",
+ "shrineProductNavyTrousers": "Navy-Hose",
+ "shrineProductWalterHenleyWhite": "Walter Henley (weiss)",
+ "shrineProductSurfAndPerfShirt": "Surf-and-perf-Hemd",
+ "shrineProductGingerScarf": "Ginger-Schal",
+ "shrineProductRamonaCrossover": "Ramona-Crossover",
+ "shrineProductClassicWhiteCollar": "Klassisch mit weissem Kragen",
+ "shrineProductSunshirtDress": "Sunshirt-Kleid",
+ "rallyAccountDetailDataInterestRate": "Zinssatz",
+ "rallyAccountDetailDataAnnualPercentageYield": "Jährlicher Ertrag in Prozent",
+ "rallyAccountDataVacation": "Urlaub",
+ "shrineProductFineLinesTee": "Fine Lines-T-Shirt",
+ "rallyAccountDataHomeSavings": "Ersparnisse für Zuhause",
+ "rallyAccountDataChecking": "Girokonto",
+ "rallyAccountDetailDataInterestPaidLastYear": "Letztes Jahr gezahlte Zinsen",
+ "rallyAccountDetailDataNextStatement": "Nächster Auszug",
+ "rallyAccountDetailDataAccountOwner": "Kontoinhaber",
+ "rallyBudgetCategoryCoffeeShops": "Cafés",
+ "rallyBudgetCategoryGroceries": "Lebensmittel",
+ "shrineProductCeriseScallopTee": "Cerise-Scallop-T-Shirt",
+ "rallyBudgetCategoryClothing": "Kleidung",
+ "rallySettingsManageAccounts": "Konten verwalten",
+ "rallyAccountDataCarSavings": "Ersparnisse für Auto",
+ "rallySettingsTaxDocuments": "Steuerdokumente",
+ "rallySettingsPasscodeAndTouchId": "Sicherheitscode und Touch ID",
+ "rallySettingsNotifications": "Benachrichtigungen",
+ "rallySettingsPersonalInformation": "Personenbezogene Daten",
+ "rallySettingsPaperlessSettings": "Papierloseinstellungen",
+ "rallySettingsFindAtms": "Geldautomaten finden",
+ "rallySettingsHelp": "Hilfe",
+ "rallySettingsSignOut": "Abmelden",
+ "rallyAccountTotal": "Summe",
+ "rallyBillsDue": "Fällig:",
+ "rallyBudgetLeft": "verbleibend",
+ "rallyAccounts": "Konten",
+ "rallyBills": "Rechnungen",
+ "rallyBudgets": "Budgets",
+ "rallyAlerts": "Benachrichtigungen",
+ "rallySeeAll": "ALLES ANZEIGEN",
+ "rallyFinanceLeft": "VERBLEIBEND",
+ "rallyTitleOverview": "ÜBERSICHT",
+ "shrineProductShoulderRollsTee": "Shoulder-rolls-T-Shirt",
+ "shrineNextButtonCaption": "WEITER",
+ "rallyTitleBudgets": "BUDGETS",
+ "rallyTitleSettings": "EINSTELLUNGEN",
+ "rallyLoginLoginToRally": "In Rally anmelden",
+ "rallyLoginNoAccount": "Du hast noch kein Konto?",
+ "rallyLoginSignUp": "REGISTRIEREN",
+ "rallyLoginUsername": "Nutzername",
+ "rallyLoginPassword": "Passwort",
+ "rallyLoginLabelLogin": "Anmelden",
+ "rallyLoginRememberMe": "Angemeldet bleiben",
+ "rallyLoginButtonLogin": "ANMELDEN",
+ "rallyAlertsMessageHeadsUpShopping": "Hinweis: Du hast {percent} deines Einkaufsbudgets für diesen Monat verbraucht.",
+ "rallyAlertsMessageSpentOnRestaurants": "Du hast diesen Monat {amount} in Restaurants ausgegeben",
+ "rallyAlertsMessageATMFees": "Du hast diesen Monat {amount} Geldautomatengebühren bezahlt",
+ "rallyAlertsMessageCheckingAccount": "Sehr gut! Auf deinem Girokonto ist {percent} mehr Geld als im letzten Monat.",
+ "shrineMenuCaption": "MENÜ",
+ "shrineCategoryNameAll": "ALLE",
+ "shrineCategoryNameAccessories": "ACCESSOIRES",
+ "shrineCategoryNameClothing": "KLEIDUNG",
+ "shrineCategoryNameHome": "ZUHAUSE",
+ "shrineLoginUsernameLabel": "Nutzername",
+ "shrineLoginPasswordLabel": "Passwort",
+ "shrineCancelButtonCaption": "ABBRECHEN",
+ "shrineCartTaxCaption": "Steuern:",
+ "shrineCartPageCaption": "EINKAUFSWAGEN",
+ "shrineProductQuantity": "Anzahl: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{KEINE ELEMENTE}=1{1 ELEMENT}other{{quantity} ELEMENTE}}",
+ "shrineCartClearButtonCaption": "EINKAUFSWAGEN LEEREN",
+ "shrineCartTotalCaption": "SUMME",
+ "shrineCartSubtotalCaption": "Zwischensumme:",
+ "shrineCartShippingCaption": "Versand:",
+ "shrineProductGreySlouchTank": "Graues Slouchy-Tanktop",
+ "shrineProductStellaSunglasses": "Stella-Sonnenbrille",
+ "shrineProductWhitePinstripeShirt": "Weisses Nadelstreifenhemd",
+ "demoTextFieldWhereCanWeReachYou": "Unter welcher Nummer können wir dich erreichen?",
+ "settingsTextDirectionLTR": "Rechtsläufig",
+ "settingsTextScalingLarge": "Gross",
+ "demoBottomSheetHeader": "Kopfzeile",
+ "demoBottomSheetItem": "Artikel: {value}",
+ "demoBottomTextFieldsTitle": "Textfelder",
+ "demoTextFieldTitle": "Textfelder",
+ "demoTextFieldSubtitle": "Einzelne Linie mit Text und Zahlen, die bearbeitet werden können",
+ "demoTextFieldDescription": "Über Textfelder können Nutzer Text auf einer Benutzeroberfläche eingeben. Sie sind in der Regel in Formularen und Dialogfeldern zu finden.",
+ "demoTextFieldShowPasswordLabel": "Passwort anzeigen",
+ "demoTextFieldHidePasswordLabel": "Passwort ausblenden",
+ "demoTextFieldFormErrors": "Bitte behebe vor dem Senden die rot markierten Probleme.",
+ "demoTextFieldNameRequired": "Name ist erforderlich.",
+ "demoTextFieldOnlyAlphabeticalChars": "Bitte gib nur Zeichen aus dem Alphabet ein.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### – Gib eine US-amerikanische Telefonnummer ein.",
+ "demoTextFieldEnterPassword": "Gib ein Passwort ein.",
+ "demoTextFieldPasswordsDoNotMatch": "Die Passwörter stimmen nicht überein",
+ "demoTextFieldWhatDoPeopleCallYou": "Wie lautet dein Name?",
+ "demoTextFieldNameField": "Name*",
+ "demoBottomSheetButtonText": "BLATT AM UNTEREN RAND ANZEIGEN",
+ "demoTextFieldPhoneNumber": "Telefonnummer*",
+ "demoBottomSheetTitle": "Blatt am unteren Rand",
+ "demoTextFieldEmail": "E-Mail-Adresse",
+ "demoTextFieldTellUsAboutYourself": "Erzähl uns etwas über dich (z. B., welcher Tätigkeit du nachgehst oder welche Hobbys du hast)",
+ "demoTextFieldKeepItShort": "Schreib nicht zu viel, das hier ist nur eine Demonstration.",
+ "starterAppGenericButton": "SCHALTFLÄCHE",
+ "demoTextFieldLifeStory": "Lebensgeschichte",
+ "demoTextFieldSalary": "Gehalt",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Nicht mehr als 8 Zeichen.",
+ "demoTextFieldPassword": "Passwort*",
+ "demoTextFieldRetypePassword": "Passwort wiederholen*",
+ "demoTextFieldSubmit": "SENDEN",
+ "demoBottomNavigationSubtitle": "Navigation am unteren Rand mit sich überblendenden Ansichten",
+ "demoBottomSheetAddLabel": "Hinzufügen",
+ "demoBottomSheetModalDescription": "Ein modales Blatt am unteren Rand ist eine Alternative zu einem Menü oder einem Dialogfeld und verhindert, dass Nutzer mit dem Rest der App interagieren.",
+ "demoBottomSheetModalTitle": "Modales Blatt am unteren Rand",
+ "demoBottomSheetPersistentDescription": "Auf einem persistenten Blatt am unteren Rand werden Informationen angezeigt, die den Hauptinhalt der App ergänzen. Ein solches Blatt bleibt immer sichtbar, auch dann, wenn der Nutzer mit anderen Teilen der App interagiert.",
+ "demoBottomSheetPersistentTitle": "Persistentes Blatt am unteren Rand",
+ "demoBottomSheetSubtitle": "Persistente und modale Blätter am unteren Rand",
+ "demoTextFieldNameHasPhoneNumber": "Telefonnummer von {name} ist {phoneNumber}",
+ "buttonText": "SCHALTFLÄCHE",
+ "demoTypographyDescription": "Definitionen für die verschiedenen Typografiestile im Material Design.",
+ "demoTypographySubtitle": "Alle vordefinierten Textstile",
+ "demoTypographyTitle": "Typografie",
+ "demoFullscreenDialogDescription": "Das Attribut \"fullscreenDialog\" gibt an, ob eine eingehende Seite ein modales Vollbild-Dialogfeld ist",
+ "demoFlatButtonDescription": "Eine flache Schaltfläche, die beim Drücken eine Farbreaktion zeigt, aber nicht erhöht dargestellt wird. Du kannst flache Schaltflächen in Symbolleisten, Dialogfeldern und inline mit Abständen verwenden.",
+ "demoBottomNavigationDescription": "Auf Navigationsleisten am unteren Bildschirmrand werden zwischen drei und fünf Zielseiten angezeigt. Jede Zielseite wird durch ein Symbol und eine optionale Beschriftung dargestellt. Wenn ein Navigationssymbol am unteren Rand angetippt wird, wird der Nutzer zur Zielseite auf der obersten Ebene der Navigation weitergeleitet, die diesem Symbol zugeordnet ist.",
+ "demoBottomNavigationSelectedLabel": "Ausgewähltes Label",
+ "demoBottomNavigationPersistentLabels": "Persistente Labels",
+ "starterAppDrawerItem": "Artikel: {value}",
+ "demoTextFieldRequiredField": "* Pflichtfeld",
+ "demoBottomNavigationTitle": "Navigation am unteren Rand",
+ "settingsLightTheme": "Hell",
+ "settingsTheme": "Design",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "Linksläufig",
+ "settingsTextScalingHuge": "Sehr gross",
+ "cupertinoButton": "Schaltfläche",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Klein",
+ "settingsSystemDefault": "System",
+ "settingsTitle": "Einstellungen",
+ "rallyDescription": "Persönliche Finanz-App",
+ "aboutDialogDescription": "Den Quellcode dieser App findest du hier: {value}.",
+ "bottomNavigationCommentsTab": "Kommentare",
+ "starterAppGenericBody": "Text",
+ "starterAppGenericHeadline": "Überschrift",
+ "starterAppGenericSubtitle": "Untertitel",
+ "starterAppGenericTitle": "Titel",
+ "starterAppTooltipSearch": "Suchen",
+ "starterAppTooltipShare": "Teilen",
+ "starterAppTooltipFavorite": "Zu Favoriten hinzufügen",
+ "starterAppTooltipAdd": "Hinzufügen",
+ "bottomNavigationCalendarTab": "Kalender",
+ "starterAppDescription": "Ein responsives Anfangslayout",
+ "starterAppTitle": "Start-App",
+ "aboutFlutterSamplesRepo": "GitHub-Repository mit Flutter-Beispielen",
+ "bottomNavigationContentPlaceholder": "Platzhalter für den Tab \"{title}\"",
+ "bottomNavigationCameraTab": "Kamera",
+ "bottomNavigationAlarmTab": "Weckruf",
+ "bottomNavigationAccountTab": "Konto",
+ "demoTextFieldYourEmailAddress": "Deine E-Mail-Adresse",
+ "demoToggleButtonDescription": "Ein-/Aus-Schaltflächen können verwendet werden, um ähnliche Optionen zu gruppieren. Die Gruppe sollte einen gemeinsamen Container haben, um hervorzuheben, dass die Ein-/Aus-Schaltflächen eine ähnliche Funktion erfüllen.",
+ "colorsGrey": "GRAU",
+ "colorsBrown": "BRAUN",
+ "colorsDeepOrange": "DUNKLES ORANGE",
+ "colorsOrange": "ORANGE",
+ "colorsAmber": "BERNSTEINGELB",
+ "colorsYellow": "GELB",
+ "colorsLime": "GELBGRÜN",
+ "colorsLightGreen": "HELLGRÜN",
+ "colorsGreen": "GRÜN",
+ "homeHeaderGallery": "Galerie",
+ "homeHeaderCategories": "Kategorien",
+ "shrineDescription": "Einzelhandels-App für Mode",
+ "craneDescription": "Personalisierte Reise-App",
+ "homeCategoryReference": "STIL DER REFERENZEN & MEDIEN",
+ "demoInvalidURL": "URL konnte nicht angezeigt werden:",
+ "demoOptionsTooltip": "Optionen",
+ "demoInfoTooltip": "Info",
+ "demoCodeTooltip": "Codebeispiel",
+ "demoDocumentationTooltip": "API-Dokumentation",
+ "demoFullscreenTooltip": "Vollbild",
+ "settingsTextScaling": "Textskalierung",
+ "settingsTextDirection": "Textrichtung",
+ "settingsLocale": "Sprache",
+ "settingsPlatformMechanics": "Funktionsweise der Plattform",
+ "settingsDarkTheme": "Dunkel",
+ "settingsSlowMotion": "Zeitlupe",
+ "settingsAbout": "Über Flutter Gallery",
+ "settingsFeedback": "Feedback geben",
+ "settingsAttribution": "Design von TOASTER, London",
+ "demoButtonTitle": "Schaltflächen",
+ "demoButtonSubtitle": "Flach, erhöht, mit Umriss und mehr",
+ "demoFlatButtonTitle": "Flache Schaltfläche",
+ "demoRaisedButtonDescription": "Erhöhte Schaltflächen verleihen flachen Layouts mehr Dimension. Sie können verwendet werden, um Funktionen auf überladenen oder leeren Flächen hervorzuheben.",
+ "demoRaisedButtonTitle": "Erhöhte Schaltfläche",
+ "demoOutlineButtonTitle": "Schaltfläche mit Umriss",
+ "demoOutlineButtonDescription": "Schaltflächen mit Umriss werden undurchsichtig und erhöht dargestellt, wenn sie gedrückt werden. Sie werden häufig mit erhöhten Schaltflächen kombiniert, um eine alternative oder sekundäre Aktion zu kennzeichnen.",
+ "demoToggleButtonTitle": "Ein-/Aus-Schaltflächen",
+ "colorsTeal": "BLAUGRÜN",
+ "demoFloatingButtonTitle": "Unverankerte Aktionsschaltfläche",
+ "demoFloatingButtonDescription": "Eine unverankerte Aktionsschaltfläche ist eine runde Symbolschaltfläche, die über dem Inhalt schwebt und Zugriff auf eine primäre Aktion der App bietet.",
+ "demoDialogTitle": "Dialogfelder",
+ "demoDialogSubtitle": "Einfach, Benachrichtigung und Vollbild",
+ "demoAlertDialogTitle": "Benachrichtigung",
+ "demoAlertDialogDescription": "Ein Benachrichtigungsdialog informiert Nutzer über Situationen, die ihre Aufmerksamkeit erfordern. Er kann einen Titel und eine Liste mit Aktionen enthalten. Beides ist optional.",
+ "demoAlertTitleDialogTitle": "Benachrichtigung mit Titel",
+ "demoSimpleDialogTitle": "Einfach",
+ "demoSimpleDialogDescription": "Ein einfaches Dialogfeld bietet Nutzern mehrere Auswahlmöglichkeiten. Optional kann über den Auswahlmöglichkeiten ein Titel angezeigt werden.",
+ "demoFullscreenDialogTitle": "Vollbild",
+ "demoCupertinoButtonsTitle": "Schaltflächen",
+ "demoCupertinoButtonsSubtitle": "Schaltflächen im Stil von iOS",
+ "demoCupertinoButtonsDescription": "Eine Schaltfläche im Stil von iOS. Sie kann Text und/oder ein Symbol enthalten, die bei Berührung aus- und eingeblendet werden. Optional ist auch ein Hintergrund möglich.",
+ "demoCupertinoAlertsTitle": "Benachrichtigungen",
+ "demoCupertinoAlertsSubtitle": "Dialogfelder für Benachrichtigungen im Stil von iOS",
+ "demoCupertinoAlertTitle": "Benachrichtigung",
+ "demoCupertinoAlertDescription": "Ein Benachrichtigungsdialog informiert den Nutzer über Situationen, die seine Aufmerksamkeit erfordern. Optional kann er einen Titel, Inhalt und eine Liste mit Aktionen enthalten. Der Titel wird über dem Inhalt angezeigt, die Aktionen darunter.",
+ "demoCupertinoAlertWithTitleTitle": "Benachrichtigung mit Titel",
+ "demoCupertinoAlertButtonsTitle": "Benachrichtigung mit Schaltflächen",
+ "demoCupertinoAlertButtonsOnlyTitle": "Nur Schaltflächen für Benachrichtigungen",
+ "demoCupertinoActionSheetTitle": "Aktionstabelle",
+ "demoCupertinoActionSheetDescription": "Eine Aktionstabelle ist eine Art von Benachrichtigung, bei der Nutzern zwei oder mehr Auswahlmöglichkeiten zum aktuellen Kontext angezeigt werden. Sie kann einen Titel, eine zusätzliche Nachricht und eine Liste von Aktionen enthalten.",
+ "demoColorsTitle": "Farben",
+ "demoColorsSubtitle": "Alle vordefinierten Farben",
+ "demoColorsDescription": "Farben und Farbmuster, die die Farbpalette von Material Design widerspiegeln.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Erstellen",
+ "dialogSelectedOption": "Deine Auswahl: \"{value}\"",
+ "dialogDiscardTitle": "Entwurf verwerfen?",
+ "dialogLocationTitle": "Standortdienst von Google nutzen?",
+ "dialogLocationDescription": "Die Standortdienste von Google erleichtern die Standortbestimmung durch Apps. Dabei werden anonyme Standortdaten an Google gesendet, auch wenn gerade keine Apps ausgeführt werden.",
+ "dialogCancel": "ABBRECHEN",
+ "dialogDiscard": "VERWERFEN",
+ "dialogDisagree": "NICHT ZUSTIMMEN",
+ "dialogAgree": "ZUSTIMMEN",
+ "dialogSetBackup": "Sicherungskonto einrichten",
+ "colorsBlueGrey": "BLAUGRAU",
+ "dialogShow": "DIALOGFELD ANZEIGEN",
+ "dialogFullscreenTitle": "Vollbild-Dialogfeld",
+ "dialogFullscreenSave": "SPEICHERN",
+ "dialogFullscreenDescription": "Demo eines Vollbild-Dialogfelds",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Mit Hintergrund",
+ "cupertinoAlertCancel": "Abbrechen",
+ "cupertinoAlertDiscard": "Verwerfen",
+ "cupertinoAlertLocationTitle": "Maps erlauben, während der Nutzung der App auf deinen Standort zuzugreifen?",
+ "cupertinoAlertLocationDescription": "Dein aktueller Standort wird auf der Karte angezeigt und für Wegbeschreibungen, Suchergebnisse für Dinge in der Nähe und zur Einschätzung von Fahrtzeiten verwendet.",
+ "cupertinoAlertAllow": "Zulassen",
+ "cupertinoAlertDontAllow": "Nicht zulassen",
+ "cupertinoAlertFavoriteDessert": "Lieblingsdessert auswählen",
+ "cupertinoAlertDessertDescription": "Bitte wähle in der Liste unten dein Lieblingsdessert aus. Mithilfe deiner Auswahl wird die Liste der Restaurantvorschläge in deiner Nähe personalisiert.",
+ "cupertinoAlertCheesecake": "Käsekuchen",
+ "cupertinoAlertTiramisu": "Tiramisu",
+ "cupertinoAlertApplePie": "Apfelkuchen",
+ "cupertinoAlertChocolateBrownie": "Schokoladenbrownie",
+ "cupertinoShowAlert": "Benachrichtigung anzeigen",
+ "colorsRed": "ROT",
+ "colorsPink": "PINK",
+ "colorsPurple": "LILA",
+ "colorsDeepPurple": "DUNKLES LILA",
+ "colorsIndigo": "INDIGO",
+ "colorsBlue": "BLAU",
+ "colorsLightBlue": "HELLBLAU",
+ "colorsCyan": "CYAN",
+ "dialogAddAccount": "Konto hinzufügen",
+ "Gallery": "Galerie",
+ "Categories": "Kategorien",
+ "SHRINE": "SCHREIN",
+ "Basic shopping app": "Einfache Shopping-App",
+ "RALLY": "RALLYE",
+ "CRANE": "KRAN",
+ "Travel app": "Reise-App",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "STIL DER REFERENZEN & MEDIEN"
+}
diff --git a/gallery/lib/l10n/intl_el.arb b/gallery/lib/l10n/intl_el.arb
new file mode 100644
index 0000000..f950438
--- /dev/null
+++ b/gallery/lib/l10n/intl_el.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Επιλογές προβολής",
+ "demoOptionsFeatureDescription": "Πατήστε εδώ για να δείτε διαθέσιμες επιλογές για αυτήν την επίδειξη.",
+ "demoCodeViewerCopyAll": "ΑΝΤΙΓΡΑΦΗ ΟΛΩΝ",
+ "shrineScreenReaderRemoveProductButton": "Κατάργηση {product}",
+ "shrineScreenReaderProductAddToCart": "Προσθήκη στο καλάθι",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Καλάθι αγορών, κανένα στοιχείο}=1{Καλάθι αγορών, 1 στοιχείο}other{Καλάθι αγορών, {quantity} στοιχεία}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Η αντιγραφή στο πρόχειρο απέτυχε: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Αντιγράφηκε στο πρόχειρο.",
+ "craneSleep8SemanticLabel": "Ερείπια των Μάγια σε έναν γκρεμό πάνω από μια παραλία",
+ "craneSleep4SemanticLabel": "Ξενοδοχείο δίπλα στη λίμνη μπροστά από βουνά",
+ "craneSleep2SemanticLabel": "Φρούριο Μάτσου Πίτσου",
+ "craneSleep1SemanticLabel": "Σαλέ σε χιονισμένο τοπίο με αειθαλή δέντρα",
+ "craneSleep0SemanticLabel": "Μπανγκαλόου πάνω στο νερό",
+ "craneFly13SemanticLabel": "Πισίνα δίπλα στη θάλασσα με φοινικόδεντρα",
+ "craneFly12SemanticLabel": "Λιμνούλα με φοινικόδεντρα",
+ "craneFly11SemanticLabel": "Φάρος από τούβλα στη θάλασσα",
+ "craneFly10SemanticLabel": "Οι πύργοι του τεμένους Αλ-Αζχάρ στο ηλιοβασίλεμα",
+ "craneFly9SemanticLabel": "Άνδρας που ακουμπάει σε αυτοκίνητο αντίκα",
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "craneEat9SemanticLabel": "Πάγκος καφετέριας με αρτοσκευάσματα",
+ "craneEat2SemanticLabel": "Μπέργκερ",
+ "craneFly5SemanticLabel": "Ξενοδοχείο δίπλα στη λίμνη μπροστά από βουνά",
+ "demoSelectionControlsSubtitle": "Πλαίσια ελέγχου, κουμπιά επιλογής και διακόπτες",
+ "craneEat10SemanticLabel": "Γυναίκα που κρατάει ένα τεράστιο σάντουιτς παστράμι",
+ "craneFly4SemanticLabel": "Μπανγκαλόου πάνω στο νερό",
+ "craneEat7SemanticLabel": "Είσοδος φούρνου",
+ "craneEat6SemanticLabel": "Πιάτο με γαρίδες",
+ "craneEat5SemanticLabel": "Χώρος καθήμενων καλλιτεχνικού εστιατορίου",
+ "craneEat4SemanticLabel": "Επιδόρπιο σοκολάτας",
+ "craneEat3SemanticLabel": "Κορεατικό τάκο",
+ "craneFly3SemanticLabel": "Φρούριο Μάτσου Πίτσου",
+ "craneEat1SemanticLabel": "Άδειο μπαρ με σκαμπό εστιατορίου",
+ "craneEat0SemanticLabel": "Πίτσα σε ξυλόφουρνο",
+ "craneSleep11SemanticLabel": "Ουρανοξύστης Taipei 101",
+ "craneSleep10SemanticLabel": "Οι πύργοι του τεμένους Αλ-Αζχάρ στο ηλιοβασίλεμα",
+ "craneSleep9SemanticLabel": "Φάρος από τούβλα στη θάλασσα",
+ "craneEat8SemanticLabel": "Πιάτο με καραβίδες",
+ "craneSleep7SemanticLabel": "Πολύχρωμα διαμερίσματα στην πλατεία Riberia",
+ "craneSleep6SemanticLabel": "Λιμνούλα με φοινικόδεντρα",
+ "craneSleep5SemanticLabel": "Μια σκηνή σε ένα λιβάδι",
+ "settingsButtonCloseLabel": "Κλείσιμο ρυθμίσεων",
+ "demoSelectionControlsCheckboxDescription": "Τα πλαίσια ελέγχου επιτρέπουν στον χρήστη να επιλέξει πολλές επιλογές από ένα σύνολο. Μια τιμή ενός κανονικού πλαισίου ελέγχου είναι είτε true είτε false και η τιμή ενός πλαισίου ελέγχου τριπλής κατάστασης μπορεί, επίσης, να είναι null.",
+ "settingsButtonLabel": "Ρυθμίσεις",
+ "demoListsTitle": "Λίστες",
+ "demoListsSubtitle": "Διατάξεις κυλιόμενων λιστών",
+ "demoListsDescription": "Μία γραμμή σταθερού ύψους που συνήθως περιέχει κείμενο καθώς και ένα εικονίδιο στην αρχή ή στο τέλος.",
+ "demoOneLineListsTitle": "Μία γραμμή",
+ "demoTwoLineListsTitle": "Δύο γραμμές",
+ "demoListsSecondary": "Δευτερεύον κείμενο",
+ "demoSelectionControlsTitle": "Στοιχεία ελέγχου επιλογής",
+ "craneFly7SemanticLabel": "Όρος Ράσμορ",
+ "demoSelectionControlsCheckboxTitle": "Πλαίσιο ελέγχου",
+ "craneSleep3SemanticLabel": "Άνδρας που ακουμπάει σε αυτοκίνητο αντίκα",
+ "demoSelectionControlsRadioTitle": "Ραδιόφωνο",
+ "demoSelectionControlsRadioDescription": "Τα κουμπιά επιλογής επιτρέπουν στον χρήστη να επιλέξει μια επιλογή από ένα σύνολο. Χρησιμοποιήστε τα κουμπιά επιλογής για αποκλειστική επιλογή, εάν πιστεύετε ότι ο χρήστης πρέπει να βλέπει όλες τις διαθέσιμες επιλογές δίπλα-δίπλα.",
+ "demoSelectionControlsSwitchTitle": "Εναλλαγή",
+ "demoSelectionControlsSwitchDescription": "Οι διακόπτες ενεργοποίησης/απενεργοποίησης εναλλάσουν την κατάσταση μιας μεμονωμένης ρύθμισης. Η επιλογή που ελέγχει ο διακόπτης, καθώς και η κατάσταση στην οποία βρίσκεται, θα πρέπει να αποσαφηνίζεται από την αντίστοιχη ενσωματωμένη ετικέτα.",
+ "craneFly0SemanticLabel": "Σαλέ σε χιονισμένο τοπίο με αειθαλή δέντρα",
+ "craneFly1SemanticLabel": "Μια σκηνή σε ένα λιβάδι",
+ "craneFly2SemanticLabel": "Σημαίες προσευχής μπροστά από ένα χιονισμένο βουνό",
+ "craneFly6SemanticLabel": "Αεροφωτογραφία του Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Εμφάνιση όλων των λογαριασμών",
+ "rallyBillAmount": "Λογαριασμός {billName} με προθεσμία στις {date} και ποσό {amount}.",
+ "shrineTooltipCloseCart": "Κλείσιμο καλαθιού",
+ "shrineTooltipCloseMenu": "Κλείσιμο μενού",
+ "shrineTooltipOpenMenu": "Άνοιγμα μενού",
+ "shrineTooltipSettings": "Ρυθμίσεις",
+ "shrineTooltipSearch": "Αναζήτηση",
+ "demoTabsDescription": "Οι καρτέλες οργανώνουν το περιεχόμενο σε διαφορετικές οθόνες, σύνολα δεδομένων και άλλες αλληλεπιδράσεις.",
+ "demoTabsSubtitle": "Καρτέλες με προβολές ανεξάρτητης κύλισης",
+ "demoTabsTitle": "Καρτέλες",
+ "rallyBudgetAmount": "Προϋπολογισμός {budgetName} από τον οποίο έχουν χρησιμοποιηθεί {amountUsed} από το συνολικό ποσό των {amountTotal}, απομένουν {amountLeft}",
+ "shrineTooltipRemoveItem": "Κατάργηση στοιχείου",
+ "rallyAccountAmount": "Λογαριασμός {accountName} με αριθμό {accountNumber} και ποσό {amount}.",
+ "rallySeeAllBudgets": "Εμφάνιση όλων των προϋπολογισμών",
+ "rallySeeAllBills": "Εμφάνιση όλων των λογαριασμών",
+ "craneFormDate": "Επιλογή ημερομηνίας",
+ "craneFormOrigin": "Επιλογή προέλευσης",
+ "craneFly2": "Κοιλάδα Κούμπου, Νεπάλ",
+ "craneFly3": "Μάτσου Πίτσου, Περού",
+ "craneFly4": "Μαλέ, Μαλδίβες",
+ "craneFly5": "Βιτζνάου, Ελβετία",
+ "craneFly6": "Πόλη του Μεξικού, Μεξικό",
+ "craneFly7": "Όρος Ράσμορ, Ηνωμένες Πολιτείες",
+ "settingsTextDirectionLocaleBased": "Με βάση τις τοπικές ρυθμίσεις",
+ "craneFly9": "Αβάνα, Κούβα",
+ "craneFly10": "Κάιρο, Αίγυπτος",
+ "craneFly11": "Λισαβόνα, Πορτογαλία",
+ "craneFly12": "Νάπα, Ηνωμένες Πολιτείες",
+ "craneFly13": "Μπαλί, Ινδονησία",
+ "craneSleep0": "Μαλέ, Μαλδίβες",
+ "craneSleep1": "Άσπεν, Ηνωμένες Πολιτείες",
+ "craneSleep2": "Μάτσου Πίτσου, Περού",
+ "demoCupertinoSegmentedControlTitle": "Τμηματοποιημένος έλεγχος",
+ "craneSleep4": "Βιτζνάου, Ελβετία",
+ "craneSleep5": "Μπιγκ Σερ, Ηνωμένες Πολιτείες",
+ "craneSleep6": "Νάπα, Ηνωμένες Πολιτείες",
+ "craneSleep7": "Πόρτο, Πορτογαλία",
+ "craneSleep8": "Τουλούμ, Μεξικό",
+ "craneEat5": "Σεούλ, Νότια Κορέα",
+ "demoChipTitle": "Τσιπ",
+ "demoChipSubtitle": "Συμπαγή στοιχεία που αντιπροσωπεύουν μια εισαγωγή, ένα χαρακτηριστικό ή μια δράση",
+ "demoActionChipTitle": "Τσιπ δράσης",
+ "demoActionChipDescription": "Τα τσιπ δράσης είναι ένα σύνολο επιλογών που ενεργοποιούν μια δράση που σχετίζεται με το αρχικό περιεχόμενο. Τα τσιπ δράσης θα πρέπει να εμφανίζονται δυναμικά και με βάση τα συμφραζόμενα στη διεπαφή χρήστη.",
+ "demoChoiceChipTitle": "Τσιπ επιλογής",
+ "demoChoiceChipDescription": "Τα τσιπ επιλογής αντιπροσωπεύουν μία επιλογή από ένα σύνολο. Τα τσιπ επιλογής περιέχουν σχετικό περιγραφικό κείμενο ή κατηγορίες.",
+ "demoFilterChipTitle": "Τσιπ φίλτρου",
+ "demoFilterChipDescription": "Τα τσιπ φίλτρου χρησιμοποιούν ετικέτες ή περιγραφικές λέξεις για το φιλτράρισμα περιεχομένου.",
+ "demoInputChipTitle": "Τσιπ εισαγωγής",
+ "demoInputChipDescription": "Τα τσιπ εισαγωγής αντιπροσωπεύουν ένα περίπλοκο τμήμα πληροφοριών, όπως μια οντότητα (άτομο, μέρος ή πράγμα) ή κείμενο συνομιλίας, σε συμπαγή μορφή.",
+ "craneSleep9": "Λισαβόνα, Πορτογαλία",
+ "craneEat10": "Λισαβόνα, Πορτογαλία",
+ "demoCupertinoSegmentedControlDescription": "Χρησιμοποιείται για τον ορισμό μιας επιλογής μέσα από έναν αριθμό επιλογών που αποκλείουν η μία την άλλη. Όταν ορίζεται μία επιλογή στον τμηματοποιημένο έλεγχο, καταργείται ο ορισμός των άλλων επιλογών στον τμηματοποιημένο έλεγχο.",
+ "chipTurnOnLights": "Ενεργοποίηση φωτισμού",
+ "chipSmall": "Μικρό",
+ "chipMedium": "Μέτριο",
+ "chipLarge": "Μεγάλο",
+ "chipElevator": "Ανελκυστήρας",
+ "chipWasher": "Πλυντήριο",
+ "chipFireplace": "Τζάκι",
+ "chipBiking": "Ποδηλασία",
+ "craneFormDiners": "Εστιατόρια",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Αυξήστε την πιθανή έκπτωση φόρου! Εκχωρήστε κατηγορίες σε 1 μη εκχωρημένη συναλλαγή.}other{Αυξήστε την πιθανή έκπτωση φόρου! Εκχωρήστε κατηγορίες σε {count} μη εκχωρημένες συναλλαγές.}}",
+ "craneFormTime": "Επιλογή ώρας",
+ "craneFormLocation": "Επιλογή τοποθεσίας",
+ "craneFormTravelers": "Ταξιδιώτες",
+ "craneEat8": "Ατλάντα, Ηνωμένες Πολιτείες",
+ "craneFormDestination": "Επιλογή προορισμού",
+ "craneFormDates": "Επιλογή ημερομηνιών",
+ "craneFly": "ΠΤΗΣΗ",
+ "craneSleep": "ΥΠΝΟΣ",
+ "craneEat": "ΦΑΓΗΤΟ",
+ "craneFlySubhead": "Αναζητήστε πτήσεις κατά προορισμό",
+ "craneSleepSubhead": "Αναζήτηση ιδιοκτησιών κατά προορισμό",
+ "craneEatSubhead": "Αναζήτηση εστιατορίων κατά προορισμό",
+ "craneFlyStops": "{numberOfStops,plural, =0{Απευθείας}=1{1 στάση}other{{numberOfStops} στάσεις}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{Καμία διαθέσιμη ιδιοκτησία}=1{1 διαθέσιμη ιδιοκτησία}other{{totalProperties} διαθέσιμες ιδιότητες}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{Κανένα εστιατόριο}=1{1 εστιατόριο}other{{totalRestaurants} εστιατόρια}}",
+ "craneFly0": "Άσπεν, Ηνωμένες Πολιτείες",
+ "demoCupertinoSegmentedControlSubtitle": "Τμηματοποιημένος έλεγχος σε στιλ iOS",
+ "craneSleep10": "Κάιρο, Αίγυπτος",
+ "craneEat9": "Μαδρίτη, Ισπανία",
+ "craneFly1": "Μπιγκ Σερ, Ηνωμένες Πολιτείες",
+ "craneEat7": "Νάσβιλ, Ηνωμένες Πολιτείες",
+ "craneEat6": "Σιάτλ, Ηνωμένες Πολιτείες",
+ "craneFly8": "Σιγκαπούρη",
+ "craneEat4": "Παρίσι, Γαλλία",
+ "craneEat3": "Πόρτλαντ, Ηνωμένες Πολιτείες",
+ "craneEat2": "Κόρδοβα, Αργεντινή",
+ "craneEat1": "Ντάλας, Ηνωμένες Πολιτείες",
+ "craneEat0": "Νάπολη, Ιταλία",
+ "craneSleep11": "Ταϊπέι, Ταϊβάν",
+ "craneSleep3": "Αβάνα, Κούβα",
+ "shrineLogoutButtonCaption": "ΑΠΟΣΥΝΔΕΣΗ",
+ "rallyTitleBills": "ΛΟΓΑΡΙΑΣΜΟΙ",
+ "rallyTitleAccounts": "ΛΟΓΑΡΙΑΣΜΟΙ",
+ "shrineProductVagabondSack": "Τσάντα Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Επιτόκιο τρέχοντος έτους",
+ "shrineProductWhitneyBelt": "Ζώνη Whitney",
+ "shrineProductGardenStrand": "Garden strand",
+ "shrineProductStrutEarrings": "Σκουλαρίκια Strut",
+ "shrineProductVarsitySocks": "Κάλτσες Varsity",
+ "shrineProductWeaveKeyring": "Μπρελόκ Weave",
+ "shrineProductGatsbyHat": "Τραγιάσκα Gatsby",
+ "shrineProductShrugBag": "Τσάντα ώμου",
+ "shrineProductGiltDeskTrio": "Σετ τριών επιχρυσωμένων τραπεζιών",
+ "shrineProductCopperWireRack": "Συρμάτινο ράφι από χαλκό",
+ "shrineProductSootheCeramicSet": "Σετ κεραμικών Soothe",
+ "shrineProductHurrahsTeaSet": "Σερβίτσιο τσαγιού Hurrahs",
+ "shrineProductBlueStoneMug": "Κούπα Blue stone",
+ "shrineProductRainwaterTray": "Δοχείο νερού βροχής",
+ "shrineProductChambrayNapkins": "Πετσέτες Chambray",
+ "shrineProductSucculentPlanters": "Γλάστρες παχύφυτων",
+ "shrineProductQuartetTable": "Τραπέζι Quartet",
+ "shrineProductKitchenQuattro": "Τραπέζι κουζίνας quattro",
+ "shrineProductClaySweater": "Πουλόβερ Clay",
+ "shrineProductSeaTunic": "Τουνίκ θαλάσσης",
+ "shrineProductPlasterTunic": "Τουνίκ με σχέδια",
+ "rallyBudgetCategoryRestaurants": "Εστιατόρια",
+ "shrineProductChambrayShirt": "Μπλούζα Chambray",
+ "shrineProductSeabreezeSweater": "Πουλόβερ Seabreeze",
+ "shrineProductGentryJacket": "Μπουφάν Gentry",
+ "shrineProductNavyTrousers": "Παντελόνια Navy",
+ "shrineProductWalterHenleyWhite": "Walter henley (λευκό)",
+ "shrineProductSurfAndPerfShirt": "Μπλούζα Surf and perf",
+ "shrineProductGingerScarf": "Κασκόλ Ginger",
+ "shrineProductRamonaCrossover": "Ramona crossover",
+ "shrineProductClassicWhiteCollar": "Κλασικό στιλ γραφείου",
+ "shrineProductSunshirtDress": "Φόρεμα παραλίας",
+ "rallyAccountDetailDataInterestRate": "Επιτόκιο",
+ "rallyAccountDetailDataAnnualPercentageYield": "Απόδοση ετήσιου ποσοστού",
+ "rallyAccountDataVacation": "Διακοπές",
+ "shrineProductFineLinesTee": "Μπλούζα Fine lines",
+ "rallyAccountDataHomeSavings": "Οικονομίες σπιτιού",
+ "rallyAccountDataChecking": "Τρεχούμενος",
+ "rallyAccountDetailDataInterestPaidLastYear": "Τόκοι που πληρώθηκαν το προηγούμενο έτος",
+ "rallyAccountDetailDataNextStatement": "Επόμενη δήλωση",
+ "rallyAccountDetailDataAccountOwner": "Κάτοχος λογαριασμού",
+ "rallyBudgetCategoryCoffeeShops": "Καφετέριες",
+ "rallyBudgetCategoryGroceries": "Είδη παντοπωλείου",
+ "shrineProductCeriseScallopTee": "Κοντομάνικο Cerise",
+ "rallyBudgetCategoryClothing": "Ρουχισμός",
+ "rallySettingsManageAccounts": "Διαχείριση λογαριασμών",
+ "rallyAccountDataCarSavings": "Οικονομίες αυτοκινήτου",
+ "rallySettingsTaxDocuments": "Φορολογικά έγγραφα",
+ "rallySettingsPasscodeAndTouchId": "Κωδικός πρόσβασης και Touch ID",
+ "rallySettingsNotifications": "Ειδοποιήσεις",
+ "rallySettingsPersonalInformation": "Προσωπικά στοιχεία",
+ "rallySettingsPaperlessSettings": "Ρυθμίσεις Paperless",
+ "rallySettingsFindAtms": "Εύρεση ATM",
+ "rallySettingsHelp": "Βοήθεια",
+ "rallySettingsSignOut": "Αποσύνδεση",
+ "rallyAccountTotal": "Σύνολο",
+ "rallyBillsDue": "Προθεσμία",
+ "rallyBudgetLeft": "Αριστερά",
+ "rallyAccounts": "Λογαριασμοί",
+ "rallyBills": "Λογαριασμοί",
+ "rallyBudgets": "Προϋπολογισμοί",
+ "rallyAlerts": "Ειδοποιήσεις",
+ "rallySeeAll": "ΠΡΟΒΟΛΗ ΟΛΩΝ",
+ "rallyFinanceLeft": "ΑΡΙΣΤΕΡΑ",
+ "rallyTitleOverview": "ΕΠΙΣΚΟΠΗΣΗ",
+ "shrineProductShoulderRollsTee": "Μπλούζα με άνοιγμα στους ώμους",
+ "shrineNextButtonCaption": "ΕΠΟΜΕΝΟ",
+ "rallyTitleBudgets": "ΠΡΟΥΠΟΛΟΓΙΣΜΟΙ",
+ "rallyTitleSettings": "ΡΥΘΜΙΣΕΙΣ",
+ "rallyLoginLoginToRally": "Σύνδεση στην εφαρμογή Rally",
+ "rallyLoginNoAccount": "Δεν έχετε λογαριασμό;",
+ "rallyLoginSignUp": "ΕΓΓΡΑΦΗ",
+ "rallyLoginUsername": "Όνομα χρήστη",
+ "rallyLoginPassword": "Κωδικός πρόσβασης",
+ "rallyLoginLabelLogin": "Σύνδεση",
+ "rallyLoginRememberMe": "Απομνημόνευση των στοιχείων μου",
+ "rallyLoginButtonLogin": "ΣΥΝΔΕΣΗ",
+ "rallyAlertsMessageHeadsUpShopping": "Έχετε υπόψη ότι χρησιμοποιήσατε το {percent} του προϋπολογισμού αγορών σας γι' αυτόν τον μήνα.",
+ "rallyAlertsMessageSpentOnRestaurants": "Δαπανήσατε {amount} σε εστιατόρια αυτήν την εβδομάδα.",
+ "rallyAlertsMessageATMFees": "Δαπανήσατε {amount} σε προμήθειες ATM αυτόν τον μήνα.",
+ "rallyAlertsMessageCheckingAccount": "Συγχαρητήρια! Ο τρεχούμενος λογαριασμός σας παρουσιάζει αύξηση {percent} συγκριτικά με τον προηγούμενο μήνα.",
+ "shrineMenuCaption": "ΜΕΝΟΥ",
+ "shrineCategoryNameAll": "ΟΛΑ",
+ "shrineCategoryNameAccessories": "ΑΞΕΣΟΥΑΡ",
+ "shrineCategoryNameClothing": "ΡΟΥΧΙΣΜΟΣ",
+ "shrineCategoryNameHome": "ΣΠΙΤΙ",
+ "shrineLoginUsernameLabel": "Όνομα χρήστη",
+ "shrineLoginPasswordLabel": "Κωδικός πρόσβασης",
+ "shrineCancelButtonCaption": "ΑΚΥΡΩΣΗ",
+ "shrineCartTaxCaption": "Φόρος:",
+ "shrineCartPageCaption": "ΚΑΛΑΘΙ",
+ "shrineProductQuantity": "Ποσότητα: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{ΚΑΝΕΝΑ ΣΤΟΙΧΕΙΟ}=1{1 ΣΤΟΙΧΕΙΟ}other{{quantity} ΣΤΟΙΧΕΙΑ}}",
+ "shrineCartClearButtonCaption": "ΑΔΕΙΑΣΜΑ ΚΑΛΑΘΙΟΥ",
+ "shrineCartTotalCaption": "ΣΥΝΟΛΟ",
+ "shrineCartSubtotalCaption": "Υποσύνολο:",
+ "shrineCartShippingCaption": "Αποστολή:",
+ "shrineProductGreySlouchTank": "Γκρι αμάνικη μπλούζα",
+ "shrineProductStellaSunglasses": "Γυαλιά ηλίου Stella",
+ "shrineProductWhitePinstripeShirt": "Λευκό ριγέ πουκάμισο",
+ "demoTextFieldWhereCanWeReachYou": "Πώς μπορούμε να επικοινωνήσουμε μαζί σας;",
+ "settingsTextDirectionLTR": "LTR",
+ "settingsTextScalingLarge": "Μεγάλο",
+ "demoBottomSheetHeader": "Κεφαλίδα",
+ "demoBottomSheetItem": "Στοιχείο {value}",
+ "demoBottomTextFieldsTitle": "Πεδία κειμένου",
+ "demoTextFieldTitle": "Πεδία κειμένου",
+ "demoTextFieldSubtitle": "Μονή γραμμή κειμένου και αριθμών με δυνατότητα επεξεργασίας",
+ "demoTextFieldDescription": "Τα πεδία κειμένου επιτρέπουν στους χρήστες να εισάγουν κείμενο σε μια διεπαφή χρήστη. Συνήθως, εμφανίζονται σε φόρμες και παράθυρα διαλόγου.",
+ "demoTextFieldShowPasswordLabel": "Εμφάνιση κωδικού πρόσβασης",
+ "demoTextFieldHidePasswordLabel": "Απόκρυψη κωδικού πρόσβασης",
+ "demoTextFieldFormErrors": "Διορθώστε τα σφάλματα που έχουν επισημανθεί με κόκκινο χρώμα πριν την υποβολή.",
+ "demoTextFieldNameRequired": "Το όνομα είναι υποχρεωτικό.",
+ "demoTextFieldOnlyAlphabeticalChars": "Εισαγάγετε μόνο αλφαβητικούς χαρακτήρες.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Εισαγάγετε έναν αριθμό τηλεφώνου ΗΠΑ.",
+ "demoTextFieldEnterPassword": "Καταχωρίστε έναν κωδικό πρόσβασης.",
+ "demoTextFieldPasswordsDoNotMatch": "Οι κωδικοί πρόσβασης δεν ταιριάζουν",
+ "demoTextFieldWhatDoPeopleCallYou": "Πώς σας λένε;",
+ "demoTextFieldNameField": "Όνομα*",
+ "demoBottomSheetButtonText": "ΕΜΦΑΝΙΣΗ ΦΥΛΛΟΥ ΚΑΤΩ ΜΕΡΟΥΣ",
+ "demoTextFieldPhoneNumber": "Αριθμός τηλεφώνου*",
+ "demoBottomSheetTitle": "Φύλλο κάτω μέρους",
+ "demoTextFieldEmail": "Διεύθυνση ηλεκτρονικού ταχυδρομείου",
+ "demoTextFieldTellUsAboutYourself": "Πείτε μας για τον εαυτό σας (π.χ., γράψτε με τι ασχολείστε ή ποια είναι τα χόμπι σας)",
+ "demoTextFieldKeepItShort": "Φροντίστε να είστε σύντομοι, αυτή είναι απλώς μια επίδειξη.",
+ "starterAppGenericButton": "ΚΟΥΜΠΙ",
+ "demoTextFieldLifeStory": "Βιογραφία",
+ "demoTextFieldSalary": "Μισθός",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Μέγιστος αριθμός οκτώ χαρακτήρων.",
+ "demoTextFieldPassword": "Κωδικός πρόσβασης*",
+ "demoTextFieldRetypePassword": "Επαναπληκτρολόγηση κωδικού πρόσβασης*",
+ "demoTextFieldSubmit": "ΥΠΟΒΟΛΗ",
+ "demoBottomNavigationSubtitle": "Πλοήγηση κάτω μέρους με προβολές σταδιακής μετάβασης",
+ "demoBottomSheetAddLabel": "Προσθήκη",
+ "demoBottomSheetModalDescription": "Ένα αποκλειστικό φύλλο στο κάτω μέρος αποτελεί εναλλακτική λύση συγκριτικά με ένα μενού ή παράθυρο διαλόγου και αποτρέπει την αλληλεπίδραση του χρήστη με την υπόλοιπη εφαρμογή.",
+ "demoBottomSheetModalTitle": "Αποκλειστικό φύλλο κάτω μέρους",
+ "demoBottomSheetPersistentDescription": "Ένα μόνιμο φύλλο στο κάτω μέρος εμφανίζει πληροφορίες που συμπληρώνουν το κύριο περιεχόμενο της εφαρμογής. Ένα μόνιμο φύλλο στο κάτω μέρος παραμένει ορατό ακόμη και όταν ο χρήστης αλληλεπιδρά με άλλα μέρη της εφαρμογής.",
+ "demoBottomSheetPersistentTitle": "Μόνιμο φύλλο στο κάτω μέρος",
+ "demoBottomSheetSubtitle": "Μόνιμα και αποκλειστικά φύλλα κάτω μέρους",
+ "demoTextFieldNameHasPhoneNumber": "Ο αριθμός τηλεφώνου του χρήστη {name} είναι {phoneNumber}",
+ "buttonText": "ΚΟΥΜΠΙ",
+ "demoTypographyDescription": "Ορισμοί για διάφορα τυπογραφικά στιλ που συναντώνται στο material design.",
+ "demoTypographySubtitle": "Όλα τα προκαθορισμένα στιλ κειμένου",
+ "demoTypographyTitle": "Τυπογραφία",
+ "demoFullscreenDialogDescription": "Η ιδιότητα fullscreenDialog καθορίζει εάν η εισερχόμενη σελίδα αποτελεί ένα παράθυρο διαλόγου σε πλήρη οθόνη.",
+ "demoFlatButtonDescription": "Ένα επίπεδο κουμπί εμφανίζει μια πιτσιλιά μελανιού κατά το πάτημα, χωρίς ανασήκωμα. Χρησιμοποιήστε επίπεδα κουμπιά στις γραμμές εργαλείων, σε παράθυρα διαλόγου και ενσωματωμένα με την αναπλήρωση.",
+ "demoBottomNavigationDescription": "Οι γραμμές πλοήγησης κάτω μέρους εμφανίζουν από τρεις έως πέντε προορισμούς στο κάτω μέρος μιας οθόνης. Κάθε προορισμός αντιπροσωπεύεται από ένα εικονίδιο και μια προαιρετική ετικέτα κειμένου. Με το πάτημα ενός εικονιδίου πλοήγησης στο κάτω μέρος, ο χρήστης μεταφέρεται στον προορισμό της πλοήγησης ανώτερου επιπέδου που συσχετίζεται με αυτό το εικονίδιο.",
+ "demoBottomNavigationSelectedLabel": "Επιλεγμένη ετικέτα",
+ "demoBottomNavigationPersistentLabels": "Μόνιμες ετικέτες",
+ "starterAppDrawerItem": "Στοιχείο {value}",
+ "demoTextFieldRequiredField": "Το * υποδεικνύει απαιτούμενο πεδίο",
+ "demoBottomNavigationTitle": "Πλοήγηση κάτω μέρους",
+ "settingsLightTheme": "Φωτεινό",
+ "settingsTheme": "Θέμα",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "RTL",
+ "settingsTextScalingHuge": "Τεράστιο",
+ "cupertinoButton": "Κουμπί",
+ "settingsTextScalingNormal": "Κανονικό",
+ "settingsTextScalingSmall": "Μικρό",
+ "settingsSystemDefault": "Σύστημα",
+ "settingsTitle": "Ρυθμίσεις",
+ "rallyDescription": "Μια εφαρμογή για προσωπικά οικονομικά",
+ "aboutDialogDescription": "Για να δείτε τον πηγαίο κώδικα για αυτήν την εφαρμογή, επισκεφτείτε το {value}.",
+ "bottomNavigationCommentsTab": "Σχόλια",
+ "starterAppGenericBody": "Σώμα",
+ "starterAppGenericHeadline": "Επικεφαλίδα",
+ "starterAppGenericSubtitle": "Υπότιτλος",
+ "starterAppGenericTitle": "Τίτλος",
+ "starterAppTooltipSearch": "Αναζήτηση",
+ "starterAppTooltipShare": "Κοινοποίηση",
+ "starterAppTooltipFavorite": "Αγαπημένο",
+ "starterAppTooltipAdd": "Προσθήκη",
+ "bottomNavigationCalendarTab": "Ημερολόγιο",
+ "starterAppDescription": "Μια αποκριτική διάταξη για την εφαρμογή Starter",
+ "starterAppTitle": "Εφαρμογή Starter",
+ "aboutFlutterSamplesRepo": "Χώρος φύλαξης Github δειγμάτων Flutter",
+ "bottomNavigationContentPlaceholder": "Placeholder για την καρτέλα {title}",
+ "bottomNavigationCameraTab": "Κάμερα",
+ "bottomNavigationAlarmTab": "Ξυπνητήρι",
+ "bottomNavigationAccountTab": "Λογαριασμός",
+ "demoTextFieldYourEmailAddress": "Η διεύθυνση ηλεκτρονικού ταχυδρομείου σας",
+ "demoToggleButtonDescription": "Μπορείτε να χρησιμοποιήσετε κουμπιά εναλλαγής για να ομαδοποιήσετε τις σχετικές επιλογές. Για να δοθεί έμφαση σε ομάδες σχετικών κουμπιών εναλλαγής, μια ομάδα θα πρέπει να μοιράζεται ένα κοινό κοντέινερ.",
+ "colorsGrey": "ΓΚΡΙ",
+ "colorsBrown": "ΚΑΦΕ",
+ "colorsDeepOrange": "ΒΑΘΥ ΠΟΡΤΟΚΑΛΙ",
+ "colorsOrange": "ΠΟΡΤΟΚΑΛΙ",
+ "colorsAmber": "ΚΕΧΡΙΜΠΑΡΙ",
+ "colorsYellow": "ΚΙΤΡΙΝΟ",
+ "colorsLime": "ΚΙΤΡΙΝΟ",
+ "colorsLightGreen": "ΑΝΟΙΧΤΟ ΠΡΑΣΙΝΟ",
+ "colorsGreen": "ΠΡΑΣΙΝΟ",
+ "homeHeaderGallery": "Συλλογή",
+ "homeHeaderCategories": "Κατηγορίες",
+ "shrineDescription": "Μια μοντέρνα εφαρμογή λιανικής πώλησης",
+ "craneDescription": "Μια εξατομικευμένη εφαρμογή για ταξίδια",
+ "homeCategoryReference": "ΣΤΙΛ ΑΝΑΦΟΡΑΣ ΚΑΙ ΠΟΛΥΜΕΣΑ",
+ "demoInvalidURL": "Δεν ήταν δυνατή η προβολή του URL:",
+ "demoOptionsTooltip": "Επιλογές",
+ "demoInfoTooltip": "Πληροφορίες",
+ "demoCodeTooltip": "Δείγμα κώδικα",
+ "demoDocumentationTooltip": "Τεκμηρίωση API",
+ "demoFullscreenTooltip": "Πλήρης οθόνη",
+ "settingsTextScaling": "Κλιμάκωση κειμένου",
+ "settingsTextDirection": "Κατεύθυνση κειμένου",
+ "settingsLocale": "Τοπικές ρυθμίσεις",
+ "settingsPlatformMechanics": "Μηχανική πλατφόρμας",
+ "settingsDarkTheme": "Σκούρο",
+ "settingsSlowMotion": "Αργή κίνηση",
+ "settingsAbout": "Σχετικά με το Flutter Gallery",
+ "settingsFeedback": "Αποστολή σχολίων",
+ "settingsAttribution": "Σχεδίαση από TOASTER στο Λονδίνο",
+ "demoButtonTitle": "Κουμπιά",
+ "demoButtonSubtitle": "Επίπεδο, ανασηκωμένο, με περίγραμμα και περισσότερα",
+ "demoFlatButtonTitle": "Επίπεδο κουμπί",
+ "demoRaisedButtonDescription": "Τα ανυψωμένα κουμπιά προσθέτουν διάσταση στις κυρίως επίπεδες διατάξεις. Δίνουν έμφαση σε λειτουργίες σε γεμάτους ή μεγάλους χώρους.",
+ "demoRaisedButtonTitle": "Ανασηκωμένο κουμπί",
+ "demoOutlineButtonTitle": "Κουμπί με περίγραμμα",
+ "demoOutlineButtonDescription": "Τα κουμπιά με περίγραμμα γίνονται αδιαφανή και ανυψώνονται κατά το πάτημα. Συχνά συνδυάζονται με ανυψωμένα κουμπιά για να υποδείξουν μια εναλλακτική, δευτερεύουσα ενέργεια.",
+ "demoToggleButtonTitle": "Κουμπιά εναλλαγής",
+ "colorsTeal": "ΓΑΛΑΖΟΠΡΑΣΙΝΟ",
+ "demoFloatingButtonTitle": "Κινούμενο κουμπί ενεργειών",
+ "demoFloatingButtonDescription": "Ένα κινούμενο κουμπί ενεργειών είναι ένα κουμπί με κυκλικό εικονίδιο που κινείται πάνω από το περιεχόμενο για να προωθήσει μια κύρια ενέργεια στην εφαρμογή.",
+ "demoDialogTitle": "Παράθυρα διαλόγου",
+ "demoDialogSubtitle": "Απλό, ειδοποίηση και σε πλήρη οθόνη",
+ "demoAlertDialogTitle": "Ειδοποίηση",
+ "demoAlertDialogDescription": "Ένα παράθυρο διαλόγου ειδοποίησης που ενημερώνει τον χρήστη για καταστάσεις που απαιτούν επιβεβαίωση. Ένα παράθυρο διαλόγου ειδοποίησης με προαιρετικό τίτλο και προαιρετική λίστα ενεργειών.",
+ "demoAlertTitleDialogTitle": "Ειδοποίηση με τίτλο",
+ "demoSimpleDialogTitle": "Απλό",
+ "demoSimpleDialogDescription": "Ένα απλό παράθυρο διαλόγου που προσφέρει στον χρήστη τη δυνατότητα επιλογής μεταξύ διαφόρων επιλογών. Ένα απλό παράθυρο διαλόγου με προαιρετικό τίτλο που εμφανίζεται πάνω από τις επιλογές.",
+ "demoFullscreenDialogTitle": "Πλήρης οθόνη",
+ "demoCupertinoButtonsTitle": "Κουμπιά",
+ "demoCupertinoButtonsSubtitle": "Κουμπιά σε στυλ iOS",
+ "demoCupertinoButtonsDescription": "Ένα κουμπί σε στυλ iOS. Εμφανίζει κείμενο ή/και ένα εικονίδιο που εξαφανίζεται και εμφανίζεται σταδιακά με το άγγιγμα. Μπορεί να έχει φόντο προαιρετικά.",
+ "demoCupertinoAlertsTitle": "Ειδοποιήσεις",
+ "demoCupertinoAlertsSubtitle": "Παράθυρα διαλόγου ειδοποίησης σε στυλ iOS",
+ "demoCupertinoAlertTitle": "Ειδοποίηση",
+ "demoCupertinoAlertDescription": "Ένα παράθυρο διαλόγου ειδοποίησης που ενημερώνει τον χρήστη για καταστάσεις που απαιτούν επιβεβαίωση. Ένα παράθυρο διαλόγου ειδοποίησης με προαιρετικό τίτλο, προαιρετικό περιεχόμενο και προαιρετική λίστα ενεργειών. Ο τίτλος εμφανίζεται πάνω από το περιεχόμενο και οι ενέργειες εμφανίζονται κάτω από το περιεχόμενο.",
+ "demoCupertinoAlertWithTitleTitle": "Ειδοποίηση με τίτλο",
+ "demoCupertinoAlertButtonsTitle": "Ειδοποίηση με κουμπιά",
+ "demoCupertinoAlertButtonsOnlyTitle": "Μόνο κουμπιά ειδοποίησης",
+ "demoCupertinoActionSheetTitle": "Φύλλο ενεργειών",
+ "demoCupertinoActionSheetDescription": "Ένα φύλλο ενεργειών είναι ένα συγκεκριμένο στυλ ειδοποίησης που παρουσιάζει στον χρήστη ένα σύνολο δύο ή περισσότερων επιλογών που σχετίζονται με το τρέχον περιβάλλον. Ένα φύλλο ενεργειών μπορεί να έχει τίτλο, επιπλέον μήνυμα και μια λίστα ενεργειών.",
+ "demoColorsTitle": "Χρώματα",
+ "demoColorsSubtitle": "Όλα τα προκαθορισμένα χρώματα",
+ "demoColorsDescription": "Χρώματα και δείγματα χρώματος που αντιπροσωπεύουν τη χρωματική παλέτα του material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Δημιουργία",
+ "dialogSelectedOption": "Επιλέξατε \"{value}\"",
+ "dialogDiscardTitle": "Απόρριψη πρόχειρου;",
+ "dialogLocationTitle": "Χρήση της υπηρεσίας τοποθεσίας της Google;",
+ "dialogLocationDescription": "Επιτρέψτε στην Google να διευκολύνει τις εφαρμογές να προσδιορίζουν την τοποθεσία σας. Αυτό συνεπάγεται την αποστολή ανώνυμων δεδομένων τοποθεσίας στην Google, ακόμη και όταν δεν εκτελούνται εφαρμογές.",
+ "dialogCancel": "ΑΚΥΡΩΣΗ",
+ "dialogDiscard": "ΑΠΟΡΡΙΨΗ",
+ "dialogDisagree": "ΔΙΑΦΩΝΩ",
+ "dialogAgree": "ΣΥΜΦΩΝΩ",
+ "dialogSetBackup": "Ρύθμιση λογαριασμού δημιουργίας αντιγράφων ασφαλείας",
+ "colorsBlueGrey": "ΜΠΛΕ ΓΚΡΙ",
+ "dialogShow": "ΕΜΦΑΝΙΣΗ ΠΑΡΑΘΥΡΟΥ ΔΙΑΛΟΓΟΥ",
+ "dialogFullscreenTitle": "Παράθυρο διαλόγου σε πλήρη οθόνη",
+ "dialogFullscreenSave": "ΑΠΟΘΗΚΕΥΣΗ",
+ "dialogFullscreenDescription": "Μια επίδειξη παραθύρου διαλόγου σε πλήρη οθόνη",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Με φόντο",
+ "cupertinoAlertCancel": "Ακύρωση",
+ "cupertinoAlertDiscard": "Απόρριψη",
+ "cupertinoAlertLocationTitle": "Να επιτρέπεται στους Χάρτες να έχουν πρόσβαση στην τοποθεσία σας, ενώ χρησιμοποιείτε την εφαρμογή;",
+ "cupertinoAlertLocationDescription": "Η τρέχουσα τοποθεσία σας θα εμφανίζεται στον χάρτη και θα χρησιμοποιείται για εμφάνιση οδηγιών, κοντινών αποτελεσμάτων αναζήτησης και εκτιμώμενη διάρκεια διαδρομής.",
+ "cupertinoAlertAllow": "Να επιτραπεί",
+ "cupertinoAlertDontAllow": "Δεν επιτρέπεται",
+ "cupertinoAlertFavoriteDessert": "Επιλέξτε αγαπημένο επιδόρπιο",
+ "cupertinoAlertDessertDescription": "Επιλέξτε το αγαπημένο σας επιδόρπιο από την παρακάτω λίστα. Η επιλογή σας θα χρησιμοποιηθεί για την προσαρμογή της προτεινόμενης λίστας εστιατορίων στην περιοχή σας.",
+ "cupertinoAlertCheesecake": "Τσίζκεϊκ",
+ "cupertinoAlertTiramisu": "Τιραμισού",
+ "cupertinoAlertApplePie": "Μηλόπιτα",
+ "cupertinoAlertChocolateBrownie": "Σοκολατένιο μπράουνι",
+ "cupertinoShowAlert": "Εμφάνιση ειδοποίησης",
+ "colorsRed": "ΚΟΚΚΙΝΟ",
+ "colorsPink": "ΡΟΖ",
+ "colorsPurple": "ΜΟΒ",
+ "colorsDeepPurple": "ΒΑΘΥ ΜΟΒ",
+ "colorsIndigo": "ΛΟΥΛΑΚΙ",
+ "colorsBlue": "ΜΠΛΕ",
+ "colorsLightBlue": "ΑΝΟΙΧΤΟ ΜΠΛΕ",
+ "colorsCyan": "ΚΥΑΝΟ",
+ "dialogAddAccount": "Προσθήκη λογαριασμού",
+ "Gallery": "Συλλογή",
+ "Categories": "Κατηγορίες",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "Βασική εφαρμογή αγορών",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "Εφαρμογή για ταξίδια",
+ "MATERIAL": "ΥΛΙΚΟ",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ΣΤΙΛ ΑΝΑΦΟΡΑΣ ΚΑΙ ΠΟΛΥΜΕΣΑ"
+}
diff --git a/gallery/lib/l10n/intl_en_AU.arb b/gallery/lib/l10n/intl_en_AU.arb
new file mode 100644
index 0000000..50706f7
--- /dev/null
+++ b/gallery/lib/l10n/intl_en_AU.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "View options",
+ "demoOptionsFeatureDescription": "Tap here to view available options for this demo.",
+ "demoCodeViewerCopyAll": "COPY ALL",
+ "shrineScreenReaderRemoveProductButton": "Remove {product}",
+ "shrineScreenReaderProductAddToCart": "Add to basket",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Shopping basket, no items}=1{Shopping basket, 1 item}other{Shopping basket, {quantity} items}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Failed to copy to clipboard: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Copied to clipboard.",
+ "craneSleep8SemanticLabel": "Mayan ruins on a cliff above a beach",
+ "craneSleep4SemanticLabel": "Lake-side hotel in front of mountains",
+ "craneSleep2SemanticLabel": "Machu Picchu citadel",
+ "craneSleep1SemanticLabel": "Chalet in a snowy landscape with evergreen trees",
+ "craneSleep0SemanticLabel": "Overwater bungalows",
+ "craneFly13SemanticLabel": "Seaside pool with palm trees",
+ "craneFly12SemanticLabel": "Pool with palm trees",
+ "craneFly11SemanticLabel": "Brick lighthouse at sea",
+ "craneFly10SemanticLabel": "Al-Azhar Mosque towers during sunset",
+ "craneFly9SemanticLabel": "Man leaning on an antique blue car",
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "craneEat9SemanticLabel": "Café counter with pastries",
+ "craneEat2SemanticLabel": "Burger",
+ "craneFly5SemanticLabel": "Lake-side hotel in front of mountains",
+ "demoSelectionControlsSubtitle": "Tick boxes, radio buttons and switches",
+ "craneEat10SemanticLabel": "Woman holding huge pastrami sandwich",
+ "craneFly4SemanticLabel": "Overwater bungalows",
+ "craneEat7SemanticLabel": "Bakery entrance",
+ "craneEat6SemanticLabel": "Shrimp dish",
+ "craneEat5SemanticLabel": "Artsy restaurant seating area",
+ "craneEat4SemanticLabel": "Chocolate dessert",
+ "craneEat3SemanticLabel": "Korean taco",
+ "craneFly3SemanticLabel": "Machu Picchu citadel",
+ "craneEat1SemanticLabel": "Empty bar with diner-style stools",
+ "craneEat0SemanticLabel": "Pizza in a wood-fired oven",
+ "craneSleep11SemanticLabel": "Taipei 101 skyscraper",
+ "craneSleep10SemanticLabel": "Al-Azhar Mosque towers during sunset",
+ "craneSleep9SemanticLabel": "Brick lighthouse at sea",
+ "craneEat8SemanticLabel": "Plate of crawfish",
+ "craneSleep7SemanticLabel": "Colourful apartments at Ribeira Square",
+ "craneSleep6SemanticLabel": "Pool with palm trees",
+ "craneSleep5SemanticLabel": "Tent in a field",
+ "settingsButtonCloseLabel": "Close settings",
+ "demoSelectionControlsCheckboxDescription": "Tick boxes allow the user to select multiple options from a set. A normal tick box's value is true or false and a tristate tick box's value can also be null.",
+ "settingsButtonLabel": "Settings",
+ "demoListsTitle": "Lists",
+ "demoListsSubtitle": "Scrolling list layouts",
+ "demoListsDescription": "A single fixed-height row that typically contains some text as well as a leading or trailing icon.",
+ "demoOneLineListsTitle": "One line",
+ "demoTwoLineListsTitle": "Two lines",
+ "demoListsSecondary": "Secondary text",
+ "demoSelectionControlsTitle": "Selection controls",
+ "craneFly7SemanticLabel": "Mount Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Tick box",
+ "craneSleep3SemanticLabel": "Man leaning on an antique blue car",
+ "demoSelectionControlsRadioTitle": "Radio",
+ "demoSelectionControlsRadioDescription": "Radio buttons allow the user to select one option from a set. Use radio buttons for exclusive selection if you think that the user needs to see all available options side by side.",
+ "demoSelectionControlsSwitchTitle": "Switch",
+ "demoSelectionControlsSwitchDescription": "On/off switches toggle the state of a single settings option. The option that the switch controls, as well as the state it’s in, should be made clear from the corresponding inline label.",
+ "craneFly0SemanticLabel": "Chalet in a snowy landscape with evergreen trees",
+ "craneFly1SemanticLabel": "Tent in a field",
+ "craneFly2SemanticLabel": "Prayer flags in front of snowy mountain",
+ "craneFly6SemanticLabel": "Aerial view of Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "See all accounts",
+ "rallyBillAmount": "{billName} bill due {date} for {amount}.",
+ "shrineTooltipCloseCart": "Close basket",
+ "shrineTooltipCloseMenu": "Close menu",
+ "shrineTooltipOpenMenu": "Open menu",
+ "shrineTooltipSettings": "Settings",
+ "shrineTooltipSearch": "Search",
+ "demoTabsDescription": "Tabs organise content across different screens, data sets and other interactions.",
+ "demoTabsSubtitle": "Tabs with independently scrollable views",
+ "demoTabsTitle": "Tabs",
+ "rallyBudgetAmount": "{budgetName} budget with {amountUsed} used of {amountTotal}, {amountLeft} left",
+ "shrineTooltipRemoveItem": "Remove item",
+ "rallyAccountAmount": "{accountName} account {accountNumber} with {amount}.",
+ "rallySeeAllBudgets": "See all budgets",
+ "rallySeeAllBills": "See all bills",
+ "craneFormDate": "Select date",
+ "craneFormOrigin": "Choose origin",
+ "craneFly2": "Khumbu Valley, Nepal",
+ "craneFly3": "Machu Picchu, Peru",
+ "craneFly4": "Malé, Maldives",
+ "craneFly5": "Vitznau, Switzerland",
+ "craneFly6": "Mexico City, Mexico",
+ "craneFly7": "Mount Rushmore, United States",
+ "settingsTextDirectionLocaleBased": "Based on locale",
+ "craneFly9": "Havana, Cuba",
+ "craneFly10": "Cairo, Egypt",
+ "craneFly11": "Lisbon, Portugal",
+ "craneFly12": "Napa, United States",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldives",
+ "craneSleep1": "Aspen, United States",
+ "craneSleep2": "Machu Picchu, Peru",
+ "demoCupertinoSegmentedControlTitle": "Segmented control",
+ "craneSleep4": "Vitznau, Switzerland",
+ "craneSleep5": "Big Sur, United States",
+ "craneSleep6": "Napa, United States",
+ "craneSleep7": "Porto, Portugal",
+ "craneSleep8": "Tulum, Mexico",
+ "craneEat5": "Seoul, South Korea",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Compact elements that represent an input, attribute or action",
+ "demoActionChipTitle": "Action chip",
+ "demoActionChipDescription": "Action chips are a set of options which trigger an action related to primary content. Action chips should appear dynamically and contextually in a UI.",
+ "demoChoiceChipTitle": "Choice chip",
+ "demoChoiceChipDescription": "Choice chips represent a single choice from a set. Choice chips contain related descriptive text or categories.",
+ "demoFilterChipTitle": "Filter chip",
+ "demoFilterChipDescription": "Filter chips use tags or descriptive words as a way to filter content.",
+ "demoInputChipTitle": "Input chip",
+ "demoInputChipDescription": "Input chips represent a complex piece of information, such as an entity (person, place or thing) or conversational text, in a compact form.",
+ "craneSleep9": "Lisbon, Portugal",
+ "craneEat10": "Lisbon, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Used to select between a number of mutually exclusive options. When one option in the segmented control is selected, the other options in the segmented control cease to be selected.",
+ "chipTurnOnLights": "Turn on lights",
+ "chipSmall": "Small",
+ "chipMedium": "Medium",
+ "chipLarge": "Large",
+ "chipElevator": "Lift",
+ "chipWasher": "Washing machine",
+ "chipFireplace": "Fireplace",
+ "chipBiking": "Cycling",
+ "craneFormDiners": "Diners",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Increase your potential tax deduction! Assign categories to 1 unassigned transaction.}other{Increase your potential tax deduction! Assign categories to {count} unassigned transactions.}}",
+ "craneFormTime": "Select time",
+ "craneFormLocation": "Select location",
+ "craneFormTravelers": "Travellers",
+ "craneEat8": "Atlanta, United States",
+ "craneFormDestination": "Choose destination",
+ "craneFormDates": "Select dates",
+ "craneFly": "FLY",
+ "craneSleep": "SLEEP",
+ "craneEat": "EAT",
+ "craneFlySubhead": "Explore flights by destination",
+ "craneSleepSubhead": "Explore properties by destination",
+ "craneEatSubhead": "Explore restaurants by destination",
+ "craneFlyStops": "{numberOfStops,plural, =0{Non-stop}=1{1 stop}other{{numberOfStops} stops}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No available properties}=1{1 available property}other{{totalProperties} available properties}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No restaurants}=1{1 restaurant}other{{totalRestaurants} restaurants}}",
+ "craneFly0": "Aspen, United States",
+ "demoCupertinoSegmentedControlSubtitle": "iOS-style segmented control",
+ "craneSleep10": "Cairo, Egypt",
+ "craneEat9": "Madrid, Spain",
+ "craneFly1": "Big Sur, United States",
+ "craneEat7": "Nashville, United States",
+ "craneEat6": "Seattle, United States",
+ "craneFly8": "Singapore",
+ "craneEat4": "Paris, France",
+ "craneEat3": "Portland, United States",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, United States",
+ "craneEat0": "Naples, Italy",
+ "craneSleep11": "Taipei, Taiwan",
+ "craneSleep3": "Havana, Cuba",
+ "shrineLogoutButtonCaption": "LOGOUT",
+ "rallyTitleBills": "BILLS",
+ "rallyTitleAccounts": "ACCOUNTS",
+ "shrineProductVagabondSack": "Vagabond sack",
+ "rallyAccountDetailDataInterestYtd": "Interest YTD",
+ "shrineProductWhitneyBelt": "Whitney belt",
+ "shrineProductGardenStrand": "Garden strand",
+ "shrineProductStrutEarrings": "Strut earrings",
+ "shrineProductVarsitySocks": "Varsity socks",
+ "shrineProductWeaveKeyring": "Weave keyring",
+ "shrineProductGatsbyHat": "Gatsby hat",
+ "shrineProductShrugBag": "Shrug bag",
+ "shrineProductGiltDeskTrio": "Gilt desk trio",
+ "shrineProductCopperWireRack": "Copper wire rack",
+ "shrineProductSootheCeramicSet": "Soothe ceramic set",
+ "shrineProductHurrahsTeaSet": "Hurrahs tea set",
+ "shrineProductBlueStoneMug": "Blue stone mug",
+ "shrineProductRainwaterTray": "Rainwater tray",
+ "shrineProductChambrayNapkins": "Chambray napkins",
+ "shrineProductSucculentPlanters": "Succulent planters",
+ "shrineProductQuartetTable": "Quartet table",
+ "shrineProductKitchenQuattro": "Kitchen quattro",
+ "shrineProductClaySweater": "Clay sweater",
+ "shrineProductSeaTunic": "Sea tunic",
+ "shrineProductPlasterTunic": "Plaster tunic",
+ "rallyBudgetCategoryRestaurants": "Restaurants",
+ "shrineProductChambrayShirt": "Chambray shirt",
+ "shrineProductSeabreezeSweater": "Seabreeze sweater",
+ "shrineProductGentryJacket": "Gentry jacket",
+ "shrineProductNavyTrousers": "Navy trousers",
+ "shrineProductWalterHenleyWhite": "Walter henley (white)",
+ "shrineProductSurfAndPerfShirt": "Surf and perf shirt",
+ "shrineProductGingerScarf": "Ginger scarf",
+ "shrineProductRamonaCrossover": "Ramona crossover",
+ "shrineProductClassicWhiteCollar": "Classic white collar",
+ "shrineProductSunshirtDress": "Sunshirt dress",
+ "rallyAccountDetailDataInterestRate": "Interest rate",
+ "rallyAccountDetailDataAnnualPercentageYield": "Annual percentage yield",
+ "rallyAccountDataVacation": "Holiday",
+ "shrineProductFineLinesTee": "Fine lines tee",
+ "rallyAccountDataHomeSavings": "Home savings",
+ "rallyAccountDataChecking": "Current",
+ "rallyAccountDetailDataInterestPaidLastYear": "Interest paid last year",
+ "rallyAccountDetailDataNextStatement": "Next statement",
+ "rallyAccountDetailDataAccountOwner": "Account owner",
+ "rallyBudgetCategoryCoffeeShops": "Coffee shops",
+ "rallyBudgetCategoryGroceries": "Groceries",
+ "shrineProductCeriseScallopTee": "Cerise scallop tee",
+ "rallyBudgetCategoryClothing": "Clothing",
+ "rallySettingsManageAccounts": "Manage accounts",
+ "rallyAccountDataCarSavings": "Car savings",
+ "rallySettingsTaxDocuments": "Tax documents",
+ "rallySettingsPasscodeAndTouchId": "Passcode and Touch ID",
+ "rallySettingsNotifications": "Notifications",
+ "rallySettingsPersonalInformation": "Personal information",
+ "rallySettingsPaperlessSettings": "Paperless settings",
+ "rallySettingsFindAtms": "Find ATMs",
+ "rallySettingsHelp": "Help",
+ "rallySettingsSignOut": "Sign out",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Due",
+ "rallyBudgetLeft": "Left",
+ "rallyAccounts": "Accounts",
+ "rallyBills": "Bills",
+ "rallyBudgets": "Budgets",
+ "rallyAlerts": "Alerts",
+ "rallySeeAll": "SEE ALL",
+ "rallyFinanceLeft": "LEFT",
+ "rallyTitleOverview": "OVERVIEW",
+ "shrineProductShoulderRollsTee": "Shoulder rolls tee",
+ "shrineNextButtonCaption": "NEXT",
+ "rallyTitleBudgets": "BUDGETS",
+ "rallyTitleSettings": "SETTINGS",
+ "rallyLoginLoginToRally": "Log in to Rally",
+ "rallyLoginNoAccount": "Don't have an account?",
+ "rallyLoginSignUp": "SIGN UP",
+ "rallyLoginUsername": "Username",
+ "rallyLoginPassword": "Password",
+ "rallyLoginLabelLogin": "Log in",
+ "rallyLoginRememberMe": "Remember me",
+ "rallyLoginButtonLogin": "LOGIN",
+ "rallyAlertsMessageHeadsUpShopping": "Beware: you’ve used up {percent} of your shopping budget for this month.",
+ "rallyAlertsMessageSpentOnRestaurants": "You’ve spent {amount} on restaurants this week.",
+ "rallyAlertsMessageATMFees": "You’ve spent {amount} in ATM fees this month",
+ "rallyAlertsMessageCheckingAccount": "Good work! Your current account is {percent} higher than last month.",
+ "shrineMenuCaption": "MENU",
+ "shrineCategoryNameAll": "ALL",
+ "shrineCategoryNameAccessories": "ACCESSORIES",
+ "shrineCategoryNameClothing": "CLOTHING",
+ "shrineCategoryNameHome": "HOME",
+ "shrineLoginUsernameLabel": "Username",
+ "shrineLoginPasswordLabel": "Password",
+ "shrineCancelButtonCaption": "CANCEL",
+ "shrineCartTaxCaption": "Tax:",
+ "shrineCartPageCaption": "BASKET",
+ "shrineProductQuantity": "Quantity: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{NO ITEMS}=1{1 ITEM}other{{quantity} ITEMS}}",
+ "shrineCartClearButtonCaption": "CLEAR BASKET",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Delivery:",
+ "shrineProductGreySlouchTank": "Grey slouch tank top",
+ "shrineProductStellaSunglasses": "Stella sunglasses",
+ "shrineProductWhitePinstripeShirt": "White pinstripe shirt",
+ "demoTextFieldWhereCanWeReachYou": "Where can we contact you?",
+ "settingsTextDirectionLTR": "LTR",
+ "settingsTextScalingLarge": "Large",
+ "demoBottomSheetHeader": "Header",
+ "demoBottomSheetItem": "Item {value}",
+ "demoBottomTextFieldsTitle": "Text fields",
+ "demoTextFieldTitle": "Text fields",
+ "demoTextFieldSubtitle": "Single line of editable text and numbers",
+ "demoTextFieldDescription": "Text fields allow users to enter text into a UI. They typically appear in forms and dialogues.",
+ "demoTextFieldShowPasswordLabel": "Show password",
+ "demoTextFieldHidePasswordLabel": "Hide password",
+ "demoTextFieldFormErrors": "Please fix the errors in red before submitting.",
+ "demoTextFieldNameRequired": "Name is required.",
+ "demoTextFieldOnlyAlphabeticalChars": "Please enter only alphabetical characters.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### – Enter a US phone number.",
+ "demoTextFieldEnterPassword": "Please enter a password.",
+ "demoTextFieldPasswordsDoNotMatch": "The passwords don't match",
+ "demoTextFieldWhatDoPeopleCallYou": "What do people call you?",
+ "demoTextFieldNameField": "Name*",
+ "demoBottomSheetButtonText": "SHOW BOTTOM SHEET",
+ "demoTextFieldPhoneNumber": "Phone number*",
+ "demoBottomSheetTitle": "Bottom sheet",
+ "demoTextFieldEmail": "Email",
+ "demoTextFieldTellUsAboutYourself": "Tell us about yourself (e.g. write down what you do or what hobbies you have)",
+ "demoTextFieldKeepItShort": "Keep it short, this is just a demo.",
+ "starterAppGenericButton": "BUTTON",
+ "demoTextFieldLifeStory": "Life story",
+ "demoTextFieldSalary": "Salary",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "No more than 8 characters.",
+ "demoTextFieldPassword": "Password*",
+ "demoTextFieldRetypePassword": "Re-type password*",
+ "demoTextFieldSubmit": "SUBMIT",
+ "demoBottomNavigationSubtitle": "Bottom navigation with cross-fading views",
+ "demoBottomSheetAddLabel": "Add",
+ "demoBottomSheetModalDescription": "A modal bottom sheet is an alternative to a menu or a dialogue and prevents the user from interacting with the rest of the app.",
+ "demoBottomSheetModalTitle": "Modal bottom sheet",
+ "demoBottomSheetPersistentDescription": "A persistent bottom sheet shows information that supplements the primary content of the app. A persistent bottom sheet remains visible even when the user interacts with other parts of the app.",
+ "demoBottomSheetPersistentTitle": "Persistent bottom sheet",
+ "demoBottomSheetSubtitle": "Persistent and modal bottom sheets",
+ "demoTextFieldNameHasPhoneNumber": "{name} phone number is {phoneNumber}",
+ "buttonText": "BUTTON",
+ "demoTypographyDescription": "Definitions for the various typographical styles found in Material Design.",
+ "demoTypographySubtitle": "All of the predefined text styles",
+ "demoTypographyTitle": "Typography",
+ "demoFullscreenDialogDescription": "The fullscreenDialog property specifies whether the incoming page is a full-screen modal dialogue",
+ "demoFlatButtonDescription": "A flat button displays an ink splash on press but does not lift. Use flat buttons on toolbars, in dialogues and inline with padding",
+ "demoBottomNavigationDescription": "Bottom navigation bars display three to five destinations at the bottom of a screen. Each destination is represented by an icon and an optional text label. When a bottom navigation icon is tapped, the user is taken to the top-level navigation destination associated with that icon.",
+ "demoBottomNavigationSelectedLabel": "Selected label",
+ "demoBottomNavigationPersistentLabels": "Persistent labels",
+ "starterAppDrawerItem": "Item {value}",
+ "demoTextFieldRequiredField": "* indicates required field",
+ "demoBottomNavigationTitle": "Bottom navigation",
+ "settingsLightTheme": "Light",
+ "settingsTheme": "Theme",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "RTL",
+ "settingsTextScalingHuge": "Huge",
+ "cupertinoButton": "Button",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Small",
+ "settingsSystemDefault": "System",
+ "settingsTitle": "Settings",
+ "rallyDescription": "A personal finance app",
+ "aboutDialogDescription": "To see the source code for this app, please visit the {value}.",
+ "bottomNavigationCommentsTab": "Comments",
+ "starterAppGenericBody": "Body",
+ "starterAppGenericHeadline": "Headline",
+ "starterAppGenericSubtitle": "Subtitle",
+ "starterAppGenericTitle": "Title",
+ "starterAppTooltipSearch": "Search",
+ "starterAppTooltipShare": "Share",
+ "starterAppTooltipFavorite": "Favourite",
+ "starterAppTooltipAdd": "Add",
+ "bottomNavigationCalendarTab": "Calendar",
+ "starterAppDescription": "A responsive starter layout",
+ "starterAppTitle": "Starter app",
+ "aboutFlutterSamplesRepo": "Flutter samples Github repo",
+ "bottomNavigationContentPlaceholder": "Placeholder for {title} tab",
+ "bottomNavigationCameraTab": "Camera",
+ "bottomNavigationAlarmTab": "Alarm",
+ "bottomNavigationAccountTab": "Account",
+ "demoTextFieldYourEmailAddress": "Your email address",
+ "demoToggleButtonDescription": "Toggle buttons can be used to group related options. To emphasise groups of related toggle buttons, a group should share a common container",
+ "colorsGrey": "GREY",
+ "colorsBrown": "BROWN",
+ "colorsDeepOrange": "DEEP ORANGE",
+ "colorsOrange": "ORANGE",
+ "colorsAmber": "AMBER",
+ "colorsYellow": "YELLOW",
+ "colorsLime": "LIME",
+ "colorsLightGreen": "LIGHT GREEN",
+ "colorsGreen": "GREEN",
+ "homeHeaderGallery": "Gallery",
+ "homeHeaderCategories": "Categories",
+ "shrineDescription": "A fashionable retail app",
+ "craneDescription": "A personalised travel app",
+ "homeCategoryReference": "REFERENCE STYLES & MEDIA",
+ "demoInvalidURL": "Couldn't display URL:",
+ "demoOptionsTooltip": "Options",
+ "demoInfoTooltip": "Info",
+ "demoCodeTooltip": "Code Sample",
+ "demoDocumentationTooltip": "API Documentation",
+ "demoFullscreenTooltip": "Full screen",
+ "settingsTextScaling": "Text scaling",
+ "settingsTextDirection": "Text direction",
+ "settingsLocale": "Locale",
+ "settingsPlatformMechanics": "Platform mechanics",
+ "settingsDarkTheme": "Dark",
+ "settingsSlowMotion": "Slow motion",
+ "settingsAbout": "About Flutter Gallery",
+ "settingsFeedback": "Send feedback",
+ "settingsAttribution": "Designed by TOASTER in London",
+ "demoButtonTitle": "Buttons",
+ "demoButtonSubtitle": "Flat, raised, outline and more",
+ "demoFlatButtonTitle": "Flat Button",
+ "demoRaisedButtonDescription": "Raised buttons add dimension to mostly flat layouts. They emphasise functions on busy or wide spaces.",
+ "demoRaisedButtonTitle": "Raised Button",
+ "demoOutlineButtonTitle": "Outline Button",
+ "demoOutlineButtonDescription": "Outline buttons become opaque and elevate when pressed. They are often paired with raised buttons to indicate an alternative, secondary action.",
+ "demoToggleButtonTitle": "Toggle Buttons",
+ "colorsTeal": "TEAL",
+ "demoFloatingButtonTitle": "Floating Action Button",
+ "demoFloatingButtonDescription": "A floating action button is a circular icon button that hovers over content to promote a primary action in the application.",
+ "demoDialogTitle": "Dialogues",
+ "demoDialogSubtitle": "Simple, alert and full-screen",
+ "demoAlertDialogTitle": "Alert",
+ "demoAlertDialogDescription": "An alert dialogue informs the user about situations that require acknowledgement. An alert dialogue has an optional title and an optional list of actions.",
+ "demoAlertTitleDialogTitle": "Alert With Title",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "A simple dialogue offers the user a choice between several options. A simple dialogue has an optional title that is displayed above the choices.",
+ "demoFullscreenDialogTitle": "Full screen",
+ "demoCupertinoButtonsTitle": "Buttons",
+ "demoCupertinoButtonsSubtitle": "iOS-style buttons",
+ "demoCupertinoButtonsDescription": "An iOS-style button. It takes in text and/or an icon that fades out and in on touch. May optionally have a background.",
+ "demoCupertinoAlertsTitle": "Alerts",
+ "demoCupertinoAlertsSubtitle": "iOS-style alert dialogues",
+ "demoCupertinoAlertTitle": "Alert",
+ "demoCupertinoAlertDescription": "An alert dialogue informs the user about situations that require acknowledgement. An alert dialogue has an optional title, optional content and an optional list of actions. The title is displayed above the content and the actions are displayed below the content.",
+ "demoCupertinoAlertWithTitleTitle": "Alert with title",
+ "demoCupertinoAlertButtonsTitle": "Alert With Buttons",
+ "demoCupertinoAlertButtonsOnlyTitle": "Alert Buttons Only",
+ "demoCupertinoActionSheetTitle": "Action Sheet",
+ "demoCupertinoActionSheetDescription": "An action sheet is a specific style of alert that presents the user with a set of two or more choices related to the current context. An action sheet can have a title, an additional message and a list of actions.",
+ "demoColorsTitle": "Colours",
+ "demoColorsSubtitle": "All of the predefined colours",
+ "demoColorsDescription": "Colour and colour swatch constants which represent Material Design's colour palette.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Create",
+ "dialogSelectedOption": "You selected: '{value}'",
+ "dialogDiscardTitle": "Discard draft?",
+ "dialogLocationTitle": "Use Google's location service?",
+ "dialogLocationDescription": "Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running.",
+ "dialogCancel": "CANCEL",
+ "dialogDiscard": "DISCARD",
+ "dialogDisagree": "DISAGREE",
+ "dialogAgree": "AGREE",
+ "dialogSetBackup": "Set backup account",
+ "colorsBlueGrey": "BLUE GREY",
+ "dialogShow": "SHOW DIALOGUE",
+ "dialogFullscreenTitle": "Full-Screen Dialogue",
+ "dialogFullscreenSave": "SAVE",
+ "dialogFullscreenDescription": "A full-screen dialogue demo",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "With background",
+ "cupertinoAlertCancel": "Cancel",
+ "cupertinoAlertDiscard": "Discard",
+ "cupertinoAlertLocationTitle": "Allow 'Maps' to access your location while you are using the app?",
+ "cupertinoAlertLocationDescription": "Your current location will be displayed on the map and used for directions, nearby search results and estimated travel times.",
+ "cupertinoAlertAllow": "Allow",
+ "cupertinoAlertDontAllow": "Don't allow",
+ "cupertinoAlertFavoriteDessert": "Select Favourite Dessert",
+ "cupertinoAlertDessertDescription": "Please select your favourite type of dessert from the list below. Your selection will be used to customise the suggested list of eateries in your area.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisu",
+ "cupertinoAlertApplePie": "Apple Pie",
+ "cupertinoAlertChocolateBrownie": "Chocolate brownie",
+ "cupertinoShowAlert": "Show alert",
+ "colorsRed": "RED",
+ "colorsPink": "PINK",
+ "colorsPurple": "PURPLE",
+ "colorsDeepPurple": "DEEP PURPLE",
+ "colorsIndigo": "INDIGO",
+ "colorsBlue": "BLUE",
+ "colorsLightBlue": "LIGHT BLUE",
+ "colorsCyan": "CYAN",
+ "dialogAddAccount": "Add account",
+ "Gallery": "Gallery",
+ "Categories": "Categories",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "Basic shopping app",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "Travel app",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "REFERENCE STYLES & MEDIA"
+}
diff --git a/gallery/lib/l10n/intl_en_CA.arb b/gallery/lib/l10n/intl_en_CA.arb
new file mode 100644
index 0000000..50706f7
--- /dev/null
+++ b/gallery/lib/l10n/intl_en_CA.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "View options",
+ "demoOptionsFeatureDescription": "Tap here to view available options for this demo.",
+ "demoCodeViewerCopyAll": "COPY ALL",
+ "shrineScreenReaderRemoveProductButton": "Remove {product}",
+ "shrineScreenReaderProductAddToCart": "Add to basket",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Shopping basket, no items}=1{Shopping basket, 1 item}other{Shopping basket, {quantity} items}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Failed to copy to clipboard: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Copied to clipboard.",
+ "craneSleep8SemanticLabel": "Mayan ruins on a cliff above a beach",
+ "craneSleep4SemanticLabel": "Lake-side hotel in front of mountains",
+ "craneSleep2SemanticLabel": "Machu Picchu citadel",
+ "craneSleep1SemanticLabel": "Chalet in a snowy landscape with evergreen trees",
+ "craneSleep0SemanticLabel": "Overwater bungalows",
+ "craneFly13SemanticLabel": "Seaside pool with palm trees",
+ "craneFly12SemanticLabel": "Pool with palm trees",
+ "craneFly11SemanticLabel": "Brick lighthouse at sea",
+ "craneFly10SemanticLabel": "Al-Azhar Mosque towers during sunset",
+ "craneFly9SemanticLabel": "Man leaning on an antique blue car",
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "craneEat9SemanticLabel": "Café counter with pastries",
+ "craneEat2SemanticLabel": "Burger",
+ "craneFly5SemanticLabel": "Lake-side hotel in front of mountains",
+ "demoSelectionControlsSubtitle": "Tick boxes, radio buttons and switches",
+ "craneEat10SemanticLabel": "Woman holding huge pastrami sandwich",
+ "craneFly4SemanticLabel": "Overwater bungalows",
+ "craneEat7SemanticLabel": "Bakery entrance",
+ "craneEat6SemanticLabel": "Shrimp dish",
+ "craneEat5SemanticLabel": "Artsy restaurant seating area",
+ "craneEat4SemanticLabel": "Chocolate dessert",
+ "craneEat3SemanticLabel": "Korean taco",
+ "craneFly3SemanticLabel": "Machu Picchu citadel",
+ "craneEat1SemanticLabel": "Empty bar with diner-style stools",
+ "craneEat0SemanticLabel": "Pizza in a wood-fired oven",
+ "craneSleep11SemanticLabel": "Taipei 101 skyscraper",
+ "craneSleep10SemanticLabel": "Al-Azhar Mosque towers during sunset",
+ "craneSleep9SemanticLabel": "Brick lighthouse at sea",
+ "craneEat8SemanticLabel": "Plate of crawfish",
+ "craneSleep7SemanticLabel": "Colourful apartments at Ribeira Square",
+ "craneSleep6SemanticLabel": "Pool with palm trees",
+ "craneSleep5SemanticLabel": "Tent in a field",
+ "settingsButtonCloseLabel": "Close settings",
+ "demoSelectionControlsCheckboxDescription": "Tick boxes allow the user to select multiple options from a set. A normal tick box's value is true or false and a tristate tick box's value can also be null.",
+ "settingsButtonLabel": "Settings",
+ "demoListsTitle": "Lists",
+ "demoListsSubtitle": "Scrolling list layouts",
+ "demoListsDescription": "A single fixed-height row that typically contains some text as well as a leading or trailing icon.",
+ "demoOneLineListsTitle": "One line",
+ "demoTwoLineListsTitle": "Two lines",
+ "demoListsSecondary": "Secondary text",
+ "demoSelectionControlsTitle": "Selection controls",
+ "craneFly7SemanticLabel": "Mount Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Tick box",
+ "craneSleep3SemanticLabel": "Man leaning on an antique blue car",
+ "demoSelectionControlsRadioTitle": "Radio",
+ "demoSelectionControlsRadioDescription": "Radio buttons allow the user to select one option from a set. Use radio buttons for exclusive selection if you think that the user needs to see all available options side by side.",
+ "demoSelectionControlsSwitchTitle": "Switch",
+ "demoSelectionControlsSwitchDescription": "On/off switches toggle the state of a single settings option. The option that the switch controls, as well as the state it’s in, should be made clear from the corresponding inline label.",
+ "craneFly0SemanticLabel": "Chalet in a snowy landscape with evergreen trees",
+ "craneFly1SemanticLabel": "Tent in a field",
+ "craneFly2SemanticLabel": "Prayer flags in front of snowy mountain",
+ "craneFly6SemanticLabel": "Aerial view of Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "See all accounts",
+ "rallyBillAmount": "{billName} bill due {date} for {amount}.",
+ "shrineTooltipCloseCart": "Close basket",
+ "shrineTooltipCloseMenu": "Close menu",
+ "shrineTooltipOpenMenu": "Open menu",
+ "shrineTooltipSettings": "Settings",
+ "shrineTooltipSearch": "Search",
+ "demoTabsDescription": "Tabs organise content across different screens, data sets and other interactions.",
+ "demoTabsSubtitle": "Tabs with independently scrollable views",
+ "demoTabsTitle": "Tabs",
+ "rallyBudgetAmount": "{budgetName} budget with {amountUsed} used of {amountTotal}, {amountLeft} left",
+ "shrineTooltipRemoveItem": "Remove item",
+ "rallyAccountAmount": "{accountName} account {accountNumber} with {amount}.",
+ "rallySeeAllBudgets": "See all budgets",
+ "rallySeeAllBills": "See all bills",
+ "craneFormDate": "Select date",
+ "craneFormOrigin": "Choose origin",
+ "craneFly2": "Khumbu Valley, Nepal",
+ "craneFly3": "Machu Picchu, Peru",
+ "craneFly4": "Malé, Maldives",
+ "craneFly5": "Vitznau, Switzerland",
+ "craneFly6": "Mexico City, Mexico",
+ "craneFly7": "Mount Rushmore, United States",
+ "settingsTextDirectionLocaleBased": "Based on locale",
+ "craneFly9": "Havana, Cuba",
+ "craneFly10": "Cairo, Egypt",
+ "craneFly11": "Lisbon, Portugal",
+ "craneFly12": "Napa, United States",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldives",
+ "craneSleep1": "Aspen, United States",
+ "craneSleep2": "Machu Picchu, Peru",
+ "demoCupertinoSegmentedControlTitle": "Segmented control",
+ "craneSleep4": "Vitznau, Switzerland",
+ "craneSleep5": "Big Sur, United States",
+ "craneSleep6": "Napa, United States",
+ "craneSleep7": "Porto, Portugal",
+ "craneSleep8": "Tulum, Mexico",
+ "craneEat5": "Seoul, South Korea",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Compact elements that represent an input, attribute or action",
+ "demoActionChipTitle": "Action chip",
+ "demoActionChipDescription": "Action chips are a set of options which trigger an action related to primary content. Action chips should appear dynamically and contextually in a UI.",
+ "demoChoiceChipTitle": "Choice chip",
+ "demoChoiceChipDescription": "Choice chips represent a single choice from a set. Choice chips contain related descriptive text or categories.",
+ "demoFilterChipTitle": "Filter chip",
+ "demoFilterChipDescription": "Filter chips use tags or descriptive words as a way to filter content.",
+ "demoInputChipTitle": "Input chip",
+ "demoInputChipDescription": "Input chips represent a complex piece of information, such as an entity (person, place or thing) or conversational text, in a compact form.",
+ "craneSleep9": "Lisbon, Portugal",
+ "craneEat10": "Lisbon, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Used to select between a number of mutually exclusive options. When one option in the segmented control is selected, the other options in the segmented control cease to be selected.",
+ "chipTurnOnLights": "Turn on lights",
+ "chipSmall": "Small",
+ "chipMedium": "Medium",
+ "chipLarge": "Large",
+ "chipElevator": "Lift",
+ "chipWasher": "Washing machine",
+ "chipFireplace": "Fireplace",
+ "chipBiking": "Cycling",
+ "craneFormDiners": "Diners",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Increase your potential tax deduction! Assign categories to 1 unassigned transaction.}other{Increase your potential tax deduction! Assign categories to {count} unassigned transactions.}}",
+ "craneFormTime": "Select time",
+ "craneFormLocation": "Select location",
+ "craneFormTravelers": "Travellers",
+ "craneEat8": "Atlanta, United States",
+ "craneFormDestination": "Choose destination",
+ "craneFormDates": "Select dates",
+ "craneFly": "FLY",
+ "craneSleep": "SLEEP",
+ "craneEat": "EAT",
+ "craneFlySubhead": "Explore flights by destination",
+ "craneSleepSubhead": "Explore properties by destination",
+ "craneEatSubhead": "Explore restaurants by destination",
+ "craneFlyStops": "{numberOfStops,plural, =0{Non-stop}=1{1 stop}other{{numberOfStops} stops}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No available properties}=1{1 available property}other{{totalProperties} available properties}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No restaurants}=1{1 restaurant}other{{totalRestaurants} restaurants}}",
+ "craneFly0": "Aspen, United States",
+ "demoCupertinoSegmentedControlSubtitle": "iOS-style segmented control",
+ "craneSleep10": "Cairo, Egypt",
+ "craneEat9": "Madrid, Spain",
+ "craneFly1": "Big Sur, United States",
+ "craneEat7": "Nashville, United States",
+ "craneEat6": "Seattle, United States",
+ "craneFly8": "Singapore",
+ "craneEat4": "Paris, France",
+ "craneEat3": "Portland, United States",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, United States",
+ "craneEat0": "Naples, Italy",
+ "craneSleep11": "Taipei, Taiwan",
+ "craneSleep3": "Havana, Cuba",
+ "shrineLogoutButtonCaption": "LOGOUT",
+ "rallyTitleBills": "BILLS",
+ "rallyTitleAccounts": "ACCOUNTS",
+ "shrineProductVagabondSack": "Vagabond sack",
+ "rallyAccountDetailDataInterestYtd": "Interest YTD",
+ "shrineProductWhitneyBelt": "Whitney belt",
+ "shrineProductGardenStrand": "Garden strand",
+ "shrineProductStrutEarrings": "Strut earrings",
+ "shrineProductVarsitySocks": "Varsity socks",
+ "shrineProductWeaveKeyring": "Weave keyring",
+ "shrineProductGatsbyHat": "Gatsby hat",
+ "shrineProductShrugBag": "Shrug bag",
+ "shrineProductGiltDeskTrio": "Gilt desk trio",
+ "shrineProductCopperWireRack": "Copper wire rack",
+ "shrineProductSootheCeramicSet": "Soothe ceramic set",
+ "shrineProductHurrahsTeaSet": "Hurrahs tea set",
+ "shrineProductBlueStoneMug": "Blue stone mug",
+ "shrineProductRainwaterTray": "Rainwater tray",
+ "shrineProductChambrayNapkins": "Chambray napkins",
+ "shrineProductSucculentPlanters": "Succulent planters",
+ "shrineProductQuartetTable": "Quartet table",
+ "shrineProductKitchenQuattro": "Kitchen quattro",
+ "shrineProductClaySweater": "Clay sweater",
+ "shrineProductSeaTunic": "Sea tunic",
+ "shrineProductPlasterTunic": "Plaster tunic",
+ "rallyBudgetCategoryRestaurants": "Restaurants",
+ "shrineProductChambrayShirt": "Chambray shirt",
+ "shrineProductSeabreezeSweater": "Seabreeze sweater",
+ "shrineProductGentryJacket": "Gentry jacket",
+ "shrineProductNavyTrousers": "Navy trousers",
+ "shrineProductWalterHenleyWhite": "Walter henley (white)",
+ "shrineProductSurfAndPerfShirt": "Surf and perf shirt",
+ "shrineProductGingerScarf": "Ginger scarf",
+ "shrineProductRamonaCrossover": "Ramona crossover",
+ "shrineProductClassicWhiteCollar": "Classic white collar",
+ "shrineProductSunshirtDress": "Sunshirt dress",
+ "rallyAccountDetailDataInterestRate": "Interest rate",
+ "rallyAccountDetailDataAnnualPercentageYield": "Annual percentage yield",
+ "rallyAccountDataVacation": "Holiday",
+ "shrineProductFineLinesTee": "Fine lines tee",
+ "rallyAccountDataHomeSavings": "Home savings",
+ "rallyAccountDataChecking": "Current",
+ "rallyAccountDetailDataInterestPaidLastYear": "Interest paid last year",
+ "rallyAccountDetailDataNextStatement": "Next statement",
+ "rallyAccountDetailDataAccountOwner": "Account owner",
+ "rallyBudgetCategoryCoffeeShops": "Coffee shops",
+ "rallyBudgetCategoryGroceries": "Groceries",
+ "shrineProductCeriseScallopTee": "Cerise scallop tee",
+ "rallyBudgetCategoryClothing": "Clothing",
+ "rallySettingsManageAccounts": "Manage accounts",
+ "rallyAccountDataCarSavings": "Car savings",
+ "rallySettingsTaxDocuments": "Tax documents",
+ "rallySettingsPasscodeAndTouchId": "Passcode and Touch ID",
+ "rallySettingsNotifications": "Notifications",
+ "rallySettingsPersonalInformation": "Personal information",
+ "rallySettingsPaperlessSettings": "Paperless settings",
+ "rallySettingsFindAtms": "Find ATMs",
+ "rallySettingsHelp": "Help",
+ "rallySettingsSignOut": "Sign out",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Due",
+ "rallyBudgetLeft": "Left",
+ "rallyAccounts": "Accounts",
+ "rallyBills": "Bills",
+ "rallyBudgets": "Budgets",
+ "rallyAlerts": "Alerts",
+ "rallySeeAll": "SEE ALL",
+ "rallyFinanceLeft": "LEFT",
+ "rallyTitleOverview": "OVERVIEW",
+ "shrineProductShoulderRollsTee": "Shoulder rolls tee",
+ "shrineNextButtonCaption": "NEXT",
+ "rallyTitleBudgets": "BUDGETS",
+ "rallyTitleSettings": "SETTINGS",
+ "rallyLoginLoginToRally": "Log in to Rally",
+ "rallyLoginNoAccount": "Don't have an account?",
+ "rallyLoginSignUp": "SIGN UP",
+ "rallyLoginUsername": "Username",
+ "rallyLoginPassword": "Password",
+ "rallyLoginLabelLogin": "Log in",
+ "rallyLoginRememberMe": "Remember me",
+ "rallyLoginButtonLogin": "LOGIN",
+ "rallyAlertsMessageHeadsUpShopping": "Beware: you’ve used up {percent} of your shopping budget for this month.",
+ "rallyAlertsMessageSpentOnRestaurants": "You’ve spent {amount} on restaurants this week.",
+ "rallyAlertsMessageATMFees": "You’ve spent {amount} in ATM fees this month",
+ "rallyAlertsMessageCheckingAccount": "Good work! Your current account is {percent} higher than last month.",
+ "shrineMenuCaption": "MENU",
+ "shrineCategoryNameAll": "ALL",
+ "shrineCategoryNameAccessories": "ACCESSORIES",
+ "shrineCategoryNameClothing": "CLOTHING",
+ "shrineCategoryNameHome": "HOME",
+ "shrineLoginUsernameLabel": "Username",
+ "shrineLoginPasswordLabel": "Password",
+ "shrineCancelButtonCaption": "CANCEL",
+ "shrineCartTaxCaption": "Tax:",
+ "shrineCartPageCaption": "BASKET",
+ "shrineProductQuantity": "Quantity: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{NO ITEMS}=1{1 ITEM}other{{quantity} ITEMS}}",
+ "shrineCartClearButtonCaption": "CLEAR BASKET",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Delivery:",
+ "shrineProductGreySlouchTank": "Grey slouch tank top",
+ "shrineProductStellaSunglasses": "Stella sunglasses",
+ "shrineProductWhitePinstripeShirt": "White pinstripe shirt",
+ "demoTextFieldWhereCanWeReachYou": "Where can we contact you?",
+ "settingsTextDirectionLTR": "LTR",
+ "settingsTextScalingLarge": "Large",
+ "demoBottomSheetHeader": "Header",
+ "demoBottomSheetItem": "Item {value}",
+ "demoBottomTextFieldsTitle": "Text fields",
+ "demoTextFieldTitle": "Text fields",
+ "demoTextFieldSubtitle": "Single line of editable text and numbers",
+ "demoTextFieldDescription": "Text fields allow users to enter text into a UI. They typically appear in forms and dialogues.",
+ "demoTextFieldShowPasswordLabel": "Show password",
+ "demoTextFieldHidePasswordLabel": "Hide password",
+ "demoTextFieldFormErrors": "Please fix the errors in red before submitting.",
+ "demoTextFieldNameRequired": "Name is required.",
+ "demoTextFieldOnlyAlphabeticalChars": "Please enter only alphabetical characters.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### – Enter a US phone number.",
+ "demoTextFieldEnterPassword": "Please enter a password.",
+ "demoTextFieldPasswordsDoNotMatch": "The passwords don't match",
+ "demoTextFieldWhatDoPeopleCallYou": "What do people call you?",
+ "demoTextFieldNameField": "Name*",
+ "demoBottomSheetButtonText": "SHOW BOTTOM SHEET",
+ "demoTextFieldPhoneNumber": "Phone number*",
+ "demoBottomSheetTitle": "Bottom sheet",
+ "demoTextFieldEmail": "Email",
+ "demoTextFieldTellUsAboutYourself": "Tell us about yourself (e.g. write down what you do or what hobbies you have)",
+ "demoTextFieldKeepItShort": "Keep it short, this is just a demo.",
+ "starterAppGenericButton": "BUTTON",
+ "demoTextFieldLifeStory": "Life story",
+ "demoTextFieldSalary": "Salary",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "No more than 8 characters.",
+ "demoTextFieldPassword": "Password*",
+ "demoTextFieldRetypePassword": "Re-type password*",
+ "demoTextFieldSubmit": "SUBMIT",
+ "demoBottomNavigationSubtitle": "Bottom navigation with cross-fading views",
+ "demoBottomSheetAddLabel": "Add",
+ "demoBottomSheetModalDescription": "A modal bottom sheet is an alternative to a menu or a dialogue and prevents the user from interacting with the rest of the app.",
+ "demoBottomSheetModalTitle": "Modal bottom sheet",
+ "demoBottomSheetPersistentDescription": "A persistent bottom sheet shows information that supplements the primary content of the app. A persistent bottom sheet remains visible even when the user interacts with other parts of the app.",
+ "demoBottomSheetPersistentTitle": "Persistent bottom sheet",
+ "demoBottomSheetSubtitle": "Persistent and modal bottom sheets",
+ "demoTextFieldNameHasPhoneNumber": "{name} phone number is {phoneNumber}",
+ "buttonText": "BUTTON",
+ "demoTypographyDescription": "Definitions for the various typographical styles found in Material Design.",
+ "demoTypographySubtitle": "All of the predefined text styles",
+ "demoTypographyTitle": "Typography",
+ "demoFullscreenDialogDescription": "The fullscreenDialog property specifies whether the incoming page is a full-screen modal dialogue",
+ "demoFlatButtonDescription": "A flat button displays an ink splash on press but does not lift. Use flat buttons on toolbars, in dialogues and inline with padding",
+ "demoBottomNavigationDescription": "Bottom navigation bars display three to five destinations at the bottom of a screen. Each destination is represented by an icon and an optional text label. When a bottom navigation icon is tapped, the user is taken to the top-level navigation destination associated with that icon.",
+ "demoBottomNavigationSelectedLabel": "Selected label",
+ "demoBottomNavigationPersistentLabels": "Persistent labels",
+ "starterAppDrawerItem": "Item {value}",
+ "demoTextFieldRequiredField": "* indicates required field",
+ "demoBottomNavigationTitle": "Bottom navigation",
+ "settingsLightTheme": "Light",
+ "settingsTheme": "Theme",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "RTL",
+ "settingsTextScalingHuge": "Huge",
+ "cupertinoButton": "Button",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Small",
+ "settingsSystemDefault": "System",
+ "settingsTitle": "Settings",
+ "rallyDescription": "A personal finance app",
+ "aboutDialogDescription": "To see the source code for this app, please visit the {value}.",
+ "bottomNavigationCommentsTab": "Comments",
+ "starterAppGenericBody": "Body",
+ "starterAppGenericHeadline": "Headline",
+ "starterAppGenericSubtitle": "Subtitle",
+ "starterAppGenericTitle": "Title",
+ "starterAppTooltipSearch": "Search",
+ "starterAppTooltipShare": "Share",
+ "starterAppTooltipFavorite": "Favourite",
+ "starterAppTooltipAdd": "Add",
+ "bottomNavigationCalendarTab": "Calendar",
+ "starterAppDescription": "A responsive starter layout",
+ "starterAppTitle": "Starter app",
+ "aboutFlutterSamplesRepo": "Flutter samples Github repo",
+ "bottomNavigationContentPlaceholder": "Placeholder for {title} tab",
+ "bottomNavigationCameraTab": "Camera",
+ "bottomNavigationAlarmTab": "Alarm",
+ "bottomNavigationAccountTab": "Account",
+ "demoTextFieldYourEmailAddress": "Your email address",
+ "demoToggleButtonDescription": "Toggle buttons can be used to group related options. To emphasise groups of related toggle buttons, a group should share a common container",
+ "colorsGrey": "GREY",
+ "colorsBrown": "BROWN",
+ "colorsDeepOrange": "DEEP ORANGE",
+ "colorsOrange": "ORANGE",
+ "colorsAmber": "AMBER",
+ "colorsYellow": "YELLOW",
+ "colorsLime": "LIME",
+ "colorsLightGreen": "LIGHT GREEN",
+ "colorsGreen": "GREEN",
+ "homeHeaderGallery": "Gallery",
+ "homeHeaderCategories": "Categories",
+ "shrineDescription": "A fashionable retail app",
+ "craneDescription": "A personalised travel app",
+ "homeCategoryReference": "REFERENCE STYLES & MEDIA",
+ "demoInvalidURL": "Couldn't display URL:",
+ "demoOptionsTooltip": "Options",
+ "demoInfoTooltip": "Info",
+ "demoCodeTooltip": "Code Sample",
+ "demoDocumentationTooltip": "API Documentation",
+ "demoFullscreenTooltip": "Full screen",
+ "settingsTextScaling": "Text scaling",
+ "settingsTextDirection": "Text direction",
+ "settingsLocale": "Locale",
+ "settingsPlatformMechanics": "Platform mechanics",
+ "settingsDarkTheme": "Dark",
+ "settingsSlowMotion": "Slow motion",
+ "settingsAbout": "About Flutter Gallery",
+ "settingsFeedback": "Send feedback",
+ "settingsAttribution": "Designed by TOASTER in London",
+ "demoButtonTitle": "Buttons",
+ "demoButtonSubtitle": "Flat, raised, outline and more",
+ "demoFlatButtonTitle": "Flat Button",
+ "demoRaisedButtonDescription": "Raised buttons add dimension to mostly flat layouts. They emphasise functions on busy or wide spaces.",
+ "demoRaisedButtonTitle": "Raised Button",
+ "demoOutlineButtonTitle": "Outline Button",
+ "demoOutlineButtonDescription": "Outline buttons become opaque and elevate when pressed. They are often paired with raised buttons to indicate an alternative, secondary action.",
+ "demoToggleButtonTitle": "Toggle Buttons",
+ "colorsTeal": "TEAL",
+ "demoFloatingButtonTitle": "Floating Action Button",
+ "demoFloatingButtonDescription": "A floating action button is a circular icon button that hovers over content to promote a primary action in the application.",
+ "demoDialogTitle": "Dialogues",
+ "demoDialogSubtitle": "Simple, alert and full-screen",
+ "demoAlertDialogTitle": "Alert",
+ "demoAlertDialogDescription": "An alert dialogue informs the user about situations that require acknowledgement. An alert dialogue has an optional title and an optional list of actions.",
+ "demoAlertTitleDialogTitle": "Alert With Title",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "A simple dialogue offers the user a choice between several options. A simple dialogue has an optional title that is displayed above the choices.",
+ "demoFullscreenDialogTitle": "Full screen",
+ "demoCupertinoButtonsTitle": "Buttons",
+ "demoCupertinoButtonsSubtitle": "iOS-style buttons",
+ "demoCupertinoButtonsDescription": "An iOS-style button. It takes in text and/or an icon that fades out and in on touch. May optionally have a background.",
+ "demoCupertinoAlertsTitle": "Alerts",
+ "demoCupertinoAlertsSubtitle": "iOS-style alert dialogues",
+ "demoCupertinoAlertTitle": "Alert",
+ "demoCupertinoAlertDescription": "An alert dialogue informs the user about situations that require acknowledgement. An alert dialogue has an optional title, optional content and an optional list of actions. The title is displayed above the content and the actions are displayed below the content.",
+ "demoCupertinoAlertWithTitleTitle": "Alert with title",
+ "demoCupertinoAlertButtonsTitle": "Alert With Buttons",
+ "demoCupertinoAlertButtonsOnlyTitle": "Alert Buttons Only",
+ "demoCupertinoActionSheetTitle": "Action Sheet",
+ "demoCupertinoActionSheetDescription": "An action sheet is a specific style of alert that presents the user with a set of two or more choices related to the current context. An action sheet can have a title, an additional message and a list of actions.",
+ "demoColorsTitle": "Colours",
+ "demoColorsSubtitle": "All of the predefined colours",
+ "demoColorsDescription": "Colour and colour swatch constants which represent Material Design's colour palette.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Create",
+ "dialogSelectedOption": "You selected: '{value}'",
+ "dialogDiscardTitle": "Discard draft?",
+ "dialogLocationTitle": "Use Google's location service?",
+ "dialogLocationDescription": "Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running.",
+ "dialogCancel": "CANCEL",
+ "dialogDiscard": "DISCARD",
+ "dialogDisagree": "DISAGREE",
+ "dialogAgree": "AGREE",
+ "dialogSetBackup": "Set backup account",
+ "colorsBlueGrey": "BLUE GREY",
+ "dialogShow": "SHOW DIALOGUE",
+ "dialogFullscreenTitle": "Full-Screen Dialogue",
+ "dialogFullscreenSave": "SAVE",
+ "dialogFullscreenDescription": "A full-screen dialogue demo",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "With background",
+ "cupertinoAlertCancel": "Cancel",
+ "cupertinoAlertDiscard": "Discard",
+ "cupertinoAlertLocationTitle": "Allow 'Maps' to access your location while you are using the app?",
+ "cupertinoAlertLocationDescription": "Your current location will be displayed on the map and used for directions, nearby search results and estimated travel times.",
+ "cupertinoAlertAllow": "Allow",
+ "cupertinoAlertDontAllow": "Don't allow",
+ "cupertinoAlertFavoriteDessert": "Select Favourite Dessert",
+ "cupertinoAlertDessertDescription": "Please select your favourite type of dessert from the list below. Your selection will be used to customise the suggested list of eateries in your area.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisu",
+ "cupertinoAlertApplePie": "Apple Pie",
+ "cupertinoAlertChocolateBrownie": "Chocolate brownie",
+ "cupertinoShowAlert": "Show alert",
+ "colorsRed": "RED",
+ "colorsPink": "PINK",
+ "colorsPurple": "PURPLE",
+ "colorsDeepPurple": "DEEP PURPLE",
+ "colorsIndigo": "INDIGO",
+ "colorsBlue": "BLUE",
+ "colorsLightBlue": "LIGHT BLUE",
+ "colorsCyan": "CYAN",
+ "dialogAddAccount": "Add account",
+ "Gallery": "Gallery",
+ "Categories": "Categories",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "Basic shopping app",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "Travel app",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "REFERENCE STYLES & MEDIA"
+}
diff --git a/gallery/lib/l10n/intl_en_GB.arb b/gallery/lib/l10n/intl_en_GB.arb
new file mode 100644
index 0000000..50706f7
--- /dev/null
+++ b/gallery/lib/l10n/intl_en_GB.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "View options",
+ "demoOptionsFeatureDescription": "Tap here to view available options for this demo.",
+ "demoCodeViewerCopyAll": "COPY ALL",
+ "shrineScreenReaderRemoveProductButton": "Remove {product}",
+ "shrineScreenReaderProductAddToCart": "Add to basket",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Shopping basket, no items}=1{Shopping basket, 1 item}other{Shopping basket, {quantity} items}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Failed to copy to clipboard: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Copied to clipboard.",
+ "craneSleep8SemanticLabel": "Mayan ruins on a cliff above a beach",
+ "craneSleep4SemanticLabel": "Lake-side hotel in front of mountains",
+ "craneSleep2SemanticLabel": "Machu Picchu citadel",
+ "craneSleep1SemanticLabel": "Chalet in a snowy landscape with evergreen trees",
+ "craneSleep0SemanticLabel": "Overwater bungalows",
+ "craneFly13SemanticLabel": "Seaside pool with palm trees",
+ "craneFly12SemanticLabel": "Pool with palm trees",
+ "craneFly11SemanticLabel": "Brick lighthouse at sea",
+ "craneFly10SemanticLabel": "Al-Azhar Mosque towers during sunset",
+ "craneFly9SemanticLabel": "Man leaning on an antique blue car",
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "craneEat9SemanticLabel": "Café counter with pastries",
+ "craneEat2SemanticLabel": "Burger",
+ "craneFly5SemanticLabel": "Lake-side hotel in front of mountains",
+ "demoSelectionControlsSubtitle": "Tick boxes, radio buttons and switches",
+ "craneEat10SemanticLabel": "Woman holding huge pastrami sandwich",
+ "craneFly4SemanticLabel": "Overwater bungalows",
+ "craneEat7SemanticLabel": "Bakery entrance",
+ "craneEat6SemanticLabel": "Shrimp dish",
+ "craneEat5SemanticLabel": "Artsy restaurant seating area",
+ "craneEat4SemanticLabel": "Chocolate dessert",
+ "craneEat3SemanticLabel": "Korean taco",
+ "craneFly3SemanticLabel": "Machu Picchu citadel",
+ "craneEat1SemanticLabel": "Empty bar with diner-style stools",
+ "craneEat0SemanticLabel": "Pizza in a wood-fired oven",
+ "craneSleep11SemanticLabel": "Taipei 101 skyscraper",
+ "craneSleep10SemanticLabel": "Al-Azhar Mosque towers during sunset",
+ "craneSleep9SemanticLabel": "Brick lighthouse at sea",
+ "craneEat8SemanticLabel": "Plate of crawfish",
+ "craneSleep7SemanticLabel": "Colourful apartments at Ribeira Square",
+ "craneSleep6SemanticLabel": "Pool with palm trees",
+ "craneSleep5SemanticLabel": "Tent in a field",
+ "settingsButtonCloseLabel": "Close settings",
+ "demoSelectionControlsCheckboxDescription": "Tick boxes allow the user to select multiple options from a set. A normal tick box's value is true or false and a tristate tick box's value can also be null.",
+ "settingsButtonLabel": "Settings",
+ "demoListsTitle": "Lists",
+ "demoListsSubtitle": "Scrolling list layouts",
+ "demoListsDescription": "A single fixed-height row that typically contains some text as well as a leading or trailing icon.",
+ "demoOneLineListsTitle": "One line",
+ "demoTwoLineListsTitle": "Two lines",
+ "demoListsSecondary": "Secondary text",
+ "demoSelectionControlsTitle": "Selection controls",
+ "craneFly7SemanticLabel": "Mount Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Tick box",
+ "craneSleep3SemanticLabel": "Man leaning on an antique blue car",
+ "demoSelectionControlsRadioTitle": "Radio",
+ "demoSelectionControlsRadioDescription": "Radio buttons allow the user to select one option from a set. Use radio buttons for exclusive selection if you think that the user needs to see all available options side by side.",
+ "demoSelectionControlsSwitchTitle": "Switch",
+ "demoSelectionControlsSwitchDescription": "On/off switches toggle the state of a single settings option. The option that the switch controls, as well as the state it’s in, should be made clear from the corresponding inline label.",
+ "craneFly0SemanticLabel": "Chalet in a snowy landscape with evergreen trees",
+ "craneFly1SemanticLabel": "Tent in a field",
+ "craneFly2SemanticLabel": "Prayer flags in front of snowy mountain",
+ "craneFly6SemanticLabel": "Aerial view of Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "See all accounts",
+ "rallyBillAmount": "{billName} bill due {date} for {amount}.",
+ "shrineTooltipCloseCart": "Close basket",
+ "shrineTooltipCloseMenu": "Close menu",
+ "shrineTooltipOpenMenu": "Open menu",
+ "shrineTooltipSettings": "Settings",
+ "shrineTooltipSearch": "Search",
+ "demoTabsDescription": "Tabs organise content across different screens, data sets and other interactions.",
+ "demoTabsSubtitle": "Tabs with independently scrollable views",
+ "demoTabsTitle": "Tabs",
+ "rallyBudgetAmount": "{budgetName} budget with {amountUsed} used of {amountTotal}, {amountLeft} left",
+ "shrineTooltipRemoveItem": "Remove item",
+ "rallyAccountAmount": "{accountName} account {accountNumber} with {amount}.",
+ "rallySeeAllBudgets": "See all budgets",
+ "rallySeeAllBills": "See all bills",
+ "craneFormDate": "Select date",
+ "craneFormOrigin": "Choose origin",
+ "craneFly2": "Khumbu Valley, Nepal",
+ "craneFly3": "Machu Picchu, Peru",
+ "craneFly4": "Malé, Maldives",
+ "craneFly5": "Vitznau, Switzerland",
+ "craneFly6": "Mexico City, Mexico",
+ "craneFly7": "Mount Rushmore, United States",
+ "settingsTextDirectionLocaleBased": "Based on locale",
+ "craneFly9": "Havana, Cuba",
+ "craneFly10": "Cairo, Egypt",
+ "craneFly11": "Lisbon, Portugal",
+ "craneFly12": "Napa, United States",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldives",
+ "craneSleep1": "Aspen, United States",
+ "craneSleep2": "Machu Picchu, Peru",
+ "demoCupertinoSegmentedControlTitle": "Segmented control",
+ "craneSleep4": "Vitznau, Switzerland",
+ "craneSleep5": "Big Sur, United States",
+ "craneSleep6": "Napa, United States",
+ "craneSleep7": "Porto, Portugal",
+ "craneSleep8": "Tulum, Mexico",
+ "craneEat5": "Seoul, South Korea",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Compact elements that represent an input, attribute or action",
+ "demoActionChipTitle": "Action chip",
+ "demoActionChipDescription": "Action chips are a set of options which trigger an action related to primary content. Action chips should appear dynamically and contextually in a UI.",
+ "demoChoiceChipTitle": "Choice chip",
+ "demoChoiceChipDescription": "Choice chips represent a single choice from a set. Choice chips contain related descriptive text or categories.",
+ "demoFilterChipTitle": "Filter chip",
+ "demoFilterChipDescription": "Filter chips use tags or descriptive words as a way to filter content.",
+ "demoInputChipTitle": "Input chip",
+ "demoInputChipDescription": "Input chips represent a complex piece of information, such as an entity (person, place or thing) or conversational text, in a compact form.",
+ "craneSleep9": "Lisbon, Portugal",
+ "craneEat10": "Lisbon, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Used to select between a number of mutually exclusive options. When one option in the segmented control is selected, the other options in the segmented control cease to be selected.",
+ "chipTurnOnLights": "Turn on lights",
+ "chipSmall": "Small",
+ "chipMedium": "Medium",
+ "chipLarge": "Large",
+ "chipElevator": "Lift",
+ "chipWasher": "Washing machine",
+ "chipFireplace": "Fireplace",
+ "chipBiking": "Cycling",
+ "craneFormDiners": "Diners",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Increase your potential tax deduction! Assign categories to 1 unassigned transaction.}other{Increase your potential tax deduction! Assign categories to {count} unassigned transactions.}}",
+ "craneFormTime": "Select time",
+ "craneFormLocation": "Select location",
+ "craneFormTravelers": "Travellers",
+ "craneEat8": "Atlanta, United States",
+ "craneFormDestination": "Choose destination",
+ "craneFormDates": "Select dates",
+ "craneFly": "FLY",
+ "craneSleep": "SLEEP",
+ "craneEat": "EAT",
+ "craneFlySubhead": "Explore flights by destination",
+ "craneSleepSubhead": "Explore properties by destination",
+ "craneEatSubhead": "Explore restaurants by destination",
+ "craneFlyStops": "{numberOfStops,plural, =0{Non-stop}=1{1 stop}other{{numberOfStops} stops}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No available properties}=1{1 available property}other{{totalProperties} available properties}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No restaurants}=1{1 restaurant}other{{totalRestaurants} restaurants}}",
+ "craneFly0": "Aspen, United States",
+ "demoCupertinoSegmentedControlSubtitle": "iOS-style segmented control",
+ "craneSleep10": "Cairo, Egypt",
+ "craneEat9": "Madrid, Spain",
+ "craneFly1": "Big Sur, United States",
+ "craneEat7": "Nashville, United States",
+ "craneEat6": "Seattle, United States",
+ "craneFly8": "Singapore",
+ "craneEat4": "Paris, France",
+ "craneEat3": "Portland, United States",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, United States",
+ "craneEat0": "Naples, Italy",
+ "craneSleep11": "Taipei, Taiwan",
+ "craneSleep3": "Havana, Cuba",
+ "shrineLogoutButtonCaption": "LOGOUT",
+ "rallyTitleBills": "BILLS",
+ "rallyTitleAccounts": "ACCOUNTS",
+ "shrineProductVagabondSack": "Vagabond sack",
+ "rallyAccountDetailDataInterestYtd": "Interest YTD",
+ "shrineProductWhitneyBelt": "Whitney belt",
+ "shrineProductGardenStrand": "Garden strand",
+ "shrineProductStrutEarrings": "Strut earrings",
+ "shrineProductVarsitySocks": "Varsity socks",
+ "shrineProductWeaveKeyring": "Weave keyring",
+ "shrineProductGatsbyHat": "Gatsby hat",
+ "shrineProductShrugBag": "Shrug bag",
+ "shrineProductGiltDeskTrio": "Gilt desk trio",
+ "shrineProductCopperWireRack": "Copper wire rack",
+ "shrineProductSootheCeramicSet": "Soothe ceramic set",
+ "shrineProductHurrahsTeaSet": "Hurrahs tea set",
+ "shrineProductBlueStoneMug": "Blue stone mug",
+ "shrineProductRainwaterTray": "Rainwater tray",
+ "shrineProductChambrayNapkins": "Chambray napkins",
+ "shrineProductSucculentPlanters": "Succulent planters",
+ "shrineProductQuartetTable": "Quartet table",
+ "shrineProductKitchenQuattro": "Kitchen quattro",
+ "shrineProductClaySweater": "Clay sweater",
+ "shrineProductSeaTunic": "Sea tunic",
+ "shrineProductPlasterTunic": "Plaster tunic",
+ "rallyBudgetCategoryRestaurants": "Restaurants",
+ "shrineProductChambrayShirt": "Chambray shirt",
+ "shrineProductSeabreezeSweater": "Seabreeze sweater",
+ "shrineProductGentryJacket": "Gentry jacket",
+ "shrineProductNavyTrousers": "Navy trousers",
+ "shrineProductWalterHenleyWhite": "Walter henley (white)",
+ "shrineProductSurfAndPerfShirt": "Surf and perf shirt",
+ "shrineProductGingerScarf": "Ginger scarf",
+ "shrineProductRamonaCrossover": "Ramona crossover",
+ "shrineProductClassicWhiteCollar": "Classic white collar",
+ "shrineProductSunshirtDress": "Sunshirt dress",
+ "rallyAccountDetailDataInterestRate": "Interest rate",
+ "rallyAccountDetailDataAnnualPercentageYield": "Annual percentage yield",
+ "rallyAccountDataVacation": "Holiday",
+ "shrineProductFineLinesTee": "Fine lines tee",
+ "rallyAccountDataHomeSavings": "Home savings",
+ "rallyAccountDataChecking": "Current",
+ "rallyAccountDetailDataInterestPaidLastYear": "Interest paid last year",
+ "rallyAccountDetailDataNextStatement": "Next statement",
+ "rallyAccountDetailDataAccountOwner": "Account owner",
+ "rallyBudgetCategoryCoffeeShops": "Coffee shops",
+ "rallyBudgetCategoryGroceries": "Groceries",
+ "shrineProductCeriseScallopTee": "Cerise scallop tee",
+ "rallyBudgetCategoryClothing": "Clothing",
+ "rallySettingsManageAccounts": "Manage accounts",
+ "rallyAccountDataCarSavings": "Car savings",
+ "rallySettingsTaxDocuments": "Tax documents",
+ "rallySettingsPasscodeAndTouchId": "Passcode and Touch ID",
+ "rallySettingsNotifications": "Notifications",
+ "rallySettingsPersonalInformation": "Personal information",
+ "rallySettingsPaperlessSettings": "Paperless settings",
+ "rallySettingsFindAtms": "Find ATMs",
+ "rallySettingsHelp": "Help",
+ "rallySettingsSignOut": "Sign out",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Due",
+ "rallyBudgetLeft": "Left",
+ "rallyAccounts": "Accounts",
+ "rallyBills": "Bills",
+ "rallyBudgets": "Budgets",
+ "rallyAlerts": "Alerts",
+ "rallySeeAll": "SEE ALL",
+ "rallyFinanceLeft": "LEFT",
+ "rallyTitleOverview": "OVERVIEW",
+ "shrineProductShoulderRollsTee": "Shoulder rolls tee",
+ "shrineNextButtonCaption": "NEXT",
+ "rallyTitleBudgets": "BUDGETS",
+ "rallyTitleSettings": "SETTINGS",
+ "rallyLoginLoginToRally": "Log in to Rally",
+ "rallyLoginNoAccount": "Don't have an account?",
+ "rallyLoginSignUp": "SIGN UP",
+ "rallyLoginUsername": "Username",
+ "rallyLoginPassword": "Password",
+ "rallyLoginLabelLogin": "Log in",
+ "rallyLoginRememberMe": "Remember me",
+ "rallyLoginButtonLogin": "LOGIN",
+ "rallyAlertsMessageHeadsUpShopping": "Beware: you’ve used up {percent} of your shopping budget for this month.",
+ "rallyAlertsMessageSpentOnRestaurants": "You’ve spent {amount} on restaurants this week.",
+ "rallyAlertsMessageATMFees": "You’ve spent {amount} in ATM fees this month",
+ "rallyAlertsMessageCheckingAccount": "Good work! Your current account is {percent} higher than last month.",
+ "shrineMenuCaption": "MENU",
+ "shrineCategoryNameAll": "ALL",
+ "shrineCategoryNameAccessories": "ACCESSORIES",
+ "shrineCategoryNameClothing": "CLOTHING",
+ "shrineCategoryNameHome": "HOME",
+ "shrineLoginUsernameLabel": "Username",
+ "shrineLoginPasswordLabel": "Password",
+ "shrineCancelButtonCaption": "CANCEL",
+ "shrineCartTaxCaption": "Tax:",
+ "shrineCartPageCaption": "BASKET",
+ "shrineProductQuantity": "Quantity: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{NO ITEMS}=1{1 ITEM}other{{quantity} ITEMS}}",
+ "shrineCartClearButtonCaption": "CLEAR BASKET",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Delivery:",
+ "shrineProductGreySlouchTank": "Grey slouch tank top",
+ "shrineProductStellaSunglasses": "Stella sunglasses",
+ "shrineProductWhitePinstripeShirt": "White pinstripe shirt",
+ "demoTextFieldWhereCanWeReachYou": "Where can we contact you?",
+ "settingsTextDirectionLTR": "LTR",
+ "settingsTextScalingLarge": "Large",
+ "demoBottomSheetHeader": "Header",
+ "demoBottomSheetItem": "Item {value}",
+ "demoBottomTextFieldsTitle": "Text fields",
+ "demoTextFieldTitle": "Text fields",
+ "demoTextFieldSubtitle": "Single line of editable text and numbers",
+ "demoTextFieldDescription": "Text fields allow users to enter text into a UI. They typically appear in forms and dialogues.",
+ "demoTextFieldShowPasswordLabel": "Show password",
+ "demoTextFieldHidePasswordLabel": "Hide password",
+ "demoTextFieldFormErrors": "Please fix the errors in red before submitting.",
+ "demoTextFieldNameRequired": "Name is required.",
+ "demoTextFieldOnlyAlphabeticalChars": "Please enter only alphabetical characters.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### – Enter a US phone number.",
+ "demoTextFieldEnterPassword": "Please enter a password.",
+ "demoTextFieldPasswordsDoNotMatch": "The passwords don't match",
+ "demoTextFieldWhatDoPeopleCallYou": "What do people call you?",
+ "demoTextFieldNameField": "Name*",
+ "demoBottomSheetButtonText": "SHOW BOTTOM SHEET",
+ "demoTextFieldPhoneNumber": "Phone number*",
+ "demoBottomSheetTitle": "Bottom sheet",
+ "demoTextFieldEmail": "Email",
+ "demoTextFieldTellUsAboutYourself": "Tell us about yourself (e.g. write down what you do or what hobbies you have)",
+ "demoTextFieldKeepItShort": "Keep it short, this is just a demo.",
+ "starterAppGenericButton": "BUTTON",
+ "demoTextFieldLifeStory": "Life story",
+ "demoTextFieldSalary": "Salary",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "No more than 8 characters.",
+ "demoTextFieldPassword": "Password*",
+ "demoTextFieldRetypePassword": "Re-type password*",
+ "demoTextFieldSubmit": "SUBMIT",
+ "demoBottomNavigationSubtitle": "Bottom navigation with cross-fading views",
+ "demoBottomSheetAddLabel": "Add",
+ "demoBottomSheetModalDescription": "A modal bottom sheet is an alternative to a menu or a dialogue and prevents the user from interacting with the rest of the app.",
+ "demoBottomSheetModalTitle": "Modal bottom sheet",
+ "demoBottomSheetPersistentDescription": "A persistent bottom sheet shows information that supplements the primary content of the app. A persistent bottom sheet remains visible even when the user interacts with other parts of the app.",
+ "demoBottomSheetPersistentTitle": "Persistent bottom sheet",
+ "demoBottomSheetSubtitle": "Persistent and modal bottom sheets",
+ "demoTextFieldNameHasPhoneNumber": "{name} phone number is {phoneNumber}",
+ "buttonText": "BUTTON",
+ "demoTypographyDescription": "Definitions for the various typographical styles found in Material Design.",
+ "demoTypographySubtitle": "All of the predefined text styles",
+ "demoTypographyTitle": "Typography",
+ "demoFullscreenDialogDescription": "The fullscreenDialog property specifies whether the incoming page is a full-screen modal dialogue",
+ "demoFlatButtonDescription": "A flat button displays an ink splash on press but does not lift. Use flat buttons on toolbars, in dialogues and inline with padding",
+ "demoBottomNavigationDescription": "Bottom navigation bars display three to five destinations at the bottom of a screen. Each destination is represented by an icon and an optional text label. When a bottom navigation icon is tapped, the user is taken to the top-level navigation destination associated with that icon.",
+ "demoBottomNavigationSelectedLabel": "Selected label",
+ "demoBottomNavigationPersistentLabels": "Persistent labels",
+ "starterAppDrawerItem": "Item {value}",
+ "demoTextFieldRequiredField": "* indicates required field",
+ "demoBottomNavigationTitle": "Bottom navigation",
+ "settingsLightTheme": "Light",
+ "settingsTheme": "Theme",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "RTL",
+ "settingsTextScalingHuge": "Huge",
+ "cupertinoButton": "Button",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Small",
+ "settingsSystemDefault": "System",
+ "settingsTitle": "Settings",
+ "rallyDescription": "A personal finance app",
+ "aboutDialogDescription": "To see the source code for this app, please visit the {value}.",
+ "bottomNavigationCommentsTab": "Comments",
+ "starterAppGenericBody": "Body",
+ "starterAppGenericHeadline": "Headline",
+ "starterAppGenericSubtitle": "Subtitle",
+ "starterAppGenericTitle": "Title",
+ "starterAppTooltipSearch": "Search",
+ "starterAppTooltipShare": "Share",
+ "starterAppTooltipFavorite": "Favourite",
+ "starterAppTooltipAdd": "Add",
+ "bottomNavigationCalendarTab": "Calendar",
+ "starterAppDescription": "A responsive starter layout",
+ "starterAppTitle": "Starter app",
+ "aboutFlutterSamplesRepo": "Flutter samples Github repo",
+ "bottomNavigationContentPlaceholder": "Placeholder for {title} tab",
+ "bottomNavigationCameraTab": "Camera",
+ "bottomNavigationAlarmTab": "Alarm",
+ "bottomNavigationAccountTab": "Account",
+ "demoTextFieldYourEmailAddress": "Your email address",
+ "demoToggleButtonDescription": "Toggle buttons can be used to group related options. To emphasise groups of related toggle buttons, a group should share a common container",
+ "colorsGrey": "GREY",
+ "colorsBrown": "BROWN",
+ "colorsDeepOrange": "DEEP ORANGE",
+ "colorsOrange": "ORANGE",
+ "colorsAmber": "AMBER",
+ "colorsYellow": "YELLOW",
+ "colorsLime": "LIME",
+ "colorsLightGreen": "LIGHT GREEN",
+ "colorsGreen": "GREEN",
+ "homeHeaderGallery": "Gallery",
+ "homeHeaderCategories": "Categories",
+ "shrineDescription": "A fashionable retail app",
+ "craneDescription": "A personalised travel app",
+ "homeCategoryReference": "REFERENCE STYLES & MEDIA",
+ "demoInvalidURL": "Couldn't display URL:",
+ "demoOptionsTooltip": "Options",
+ "demoInfoTooltip": "Info",
+ "demoCodeTooltip": "Code Sample",
+ "demoDocumentationTooltip": "API Documentation",
+ "demoFullscreenTooltip": "Full screen",
+ "settingsTextScaling": "Text scaling",
+ "settingsTextDirection": "Text direction",
+ "settingsLocale": "Locale",
+ "settingsPlatformMechanics": "Platform mechanics",
+ "settingsDarkTheme": "Dark",
+ "settingsSlowMotion": "Slow motion",
+ "settingsAbout": "About Flutter Gallery",
+ "settingsFeedback": "Send feedback",
+ "settingsAttribution": "Designed by TOASTER in London",
+ "demoButtonTitle": "Buttons",
+ "demoButtonSubtitle": "Flat, raised, outline and more",
+ "demoFlatButtonTitle": "Flat Button",
+ "demoRaisedButtonDescription": "Raised buttons add dimension to mostly flat layouts. They emphasise functions on busy or wide spaces.",
+ "demoRaisedButtonTitle": "Raised Button",
+ "demoOutlineButtonTitle": "Outline Button",
+ "demoOutlineButtonDescription": "Outline buttons become opaque and elevate when pressed. They are often paired with raised buttons to indicate an alternative, secondary action.",
+ "demoToggleButtonTitle": "Toggle Buttons",
+ "colorsTeal": "TEAL",
+ "demoFloatingButtonTitle": "Floating Action Button",
+ "demoFloatingButtonDescription": "A floating action button is a circular icon button that hovers over content to promote a primary action in the application.",
+ "demoDialogTitle": "Dialogues",
+ "demoDialogSubtitle": "Simple, alert and full-screen",
+ "demoAlertDialogTitle": "Alert",
+ "demoAlertDialogDescription": "An alert dialogue informs the user about situations that require acknowledgement. An alert dialogue has an optional title and an optional list of actions.",
+ "demoAlertTitleDialogTitle": "Alert With Title",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "A simple dialogue offers the user a choice between several options. A simple dialogue has an optional title that is displayed above the choices.",
+ "demoFullscreenDialogTitle": "Full screen",
+ "demoCupertinoButtonsTitle": "Buttons",
+ "demoCupertinoButtonsSubtitle": "iOS-style buttons",
+ "demoCupertinoButtonsDescription": "An iOS-style button. It takes in text and/or an icon that fades out and in on touch. May optionally have a background.",
+ "demoCupertinoAlertsTitle": "Alerts",
+ "demoCupertinoAlertsSubtitle": "iOS-style alert dialogues",
+ "demoCupertinoAlertTitle": "Alert",
+ "demoCupertinoAlertDescription": "An alert dialogue informs the user about situations that require acknowledgement. An alert dialogue has an optional title, optional content and an optional list of actions. The title is displayed above the content and the actions are displayed below the content.",
+ "demoCupertinoAlertWithTitleTitle": "Alert with title",
+ "demoCupertinoAlertButtonsTitle": "Alert With Buttons",
+ "demoCupertinoAlertButtonsOnlyTitle": "Alert Buttons Only",
+ "demoCupertinoActionSheetTitle": "Action Sheet",
+ "demoCupertinoActionSheetDescription": "An action sheet is a specific style of alert that presents the user with a set of two or more choices related to the current context. An action sheet can have a title, an additional message and a list of actions.",
+ "demoColorsTitle": "Colours",
+ "demoColorsSubtitle": "All of the predefined colours",
+ "demoColorsDescription": "Colour and colour swatch constants which represent Material Design's colour palette.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Create",
+ "dialogSelectedOption": "You selected: '{value}'",
+ "dialogDiscardTitle": "Discard draft?",
+ "dialogLocationTitle": "Use Google's location service?",
+ "dialogLocationDescription": "Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running.",
+ "dialogCancel": "CANCEL",
+ "dialogDiscard": "DISCARD",
+ "dialogDisagree": "DISAGREE",
+ "dialogAgree": "AGREE",
+ "dialogSetBackup": "Set backup account",
+ "colorsBlueGrey": "BLUE GREY",
+ "dialogShow": "SHOW DIALOGUE",
+ "dialogFullscreenTitle": "Full-Screen Dialogue",
+ "dialogFullscreenSave": "SAVE",
+ "dialogFullscreenDescription": "A full-screen dialogue demo",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "With background",
+ "cupertinoAlertCancel": "Cancel",
+ "cupertinoAlertDiscard": "Discard",
+ "cupertinoAlertLocationTitle": "Allow 'Maps' to access your location while you are using the app?",
+ "cupertinoAlertLocationDescription": "Your current location will be displayed on the map and used for directions, nearby search results and estimated travel times.",
+ "cupertinoAlertAllow": "Allow",
+ "cupertinoAlertDontAllow": "Don't allow",
+ "cupertinoAlertFavoriteDessert": "Select Favourite Dessert",
+ "cupertinoAlertDessertDescription": "Please select your favourite type of dessert from the list below. Your selection will be used to customise the suggested list of eateries in your area.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisu",
+ "cupertinoAlertApplePie": "Apple Pie",
+ "cupertinoAlertChocolateBrownie": "Chocolate brownie",
+ "cupertinoShowAlert": "Show alert",
+ "colorsRed": "RED",
+ "colorsPink": "PINK",
+ "colorsPurple": "PURPLE",
+ "colorsDeepPurple": "DEEP PURPLE",
+ "colorsIndigo": "INDIGO",
+ "colorsBlue": "BLUE",
+ "colorsLightBlue": "LIGHT BLUE",
+ "colorsCyan": "CYAN",
+ "dialogAddAccount": "Add account",
+ "Gallery": "Gallery",
+ "Categories": "Categories",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "Basic shopping app",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "Travel app",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "REFERENCE STYLES & MEDIA"
+}
diff --git a/gallery/lib/l10n/intl_en_IE.arb b/gallery/lib/l10n/intl_en_IE.arb
new file mode 100644
index 0000000..50706f7
--- /dev/null
+++ b/gallery/lib/l10n/intl_en_IE.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "View options",
+ "demoOptionsFeatureDescription": "Tap here to view available options for this demo.",
+ "demoCodeViewerCopyAll": "COPY ALL",
+ "shrineScreenReaderRemoveProductButton": "Remove {product}",
+ "shrineScreenReaderProductAddToCart": "Add to basket",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Shopping basket, no items}=1{Shopping basket, 1 item}other{Shopping basket, {quantity} items}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Failed to copy to clipboard: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Copied to clipboard.",
+ "craneSleep8SemanticLabel": "Mayan ruins on a cliff above a beach",
+ "craneSleep4SemanticLabel": "Lake-side hotel in front of mountains",
+ "craneSleep2SemanticLabel": "Machu Picchu citadel",
+ "craneSleep1SemanticLabel": "Chalet in a snowy landscape with evergreen trees",
+ "craneSleep0SemanticLabel": "Overwater bungalows",
+ "craneFly13SemanticLabel": "Seaside pool with palm trees",
+ "craneFly12SemanticLabel": "Pool with palm trees",
+ "craneFly11SemanticLabel": "Brick lighthouse at sea",
+ "craneFly10SemanticLabel": "Al-Azhar Mosque towers during sunset",
+ "craneFly9SemanticLabel": "Man leaning on an antique blue car",
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "craneEat9SemanticLabel": "Café counter with pastries",
+ "craneEat2SemanticLabel": "Burger",
+ "craneFly5SemanticLabel": "Lake-side hotel in front of mountains",
+ "demoSelectionControlsSubtitle": "Tick boxes, radio buttons and switches",
+ "craneEat10SemanticLabel": "Woman holding huge pastrami sandwich",
+ "craneFly4SemanticLabel": "Overwater bungalows",
+ "craneEat7SemanticLabel": "Bakery entrance",
+ "craneEat6SemanticLabel": "Shrimp dish",
+ "craneEat5SemanticLabel": "Artsy restaurant seating area",
+ "craneEat4SemanticLabel": "Chocolate dessert",
+ "craneEat3SemanticLabel": "Korean taco",
+ "craneFly3SemanticLabel": "Machu Picchu citadel",
+ "craneEat1SemanticLabel": "Empty bar with diner-style stools",
+ "craneEat0SemanticLabel": "Pizza in a wood-fired oven",
+ "craneSleep11SemanticLabel": "Taipei 101 skyscraper",
+ "craneSleep10SemanticLabel": "Al-Azhar Mosque towers during sunset",
+ "craneSleep9SemanticLabel": "Brick lighthouse at sea",
+ "craneEat8SemanticLabel": "Plate of crawfish",
+ "craneSleep7SemanticLabel": "Colourful apartments at Ribeira Square",
+ "craneSleep6SemanticLabel": "Pool with palm trees",
+ "craneSleep5SemanticLabel": "Tent in a field",
+ "settingsButtonCloseLabel": "Close settings",
+ "demoSelectionControlsCheckboxDescription": "Tick boxes allow the user to select multiple options from a set. A normal tick box's value is true or false and a tristate tick box's value can also be null.",
+ "settingsButtonLabel": "Settings",
+ "demoListsTitle": "Lists",
+ "demoListsSubtitle": "Scrolling list layouts",
+ "demoListsDescription": "A single fixed-height row that typically contains some text as well as a leading or trailing icon.",
+ "demoOneLineListsTitle": "One line",
+ "demoTwoLineListsTitle": "Two lines",
+ "demoListsSecondary": "Secondary text",
+ "demoSelectionControlsTitle": "Selection controls",
+ "craneFly7SemanticLabel": "Mount Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Tick box",
+ "craneSleep3SemanticLabel": "Man leaning on an antique blue car",
+ "demoSelectionControlsRadioTitle": "Radio",
+ "demoSelectionControlsRadioDescription": "Radio buttons allow the user to select one option from a set. Use radio buttons for exclusive selection if you think that the user needs to see all available options side by side.",
+ "demoSelectionControlsSwitchTitle": "Switch",
+ "demoSelectionControlsSwitchDescription": "On/off switches toggle the state of a single settings option. The option that the switch controls, as well as the state it’s in, should be made clear from the corresponding inline label.",
+ "craneFly0SemanticLabel": "Chalet in a snowy landscape with evergreen trees",
+ "craneFly1SemanticLabel": "Tent in a field",
+ "craneFly2SemanticLabel": "Prayer flags in front of snowy mountain",
+ "craneFly6SemanticLabel": "Aerial view of Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "See all accounts",
+ "rallyBillAmount": "{billName} bill due {date} for {amount}.",
+ "shrineTooltipCloseCart": "Close basket",
+ "shrineTooltipCloseMenu": "Close menu",
+ "shrineTooltipOpenMenu": "Open menu",
+ "shrineTooltipSettings": "Settings",
+ "shrineTooltipSearch": "Search",
+ "demoTabsDescription": "Tabs organise content across different screens, data sets and other interactions.",
+ "demoTabsSubtitle": "Tabs with independently scrollable views",
+ "demoTabsTitle": "Tabs",
+ "rallyBudgetAmount": "{budgetName} budget with {amountUsed} used of {amountTotal}, {amountLeft} left",
+ "shrineTooltipRemoveItem": "Remove item",
+ "rallyAccountAmount": "{accountName} account {accountNumber} with {amount}.",
+ "rallySeeAllBudgets": "See all budgets",
+ "rallySeeAllBills": "See all bills",
+ "craneFormDate": "Select date",
+ "craneFormOrigin": "Choose origin",
+ "craneFly2": "Khumbu Valley, Nepal",
+ "craneFly3": "Machu Picchu, Peru",
+ "craneFly4": "Malé, Maldives",
+ "craneFly5": "Vitznau, Switzerland",
+ "craneFly6": "Mexico City, Mexico",
+ "craneFly7": "Mount Rushmore, United States",
+ "settingsTextDirectionLocaleBased": "Based on locale",
+ "craneFly9": "Havana, Cuba",
+ "craneFly10": "Cairo, Egypt",
+ "craneFly11": "Lisbon, Portugal",
+ "craneFly12": "Napa, United States",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldives",
+ "craneSleep1": "Aspen, United States",
+ "craneSleep2": "Machu Picchu, Peru",
+ "demoCupertinoSegmentedControlTitle": "Segmented control",
+ "craneSleep4": "Vitznau, Switzerland",
+ "craneSleep5": "Big Sur, United States",
+ "craneSleep6": "Napa, United States",
+ "craneSleep7": "Porto, Portugal",
+ "craneSleep8": "Tulum, Mexico",
+ "craneEat5": "Seoul, South Korea",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Compact elements that represent an input, attribute or action",
+ "demoActionChipTitle": "Action chip",
+ "demoActionChipDescription": "Action chips are a set of options which trigger an action related to primary content. Action chips should appear dynamically and contextually in a UI.",
+ "demoChoiceChipTitle": "Choice chip",
+ "demoChoiceChipDescription": "Choice chips represent a single choice from a set. Choice chips contain related descriptive text or categories.",
+ "demoFilterChipTitle": "Filter chip",
+ "demoFilterChipDescription": "Filter chips use tags or descriptive words as a way to filter content.",
+ "demoInputChipTitle": "Input chip",
+ "demoInputChipDescription": "Input chips represent a complex piece of information, such as an entity (person, place or thing) or conversational text, in a compact form.",
+ "craneSleep9": "Lisbon, Portugal",
+ "craneEat10": "Lisbon, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Used to select between a number of mutually exclusive options. When one option in the segmented control is selected, the other options in the segmented control cease to be selected.",
+ "chipTurnOnLights": "Turn on lights",
+ "chipSmall": "Small",
+ "chipMedium": "Medium",
+ "chipLarge": "Large",
+ "chipElevator": "Lift",
+ "chipWasher": "Washing machine",
+ "chipFireplace": "Fireplace",
+ "chipBiking": "Cycling",
+ "craneFormDiners": "Diners",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Increase your potential tax deduction! Assign categories to 1 unassigned transaction.}other{Increase your potential tax deduction! Assign categories to {count} unassigned transactions.}}",
+ "craneFormTime": "Select time",
+ "craneFormLocation": "Select location",
+ "craneFormTravelers": "Travellers",
+ "craneEat8": "Atlanta, United States",
+ "craneFormDestination": "Choose destination",
+ "craneFormDates": "Select dates",
+ "craneFly": "FLY",
+ "craneSleep": "SLEEP",
+ "craneEat": "EAT",
+ "craneFlySubhead": "Explore flights by destination",
+ "craneSleepSubhead": "Explore properties by destination",
+ "craneEatSubhead": "Explore restaurants by destination",
+ "craneFlyStops": "{numberOfStops,plural, =0{Non-stop}=1{1 stop}other{{numberOfStops} stops}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No available properties}=1{1 available property}other{{totalProperties} available properties}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No restaurants}=1{1 restaurant}other{{totalRestaurants} restaurants}}",
+ "craneFly0": "Aspen, United States",
+ "demoCupertinoSegmentedControlSubtitle": "iOS-style segmented control",
+ "craneSleep10": "Cairo, Egypt",
+ "craneEat9": "Madrid, Spain",
+ "craneFly1": "Big Sur, United States",
+ "craneEat7": "Nashville, United States",
+ "craneEat6": "Seattle, United States",
+ "craneFly8": "Singapore",
+ "craneEat4": "Paris, France",
+ "craneEat3": "Portland, United States",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, United States",
+ "craneEat0": "Naples, Italy",
+ "craneSleep11": "Taipei, Taiwan",
+ "craneSleep3": "Havana, Cuba",
+ "shrineLogoutButtonCaption": "LOGOUT",
+ "rallyTitleBills": "BILLS",
+ "rallyTitleAccounts": "ACCOUNTS",
+ "shrineProductVagabondSack": "Vagabond sack",
+ "rallyAccountDetailDataInterestYtd": "Interest YTD",
+ "shrineProductWhitneyBelt": "Whitney belt",
+ "shrineProductGardenStrand": "Garden strand",
+ "shrineProductStrutEarrings": "Strut earrings",
+ "shrineProductVarsitySocks": "Varsity socks",
+ "shrineProductWeaveKeyring": "Weave keyring",
+ "shrineProductGatsbyHat": "Gatsby hat",
+ "shrineProductShrugBag": "Shrug bag",
+ "shrineProductGiltDeskTrio": "Gilt desk trio",
+ "shrineProductCopperWireRack": "Copper wire rack",
+ "shrineProductSootheCeramicSet": "Soothe ceramic set",
+ "shrineProductHurrahsTeaSet": "Hurrahs tea set",
+ "shrineProductBlueStoneMug": "Blue stone mug",
+ "shrineProductRainwaterTray": "Rainwater tray",
+ "shrineProductChambrayNapkins": "Chambray napkins",
+ "shrineProductSucculentPlanters": "Succulent planters",
+ "shrineProductQuartetTable": "Quartet table",
+ "shrineProductKitchenQuattro": "Kitchen quattro",
+ "shrineProductClaySweater": "Clay sweater",
+ "shrineProductSeaTunic": "Sea tunic",
+ "shrineProductPlasterTunic": "Plaster tunic",
+ "rallyBudgetCategoryRestaurants": "Restaurants",
+ "shrineProductChambrayShirt": "Chambray shirt",
+ "shrineProductSeabreezeSweater": "Seabreeze sweater",
+ "shrineProductGentryJacket": "Gentry jacket",
+ "shrineProductNavyTrousers": "Navy trousers",
+ "shrineProductWalterHenleyWhite": "Walter henley (white)",
+ "shrineProductSurfAndPerfShirt": "Surf and perf shirt",
+ "shrineProductGingerScarf": "Ginger scarf",
+ "shrineProductRamonaCrossover": "Ramona crossover",
+ "shrineProductClassicWhiteCollar": "Classic white collar",
+ "shrineProductSunshirtDress": "Sunshirt dress",
+ "rallyAccountDetailDataInterestRate": "Interest rate",
+ "rallyAccountDetailDataAnnualPercentageYield": "Annual percentage yield",
+ "rallyAccountDataVacation": "Holiday",
+ "shrineProductFineLinesTee": "Fine lines tee",
+ "rallyAccountDataHomeSavings": "Home savings",
+ "rallyAccountDataChecking": "Current",
+ "rallyAccountDetailDataInterestPaidLastYear": "Interest paid last year",
+ "rallyAccountDetailDataNextStatement": "Next statement",
+ "rallyAccountDetailDataAccountOwner": "Account owner",
+ "rallyBudgetCategoryCoffeeShops": "Coffee shops",
+ "rallyBudgetCategoryGroceries": "Groceries",
+ "shrineProductCeriseScallopTee": "Cerise scallop tee",
+ "rallyBudgetCategoryClothing": "Clothing",
+ "rallySettingsManageAccounts": "Manage accounts",
+ "rallyAccountDataCarSavings": "Car savings",
+ "rallySettingsTaxDocuments": "Tax documents",
+ "rallySettingsPasscodeAndTouchId": "Passcode and Touch ID",
+ "rallySettingsNotifications": "Notifications",
+ "rallySettingsPersonalInformation": "Personal information",
+ "rallySettingsPaperlessSettings": "Paperless settings",
+ "rallySettingsFindAtms": "Find ATMs",
+ "rallySettingsHelp": "Help",
+ "rallySettingsSignOut": "Sign out",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Due",
+ "rallyBudgetLeft": "Left",
+ "rallyAccounts": "Accounts",
+ "rallyBills": "Bills",
+ "rallyBudgets": "Budgets",
+ "rallyAlerts": "Alerts",
+ "rallySeeAll": "SEE ALL",
+ "rallyFinanceLeft": "LEFT",
+ "rallyTitleOverview": "OVERVIEW",
+ "shrineProductShoulderRollsTee": "Shoulder rolls tee",
+ "shrineNextButtonCaption": "NEXT",
+ "rallyTitleBudgets": "BUDGETS",
+ "rallyTitleSettings": "SETTINGS",
+ "rallyLoginLoginToRally": "Log in to Rally",
+ "rallyLoginNoAccount": "Don't have an account?",
+ "rallyLoginSignUp": "SIGN UP",
+ "rallyLoginUsername": "Username",
+ "rallyLoginPassword": "Password",
+ "rallyLoginLabelLogin": "Log in",
+ "rallyLoginRememberMe": "Remember me",
+ "rallyLoginButtonLogin": "LOGIN",
+ "rallyAlertsMessageHeadsUpShopping": "Beware: you’ve used up {percent} of your shopping budget for this month.",
+ "rallyAlertsMessageSpentOnRestaurants": "You’ve spent {amount} on restaurants this week.",
+ "rallyAlertsMessageATMFees": "You’ve spent {amount} in ATM fees this month",
+ "rallyAlertsMessageCheckingAccount": "Good work! Your current account is {percent} higher than last month.",
+ "shrineMenuCaption": "MENU",
+ "shrineCategoryNameAll": "ALL",
+ "shrineCategoryNameAccessories": "ACCESSORIES",
+ "shrineCategoryNameClothing": "CLOTHING",
+ "shrineCategoryNameHome": "HOME",
+ "shrineLoginUsernameLabel": "Username",
+ "shrineLoginPasswordLabel": "Password",
+ "shrineCancelButtonCaption": "CANCEL",
+ "shrineCartTaxCaption": "Tax:",
+ "shrineCartPageCaption": "BASKET",
+ "shrineProductQuantity": "Quantity: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{NO ITEMS}=1{1 ITEM}other{{quantity} ITEMS}}",
+ "shrineCartClearButtonCaption": "CLEAR BASKET",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Delivery:",
+ "shrineProductGreySlouchTank": "Grey slouch tank top",
+ "shrineProductStellaSunglasses": "Stella sunglasses",
+ "shrineProductWhitePinstripeShirt": "White pinstripe shirt",
+ "demoTextFieldWhereCanWeReachYou": "Where can we contact you?",
+ "settingsTextDirectionLTR": "LTR",
+ "settingsTextScalingLarge": "Large",
+ "demoBottomSheetHeader": "Header",
+ "demoBottomSheetItem": "Item {value}",
+ "demoBottomTextFieldsTitle": "Text fields",
+ "demoTextFieldTitle": "Text fields",
+ "demoTextFieldSubtitle": "Single line of editable text and numbers",
+ "demoTextFieldDescription": "Text fields allow users to enter text into a UI. They typically appear in forms and dialogues.",
+ "demoTextFieldShowPasswordLabel": "Show password",
+ "demoTextFieldHidePasswordLabel": "Hide password",
+ "demoTextFieldFormErrors": "Please fix the errors in red before submitting.",
+ "demoTextFieldNameRequired": "Name is required.",
+ "demoTextFieldOnlyAlphabeticalChars": "Please enter only alphabetical characters.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### – Enter a US phone number.",
+ "demoTextFieldEnterPassword": "Please enter a password.",
+ "demoTextFieldPasswordsDoNotMatch": "The passwords don't match",
+ "demoTextFieldWhatDoPeopleCallYou": "What do people call you?",
+ "demoTextFieldNameField": "Name*",
+ "demoBottomSheetButtonText": "SHOW BOTTOM SHEET",
+ "demoTextFieldPhoneNumber": "Phone number*",
+ "demoBottomSheetTitle": "Bottom sheet",
+ "demoTextFieldEmail": "Email",
+ "demoTextFieldTellUsAboutYourself": "Tell us about yourself (e.g. write down what you do or what hobbies you have)",
+ "demoTextFieldKeepItShort": "Keep it short, this is just a demo.",
+ "starterAppGenericButton": "BUTTON",
+ "demoTextFieldLifeStory": "Life story",
+ "demoTextFieldSalary": "Salary",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "No more than 8 characters.",
+ "demoTextFieldPassword": "Password*",
+ "demoTextFieldRetypePassword": "Re-type password*",
+ "demoTextFieldSubmit": "SUBMIT",
+ "demoBottomNavigationSubtitle": "Bottom navigation with cross-fading views",
+ "demoBottomSheetAddLabel": "Add",
+ "demoBottomSheetModalDescription": "A modal bottom sheet is an alternative to a menu or a dialogue and prevents the user from interacting with the rest of the app.",
+ "demoBottomSheetModalTitle": "Modal bottom sheet",
+ "demoBottomSheetPersistentDescription": "A persistent bottom sheet shows information that supplements the primary content of the app. A persistent bottom sheet remains visible even when the user interacts with other parts of the app.",
+ "demoBottomSheetPersistentTitle": "Persistent bottom sheet",
+ "demoBottomSheetSubtitle": "Persistent and modal bottom sheets",
+ "demoTextFieldNameHasPhoneNumber": "{name} phone number is {phoneNumber}",
+ "buttonText": "BUTTON",
+ "demoTypographyDescription": "Definitions for the various typographical styles found in Material Design.",
+ "demoTypographySubtitle": "All of the predefined text styles",
+ "demoTypographyTitle": "Typography",
+ "demoFullscreenDialogDescription": "The fullscreenDialog property specifies whether the incoming page is a full-screen modal dialogue",
+ "demoFlatButtonDescription": "A flat button displays an ink splash on press but does not lift. Use flat buttons on toolbars, in dialogues and inline with padding",
+ "demoBottomNavigationDescription": "Bottom navigation bars display three to five destinations at the bottom of a screen. Each destination is represented by an icon and an optional text label. When a bottom navigation icon is tapped, the user is taken to the top-level navigation destination associated with that icon.",
+ "demoBottomNavigationSelectedLabel": "Selected label",
+ "demoBottomNavigationPersistentLabels": "Persistent labels",
+ "starterAppDrawerItem": "Item {value}",
+ "demoTextFieldRequiredField": "* indicates required field",
+ "demoBottomNavigationTitle": "Bottom navigation",
+ "settingsLightTheme": "Light",
+ "settingsTheme": "Theme",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "RTL",
+ "settingsTextScalingHuge": "Huge",
+ "cupertinoButton": "Button",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Small",
+ "settingsSystemDefault": "System",
+ "settingsTitle": "Settings",
+ "rallyDescription": "A personal finance app",
+ "aboutDialogDescription": "To see the source code for this app, please visit the {value}.",
+ "bottomNavigationCommentsTab": "Comments",
+ "starterAppGenericBody": "Body",
+ "starterAppGenericHeadline": "Headline",
+ "starterAppGenericSubtitle": "Subtitle",
+ "starterAppGenericTitle": "Title",
+ "starterAppTooltipSearch": "Search",
+ "starterAppTooltipShare": "Share",
+ "starterAppTooltipFavorite": "Favourite",
+ "starterAppTooltipAdd": "Add",
+ "bottomNavigationCalendarTab": "Calendar",
+ "starterAppDescription": "A responsive starter layout",
+ "starterAppTitle": "Starter app",
+ "aboutFlutterSamplesRepo": "Flutter samples Github repo",
+ "bottomNavigationContentPlaceholder": "Placeholder for {title} tab",
+ "bottomNavigationCameraTab": "Camera",
+ "bottomNavigationAlarmTab": "Alarm",
+ "bottomNavigationAccountTab": "Account",
+ "demoTextFieldYourEmailAddress": "Your email address",
+ "demoToggleButtonDescription": "Toggle buttons can be used to group related options. To emphasise groups of related toggle buttons, a group should share a common container",
+ "colorsGrey": "GREY",
+ "colorsBrown": "BROWN",
+ "colorsDeepOrange": "DEEP ORANGE",
+ "colorsOrange": "ORANGE",
+ "colorsAmber": "AMBER",
+ "colorsYellow": "YELLOW",
+ "colorsLime": "LIME",
+ "colorsLightGreen": "LIGHT GREEN",
+ "colorsGreen": "GREEN",
+ "homeHeaderGallery": "Gallery",
+ "homeHeaderCategories": "Categories",
+ "shrineDescription": "A fashionable retail app",
+ "craneDescription": "A personalised travel app",
+ "homeCategoryReference": "REFERENCE STYLES & MEDIA",
+ "demoInvalidURL": "Couldn't display URL:",
+ "demoOptionsTooltip": "Options",
+ "demoInfoTooltip": "Info",
+ "demoCodeTooltip": "Code Sample",
+ "demoDocumentationTooltip": "API Documentation",
+ "demoFullscreenTooltip": "Full screen",
+ "settingsTextScaling": "Text scaling",
+ "settingsTextDirection": "Text direction",
+ "settingsLocale": "Locale",
+ "settingsPlatformMechanics": "Platform mechanics",
+ "settingsDarkTheme": "Dark",
+ "settingsSlowMotion": "Slow motion",
+ "settingsAbout": "About Flutter Gallery",
+ "settingsFeedback": "Send feedback",
+ "settingsAttribution": "Designed by TOASTER in London",
+ "demoButtonTitle": "Buttons",
+ "demoButtonSubtitle": "Flat, raised, outline and more",
+ "demoFlatButtonTitle": "Flat Button",
+ "demoRaisedButtonDescription": "Raised buttons add dimension to mostly flat layouts. They emphasise functions on busy or wide spaces.",
+ "demoRaisedButtonTitle": "Raised Button",
+ "demoOutlineButtonTitle": "Outline Button",
+ "demoOutlineButtonDescription": "Outline buttons become opaque and elevate when pressed. They are often paired with raised buttons to indicate an alternative, secondary action.",
+ "demoToggleButtonTitle": "Toggle Buttons",
+ "colorsTeal": "TEAL",
+ "demoFloatingButtonTitle": "Floating Action Button",
+ "demoFloatingButtonDescription": "A floating action button is a circular icon button that hovers over content to promote a primary action in the application.",
+ "demoDialogTitle": "Dialogues",
+ "demoDialogSubtitle": "Simple, alert and full-screen",
+ "demoAlertDialogTitle": "Alert",
+ "demoAlertDialogDescription": "An alert dialogue informs the user about situations that require acknowledgement. An alert dialogue has an optional title and an optional list of actions.",
+ "demoAlertTitleDialogTitle": "Alert With Title",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "A simple dialogue offers the user a choice between several options. A simple dialogue has an optional title that is displayed above the choices.",
+ "demoFullscreenDialogTitle": "Full screen",
+ "demoCupertinoButtonsTitle": "Buttons",
+ "demoCupertinoButtonsSubtitle": "iOS-style buttons",
+ "demoCupertinoButtonsDescription": "An iOS-style button. It takes in text and/or an icon that fades out and in on touch. May optionally have a background.",
+ "demoCupertinoAlertsTitle": "Alerts",
+ "demoCupertinoAlertsSubtitle": "iOS-style alert dialogues",
+ "demoCupertinoAlertTitle": "Alert",
+ "demoCupertinoAlertDescription": "An alert dialogue informs the user about situations that require acknowledgement. An alert dialogue has an optional title, optional content and an optional list of actions. The title is displayed above the content and the actions are displayed below the content.",
+ "demoCupertinoAlertWithTitleTitle": "Alert with title",
+ "demoCupertinoAlertButtonsTitle": "Alert With Buttons",
+ "demoCupertinoAlertButtonsOnlyTitle": "Alert Buttons Only",
+ "demoCupertinoActionSheetTitle": "Action Sheet",
+ "demoCupertinoActionSheetDescription": "An action sheet is a specific style of alert that presents the user with a set of two or more choices related to the current context. An action sheet can have a title, an additional message and a list of actions.",
+ "demoColorsTitle": "Colours",
+ "demoColorsSubtitle": "All of the predefined colours",
+ "demoColorsDescription": "Colour and colour swatch constants which represent Material Design's colour palette.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Create",
+ "dialogSelectedOption": "You selected: '{value}'",
+ "dialogDiscardTitle": "Discard draft?",
+ "dialogLocationTitle": "Use Google's location service?",
+ "dialogLocationDescription": "Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running.",
+ "dialogCancel": "CANCEL",
+ "dialogDiscard": "DISCARD",
+ "dialogDisagree": "DISAGREE",
+ "dialogAgree": "AGREE",
+ "dialogSetBackup": "Set backup account",
+ "colorsBlueGrey": "BLUE GREY",
+ "dialogShow": "SHOW DIALOGUE",
+ "dialogFullscreenTitle": "Full-Screen Dialogue",
+ "dialogFullscreenSave": "SAVE",
+ "dialogFullscreenDescription": "A full-screen dialogue demo",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "With background",
+ "cupertinoAlertCancel": "Cancel",
+ "cupertinoAlertDiscard": "Discard",
+ "cupertinoAlertLocationTitle": "Allow 'Maps' to access your location while you are using the app?",
+ "cupertinoAlertLocationDescription": "Your current location will be displayed on the map and used for directions, nearby search results and estimated travel times.",
+ "cupertinoAlertAllow": "Allow",
+ "cupertinoAlertDontAllow": "Don't allow",
+ "cupertinoAlertFavoriteDessert": "Select Favourite Dessert",
+ "cupertinoAlertDessertDescription": "Please select your favourite type of dessert from the list below. Your selection will be used to customise the suggested list of eateries in your area.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisu",
+ "cupertinoAlertApplePie": "Apple Pie",
+ "cupertinoAlertChocolateBrownie": "Chocolate brownie",
+ "cupertinoShowAlert": "Show alert",
+ "colorsRed": "RED",
+ "colorsPink": "PINK",
+ "colorsPurple": "PURPLE",
+ "colorsDeepPurple": "DEEP PURPLE",
+ "colorsIndigo": "INDIGO",
+ "colorsBlue": "BLUE",
+ "colorsLightBlue": "LIGHT BLUE",
+ "colorsCyan": "CYAN",
+ "dialogAddAccount": "Add account",
+ "Gallery": "Gallery",
+ "Categories": "Categories",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "Basic shopping app",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "Travel app",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "REFERENCE STYLES & MEDIA"
+}
diff --git a/gallery/lib/l10n/intl_en_IN.arb b/gallery/lib/l10n/intl_en_IN.arb
new file mode 100644
index 0000000..50706f7
--- /dev/null
+++ b/gallery/lib/l10n/intl_en_IN.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "View options",
+ "demoOptionsFeatureDescription": "Tap here to view available options for this demo.",
+ "demoCodeViewerCopyAll": "COPY ALL",
+ "shrineScreenReaderRemoveProductButton": "Remove {product}",
+ "shrineScreenReaderProductAddToCart": "Add to basket",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Shopping basket, no items}=1{Shopping basket, 1 item}other{Shopping basket, {quantity} items}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Failed to copy to clipboard: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Copied to clipboard.",
+ "craneSleep8SemanticLabel": "Mayan ruins on a cliff above a beach",
+ "craneSleep4SemanticLabel": "Lake-side hotel in front of mountains",
+ "craneSleep2SemanticLabel": "Machu Picchu citadel",
+ "craneSleep1SemanticLabel": "Chalet in a snowy landscape with evergreen trees",
+ "craneSleep0SemanticLabel": "Overwater bungalows",
+ "craneFly13SemanticLabel": "Seaside pool with palm trees",
+ "craneFly12SemanticLabel": "Pool with palm trees",
+ "craneFly11SemanticLabel": "Brick lighthouse at sea",
+ "craneFly10SemanticLabel": "Al-Azhar Mosque towers during sunset",
+ "craneFly9SemanticLabel": "Man leaning on an antique blue car",
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "craneEat9SemanticLabel": "Café counter with pastries",
+ "craneEat2SemanticLabel": "Burger",
+ "craneFly5SemanticLabel": "Lake-side hotel in front of mountains",
+ "demoSelectionControlsSubtitle": "Tick boxes, radio buttons and switches",
+ "craneEat10SemanticLabel": "Woman holding huge pastrami sandwich",
+ "craneFly4SemanticLabel": "Overwater bungalows",
+ "craneEat7SemanticLabel": "Bakery entrance",
+ "craneEat6SemanticLabel": "Shrimp dish",
+ "craneEat5SemanticLabel": "Artsy restaurant seating area",
+ "craneEat4SemanticLabel": "Chocolate dessert",
+ "craneEat3SemanticLabel": "Korean taco",
+ "craneFly3SemanticLabel": "Machu Picchu citadel",
+ "craneEat1SemanticLabel": "Empty bar with diner-style stools",
+ "craneEat0SemanticLabel": "Pizza in a wood-fired oven",
+ "craneSleep11SemanticLabel": "Taipei 101 skyscraper",
+ "craneSleep10SemanticLabel": "Al-Azhar Mosque towers during sunset",
+ "craneSleep9SemanticLabel": "Brick lighthouse at sea",
+ "craneEat8SemanticLabel": "Plate of crawfish",
+ "craneSleep7SemanticLabel": "Colourful apartments at Ribeira Square",
+ "craneSleep6SemanticLabel": "Pool with palm trees",
+ "craneSleep5SemanticLabel": "Tent in a field",
+ "settingsButtonCloseLabel": "Close settings",
+ "demoSelectionControlsCheckboxDescription": "Tick boxes allow the user to select multiple options from a set. A normal tick box's value is true or false and a tristate tick box's value can also be null.",
+ "settingsButtonLabel": "Settings",
+ "demoListsTitle": "Lists",
+ "demoListsSubtitle": "Scrolling list layouts",
+ "demoListsDescription": "A single fixed-height row that typically contains some text as well as a leading or trailing icon.",
+ "demoOneLineListsTitle": "One line",
+ "demoTwoLineListsTitle": "Two lines",
+ "demoListsSecondary": "Secondary text",
+ "demoSelectionControlsTitle": "Selection controls",
+ "craneFly7SemanticLabel": "Mount Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Tick box",
+ "craneSleep3SemanticLabel": "Man leaning on an antique blue car",
+ "demoSelectionControlsRadioTitle": "Radio",
+ "demoSelectionControlsRadioDescription": "Radio buttons allow the user to select one option from a set. Use radio buttons for exclusive selection if you think that the user needs to see all available options side by side.",
+ "demoSelectionControlsSwitchTitle": "Switch",
+ "demoSelectionControlsSwitchDescription": "On/off switches toggle the state of a single settings option. The option that the switch controls, as well as the state it’s in, should be made clear from the corresponding inline label.",
+ "craneFly0SemanticLabel": "Chalet in a snowy landscape with evergreen trees",
+ "craneFly1SemanticLabel": "Tent in a field",
+ "craneFly2SemanticLabel": "Prayer flags in front of snowy mountain",
+ "craneFly6SemanticLabel": "Aerial view of Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "See all accounts",
+ "rallyBillAmount": "{billName} bill due {date} for {amount}.",
+ "shrineTooltipCloseCart": "Close basket",
+ "shrineTooltipCloseMenu": "Close menu",
+ "shrineTooltipOpenMenu": "Open menu",
+ "shrineTooltipSettings": "Settings",
+ "shrineTooltipSearch": "Search",
+ "demoTabsDescription": "Tabs organise content across different screens, data sets and other interactions.",
+ "demoTabsSubtitle": "Tabs with independently scrollable views",
+ "demoTabsTitle": "Tabs",
+ "rallyBudgetAmount": "{budgetName} budget with {amountUsed} used of {amountTotal}, {amountLeft} left",
+ "shrineTooltipRemoveItem": "Remove item",
+ "rallyAccountAmount": "{accountName} account {accountNumber} with {amount}.",
+ "rallySeeAllBudgets": "See all budgets",
+ "rallySeeAllBills": "See all bills",
+ "craneFormDate": "Select date",
+ "craneFormOrigin": "Choose origin",
+ "craneFly2": "Khumbu Valley, Nepal",
+ "craneFly3": "Machu Picchu, Peru",
+ "craneFly4": "Malé, Maldives",
+ "craneFly5": "Vitznau, Switzerland",
+ "craneFly6": "Mexico City, Mexico",
+ "craneFly7": "Mount Rushmore, United States",
+ "settingsTextDirectionLocaleBased": "Based on locale",
+ "craneFly9": "Havana, Cuba",
+ "craneFly10": "Cairo, Egypt",
+ "craneFly11": "Lisbon, Portugal",
+ "craneFly12": "Napa, United States",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldives",
+ "craneSleep1": "Aspen, United States",
+ "craneSleep2": "Machu Picchu, Peru",
+ "demoCupertinoSegmentedControlTitle": "Segmented control",
+ "craneSleep4": "Vitznau, Switzerland",
+ "craneSleep5": "Big Sur, United States",
+ "craneSleep6": "Napa, United States",
+ "craneSleep7": "Porto, Portugal",
+ "craneSleep8": "Tulum, Mexico",
+ "craneEat5": "Seoul, South Korea",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Compact elements that represent an input, attribute or action",
+ "demoActionChipTitle": "Action chip",
+ "demoActionChipDescription": "Action chips are a set of options which trigger an action related to primary content. Action chips should appear dynamically and contextually in a UI.",
+ "demoChoiceChipTitle": "Choice chip",
+ "demoChoiceChipDescription": "Choice chips represent a single choice from a set. Choice chips contain related descriptive text or categories.",
+ "demoFilterChipTitle": "Filter chip",
+ "demoFilterChipDescription": "Filter chips use tags or descriptive words as a way to filter content.",
+ "demoInputChipTitle": "Input chip",
+ "demoInputChipDescription": "Input chips represent a complex piece of information, such as an entity (person, place or thing) or conversational text, in a compact form.",
+ "craneSleep9": "Lisbon, Portugal",
+ "craneEat10": "Lisbon, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Used to select between a number of mutually exclusive options. When one option in the segmented control is selected, the other options in the segmented control cease to be selected.",
+ "chipTurnOnLights": "Turn on lights",
+ "chipSmall": "Small",
+ "chipMedium": "Medium",
+ "chipLarge": "Large",
+ "chipElevator": "Lift",
+ "chipWasher": "Washing machine",
+ "chipFireplace": "Fireplace",
+ "chipBiking": "Cycling",
+ "craneFormDiners": "Diners",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Increase your potential tax deduction! Assign categories to 1 unassigned transaction.}other{Increase your potential tax deduction! Assign categories to {count} unassigned transactions.}}",
+ "craneFormTime": "Select time",
+ "craneFormLocation": "Select location",
+ "craneFormTravelers": "Travellers",
+ "craneEat8": "Atlanta, United States",
+ "craneFormDestination": "Choose destination",
+ "craneFormDates": "Select dates",
+ "craneFly": "FLY",
+ "craneSleep": "SLEEP",
+ "craneEat": "EAT",
+ "craneFlySubhead": "Explore flights by destination",
+ "craneSleepSubhead": "Explore properties by destination",
+ "craneEatSubhead": "Explore restaurants by destination",
+ "craneFlyStops": "{numberOfStops,plural, =0{Non-stop}=1{1 stop}other{{numberOfStops} stops}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No available properties}=1{1 available property}other{{totalProperties} available properties}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No restaurants}=1{1 restaurant}other{{totalRestaurants} restaurants}}",
+ "craneFly0": "Aspen, United States",
+ "demoCupertinoSegmentedControlSubtitle": "iOS-style segmented control",
+ "craneSleep10": "Cairo, Egypt",
+ "craneEat9": "Madrid, Spain",
+ "craneFly1": "Big Sur, United States",
+ "craneEat7": "Nashville, United States",
+ "craneEat6": "Seattle, United States",
+ "craneFly8": "Singapore",
+ "craneEat4": "Paris, France",
+ "craneEat3": "Portland, United States",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, United States",
+ "craneEat0": "Naples, Italy",
+ "craneSleep11": "Taipei, Taiwan",
+ "craneSleep3": "Havana, Cuba",
+ "shrineLogoutButtonCaption": "LOGOUT",
+ "rallyTitleBills": "BILLS",
+ "rallyTitleAccounts": "ACCOUNTS",
+ "shrineProductVagabondSack": "Vagabond sack",
+ "rallyAccountDetailDataInterestYtd": "Interest YTD",
+ "shrineProductWhitneyBelt": "Whitney belt",
+ "shrineProductGardenStrand": "Garden strand",
+ "shrineProductStrutEarrings": "Strut earrings",
+ "shrineProductVarsitySocks": "Varsity socks",
+ "shrineProductWeaveKeyring": "Weave keyring",
+ "shrineProductGatsbyHat": "Gatsby hat",
+ "shrineProductShrugBag": "Shrug bag",
+ "shrineProductGiltDeskTrio": "Gilt desk trio",
+ "shrineProductCopperWireRack": "Copper wire rack",
+ "shrineProductSootheCeramicSet": "Soothe ceramic set",
+ "shrineProductHurrahsTeaSet": "Hurrahs tea set",
+ "shrineProductBlueStoneMug": "Blue stone mug",
+ "shrineProductRainwaterTray": "Rainwater tray",
+ "shrineProductChambrayNapkins": "Chambray napkins",
+ "shrineProductSucculentPlanters": "Succulent planters",
+ "shrineProductQuartetTable": "Quartet table",
+ "shrineProductKitchenQuattro": "Kitchen quattro",
+ "shrineProductClaySweater": "Clay sweater",
+ "shrineProductSeaTunic": "Sea tunic",
+ "shrineProductPlasterTunic": "Plaster tunic",
+ "rallyBudgetCategoryRestaurants": "Restaurants",
+ "shrineProductChambrayShirt": "Chambray shirt",
+ "shrineProductSeabreezeSweater": "Seabreeze sweater",
+ "shrineProductGentryJacket": "Gentry jacket",
+ "shrineProductNavyTrousers": "Navy trousers",
+ "shrineProductWalterHenleyWhite": "Walter henley (white)",
+ "shrineProductSurfAndPerfShirt": "Surf and perf shirt",
+ "shrineProductGingerScarf": "Ginger scarf",
+ "shrineProductRamonaCrossover": "Ramona crossover",
+ "shrineProductClassicWhiteCollar": "Classic white collar",
+ "shrineProductSunshirtDress": "Sunshirt dress",
+ "rallyAccountDetailDataInterestRate": "Interest rate",
+ "rallyAccountDetailDataAnnualPercentageYield": "Annual percentage yield",
+ "rallyAccountDataVacation": "Holiday",
+ "shrineProductFineLinesTee": "Fine lines tee",
+ "rallyAccountDataHomeSavings": "Home savings",
+ "rallyAccountDataChecking": "Current",
+ "rallyAccountDetailDataInterestPaidLastYear": "Interest paid last year",
+ "rallyAccountDetailDataNextStatement": "Next statement",
+ "rallyAccountDetailDataAccountOwner": "Account owner",
+ "rallyBudgetCategoryCoffeeShops": "Coffee shops",
+ "rallyBudgetCategoryGroceries": "Groceries",
+ "shrineProductCeriseScallopTee": "Cerise scallop tee",
+ "rallyBudgetCategoryClothing": "Clothing",
+ "rallySettingsManageAccounts": "Manage accounts",
+ "rallyAccountDataCarSavings": "Car savings",
+ "rallySettingsTaxDocuments": "Tax documents",
+ "rallySettingsPasscodeAndTouchId": "Passcode and Touch ID",
+ "rallySettingsNotifications": "Notifications",
+ "rallySettingsPersonalInformation": "Personal information",
+ "rallySettingsPaperlessSettings": "Paperless settings",
+ "rallySettingsFindAtms": "Find ATMs",
+ "rallySettingsHelp": "Help",
+ "rallySettingsSignOut": "Sign out",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Due",
+ "rallyBudgetLeft": "Left",
+ "rallyAccounts": "Accounts",
+ "rallyBills": "Bills",
+ "rallyBudgets": "Budgets",
+ "rallyAlerts": "Alerts",
+ "rallySeeAll": "SEE ALL",
+ "rallyFinanceLeft": "LEFT",
+ "rallyTitleOverview": "OVERVIEW",
+ "shrineProductShoulderRollsTee": "Shoulder rolls tee",
+ "shrineNextButtonCaption": "NEXT",
+ "rallyTitleBudgets": "BUDGETS",
+ "rallyTitleSettings": "SETTINGS",
+ "rallyLoginLoginToRally": "Log in to Rally",
+ "rallyLoginNoAccount": "Don't have an account?",
+ "rallyLoginSignUp": "SIGN UP",
+ "rallyLoginUsername": "Username",
+ "rallyLoginPassword": "Password",
+ "rallyLoginLabelLogin": "Log in",
+ "rallyLoginRememberMe": "Remember me",
+ "rallyLoginButtonLogin": "LOGIN",
+ "rallyAlertsMessageHeadsUpShopping": "Beware: you’ve used up {percent} of your shopping budget for this month.",
+ "rallyAlertsMessageSpentOnRestaurants": "You’ve spent {amount} on restaurants this week.",
+ "rallyAlertsMessageATMFees": "You’ve spent {amount} in ATM fees this month",
+ "rallyAlertsMessageCheckingAccount": "Good work! Your current account is {percent} higher than last month.",
+ "shrineMenuCaption": "MENU",
+ "shrineCategoryNameAll": "ALL",
+ "shrineCategoryNameAccessories": "ACCESSORIES",
+ "shrineCategoryNameClothing": "CLOTHING",
+ "shrineCategoryNameHome": "HOME",
+ "shrineLoginUsernameLabel": "Username",
+ "shrineLoginPasswordLabel": "Password",
+ "shrineCancelButtonCaption": "CANCEL",
+ "shrineCartTaxCaption": "Tax:",
+ "shrineCartPageCaption": "BASKET",
+ "shrineProductQuantity": "Quantity: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{NO ITEMS}=1{1 ITEM}other{{quantity} ITEMS}}",
+ "shrineCartClearButtonCaption": "CLEAR BASKET",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Delivery:",
+ "shrineProductGreySlouchTank": "Grey slouch tank top",
+ "shrineProductStellaSunglasses": "Stella sunglasses",
+ "shrineProductWhitePinstripeShirt": "White pinstripe shirt",
+ "demoTextFieldWhereCanWeReachYou": "Where can we contact you?",
+ "settingsTextDirectionLTR": "LTR",
+ "settingsTextScalingLarge": "Large",
+ "demoBottomSheetHeader": "Header",
+ "demoBottomSheetItem": "Item {value}",
+ "demoBottomTextFieldsTitle": "Text fields",
+ "demoTextFieldTitle": "Text fields",
+ "demoTextFieldSubtitle": "Single line of editable text and numbers",
+ "demoTextFieldDescription": "Text fields allow users to enter text into a UI. They typically appear in forms and dialogues.",
+ "demoTextFieldShowPasswordLabel": "Show password",
+ "demoTextFieldHidePasswordLabel": "Hide password",
+ "demoTextFieldFormErrors": "Please fix the errors in red before submitting.",
+ "demoTextFieldNameRequired": "Name is required.",
+ "demoTextFieldOnlyAlphabeticalChars": "Please enter only alphabetical characters.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### – Enter a US phone number.",
+ "demoTextFieldEnterPassword": "Please enter a password.",
+ "demoTextFieldPasswordsDoNotMatch": "The passwords don't match",
+ "demoTextFieldWhatDoPeopleCallYou": "What do people call you?",
+ "demoTextFieldNameField": "Name*",
+ "demoBottomSheetButtonText": "SHOW BOTTOM SHEET",
+ "demoTextFieldPhoneNumber": "Phone number*",
+ "demoBottomSheetTitle": "Bottom sheet",
+ "demoTextFieldEmail": "Email",
+ "demoTextFieldTellUsAboutYourself": "Tell us about yourself (e.g. write down what you do or what hobbies you have)",
+ "demoTextFieldKeepItShort": "Keep it short, this is just a demo.",
+ "starterAppGenericButton": "BUTTON",
+ "demoTextFieldLifeStory": "Life story",
+ "demoTextFieldSalary": "Salary",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "No more than 8 characters.",
+ "demoTextFieldPassword": "Password*",
+ "demoTextFieldRetypePassword": "Re-type password*",
+ "demoTextFieldSubmit": "SUBMIT",
+ "demoBottomNavigationSubtitle": "Bottom navigation with cross-fading views",
+ "demoBottomSheetAddLabel": "Add",
+ "demoBottomSheetModalDescription": "A modal bottom sheet is an alternative to a menu or a dialogue and prevents the user from interacting with the rest of the app.",
+ "demoBottomSheetModalTitle": "Modal bottom sheet",
+ "demoBottomSheetPersistentDescription": "A persistent bottom sheet shows information that supplements the primary content of the app. A persistent bottom sheet remains visible even when the user interacts with other parts of the app.",
+ "demoBottomSheetPersistentTitle": "Persistent bottom sheet",
+ "demoBottomSheetSubtitle": "Persistent and modal bottom sheets",
+ "demoTextFieldNameHasPhoneNumber": "{name} phone number is {phoneNumber}",
+ "buttonText": "BUTTON",
+ "demoTypographyDescription": "Definitions for the various typographical styles found in Material Design.",
+ "demoTypographySubtitle": "All of the predefined text styles",
+ "demoTypographyTitle": "Typography",
+ "demoFullscreenDialogDescription": "The fullscreenDialog property specifies whether the incoming page is a full-screen modal dialogue",
+ "demoFlatButtonDescription": "A flat button displays an ink splash on press but does not lift. Use flat buttons on toolbars, in dialogues and inline with padding",
+ "demoBottomNavigationDescription": "Bottom navigation bars display three to five destinations at the bottom of a screen. Each destination is represented by an icon and an optional text label. When a bottom navigation icon is tapped, the user is taken to the top-level navigation destination associated with that icon.",
+ "demoBottomNavigationSelectedLabel": "Selected label",
+ "demoBottomNavigationPersistentLabels": "Persistent labels",
+ "starterAppDrawerItem": "Item {value}",
+ "demoTextFieldRequiredField": "* indicates required field",
+ "demoBottomNavigationTitle": "Bottom navigation",
+ "settingsLightTheme": "Light",
+ "settingsTheme": "Theme",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "RTL",
+ "settingsTextScalingHuge": "Huge",
+ "cupertinoButton": "Button",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Small",
+ "settingsSystemDefault": "System",
+ "settingsTitle": "Settings",
+ "rallyDescription": "A personal finance app",
+ "aboutDialogDescription": "To see the source code for this app, please visit the {value}.",
+ "bottomNavigationCommentsTab": "Comments",
+ "starterAppGenericBody": "Body",
+ "starterAppGenericHeadline": "Headline",
+ "starterAppGenericSubtitle": "Subtitle",
+ "starterAppGenericTitle": "Title",
+ "starterAppTooltipSearch": "Search",
+ "starterAppTooltipShare": "Share",
+ "starterAppTooltipFavorite": "Favourite",
+ "starterAppTooltipAdd": "Add",
+ "bottomNavigationCalendarTab": "Calendar",
+ "starterAppDescription": "A responsive starter layout",
+ "starterAppTitle": "Starter app",
+ "aboutFlutterSamplesRepo": "Flutter samples Github repo",
+ "bottomNavigationContentPlaceholder": "Placeholder for {title} tab",
+ "bottomNavigationCameraTab": "Camera",
+ "bottomNavigationAlarmTab": "Alarm",
+ "bottomNavigationAccountTab": "Account",
+ "demoTextFieldYourEmailAddress": "Your email address",
+ "demoToggleButtonDescription": "Toggle buttons can be used to group related options. To emphasise groups of related toggle buttons, a group should share a common container",
+ "colorsGrey": "GREY",
+ "colorsBrown": "BROWN",
+ "colorsDeepOrange": "DEEP ORANGE",
+ "colorsOrange": "ORANGE",
+ "colorsAmber": "AMBER",
+ "colorsYellow": "YELLOW",
+ "colorsLime": "LIME",
+ "colorsLightGreen": "LIGHT GREEN",
+ "colorsGreen": "GREEN",
+ "homeHeaderGallery": "Gallery",
+ "homeHeaderCategories": "Categories",
+ "shrineDescription": "A fashionable retail app",
+ "craneDescription": "A personalised travel app",
+ "homeCategoryReference": "REFERENCE STYLES & MEDIA",
+ "demoInvalidURL": "Couldn't display URL:",
+ "demoOptionsTooltip": "Options",
+ "demoInfoTooltip": "Info",
+ "demoCodeTooltip": "Code Sample",
+ "demoDocumentationTooltip": "API Documentation",
+ "demoFullscreenTooltip": "Full screen",
+ "settingsTextScaling": "Text scaling",
+ "settingsTextDirection": "Text direction",
+ "settingsLocale": "Locale",
+ "settingsPlatformMechanics": "Platform mechanics",
+ "settingsDarkTheme": "Dark",
+ "settingsSlowMotion": "Slow motion",
+ "settingsAbout": "About Flutter Gallery",
+ "settingsFeedback": "Send feedback",
+ "settingsAttribution": "Designed by TOASTER in London",
+ "demoButtonTitle": "Buttons",
+ "demoButtonSubtitle": "Flat, raised, outline and more",
+ "demoFlatButtonTitle": "Flat Button",
+ "demoRaisedButtonDescription": "Raised buttons add dimension to mostly flat layouts. They emphasise functions on busy or wide spaces.",
+ "demoRaisedButtonTitle": "Raised Button",
+ "demoOutlineButtonTitle": "Outline Button",
+ "demoOutlineButtonDescription": "Outline buttons become opaque and elevate when pressed. They are often paired with raised buttons to indicate an alternative, secondary action.",
+ "demoToggleButtonTitle": "Toggle Buttons",
+ "colorsTeal": "TEAL",
+ "demoFloatingButtonTitle": "Floating Action Button",
+ "demoFloatingButtonDescription": "A floating action button is a circular icon button that hovers over content to promote a primary action in the application.",
+ "demoDialogTitle": "Dialogues",
+ "demoDialogSubtitle": "Simple, alert and full-screen",
+ "demoAlertDialogTitle": "Alert",
+ "demoAlertDialogDescription": "An alert dialogue informs the user about situations that require acknowledgement. An alert dialogue has an optional title and an optional list of actions.",
+ "demoAlertTitleDialogTitle": "Alert With Title",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "A simple dialogue offers the user a choice between several options. A simple dialogue has an optional title that is displayed above the choices.",
+ "demoFullscreenDialogTitle": "Full screen",
+ "demoCupertinoButtonsTitle": "Buttons",
+ "demoCupertinoButtonsSubtitle": "iOS-style buttons",
+ "demoCupertinoButtonsDescription": "An iOS-style button. It takes in text and/or an icon that fades out and in on touch. May optionally have a background.",
+ "demoCupertinoAlertsTitle": "Alerts",
+ "demoCupertinoAlertsSubtitle": "iOS-style alert dialogues",
+ "demoCupertinoAlertTitle": "Alert",
+ "demoCupertinoAlertDescription": "An alert dialogue informs the user about situations that require acknowledgement. An alert dialogue has an optional title, optional content and an optional list of actions. The title is displayed above the content and the actions are displayed below the content.",
+ "demoCupertinoAlertWithTitleTitle": "Alert with title",
+ "demoCupertinoAlertButtonsTitle": "Alert With Buttons",
+ "demoCupertinoAlertButtonsOnlyTitle": "Alert Buttons Only",
+ "demoCupertinoActionSheetTitle": "Action Sheet",
+ "demoCupertinoActionSheetDescription": "An action sheet is a specific style of alert that presents the user with a set of two or more choices related to the current context. An action sheet can have a title, an additional message and a list of actions.",
+ "demoColorsTitle": "Colours",
+ "demoColorsSubtitle": "All of the predefined colours",
+ "demoColorsDescription": "Colour and colour swatch constants which represent Material Design's colour palette.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Create",
+ "dialogSelectedOption": "You selected: '{value}'",
+ "dialogDiscardTitle": "Discard draft?",
+ "dialogLocationTitle": "Use Google's location service?",
+ "dialogLocationDescription": "Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running.",
+ "dialogCancel": "CANCEL",
+ "dialogDiscard": "DISCARD",
+ "dialogDisagree": "DISAGREE",
+ "dialogAgree": "AGREE",
+ "dialogSetBackup": "Set backup account",
+ "colorsBlueGrey": "BLUE GREY",
+ "dialogShow": "SHOW DIALOGUE",
+ "dialogFullscreenTitle": "Full-Screen Dialogue",
+ "dialogFullscreenSave": "SAVE",
+ "dialogFullscreenDescription": "A full-screen dialogue demo",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "With background",
+ "cupertinoAlertCancel": "Cancel",
+ "cupertinoAlertDiscard": "Discard",
+ "cupertinoAlertLocationTitle": "Allow 'Maps' to access your location while you are using the app?",
+ "cupertinoAlertLocationDescription": "Your current location will be displayed on the map and used for directions, nearby search results and estimated travel times.",
+ "cupertinoAlertAllow": "Allow",
+ "cupertinoAlertDontAllow": "Don't allow",
+ "cupertinoAlertFavoriteDessert": "Select Favourite Dessert",
+ "cupertinoAlertDessertDescription": "Please select your favourite type of dessert from the list below. Your selection will be used to customise the suggested list of eateries in your area.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisu",
+ "cupertinoAlertApplePie": "Apple Pie",
+ "cupertinoAlertChocolateBrownie": "Chocolate brownie",
+ "cupertinoShowAlert": "Show alert",
+ "colorsRed": "RED",
+ "colorsPink": "PINK",
+ "colorsPurple": "PURPLE",
+ "colorsDeepPurple": "DEEP PURPLE",
+ "colorsIndigo": "INDIGO",
+ "colorsBlue": "BLUE",
+ "colorsLightBlue": "LIGHT BLUE",
+ "colorsCyan": "CYAN",
+ "dialogAddAccount": "Add account",
+ "Gallery": "Gallery",
+ "Categories": "Categories",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "Basic shopping app",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "Travel app",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "REFERENCE STYLES & MEDIA"
+}
diff --git a/gallery/lib/l10n/intl_en_NZ.arb b/gallery/lib/l10n/intl_en_NZ.arb
new file mode 100644
index 0000000..50706f7
--- /dev/null
+++ b/gallery/lib/l10n/intl_en_NZ.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "View options",
+ "demoOptionsFeatureDescription": "Tap here to view available options for this demo.",
+ "demoCodeViewerCopyAll": "COPY ALL",
+ "shrineScreenReaderRemoveProductButton": "Remove {product}",
+ "shrineScreenReaderProductAddToCart": "Add to basket",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Shopping basket, no items}=1{Shopping basket, 1 item}other{Shopping basket, {quantity} items}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Failed to copy to clipboard: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Copied to clipboard.",
+ "craneSleep8SemanticLabel": "Mayan ruins on a cliff above a beach",
+ "craneSleep4SemanticLabel": "Lake-side hotel in front of mountains",
+ "craneSleep2SemanticLabel": "Machu Picchu citadel",
+ "craneSleep1SemanticLabel": "Chalet in a snowy landscape with evergreen trees",
+ "craneSleep0SemanticLabel": "Overwater bungalows",
+ "craneFly13SemanticLabel": "Seaside pool with palm trees",
+ "craneFly12SemanticLabel": "Pool with palm trees",
+ "craneFly11SemanticLabel": "Brick lighthouse at sea",
+ "craneFly10SemanticLabel": "Al-Azhar Mosque towers during sunset",
+ "craneFly9SemanticLabel": "Man leaning on an antique blue car",
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "craneEat9SemanticLabel": "Café counter with pastries",
+ "craneEat2SemanticLabel": "Burger",
+ "craneFly5SemanticLabel": "Lake-side hotel in front of mountains",
+ "demoSelectionControlsSubtitle": "Tick boxes, radio buttons and switches",
+ "craneEat10SemanticLabel": "Woman holding huge pastrami sandwich",
+ "craneFly4SemanticLabel": "Overwater bungalows",
+ "craneEat7SemanticLabel": "Bakery entrance",
+ "craneEat6SemanticLabel": "Shrimp dish",
+ "craneEat5SemanticLabel": "Artsy restaurant seating area",
+ "craneEat4SemanticLabel": "Chocolate dessert",
+ "craneEat3SemanticLabel": "Korean taco",
+ "craneFly3SemanticLabel": "Machu Picchu citadel",
+ "craneEat1SemanticLabel": "Empty bar with diner-style stools",
+ "craneEat0SemanticLabel": "Pizza in a wood-fired oven",
+ "craneSleep11SemanticLabel": "Taipei 101 skyscraper",
+ "craneSleep10SemanticLabel": "Al-Azhar Mosque towers during sunset",
+ "craneSleep9SemanticLabel": "Brick lighthouse at sea",
+ "craneEat8SemanticLabel": "Plate of crawfish",
+ "craneSleep7SemanticLabel": "Colourful apartments at Ribeira Square",
+ "craneSleep6SemanticLabel": "Pool with palm trees",
+ "craneSleep5SemanticLabel": "Tent in a field",
+ "settingsButtonCloseLabel": "Close settings",
+ "demoSelectionControlsCheckboxDescription": "Tick boxes allow the user to select multiple options from a set. A normal tick box's value is true or false and a tristate tick box's value can also be null.",
+ "settingsButtonLabel": "Settings",
+ "demoListsTitle": "Lists",
+ "demoListsSubtitle": "Scrolling list layouts",
+ "demoListsDescription": "A single fixed-height row that typically contains some text as well as a leading or trailing icon.",
+ "demoOneLineListsTitle": "One line",
+ "demoTwoLineListsTitle": "Two lines",
+ "demoListsSecondary": "Secondary text",
+ "demoSelectionControlsTitle": "Selection controls",
+ "craneFly7SemanticLabel": "Mount Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Tick box",
+ "craneSleep3SemanticLabel": "Man leaning on an antique blue car",
+ "demoSelectionControlsRadioTitle": "Radio",
+ "demoSelectionControlsRadioDescription": "Radio buttons allow the user to select one option from a set. Use radio buttons for exclusive selection if you think that the user needs to see all available options side by side.",
+ "demoSelectionControlsSwitchTitle": "Switch",
+ "demoSelectionControlsSwitchDescription": "On/off switches toggle the state of a single settings option. The option that the switch controls, as well as the state it’s in, should be made clear from the corresponding inline label.",
+ "craneFly0SemanticLabel": "Chalet in a snowy landscape with evergreen trees",
+ "craneFly1SemanticLabel": "Tent in a field",
+ "craneFly2SemanticLabel": "Prayer flags in front of snowy mountain",
+ "craneFly6SemanticLabel": "Aerial view of Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "See all accounts",
+ "rallyBillAmount": "{billName} bill due {date} for {amount}.",
+ "shrineTooltipCloseCart": "Close basket",
+ "shrineTooltipCloseMenu": "Close menu",
+ "shrineTooltipOpenMenu": "Open menu",
+ "shrineTooltipSettings": "Settings",
+ "shrineTooltipSearch": "Search",
+ "demoTabsDescription": "Tabs organise content across different screens, data sets and other interactions.",
+ "demoTabsSubtitle": "Tabs with independently scrollable views",
+ "demoTabsTitle": "Tabs",
+ "rallyBudgetAmount": "{budgetName} budget with {amountUsed} used of {amountTotal}, {amountLeft} left",
+ "shrineTooltipRemoveItem": "Remove item",
+ "rallyAccountAmount": "{accountName} account {accountNumber} with {amount}.",
+ "rallySeeAllBudgets": "See all budgets",
+ "rallySeeAllBills": "See all bills",
+ "craneFormDate": "Select date",
+ "craneFormOrigin": "Choose origin",
+ "craneFly2": "Khumbu Valley, Nepal",
+ "craneFly3": "Machu Picchu, Peru",
+ "craneFly4": "Malé, Maldives",
+ "craneFly5": "Vitznau, Switzerland",
+ "craneFly6": "Mexico City, Mexico",
+ "craneFly7": "Mount Rushmore, United States",
+ "settingsTextDirectionLocaleBased": "Based on locale",
+ "craneFly9": "Havana, Cuba",
+ "craneFly10": "Cairo, Egypt",
+ "craneFly11": "Lisbon, Portugal",
+ "craneFly12": "Napa, United States",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldives",
+ "craneSleep1": "Aspen, United States",
+ "craneSleep2": "Machu Picchu, Peru",
+ "demoCupertinoSegmentedControlTitle": "Segmented control",
+ "craneSleep4": "Vitznau, Switzerland",
+ "craneSleep5": "Big Sur, United States",
+ "craneSleep6": "Napa, United States",
+ "craneSleep7": "Porto, Portugal",
+ "craneSleep8": "Tulum, Mexico",
+ "craneEat5": "Seoul, South Korea",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Compact elements that represent an input, attribute or action",
+ "demoActionChipTitle": "Action chip",
+ "demoActionChipDescription": "Action chips are a set of options which trigger an action related to primary content. Action chips should appear dynamically and contextually in a UI.",
+ "demoChoiceChipTitle": "Choice chip",
+ "demoChoiceChipDescription": "Choice chips represent a single choice from a set. Choice chips contain related descriptive text or categories.",
+ "demoFilterChipTitle": "Filter chip",
+ "demoFilterChipDescription": "Filter chips use tags or descriptive words as a way to filter content.",
+ "demoInputChipTitle": "Input chip",
+ "demoInputChipDescription": "Input chips represent a complex piece of information, such as an entity (person, place or thing) or conversational text, in a compact form.",
+ "craneSleep9": "Lisbon, Portugal",
+ "craneEat10": "Lisbon, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Used to select between a number of mutually exclusive options. When one option in the segmented control is selected, the other options in the segmented control cease to be selected.",
+ "chipTurnOnLights": "Turn on lights",
+ "chipSmall": "Small",
+ "chipMedium": "Medium",
+ "chipLarge": "Large",
+ "chipElevator": "Lift",
+ "chipWasher": "Washing machine",
+ "chipFireplace": "Fireplace",
+ "chipBiking": "Cycling",
+ "craneFormDiners": "Diners",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Increase your potential tax deduction! Assign categories to 1 unassigned transaction.}other{Increase your potential tax deduction! Assign categories to {count} unassigned transactions.}}",
+ "craneFormTime": "Select time",
+ "craneFormLocation": "Select location",
+ "craneFormTravelers": "Travellers",
+ "craneEat8": "Atlanta, United States",
+ "craneFormDestination": "Choose destination",
+ "craneFormDates": "Select dates",
+ "craneFly": "FLY",
+ "craneSleep": "SLEEP",
+ "craneEat": "EAT",
+ "craneFlySubhead": "Explore flights by destination",
+ "craneSleepSubhead": "Explore properties by destination",
+ "craneEatSubhead": "Explore restaurants by destination",
+ "craneFlyStops": "{numberOfStops,plural, =0{Non-stop}=1{1 stop}other{{numberOfStops} stops}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No available properties}=1{1 available property}other{{totalProperties} available properties}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No restaurants}=1{1 restaurant}other{{totalRestaurants} restaurants}}",
+ "craneFly0": "Aspen, United States",
+ "demoCupertinoSegmentedControlSubtitle": "iOS-style segmented control",
+ "craneSleep10": "Cairo, Egypt",
+ "craneEat9": "Madrid, Spain",
+ "craneFly1": "Big Sur, United States",
+ "craneEat7": "Nashville, United States",
+ "craneEat6": "Seattle, United States",
+ "craneFly8": "Singapore",
+ "craneEat4": "Paris, France",
+ "craneEat3": "Portland, United States",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, United States",
+ "craneEat0": "Naples, Italy",
+ "craneSleep11": "Taipei, Taiwan",
+ "craneSleep3": "Havana, Cuba",
+ "shrineLogoutButtonCaption": "LOGOUT",
+ "rallyTitleBills": "BILLS",
+ "rallyTitleAccounts": "ACCOUNTS",
+ "shrineProductVagabondSack": "Vagabond sack",
+ "rallyAccountDetailDataInterestYtd": "Interest YTD",
+ "shrineProductWhitneyBelt": "Whitney belt",
+ "shrineProductGardenStrand": "Garden strand",
+ "shrineProductStrutEarrings": "Strut earrings",
+ "shrineProductVarsitySocks": "Varsity socks",
+ "shrineProductWeaveKeyring": "Weave keyring",
+ "shrineProductGatsbyHat": "Gatsby hat",
+ "shrineProductShrugBag": "Shrug bag",
+ "shrineProductGiltDeskTrio": "Gilt desk trio",
+ "shrineProductCopperWireRack": "Copper wire rack",
+ "shrineProductSootheCeramicSet": "Soothe ceramic set",
+ "shrineProductHurrahsTeaSet": "Hurrahs tea set",
+ "shrineProductBlueStoneMug": "Blue stone mug",
+ "shrineProductRainwaterTray": "Rainwater tray",
+ "shrineProductChambrayNapkins": "Chambray napkins",
+ "shrineProductSucculentPlanters": "Succulent planters",
+ "shrineProductQuartetTable": "Quartet table",
+ "shrineProductKitchenQuattro": "Kitchen quattro",
+ "shrineProductClaySweater": "Clay sweater",
+ "shrineProductSeaTunic": "Sea tunic",
+ "shrineProductPlasterTunic": "Plaster tunic",
+ "rallyBudgetCategoryRestaurants": "Restaurants",
+ "shrineProductChambrayShirt": "Chambray shirt",
+ "shrineProductSeabreezeSweater": "Seabreeze sweater",
+ "shrineProductGentryJacket": "Gentry jacket",
+ "shrineProductNavyTrousers": "Navy trousers",
+ "shrineProductWalterHenleyWhite": "Walter henley (white)",
+ "shrineProductSurfAndPerfShirt": "Surf and perf shirt",
+ "shrineProductGingerScarf": "Ginger scarf",
+ "shrineProductRamonaCrossover": "Ramona crossover",
+ "shrineProductClassicWhiteCollar": "Classic white collar",
+ "shrineProductSunshirtDress": "Sunshirt dress",
+ "rallyAccountDetailDataInterestRate": "Interest rate",
+ "rallyAccountDetailDataAnnualPercentageYield": "Annual percentage yield",
+ "rallyAccountDataVacation": "Holiday",
+ "shrineProductFineLinesTee": "Fine lines tee",
+ "rallyAccountDataHomeSavings": "Home savings",
+ "rallyAccountDataChecking": "Current",
+ "rallyAccountDetailDataInterestPaidLastYear": "Interest paid last year",
+ "rallyAccountDetailDataNextStatement": "Next statement",
+ "rallyAccountDetailDataAccountOwner": "Account owner",
+ "rallyBudgetCategoryCoffeeShops": "Coffee shops",
+ "rallyBudgetCategoryGroceries": "Groceries",
+ "shrineProductCeriseScallopTee": "Cerise scallop tee",
+ "rallyBudgetCategoryClothing": "Clothing",
+ "rallySettingsManageAccounts": "Manage accounts",
+ "rallyAccountDataCarSavings": "Car savings",
+ "rallySettingsTaxDocuments": "Tax documents",
+ "rallySettingsPasscodeAndTouchId": "Passcode and Touch ID",
+ "rallySettingsNotifications": "Notifications",
+ "rallySettingsPersonalInformation": "Personal information",
+ "rallySettingsPaperlessSettings": "Paperless settings",
+ "rallySettingsFindAtms": "Find ATMs",
+ "rallySettingsHelp": "Help",
+ "rallySettingsSignOut": "Sign out",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Due",
+ "rallyBudgetLeft": "Left",
+ "rallyAccounts": "Accounts",
+ "rallyBills": "Bills",
+ "rallyBudgets": "Budgets",
+ "rallyAlerts": "Alerts",
+ "rallySeeAll": "SEE ALL",
+ "rallyFinanceLeft": "LEFT",
+ "rallyTitleOverview": "OVERVIEW",
+ "shrineProductShoulderRollsTee": "Shoulder rolls tee",
+ "shrineNextButtonCaption": "NEXT",
+ "rallyTitleBudgets": "BUDGETS",
+ "rallyTitleSettings": "SETTINGS",
+ "rallyLoginLoginToRally": "Log in to Rally",
+ "rallyLoginNoAccount": "Don't have an account?",
+ "rallyLoginSignUp": "SIGN UP",
+ "rallyLoginUsername": "Username",
+ "rallyLoginPassword": "Password",
+ "rallyLoginLabelLogin": "Log in",
+ "rallyLoginRememberMe": "Remember me",
+ "rallyLoginButtonLogin": "LOGIN",
+ "rallyAlertsMessageHeadsUpShopping": "Beware: you’ve used up {percent} of your shopping budget for this month.",
+ "rallyAlertsMessageSpentOnRestaurants": "You’ve spent {amount} on restaurants this week.",
+ "rallyAlertsMessageATMFees": "You’ve spent {amount} in ATM fees this month",
+ "rallyAlertsMessageCheckingAccount": "Good work! Your current account is {percent} higher than last month.",
+ "shrineMenuCaption": "MENU",
+ "shrineCategoryNameAll": "ALL",
+ "shrineCategoryNameAccessories": "ACCESSORIES",
+ "shrineCategoryNameClothing": "CLOTHING",
+ "shrineCategoryNameHome": "HOME",
+ "shrineLoginUsernameLabel": "Username",
+ "shrineLoginPasswordLabel": "Password",
+ "shrineCancelButtonCaption": "CANCEL",
+ "shrineCartTaxCaption": "Tax:",
+ "shrineCartPageCaption": "BASKET",
+ "shrineProductQuantity": "Quantity: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{NO ITEMS}=1{1 ITEM}other{{quantity} ITEMS}}",
+ "shrineCartClearButtonCaption": "CLEAR BASKET",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Delivery:",
+ "shrineProductGreySlouchTank": "Grey slouch tank top",
+ "shrineProductStellaSunglasses": "Stella sunglasses",
+ "shrineProductWhitePinstripeShirt": "White pinstripe shirt",
+ "demoTextFieldWhereCanWeReachYou": "Where can we contact you?",
+ "settingsTextDirectionLTR": "LTR",
+ "settingsTextScalingLarge": "Large",
+ "demoBottomSheetHeader": "Header",
+ "demoBottomSheetItem": "Item {value}",
+ "demoBottomTextFieldsTitle": "Text fields",
+ "demoTextFieldTitle": "Text fields",
+ "demoTextFieldSubtitle": "Single line of editable text and numbers",
+ "demoTextFieldDescription": "Text fields allow users to enter text into a UI. They typically appear in forms and dialogues.",
+ "demoTextFieldShowPasswordLabel": "Show password",
+ "demoTextFieldHidePasswordLabel": "Hide password",
+ "demoTextFieldFormErrors": "Please fix the errors in red before submitting.",
+ "demoTextFieldNameRequired": "Name is required.",
+ "demoTextFieldOnlyAlphabeticalChars": "Please enter only alphabetical characters.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### – Enter a US phone number.",
+ "demoTextFieldEnterPassword": "Please enter a password.",
+ "demoTextFieldPasswordsDoNotMatch": "The passwords don't match",
+ "demoTextFieldWhatDoPeopleCallYou": "What do people call you?",
+ "demoTextFieldNameField": "Name*",
+ "demoBottomSheetButtonText": "SHOW BOTTOM SHEET",
+ "demoTextFieldPhoneNumber": "Phone number*",
+ "demoBottomSheetTitle": "Bottom sheet",
+ "demoTextFieldEmail": "Email",
+ "demoTextFieldTellUsAboutYourself": "Tell us about yourself (e.g. write down what you do or what hobbies you have)",
+ "demoTextFieldKeepItShort": "Keep it short, this is just a demo.",
+ "starterAppGenericButton": "BUTTON",
+ "demoTextFieldLifeStory": "Life story",
+ "demoTextFieldSalary": "Salary",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "No more than 8 characters.",
+ "demoTextFieldPassword": "Password*",
+ "demoTextFieldRetypePassword": "Re-type password*",
+ "demoTextFieldSubmit": "SUBMIT",
+ "demoBottomNavigationSubtitle": "Bottom navigation with cross-fading views",
+ "demoBottomSheetAddLabel": "Add",
+ "demoBottomSheetModalDescription": "A modal bottom sheet is an alternative to a menu or a dialogue and prevents the user from interacting with the rest of the app.",
+ "demoBottomSheetModalTitle": "Modal bottom sheet",
+ "demoBottomSheetPersistentDescription": "A persistent bottom sheet shows information that supplements the primary content of the app. A persistent bottom sheet remains visible even when the user interacts with other parts of the app.",
+ "demoBottomSheetPersistentTitle": "Persistent bottom sheet",
+ "demoBottomSheetSubtitle": "Persistent and modal bottom sheets",
+ "demoTextFieldNameHasPhoneNumber": "{name} phone number is {phoneNumber}",
+ "buttonText": "BUTTON",
+ "demoTypographyDescription": "Definitions for the various typographical styles found in Material Design.",
+ "demoTypographySubtitle": "All of the predefined text styles",
+ "demoTypographyTitle": "Typography",
+ "demoFullscreenDialogDescription": "The fullscreenDialog property specifies whether the incoming page is a full-screen modal dialogue",
+ "demoFlatButtonDescription": "A flat button displays an ink splash on press but does not lift. Use flat buttons on toolbars, in dialogues and inline with padding",
+ "demoBottomNavigationDescription": "Bottom navigation bars display three to five destinations at the bottom of a screen. Each destination is represented by an icon and an optional text label. When a bottom navigation icon is tapped, the user is taken to the top-level navigation destination associated with that icon.",
+ "demoBottomNavigationSelectedLabel": "Selected label",
+ "demoBottomNavigationPersistentLabels": "Persistent labels",
+ "starterAppDrawerItem": "Item {value}",
+ "demoTextFieldRequiredField": "* indicates required field",
+ "demoBottomNavigationTitle": "Bottom navigation",
+ "settingsLightTheme": "Light",
+ "settingsTheme": "Theme",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "RTL",
+ "settingsTextScalingHuge": "Huge",
+ "cupertinoButton": "Button",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Small",
+ "settingsSystemDefault": "System",
+ "settingsTitle": "Settings",
+ "rallyDescription": "A personal finance app",
+ "aboutDialogDescription": "To see the source code for this app, please visit the {value}.",
+ "bottomNavigationCommentsTab": "Comments",
+ "starterAppGenericBody": "Body",
+ "starterAppGenericHeadline": "Headline",
+ "starterAppGenericSubtitle": "Subtitle",
+ "starterAppGenericTitle": "Title",
+ "starterAppTooltipSearch": "Search",
+ "starterAppTooltipShare": "Share",
+ "starterAppTooltipFavorite": "Favourite",
+ "starterAppTooltipAdd": "Add",
+ "bottomNavigationCalendarTab": "Calendar",
+ "starterAppDescription": "A responsive starter layout",
+ "starterAppTitle": "Starter app",
+ "aboutFlutterSamplesRepo": "Flutter samples Github repo",
+ "bottomNavigationContentPlaceholder": "Placeholder for {title} tab",
+ "bottomNavigationCameraTab": "Camera",
+ "bottomNavigationAlarmTab": "Alarm",
+ "bottomNavigationAccountTab": "Account",
+ "demoTextFieldYourEmailAddress": "Your email address",
+ "demoToggleButtonDescription": "Toggle buttons can be used to group related options. To emphasise groups of related toggle buttons, a group should share a common container",
+ "colorsGrey": "GREY",
+ "colorsBrown": "BROWN",
+ "colorsDeepOrange": "DEEP ORANGE",
+ "colorsOrange": "ORANGE",
+ "colorsAmber": "AMBER",
+ "colorsYellow": "YELLOW",
+ "colorsLime": "LIME",
+ "colorsLightGreen": "LIGHT GREEN",
+ "colorsGreen": "GREEN",
+ "homeHeaderGallery": "Gallery",
+ "homeHeaderCategories": "Categories",
+ "shrineDescription": "A fashionable retail app",
+ "craneDescription": "A personalised travel app",
+ "homeCategoryReference": "REFERENCE STYLES & MEDIA",
+ "demoInvalidURL": "Couldn't display URL:",
+ "demoOptionsTooltip": "Options",
+ "demoInfoTooltip": "Info",
+ "demoCodeTooltip": "Code Sample",
+ "demoDocumentationTooltip": "API Documentation",
+ "demoFullscreenTooltip": "Full screen",
+ "settingsTextScaling": "Text scaling",
+ "settingsTextDirection": "Text direction",
+ "settingsLocale": "Locale",
+ "settingsPlatformMechanics": "Platform mechanics",
+ "settingsDarkTheme": "Dark",
+ "settingsSlowMotion": "Slow motion",
+ "settingsAbout": "About Flutter Gallery",
+ "settingsFeedback": "Send feedback",
+ "settingsAttribution": "Designed by TOASTER in London",
+ "demoButtonTitle": "Buttons",
+ "demoButtonSubtitle": "Flat, raised, outline and more",
+ "demoFlatButtonTitle": "Flat Button",
+ "demoRaisedButtonDescription": "Raised buttons add dimension to mostly flat layouts. They emphasise functions on busy or wide spaces.",
+ "demoRaisedButtonTitle": "Raised Button",
+ "demoOutlineButtonTitle": "Outline Button",
+ "demoOutlineButtonDescription": "Outline buttons become opaque and elevate when pressed. They are often paired with raised buttons to indicate an alternative, secondary action.",
+ "demoToggleButtonTitle": "Toggle Buttons",
+ "colorsTeal": "TEAL",
+ "demoFloatingButtonTitle": "Floating Action Button",
+ "demoFloatingButtonDescription": "A floating action button is a circular icon button that hovers over content to promote a primary action in the application.",
+ "demoDialogTitle": "Dialogues",
+ "demoDialogSubtitle": "Simple, alert and full-screen",
+ "demoAlertDialogTitle": "Alert",
+ "demoAlertDialogDescription": "An alert dialogue informs the user about situations that require acknowledgement. An alert dialogue has an optional title and an optional list of actions.",
+ "demoAlertTitleDialogTitle": "Alert With Title",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "A simple dialogue offers the user a choice between several options. A simple dialogue has an optional title that is displayed above the choices.",
+ "demoFullscreenDialogTitle": "Full screen",
+ "demoCupertinoButtonsTitle": "Buttons",
+ "demoCupertinoButtonsSubtitle": "iOS-style buttons",
+ "demoCupertinoButtonsDescription": "An iOS-style button. It takes in text and/or an icon that fades out and in on touch. May optionally have a background.",
+ "demoCupertinoAlertsTitle": "Alerts",
+ "demoCupertinoAlertsSubtitle": "iOS-style alert dialogues",
+ "demoCupertinoAlertTitle": "Alert",
+ "demoCupertinoAlertDescription": "An alert dialogue informs the user about situations that require acknowledgement. An alert dialogue has an optional title, optional content and an optional list of actions. The title is displayed above the content and the actions are displayed below the content.",
+ "demoCupertinoAlertWithTitleTitle": "Alert with title",
+ "demoCupertinoAlertButtonsTitle": "Alert With Buttons",
+ "demoCupertinoAlertButtonsOnlyTitle": "Alert Buttons Only",
+ "demoCupertinoActionSheetTitle": "Action Sheet",
+ "demoCupertinoActionSheetDescription": "An action sheet is a specific style of alert that presents the user with a set of two or more choices related to the current context. An action sheet can have a title, an additional message and a list of actions.",
+ "demoColorsTitle": "Colours",
+ "demoColorsSubtitle": "All of the predefined colours",
+ "demoColorsDescription": "Colour and colour swatch constants which represent Material Design's colour palette.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Create",
+ "dialogSelectedOption": "You selected: '{value}'",
+ "dialogDiscardTitle": "Discard draft?",
+ "dialogLocationTitle": "Use Google's location service?",
+ "dialogLocationDescription": "Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running.",
+ "dialogCancel": "CANCEL",
+ "dialogDiscard": "DISCARD",
+ "dialogDisagree": "DISAGREE",
+ "dialogAgree": "AGREE",
+ "dialogSetBackup": "Set backup account",
+ "colorsBlueGrey": "BLUE GREY",
+ "dialogShow": "SHOW DIALOGUE",
+ "dialogFullscreenTitle": "Full-Screen Dialogue",
+ "dialogFullscreenSave": "SAVE",
+ "dialogFullscreenDescription": "A full-screen dialogue demo",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "With background",
+ "cupertinoAlertCancel": "Cancel",
+ "cupertinoAlertDiscard": "Discard",
+ "cupertinoAlertLocationTitle": "Allow 'Maps' to access your location while you are using the app?",
+ "cupertinoAlertLocationDescription": "Your current location will be displayed on the map and used for directions, nearby search results and estimated travel times.",
+ "cupertinoAlertAllow": "Allow",
+ "cupertinoAlertDontAllow": "Don't allow",
+ "cupertinoAlertFavoriteDessert": "Select Favourite Dessert",
+ "cupertinoAlertDessertDescription": "Please select your favourite type of dessert from the list below. Your selection will be used to customise the suggested list of eateries in your area.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisu",
+ "cupertinoAlertApplePie": "Apple Pie",
+ "cupertinoAlertChocolateBrownie": "Chocolate brownie",
+ "cupertinoShowAlert": "Show alert",
+ "colorsRed": "RED",
+ "colorsPink": "PINK",
+ "colorsPurple": "PURPLE",
+ "colorsDeepPurple": "DEEP PURPLE",
+ "colorsIndigo": "INDIGO",
+ "colorsBlue": "BLUE",
+ "colorsLightBlue": "LIGHT BLUE",
+ "colorsCyan": "CYAN",
+ "dialogAddAccount": "Add account",
+ "Gallery": "Gallery",
+ "Categories": "Categories",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "Basic shopping app",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "Travel app",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "REFERENCE STYLES & MEDIA"
+}
diff --git a/gallery/lib/l10n/intl_en_SG.arb b/gallery/lib/l10n/intl_en_SG.arb
new file mode 100644
index 0000000..50706f7
--- /dev/null
+++ b/gallery/lib/l10n/intl_en_SG.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "View options",
+ "demoOptionsFeatureDescription": "Tap here to view available options for this demo.",
+ "demoCodeViewerCopyAll": "COPY ALL",
+ "shrineScreenReaderRemoveProductButton": "Remove {product}",
+ "shrineScreenReaderProductAddToCart": "Add to basket",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Shopping basket, no items}=1{Shopping basket, 1 item}other{Shopping basket, {quantity} items}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Failed to copy to clipboard: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Copied to clipboard.",
+ "craneSleep8SemanticLabel": "Mayan ruins on a cliff above a beach",
+ "craneSleep4SemanticLabel": "Lake-side hotel in front of mountains",
+ "craneSleep2SemanticLabel": "Machu Picchu citadel",
+ "craneSleep1SemanticLabel": "Chalet in a snowy landscape with evergreen trees",
+ "craneSleep0SemanticLabel": "Overwater bungalows",
+ "craneFly13SemanticLabel": "Seaside pool with palm trees",
+ "craneFly12SemanticLabel": "Pool with palm trees",
+ "craneFly11SemanticLabel": "Brick lighthouse at sea",
+ "craneFly10SemanticLabel": "Al-Azhar Mosque towers during sunset",
+ "craneFly9SemanticLabel": "Man leaning on an antique blue car",
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "craneEat9SemanticLabel": "Café counter with pastries",
+ "craneEat2SemanticLabel": "Burger",
+ "craneFly5SemanticLabel": "Lake-side hotel in front of mountains",
+ "demoSelectionControlsSubtitle": "Tick boxes, radio buttons and switches",
+ "craneEat10SemanticLabel": "Woman holding huge pastrami sandwich",
+ "craneFly4SemanticLabel": "Overwater bungalows",
+ "craneEat7SemanticLabel": "Bakery entrance",
+ "craneEat6SemanticLabel": "Shrimp dish",
+ "craneEat5SemanticLabel": "Artsy restaurant seating area",
+ "craneEat4SemanticLabel": "Chocolate dessert",
+ "craneEat3SemanticLabel": "Korean taco",
+ "craneFly3SemanticLabel": "Machu Picchu citadel",
+ "craneEat1SemanticLabel": "Empty bar with diner-style stools",
+ "craneEat0SemanticLabel": "Pizza in a wood-fired oven",
+ "craneSleep11SemanticLabel": "Taipei 101 skyscraper",
+ "craneSleep10SemanticLabel": "Al-Azhar Mosque towers during sunset",
+ "craneSleep9SemanticLabel": "Brick lighthouse at sea",
+ "craneEat8SemanticLabel": "Plate of crawfish",
+ "craneSleep7SemanticLabel": "Colourful apartments at Ribeira Square",
+ "craneSleep6SemanticLabel": "Pool with palm trees",
+ "craneSleep5SemanticLabel": "Tent in a field",
+ "settingsButtonCloseLabel": "Close settings",
+ "demoSelectionControlsCheckboxDescription": "Tick boxes allow the user to select multiple options from a set. A normal tick box's value is true or false and a tristate tick box's value can also be null.",
+ "settingsButtonLabel": "Settings",
+ "demoListsTitle": "Lists",
+ "demoListsSubtitle": "Scrolling list layouts",
+ "demoListsDescription": "A single fixed-height row that typically contains some text as well as a leading or trailing icon.",
+ "demoOneLineListsTitle": "One line",
+ "demoTwoLineListsTitle": "Two lines",
+ "demoListsSecondary": "Secondary text",
+ "demoSelectionControlsTitle": "Selection controls",
+ "craneFly7SemanticLabel": "Mount Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Tick box",
+ "craneSleep3SemanticLabel": "Man leaning on an antique blue car",
+ "demoSelectionControlsRadioTitle": "Radio",
+ "demoSelectionControlsRadioDescription": "Radio buttons allow the user to select one option from a set. Use radio buttons for exclusive selection if you think that the user needs to see all available options side by side.",
+ "demoSelectionControlsSwitchTitle": "Switch",
+ "demoSelectionControlsSwitchDescription": "On/off switches toggle the state of a single settings option. The option that the switch controls, as well as the state it’s in, should be made clear from the corresponding inline label.",
+ "craneFly0SemanticLabel": "Chalet in a snowy landscape with evergreen trees",
+ "craneFly1SemanticLabel": "Tent in a field",
+ "craneFly2SemanticLabel": "Prayer flags in front of snowy mountain",
+ "craneFly6SemanticLabel": "Aerial view of Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "See all accounts",
+ "rallyBillAmount": "{billName} bill due {date} for {amount}.",
+ "shrineTooltipCloseCart": "Close basket",
+ "shrineTooltipCloseMenu": "Close menu",
+ "shrineTooltipOpenMenu": "Open menu",
+ "shrineTooltipSettings": "Settings",
+ "shrineTooltipSearch": "Search",
+ "demoTabsDescription": "Tabs organise content across different screens, data sets and other interactions.",
+ "demoTabsSubtitle": "Tabs with independently scrollable views",
+ "demoTabsTitle": "Tabs",
+ "rallyBudgetAmount": "{budgetName} budget with {amountUsed} used of {amountTotal}, {amountLeft} left",
+ "shrineTooltipRemoveItem": "Remove item",
+ "rallyAccountAmount": "{accountName} account {accountNumber} with {amount}.",
+ "rallySeeAllBudgets": "See all budgets",
+ "rallySeeAllBills": "See all bills",
+ "craneFormDate": "Select date",
+ "craneFormOrigin": "Choose origin",
+ "craneFly2": "Khumbu Valley, Nepal",
+ "craneFly3": "Machu Picchu, Peru",
+ "craneFly4": "Malé, Maldives",
+ "craneFly5": "Vitznau, Switzerland",
+ "craneFly6": "Mexico City, Mexico",
+ "craneFly7": "Mount Rushmore, United States",
+ "settingsTextDirectionLocaleBased": "Based on locale",
+ "craneFly9": "Havana, Cuba",
+ "craneFly10": "Cairo, Egypt",
+ "craneFly11": "Lisbon, Portugal",
+ "craneFly12": "Napa, United States",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldives",
+ "craneSleep1": "Aspen, United States",
+ "craneSleep2": "Machu Picchu, Peru",
+ "demoCupertinoSegmentedControlTitle": "Segmented control",
+ "craneSleep4": "Vitznau, Switzerland",
+ "craneSleep5": "Big Sur, United States",
+ "craneSleep6": "Napa, United States",
+ "craneSleep7": "Porto, Portugal",
+ "craneSleep8": "Tulum, Mexico",
+ "craneEat5": "Seoul, South Korea",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Compact elements that represent an input, attribute or action",
+ "demoActionChipTitle": "Action chip",
+ "demoActionChipDescription": "Action chips are a set of options which trigger an action related to primary content. Action chips should appear dynamically and contextually in a UI.",
+ "demoChoiceChipTitle": "Choice chip",
+ "demoChoiceChipDescription": "Choice chips represent a single choice from a set. Choice chips contain related descriptive text or categories.",
+ "demoFilterChipTitle": "Filter chip",
+ "demoFilterChipDescription": "Filter chips use tags or descriptive words as a way to filter content.",
+ "demoInputChipTitle": "Input chip",
+ "demoInputChipDescription": "Input chips represent a complex piece of information, such as an entity (person, place or thing) or conversational text, in a compact form.",
+ "craneSleep9": "Lisbon, Portugal",
+ "craneEat10": "Lisbon, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Used to select between a number of mutually exclusive options. When one option in the segmented control is selected, the other options in the segmented control cease to be selected.",
+ "chipTurnOnLights": "Turn on lights",
+ "chipSmall": "Small",
+ "chipMedium": "Medium",
+ "chipLarge": "Large",
+ "chipElevator": "Lift",
+ "chipWasher": "Washing machine",
+ "chipFireplace": "Fireplace",
+ "chipBiking": "Cycling",
+ "craneFormDiners": "Diners",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Increase your potential tax deduction! Assign categories to 1 unassigned transaction.}other{Increase your potential tax deduction! Assign categories to {count} unassigned transactions.}}",
+ "craneFormTime": "Select time",
+ "craneFormLocation": "Select location",
+ "craneFormTravelers": "Travellers",
+ "craneEat8": "Atlanta, United States",
+ "craneFormDestination": "Choose destination",
+ "craneFormDates": "Select dates",
+ "craneFly": "FLY",
+ "craneSleep": "SLEEP",
+ "craneEat": "EAT",
+ "craneFlySubhead": "Explore flights by destination",
+ "craneSleepSubhead": "Explore properties by destination",
+ "craneEatSubhead": "Explore restaurants by destination",
+ "craneFlyStops": "{numberOfStops,plural, =0{Non-stop}=1{1 stop}other{{numberOfStops} stops}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No available properties}=1{1 available property}other{{totalProperties} available properties}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No restaurants}=1{1 restaurant}other{{totalRestaurants} restaurants}}",
+ "craneFly0": "Aspen, United States",
+ "demoCupertinoSegmentedControlSubtitle": "iOS-style segmented control",
+ "craneSleep10": "Cairo, Egypt",
+ "craneEat9": "Madrid, Spain",
+ "craneFly1": "Big Sur, United States",
+ "craneEat7": "Nashville, United States",
+ "craneEat6": "Seattle, United States",
+ "craneFly8": "Singapore",
+ "craneEat4": "Paris, France",
+ "craneEat3": "Portland, United States",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, United States",
+ "craneEat0": "Naples, Italy",
+ "craneSleep11": "Taipei, Taiwan",
+ "craneSleep3": "Havana, Cuba",
+ "shrineLogoutButtonCaption": "LOGOUT",
+ "rallyTitleBills": "BILLS",
+ "rallyTitleAccounts": "ACCOUNTS",
+ "shrineProductVagabondSack": "Vagabond sack",
+ "rallyAccountDetailDataInterestYtd": "Interest YTD",
+ "shrineProductWhitneyBelt": "Whitney belt",
+ "shrineProductGardenStrand": "Garden strand",
+ "shrineProductStrutEarrings": "Strut earrings",
+ "shrineProductVarsitySocks": "Varsity socks",
+ "shrineProductWeaveKeyring": "Weave keyring",
+ "shrineProductGatsbyHat": "Gatsby hat",
+ "shrineProductShrugBag": "Shrug bag",
+ "shrineProductGiltDeskTrio": "Gilt desk trio",
+ "shrineProductCopperWireRack": "Copper wire rack",
+ "shrineProductSootheCeramicSet": "Soothe ceramic set",
+ "shrineProductHurrahsTeaSet": "Hurrahs tea set",
+ "shrineProductBlueStoneMug": "Blue stone mug",
+ "shrineProductRainwaterTray": "Rainwater tray",
+ "shrineProductChambrayNapkins": "Chambray napkins",
+ "shrineProductSucculentPlanters": "Succulent planters",
+ "shrineProductQuartetTable": "Quartet table",
+ "shrineProductKitchenQuattro": "Kitchen quattro",
+ "shrineProductClaySweater": "Clay sweater",
+ "shrineProductSeaTunic": "Sea tunic",
+ "shrineProductPlasterTunic": "Plaster tunic",
+ "rallyBudgetCategoryRestaurants": "Restaurants",
+ "shrineProductChambrayShirt": "Chambray shirt",
+ "shrineProductSeabreezeSweater": "Seabreeze sweater",
+ "shrineProductGentryJacket": "Gentry jacket",
+ "shrineProductNavyTrousers": "Navy trousers",
+ "shrineProductWalterHenleyWhite": "Walter henley (white)",
+ "shrineProductSurfAndPerfShirt": "Surf and perf shirt",
+ "shrineProductGingerScarf": "Ginger scarf",
+ "shrineProductRamonaCrossover": "Ramona crossover",
+ "shrineProductClassicWhiteCollar": "Classic white collar",
+ "shrineProductSunshirtDress": "Sunshirt dress",
+ "rallyAccountDetailDataInterestRate": "Interest rate",
+ "rallyAccountDetailDataAnnualPercentageYield": "Annual percentage yield",
+ "rallyAccountDataVacation": "Holiday",
+ "shrineProductFineLinesTee": "Fine lines tee",
+ "rallyAccountDataHomeSavings": "Home savings",
+ "rallyAccountDataChecking": "Current",
+ "rallyAccountDetailDataInterestPaidLastYear": "Interest paid last year",
+ "rallyAccountDetailDataNextStatement": "Next statement",
+ "rallyAccountDetailDataAccountOwner": "Account owner",
+ "rallyBudgetCategoryCoffeeShops": "Coffee shops",
+ "rallyBudgetCategoryGroceries": "Groceries",
+ "shrineProductCeriseScallopTee": "Cerise scallop tee",
+ "rallyBudgetCategoryClothing": "Clothing",
+ "rallySettingsManageAccounts": "Manage accounts",
+ "rallyAccountDataCarSavings": "Car savings",
+ "rallySettingsTaxDocuments": "Tax documents",
+ "rallySettingsPasscodeAndTouchId": "Passcode and Touch ID",
+ "rallySettingsNotifications": "Notifications",
+ "rallySettingsPersonalInformation": "Personal information",
+ "rallySettingsPaperlessSettings": "Paperless settings",
+ "rallySettingsFindAtms": "Find ATMs",
+ "rallySettingsHelp": "Help",
+ "rallySettingsSignOut": "Sign out",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Due",
+ "rallyBudgetLeft": "Left",
+ "rallyAccounts": "Accounts",
+ "rallyBills": "Bills",
+ "rallyBudgets": "Budgets",
+ "rallyAlerts": "Alerts",
+ "rallySeeAll": "SEE ALL",
+ "rallyFinanceLeft": "LEFT",
+ "rallyTitleOverview": "OVERVIEW",
+ "shrineProductShoulderRollsTee": "Shoulder rolls tee",
+ "shrineNextButtonCaption": "NEXT",
+ "rallyTitleBudgets": "BUDGETS",
+ "rallyTitleSettings": "SETTINGS",
+ "rallyLoginLoginToRally": "Log in to Rally",
+ "rallyLoginNoAccount": "Don't have an account?",
+ "rallyLoginSignUp": "SIGN UP",
+ "rallyLoginUsername": "Username",
+ "rallyLoginPassword": "Password",
+ "rallyLoginLabelLogin": "Log in",
+ "rallyLoginRememberMe": "Remember me",
+ "rallyLoginButtonLogin": "LOGIN",
+ "rallyAlertsMessageHeadsUpShopping": "Beware: you’ve used up {percent} of your shopping budget for this month.",
+ "rallyAlertsMessageSpentOnRestaurants": "You’ve spent {amount} on restaurants this week.",
+ "rallyAlertsMessageATMFees": "You’ve spent {amount} in ATM fees this month",
+ "rallyAlertsMessageCheckingAccount": "Good work! Your current account is {percent} higher than last month.",
+ "shrineMenuCaption": "MENU",
+ "shrineCategoryNameAll": "ALL",
+ "shrineCategoryNameAccessories": "ACCESSORIES",
+ "shrineCategoryNameClothing": "CLOTHING",
+ "shrineCategoryNameHome": "HOME",
+ "shrineLoginUsernameLabel": "Username",
+ "shrineLoginPasswordLabel": "Password",
+ "shrineCancelButtonCaption": "CANCEL",
+ "shrineCartTaxCaption": "Tax:",
+ "shrineCartPageCaption": "BASKET",
+ "shrineProductQuantity": "Quantity: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{NO ITEMS}=1{1 ITEM}other{{quantity} ITEMS}}",
+ "shrineCartClearButtonCaption": "CLEAR BASKET",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Delivery:",
+ "shrineProductGreySlouchTank": "Grey slouch tank top",
+ "shrineProductStellaSunglasses": "Stella sunglasses",
+ "shrineProductWhitePinstripeShirt": "White pinstripe shirt",
+ "demoTextFieldWhereCanWeReachYou": "Where can we contact you?",
+ "settingsTextDirectionLTR": "LTR",
+ "settingsTextScalingLarge": "Large",
+ "demoBottomSheetHeader": "Header",
+ "demoBottomSheetItem": "Item {value}",
+ "demoBottomTextFieldsTitle": "Text fields",
+ "demoTextFieldTitle": "Text fields",
+ "demoTextFieldSubtitle": "Single line of editable text and numbers",
+ "demoTextFieldDescription": "Text fields allow users to enter text into a UI. They typically appear in forms and dialogues.",
+ "demoTextFieldShowPasswordLabel": "Show password",
+ "demoTextFieldHidePasswordLabel": "Hide password",
+ "demoTextFieldFormErrors": "Please fix the errors in red before submitting.",
+ "demoTextFieldNameRequired": "Name is required.",
+ "demoTextFieldOnlyAlphabeticalChars": "Please enter only alphabetical characters.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### – Enter a US phone number.",
+ "demoTextFieldEnterPassword": "Please enter a password.",
+ "demoTextFieldPasswordsDoNotMatch": "The passwords don't match",
+ "demoTextFieldWhatDoPeopleCallYou": "What do people call you?",
+ "demoTextFieldNameField": "Name*",
+ "demoBottomSheetButtonText": "SHOW BOTTOM SHEET",
+ "demoTextFieldPhoneNumber": "Phone number*",
+ "demoBottomSheetTitle": "Bottom sheet",
+ "demoTextFieldEmail": "Email",
+ "demoTextFieldTellUsAboutYourself": "Tell us about yourself (e.g. write down what you do or what hobbies you have)",
+ "demoTextFieldKeepItShort": "Keep it short, this is just a demo.",
+ "starterAppGenericButton": "BUTTON",
+ "demoTextFieldLifeStory": "Life story",
+ "demoTextFieldSalary": "Salary",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "No more than 8 characters.",
+ "demoTextFieldPassword": "Password*",
+ "demoTextFieldRetypePassword": "Re-type password*",
+ "demoTextFieldSubmit": "SUBMIT",
+ "demoBottomNavigationSubtitle": "Bottom navigation with cross-fading views",
+ "demoBottomSheetAddLabel": "Add",
+ "demoBottomSheetModalDescription": "A modal bottom sheet is an alternative to a menu or a dialogue and prevents the user from interacting with the rest of the app.",
+ "demoBottomSheetModalTitle": "Modal bottom sheet",
+ "demoBottomSheetPersistentDescription": "A persistent bottom sheet shows information that supplements the primary content of the app. A persistent bottom sheet remains visible even when the user interacts with other parts of the app.",
+ "demoBottomSheetPersistentTitle": "Persistent bottom sheet",
+ "demoBottomSheetSubtitle": "Persistent and modal bottom sheets",
+ "demoTextFieldNameHasPhoneNumber": "{name} phone number is {phoneNumber}",
+ "buttonText": "BUTTON",
+ "demoTypographyDescription": "Definitions for the various typographical styles found in Material Design.",
+ "demoTypographySubtitle": "All of the predefined text styles",
+ "demoTypographyTitle": "Typography",
+ "demoFullscreenDialogDescription": "The fullscreenDialog property specifies whether the incoming page is a full-screen modal dialogue",
+ "demoFlatButtonDescription": "A flat button displays an ink splash on press but does not lift. Use flat buttons on toolbars, in dialogues and inline with padding",
+ "demoBottomNavigationDescription": "Bottom navigation bars display three to five destinations at the bottom of a screen. Each destination is represented by an icon and an optional text label. When a bottom navigation icon is tapped, the user is taken to the top-level navigation destination associated with that icon.",
+ "demoBottomNavigationSelectedLabel": "Selected label",
+ "demoBottomNavigationPersistentLabels": "Persistent labels",
+ "starterAppDrawerItem": "Item {value}",
+ "demoTextFieldRequiredField": "* indicates required field",
+ "demoBottomNavigationTitle": "Bottom navigation",
+ "settingsLightTheme": "Light",
+ "settingsTheme": "Theme",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "RTL",
+ "settingsTextScalingHuge": "Huge",
+ "cupertinoButton": "Button",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Small",
+ "settingsSystemDefault": "System",
+ "settingsTitle": "Settings",
+ "rallyDescription": "A personal finance app",
+ "aboutDialogDescription": "To see the source code for this app, please visit the {value}.",
+ "bottomNavigationCommentsTab": "Comments",
+ "starterAppGenericBody": "Body",
+ "starterAppGenericHeadline": "Headline",
+ "starterAppGenericSubtitle": "Subtitle",
+ "starterAppGenericTitle": "Title",
+ "starterAppTooltipSearch": "Search",
+ "starterAppTooltipShare": "Share",
+ "starterAppTooltipFavorite": "Favourite",
+ "starterAppTooltipAdd": "Add",
+ "bottomNavigationCalendarTab": "Calendar",
+ "starterAppDescription": "A responsive starter layout",
+ "starterAppTitle": "Starter app",
+ "aboutFlutterSamplesRepo": "Flutter samples Github repo",
+ "bottomNavigationContentPlaceholder": "Placeholder for {title} tab",
+ "bottomNavigationCameraTab": "Camera",
+ "bottomNavigationAlarmTab": "Alarm",
+ "bottomNavigationAccountTab": "Account",
+ "demoTextFieldYourEmailAddress": "Your email address",
+ "demoToggleButtonDescription": "Toggle buttons can be used to group related options. To emphasise groups of related toggle buttons, a group should share a common container",
+ "colorsGrey": "GREY",
+ "colorsBrown": "BROWN",
+ "colorsDeepOrange": "DEEP ORANGE",
+ "colorsOrange": "ORANGE",
+ "colorsAmber": "AMBER",
+ "colorsYellow": "YELLOW",
+ "colorsLime": "LIME",
+ "colorsLightGreen": "LIGHT GREEN",
+ "colorsGreen": "GREEN",
+ "homeHeaderGallery": "Gallery",
+ "homeHeaderCategories": "Categories",
+ "shrineDescription": "A fashionable retail app",
+ "craneDescription": "A personalised travel app",
+ "homeCategoryReference": "REFERENCE STYLES & MEDIA",
+ "demoInvalidURL": "Couldn't display URL:",
+ "demoOptionsTooltip": "Options",
+ "demoInfoTooltip": "Info",
+ "demoCodeTooltip": "Code Sample",
+ "demoDocumentationTooltip": "API Documentation",
+ "demoFullscreenTooltip": "Full screen",
+ "settingsTextScaling": "Text scaling",
+ "settingsTextDirection": "Text direction",
+ "settingsLocale": "Locale",
+ "settingsPlatformMechanics": "Platform mechanics",
+ "settingsDarkTheme": "Dark",
+ "settingsSlowMotion": "Slow motion",
+ "settingsAbout": "About Flutter Gallery",
+ "settingsFeedback": "Send feedback",
+ "settingsAttribution": "Designed by TOASTER in London",
+ "demoButtonTitle": "Buttons",
+ "demoButtonSubtitle": "Flat, raised, outline and more",
+ "demoFlatButtonTitle": "Flat Button",
+ "demoRaisedButtonDescription": "Raised buttons add dimension to mostly flat layouts. They emphasise functions on busy or wide spaces.",
+ "demoRaisedButtonTitle": "Raised Button",
+ "demoOutlineButtonTitle": "Outline Button",
+ "demoOutlineButtonDescription": "Outline buttons become opaque and elevate when pressed. They are often paired with raised buttons to indicate an alternative, secondary action.",
+ "demoToggleButtonTitle": "Toggle Buttons",
+ "colorsTeal": "TEAL",
+ "demoFloatingButtonTitle": "Floating Action Button",
+ "demoFloatingButtonDescription": "A floating action button is a circular icon button that hovers over content to promote a primary action in the application.",
+ "demoDialogTitle": "Dialogues",
+ "demoDialogSubtitle": "Simple, alert and full-screen",
+ "demoAlertDialogTitle": "Alert",
+ "demoAlertDialogDescription": "An alert dialogue informs the user about situations that require acknowledgement. An alert dialogue has an optional title and an optional list of actions.",
+ "demoAlertTitleDialogTitle": "Alert With Title",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "A simple dialogue offers the user a choice between several options. A simple dialogue has an optional title that is displayed above the choices.",
+ "demoFullscreenDialogTitle": "Full screen",
+ "demoCupertinoButtonsTitle": "Buttons",
+ "demoCupertinoButtonsSubtitle": "iOS-style buttons",
+ "demoCupertinoButtonsDescription": "An iOS-style button. It takes in text and/or an icon that fades out and in on touch. May optionally have a background.",
+ "demoCupertinoAlertsTitle": "Alerts",
+ "demoCupertinoAlertsSubtitle": "iOS-style alert dialogues",
+ "demoCupertinoAlertTitle": "Alert",
+ "demoCupertinoAlertDescription": "An alert dialogue informs the user about situations that require acknowledgement. An alert dialogue has an optional title, optional content and an optional list of actions. The title is displayed above the content and the actions are displayed below the content.",
+ "demoCupertinoAlertWithTitleTitle": "Alert with title",
+ "demoCupertinoAlertButtonsTitle": "Alert With Buttons",
+ "demoCupertinoAlertButtonsOnlyTitle": "Alert Buttons Only",
+ "demoCupertinoActionSheetTitle": "Action Sheet",
+ "demoCupertinoActionSheetDescription": "An action sheet is a specific style of alert that presents the user with a set of two or more choices related to the current context. An action sheet can have a title, an additional message and a list of actions.",
+ "demoColorsTitle": "Colours",
+ "demoColorsSubtitle": "All of the predefined colours",
+ "demoColorsDescription": "Colour and colour swatch constants which represent Material Design's colour palette.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Create",
+ "dialogSelectedOption": "You selected: '{value}'",
+ "dialogDiscardTitle": "Discard draft?",
+ "dialogLocationTitle": "Use Google's location service?",
+ "dialogLocationDescription": "Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running.",
+ "dialogCancel": "CANCEL",
+ "dialogDiscard": "DISCARD",
+ "dialogDisagree": "DISAGREE",
+ "dialogAgree": "AGREE",
+ "dialogSetBackup": "Set backup account",
+ "colorsBlueGrey": "BLUE GREY",
+ "dialogShow": "SHOW DIALOGUE",
+ "dialogFullscreenTitle": "Full-Screen Dialogue",
+ "dialogFullscreenSave": "SAVE",
+ "dialogFullscreenDescription": "A full-screen dialogue demo",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "With background",
+ "cupertinoAlertCancel": "Cancel",
+ "cupertinoAlertDiscard": "Discard",
+ "cupertinoAlertLocationTitle": "Allow 'Maps' to access your location while you are using the app?",
+ "cupertinoAlertLocationDescription": "Your current location will be displayed on the map and used for directions, nearby search results and estimated travel times.",
+ "cupertinoAlertAllow": "Allow",
+ "cupertinoAlertDontAllow": "Don't allow",
+ "cupertinoAlertFavoriteDessert": "Select Favourite Dessert",
+ "cupertinoAlertDessertDescription": "Please select your favourite type of dessert from the list below. Your selection will be used to customise the suggested list of eateries in your area.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisu",
+ "cupertinoAlertApplePie": "Apple Pie",
+ "cupertinoAlertChocolateBrownie": "Chocolate brownie",
+ "cupertinoShowAlert": "Show alert",
+ "colorsRed": "RED",
+ "colorsPink": "PINK",
+ "colorsPurple": "PURPLE",
+ "colorsDeepPurple": "DEEP PURPLE",
+ "colorsIndigo": "INDIGO",
+ "colorsBlue": "BLUE",
+ "colorsLightBlue": "LIGHT BLUE",
+ "colorsCyan": "CYAN",
+ "dialogAddAccount": "Add account",
+ "Gallery": "Gallery",
+ "Categories": "Categories",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "Basic shopping app",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "Travel app",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "REFERENCE STYLES & MEDIA"
+}
diff --git a/gallery/lib/l10n/intl_en_US.arb b/gallery/lib/l10n/intl_en_US.arb
new file mode 100644
index 0000000..730a6fa
--- /dev/null
+++ b/gallery/lib/l10n/intl_en_US.arb
@@ -0,0 +1,1896 @@
+{
+ "@@last_modified": "2019-11-06T15:50:09.076419",
+ "aboutFlutterSamplesRepo": "Flutter samples Github repo",
+ "@aboutFlutterSamplesRepo": {
+ "description": "Represents a link to the Flutter samples github repository."
+ },
+ "aboutDialogDescription": "To see the source code for this app, please visit the {value}.",
+ "@aboutDialogDescription": {
+ "description": "A description about how to view the source code for this app.",
+ "placeholders": {
+ "value": {
+ "example": "Flutter samples Github repo"
+ }
+ }
+ },
+ "homeHeaderGallery": "Gallery",
+ "@homeHeaderGallery": {
+ "description": "Header title on home screen for Gallery section."
+ },
+ "homeHeaderCategories": "Categories",
+ "@homeHeaderCategories": {
+ "description": "Header title on home screen for Categories section."
+ },
+ "shrineDescription": "A fashionable retail app",
+ "@shrineDescription": {
+ "description": "Study description for Shrine."
+ },
+ "rallyDescription": "A personal finance app",
+ "@rallyDescription": {
+ "description": "Study description for Rally."
+ },
+ "rallyAccountDataChecking": "Checking",
+ "@rallyAccountDataChecking": {
+ "description": "Name for account made up by user."
+ },
+ "rallyAccountDataHomeSavings": "Home Savings",
+ "@rallyAccountDataHomeSavings": {
+ "description": "Name for account made up by user."
+ },
+ "rallyAccountDataCarSavings": "Car Savings",
+ "@rallyAccountDataCarSavings": {
+ "description": "Name for account made up by user."
+ },
+ "rallyAccountDataVacation": "Vacation",
+ "@rallyAccountDataVacation": {
+ "description": "Name for account made up by user."
+ },
+ "rallyAccountDetailDataAnnualPercentageYield": "Annual Percentage Yield",
+ "@rallyAccountDetailDataAnnualPercentageYield": {
+ "description": "Title for account statistics. Below a percentage such as 0.10% will be displayed."
+ },
+ "rallyAccountDetailDataInterestRate": "Interest Rate",
+ "@rallyAccountDetailDataInterestRate": {
+ "description": "Title for account statistics. Below a dollar amount such as $100 will be displayed."
+ },
+ "rallyAccountDetailDataInterestYtd": "Interest YTD",
+ "@rallyAccountDetailDataInterestYtd": {
+ "description": "Title for account statistics. Below a dollar amount such as $100 will be displayed."
+ },
+ "rallyAccountDetailDataInterestPaidLastYear": "Interest Paid Last Year",
+ "@rallyAccountDetailDataInterestPaidLastYear": {
+ "description": "Title for account statistics. Below a dollar amount such as $100 will be displayed."
+ },
+ "rallyAccountDetailDataNextStatement": "Next Statement",
+ "@rallyAccountDetailDataNextStatement": {
+ "description": "Title for an account detail. Below a date for when the next account statement is released."
+ },
+ "rallyAccountDetailDataAccountOwner": "Account Owner",
+ "@rallyAccountDetailDataAccountOwner": {
+ "description": "Title for an account detail. Below the name of the account owner will be displayed."
+ },
+ "rallyBudgetCategoryCoffeeShops": "Coffee Shops",
+ "@rallyBudgetCategoryCoffeeShops": {
+ "description": "Category for budget, to sort expenses / bills in."
+ },
+ "rallyBudgetCategoryGroceries": "Groceries",
+ "@rallyBudgetCategoryGroceries": {
+ "description": "Category for budget, to sort expenses / bills in."
+ },
+ "rallyBudgetCategoryRestaurants": "Restaurants",
+ "@rallyBudgetCategoryRestaurants": {
+ "description": "Category for budget, to sort expenses / bills in."
+ },
+ "rallyBudgetCategoryClothing": "Clothing",
+ "@rallyBudgetCategoryClothing": {
+ "description": "Category for budget, to sort expenses / bills in."
+ },
+ "rallySettingsManageAccounts": "Manage Accounts",
+ "@rallySettingsManageAccounts": {
+ "description": "Link to go to the page 'Manage Accounts."
+ },
+ "rallySettingsTaxDocuments": "Tax Documents",
+ "@rallySettingsTaxDocuments": {
+ "description": "Link to go to the page 'Tax Documents'."
+ },
+ "rallySettingsPasscodeAndTouchId": "Passcode and Touch ID",
+ "@rallySettingsPasscodeAndTouchId": {
+ "description": "Link to go to the page 'Passcode and Touch ID'."
+ },
+ "rallySettingsNotifications": "Notifications",
+ "@rallySettingsNotifications": {
+ "description": "Link to go to the page 'Notifications'."
+ },
+ "rallySettingsPersonalInformation": "Personal Information",
+ "@rallySettingsPersonalInformation": {
+ "description": "Link to go to the page 'Personal Information'."
+ },
+ "rallySettingsPaperlessSettings": "Paperless Settings",
+ "@rallySettingsPaperlessSettings": {
+ "description": "Link to go to the page 'Paperless Settings'."
+ },
+ "rallySettingsFindAtms": "Find ATMs",
+ "@rallySettingsFindAtms": {
+ "description": "Link to go to the page 'Find ATMs'."
+ },
+ "rallySettingsHelp": "Help",
+ "@rallySettingsHelp": {
+ "description": "Link to go to the page 'Help'."
+ },
+ "rallySettingsSignOut": "Sign out",
+ "@rallySettingsSignOut": {
+ "description": "Link to go to the page 'Sign out'."
+ },
+ "rallyAccountTotal": "Total",
+ "@rallyAccountTotal": {
+ "description": "Title for 'total account value' overview page, a dollar value is displayed next to it."
+ },
+ "rallyBillsDue": "Due",
+ "@rallyBillsDue": {
+ "description": "Title for 'bills due' page, a dollar value is displayed next to it."
+ },
+ "rallyBudgetLeft": "Left",
+ "@rallyBudgetLeft": {
+ "description": "Title for 'budget left' page, a dollar value is displayed next to it."
+ },
+ "rallyAccounts": "Accounts",
+ "@rallyAccounts": {
+ "description": "Link text for accounts page."
+ },
+ "rallyBills": "Bills",
+ "@rallyBills": {
+ "description": "Link text for bills page."
+ },
+ "rallyBudgets": "Budgets",
+ "@rallyBudgets": {
+ "description": "Link text for budgets page."
+ },
+ "rallyAlerts": "Alerts",
+ "@rallyAlerts": {
+ "description": "Title for alerts part of overview page."
+ },
+ "rallySeeAll": "SEE ALL",
+ "@rallySeeAll": {
+ "description": "Link text for button to see all data for category."
+ },
+ "rallyFinanceLeft": " LEFT",
+ "@rallyFinanceLeft": {
+ "description": "Displayed as 'dollar amount left', for example $46.70 LEFT, for a budget category."
+ },
+ "rallyTitleOverview": "OVERVIEW",
+ "@rallyTitleOverview": {
+ "description": "The navigation link to the overview page."
+ },
+ "rallyTitleAccounts": "ACCOUNTS",
+ "@rallyTitleAccounts": {
+ "description": "The navigation link to the accounts page."
+ },
+ "rallyTitleBills": "BILLS",
+ "@rallyTitleBills": {
+ "description": "The navigation link to the bills page."
+ },
+ "rallyTitleBudgets": "BUDGETS",
+ "@rallyTitleBudgets": {
+ "description": "The navigation link to the budgets page."
+ },
+ "rallyTitleSettings": "SETTINGS",
+ "@rallyTitleSettings": {
+ "description": "The navigation link to the settings page."
+ },
+ "rallyLoginLoginToRally": "Login to Rally",
+ "@rallyLoginLoginToRally": {
+ "description": "Title for login page for the Rally app (Rally does not need to be translated as it is a product name)."
+ },
+ "rallyLoginNoAccount": "Don't have an account?",
+ "@rallyLoginNoAccount": {
+ "description": "Prompt for signing up for an account."
+ },
+ "rallyLoginSignUp": "SIGN UP",
+ "@rallyLoginSignUp": {
+ "description": "Button text to sign up for an account."
+ },
+ "rallyLoginUsername": "Username",
+ "@rallyLoginUsername": {
+ "description": "The username field in an login form."
+ },
+ "rallyLoginPassword": "Password",
+ "@rallyLoginPassword": {
+ "description": "The password field in an login form."
+ },
+ "rallyLoginLabelLogin": "Login",
+ "@rallyLoginLabelLogin": {
+ "description": "The label text to login."
+ },
+ "rallyLoginRememberMe": "Remember Me",
+ "@rallyLoginRememberMe": {
+ "description": "Text if the user wants to stay logged in."
+ },
+ "rallyLoginButtonLogin": "LOGIN",
+ "@rallyLoginButtonLogin": {
+ "description": "Text for login button."
+ },
+ "rallyAlertsMessageHeadsUpShopping": "Heads up, you’ve used up {percent} of your Shopping budget for this month.",
+ "@rallyAlertsMessageHeadsUpShopping": {
+ "description": "Alert message shown when for example, user has used more than 90% of their shopping budget.",
+ "placeholders": {
+ "percent": "90%"
+ }
+ },
+ "rallyAlertsMessageSpentOnRestaurants": "You’ve spent {amount} on Restaurants this week.",
+ "@rallyAlertsMessageSpentOnRestaurants": {
+ "description": "Alert message shown when for example, user has spent $120 on Restaurants this week.",
+ "placeholders": {
+ "amount": "$120"
+ }
+ },
+ "rallyAlertsMessageATMFees": "You’ve spent {amount} in ATM fees this month",
+ "@rallyAlertsMessageATMFees": {
+ "description": "Alert message shown when for example, the user has spent $24 in ATM fees this month.",
+ "placeholders": {
+ "amount": "24"
+ }
+ },
+ "rallyAlertsMessageCheckingAccount": "Good work! Your checking account is {percent} higher than last month.",
+ "@rallyAlertsMessageCheckingAccount": {
+ "description": "Alert message shown when for example, the checking account is 1% higher than last month.",
+ "placeholders": {
+ "percent": "1%"
+ }
+ },
+ "rallyAlertsMessageUnassignedTransactions": "{count, plural, =1{Increase your potential tax deduction! Assign categories to 1 unassigned transaction.}other{Increase your potential tax deduction! Assign categories to {count} unassigned transactions.}}",
+ "@rallyAlertsMessageUnassignedTransactions": {
+ "description": "Alert message shown when you have unassigned transactions.",
+ "placeholders": {
+ "count": "2"
+ }
+ },
+ "rallySeeAllAccounts": "See all accounts",
+ "@rallySeeAllAccounts": {
+ "description": "Semantics label for button to see all accounts. Accounts refer to bank account here."
+ },
+ "rallySeeAllBills": "See all bills",
+ "@rallySeeAllBills": {
+ "description": "Semantics label for button to see all bills."
+ },
+ "rallySeeAllBudgets": "See all budgets",
+ "@rallySeeAllBudgets": {
+ "description": "Semantics label for button to see all budgets."
+ },
+ "rallyAccountAmount": "{accountName} account {accountNumber} with {amount}.",
+ "@rallyAccountAmount": {
+ "description": "Semantics label for row with bank account name (for example checking) and its bank account number (for example 123), with how much money is deposited in it (for example $12).",
+ "placeholders": {
+ "accountName": "Home Savings",
+ "accountNumber": "1234",
+ "amount": "$12"
+ }
+ },
+ "rallyBillAmount": "{billName} bill due {date} for {amount}.",
+ "@rallyBillAmount": {
+ "description": "Semantics label for row with a bill (example name is rent), when the bill is due (1/12/2019 for example) and for how much money ($12).",
+ "placeholders": {
+ "billName": "Rent",
+ "date": "1/24/2019",
+ "amount": "$12"
+ }
+ },
+ "rallyBudgetAmount": "{budgetName} budget with {amountUsed} used of {amountTotal}, {amountLeft} left",
+ "@rallyBudgetAmount": {
+ "description": "Semantics label for row with a budget (housing budget for example), with how much is used of the budget (for example $5), the total budget (for example $100) and the amount left in the budget (for example $95).",
+ "placeholders": {
+ "budgetName": "Groceries",
+ "amountUsed": "$5",
+ "amountTotal": "$100",
+ "amountLeft": "$95"
+ }
+ },
+ "craneDescription": "A personalized travel app",
+ "@craneDescription": {
+ "description": "Study description for Crane."
+ },
+ "homeCategoryReference": "REFERENCE STYLES & MEDIA",
+ "@homeCategoryReference": {
+ "description": "Category title on home screen for reference styles & media."
+ },
+ "demoInvalidURL": "Couldn't display URL:",
+ "@demoInvalidURL": {
+ "description": "Error message when opening the URL for a demo."
+ },
+ "demoOptionsTooltip": "Options",
+ "@demoOptionsTooltip": {
+ "description": "Tooltip for options button in a demo."
+ },
+ "demoInfoTooltip": "Info",
+ "@demoInfoTooltip": {
+ "description": "Tooltip for info button in a demo."
+ },
+ "demoCodeTooltip": "Code Sample",
+ "@demoCodeTooltip": {
+ "description": "Tooltip for code sample button in a demo."
+ },
+ "demoDocumentationTooltip": "API Documentation",
+ "@demoDocumentationTooltip": {
+ "description": "Tooltip for API documentation button in a demo."
+ },
+ "demoFullscreenTooltip": "Full Screen",
+ "@demoFullscreenTooltip": {
+ "description": "Tooltip for Full Screen button in a demo."
+ },
+ "demoCodeViewerCopyAll": "COPY ALL",
+ "@demoCodeViewerCopyAll": {
+ "description": "Caption for a button to copy all text."
+ },
+ "demoCodeViewerCopiedToClipboardMessage": "Copied to clipboard.",
+ "@demoCodeViewerCopiedToClipboardMessage": {
+ "description": "A message displayed to the user after clicking the COPY ALL button, if the text is successfully copied to the clipboard."
+ },
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Failed to copy to clipboard: {error}",
+ "@demoCodeViewerFailedToCopyToClipboardMessage": {
+ "description": "A message displayed to the user after clicking the COPY ALL button, if the text CANNOT be copied to the clipboard.",
+ "placeholders": {
+ "error": {
+ "example": "Your browser does not have clipboard support."
+ }
+ }
+ },
+ "demoOptionsFeatureTitle": "View options",
+ "@demoOptionsFeatureTitle": {
+ "description": "Title for an alert that explains what the options button does."
+ },
+ "demoOptionsFeatureDescription": "Tap here to view available options for this demo.",
+ "@demoOptionsFeatureDescription": {
+ "description": "Description for an alert that explains what the options button does."
+ },
+ "settingsTitle": "Settings",
+ "@settingsTitle": {
+ "description": "Title for the settings screen."
+ },
+ "settingsButtonLabel": "Settings",
+ "@settingsButtonLabel": {
+ "description": "Accessibility label for the settings button when settings are not showing."
+ },
+ "settingsButtonCloseLabel": "Close settings",
+ "@settingsButtonCloseLabel": {
+ "description": "Accessibility label for the settings button when settings are showing."
+ },
+ "settingsSystemDefault": "System",
+ "@settingsSystemDefault": {
+ "description": "Option label to indicate the system default will be used."
+ },
+ "settingsTextScaling": "Text scaling",
+ "@settingsTextScaling": {
+ "description": "Title for text scaling setting."
+ },
+ "settingsTextScalingSmall": "Small",
+ "@settingsTextScalingSmall": {
+ "description": "Option label for small text scale setting."
+ },
+ "settingsTextScalingNormal": "Normal",
+ "@settingsTextScalingNormal": {
+ "description": "Option label for normal text scale setting."
+ },
+ "settingsTextScalingLarge": "Large",
+ "@settingsTextScalingLarge": {
+ "description": "Option label for large text scale setting."
+ },
+ "settingsTextScalingHuge": "Huge",
+ "@settingsTextScalingHuge": {
+ "description": "Option label for huge text scale setting."
+ },
+ "settingsTextDirection": "Text direction",
+ "@settingsTextDirection": {
+ "description": "Title for text direction setting."
+ },
+ "settingsTextDirectionLocaleBased": "Based on locale",
+ "@settingsTextDirectionLocaleBased": {
+ "description": "Option label for locale-based text direction setting."
+ },
+ "settingsTextDirectionLTR": "LTR",
+ "@settingsTextDirectionLTR": {
+ "description": "Option label for left-to-right text direction setting."
+ },
+ "settingsTextDirectionRTL": "RTL",
+ "@settingsTextDirectionRTL": {
+ "description": "Option label for right-to-left text direction setting."
+ },
+ "settingsLocale": "Locale",
+ "@settingsLocale": {
+ "description": "Title for locale setting."
+ },
+ "settingsPlatformMechanics": "Platform mechanics",
+ "@settingsPlatformMechanics": {
+ "description": "Title for platform mechanics (iOS/Android) setting."
+ },
+ "settingsPlatformAndroid": "Android",
+ "@settingsPlatformAndroid": {
+ "description": "Title for Android platform setting."
+ },
+ "settingsPlatformIOS": "iOS",
+ "@settingsPlatformIOS": {
+ "description": "Title for iOS platform setting."
+ },
+ "settingsTheme": "Theme",
+ "@settingsTheme": {
+ "description": "Title for the theme setting."
+ },
+ "settingsDarkTheme": "Dark",
+ "@settingsDarkTheme": {
+ "description": "Title for the dark theme setting."
+ },
+ "settingsLightTheme": "Light",
+ "@settingsLightTheme": {
+ "description": "Title for the light theme setting."
+ },
+ "settingsSlowMotion": "Slow motion",
+ "@settingsSlowMotion": {
+ "description": "Title for slow motion setting."
+ },
+ "settingsAbout": "About Flutter Gallery",
+ "@settingsAbout": {
+ "description": "Title for information button."
+ },
+ "settingsFeedback": "Send feedback",
+ "@settingsFeedback": {
+ "description": "Title for feedback button."
+ },
+ "settingsAttribution": "Designed by TOASTER in London",
+ "@settingsAttribution": {
+ "description": "Title for attribution (TOASTER is a proper name and should remain in English)."
+ },
+ "demoBottomNavigationTitle": "Bottom navigation",
+ "@demoBottomNavigationTitle": {
+ "description": "Title for the material bottom navigation component demo."
+ },
+ "demoBottomNavigationSubtitle": "Bottom navigation with cross-fading views",
+ "@demoBottomNavigationSubtitle": {
+ "description": "Subtitle for the material bottom navigation component demo."
+ },
+ "demoBottomNavigationPersistentLabels": "Persistent labels",
+ "@demoBottomNavigationPersistentLabels": {
+ "description": "Option title for bottom navigation with persistent labels."
+ },
+ "demoBottomNavigationSelectedLabel": "Selected label",
+ "@demoBottomNavigationSelectedLabel": {
+ "description": "Option title for bottom navigation with only a selected label."
+ },
+ "demoBottomNavigationDescription": "Bottom navigation bars display three to five destinations at the bottom of a screen. Each destination is represented by an icon and an optional text label. When a bottom navigation icon is tapped, the user is taken to the top-level navigation destination associated with that icon.",
+ "@demoBottomNavigationDescription": {
+ "description": "Description for the material bottom navigation component demo."
+ },
+ "demoButtonTitle": "Buttons",
+ "@demoButtonTitle": {
+ "description": "Title for the material buttons component demo."
+ },
+ "demoButtonSubtitle": "Flat, raised, outline, and more",
+ "@demoButtonSubtitle": {
+ "description": "Subtitle for the material buttons component demo."
+ },
+ "demoFlatButtonTitle": "Flat Button",
+ "@demoFlatButtonTitle": {
+ "description": "Title for the flat button component demo."
+ },
+ "demoFlatButtonDescription": "A flat button displays an ink splash on press but does not lift. Use flat buttons on toolbars, in dialogs and inline with padding",
+ "@demoFlatButtonDescription": {
+ "description": "Description for the flat button component demo."
+ },
+ "demoRaisedButtonTitle": "Raised Button",
+ "@demoRaisedButtonTitle": {
+ "description": "Title for the raised button component demo."
+ },
+ "demoRaisedButtonDescription": "Raised buttons add dimension to mostly flat layouts. They emphasize functions on busy or wide spaces.",
+ "@demoRaisedButtonDescription": {
+ "description": "Description for the raised button component demo."
+ },
+ "demoOutlineButtonTitle": "Outline Button",
+ "@demoOutlineButtonTitle": {
+ "description": "Title for the outline button component demo."
+ },
+ "demoOutlineButtonDescription": "Outline buttons become opaque and elevate when pressed. They are often paired with raised buttons to indicate an alternative, secondary action.",
+ "@demoOutlineButtonDescription": {
+ "description": "Description for the outline button component demo."
+ },
+ "demoToggleButtonTitle": "Toggle Buttons",
+ "@demoToggleButtonTitle": {
+ "description": "Title for the toggle buttons component demo."
+ },
+ "demoToggleButtonDescription": "Toggle buttons can be used to group related options. To emphasize groups of related toggle buttons, a group should share a common container",
+ "@demoToggleButtonDescription": {
+ "description": "Description for the toggle buttons component demo."
+ },
+ "demoFloatingButtonTitle": "Floating Action Button",
+ "@demoFloatingButtonTitle": {
+ "description": "Title for the floating action button component demo."
+ },
+ "demoFloatingButtonDescription": "A floating action button is a circular icon button that hovers over content to promote a primary action in the application.",
+ "@demoFloatingButtonDescription": {
+ "description": "Description for the floating action button component demo."
+ },
+ "demoChipTitle": "Chips",
+ "@demoChipTitle": {
+ "description": "Title for the material chips component demo."
+ },
+ "demoChipSubtitle": "Compact elements that represent an input, attribute, or action",
+ "@demoChipSubtitle": {
+ "description": "Subtitle for the material chips component demo."
+ },
+ "demoActionChipTitle": "Action Chip",
+ "@demoActionChipTitle": {
+ "description": "Title for the action chip component demo."
+ },
+ "demoActionChipDescription": "Action chips are a set of options which trigger an action related to primary content. Action chips should appear dynamically and contextually in a UI.",
+ "@demoActionChipDescription": {
+ "description": "Description for the action chip component demo."
+ },
+ "demoChoiceChipTitle": "Choice Chip",
+ "@demoChoiceChipTitle": {
+ "description": "Title for the choice chip component demo."
+ },
+ "demoChoiceChipDescription": "Choice chips represent a single choice from a set. Choice chips contain related descriptive text or categories.",
+ "@demoChoiceChipDescription": {
+ "description": "Description for the choice chip component demo."
+ },
+ "demoFilterChipTitle": "Filter Chip",
+ "@demoFilterChipTitle": {
+ "description": "Title for the filter chip component demo."
+ },
+ "demoFilterChipDescription": "Filter chips use tags or descriptive words as a way to filter content.",
+ "@demoFilterChipDescription": {
+ "description": "Description for the filter chip component demo."
+ },
+ "demoInputChipTitle": "Input Chip",
+ "@demoInputChipTitle": {
+ "description": "Title for the input chip component demo."
+ },
+ "demoInputChipDescription": "Input chips represent a complex piece of information, such as an entity (person, place, or thing) or conversational text, in a compact form.",
+ "@demoInputChipDescription": {
+ "description": "Description for the input chip component demo."
+ },
+ "demoDialogTitle": "Dialogs",
+ "@demoDialogTitle": {
+ "description": "Title for the material dialog component demo."
+ },
+ "demoDialogSubtitle": "Simple, alert, and fullscreen",
+ "@demoDialogSubtitle": {
+ "description": "Subtitle for the material dialog component demo."
+ },
+ "demoAlertDialogTitle": "Alert",
+ "@demoAlertDialogTitle": {
+ "description": "Title for the alert dialog component demo."
+ },
+ "demoAlertDialogDescription": "An alert dialog informs the user about situations that require acknowledgement. An alert dialog has an optional title and an optional list of actions.",
+ "@demoAlertDialogDescription": {
+ "description": "Description for the alert dialog component demo."
+ },
+ "demoAlertTitleDialogTitle": "Alert With Title",
+ "@demoAlertTitleDialogTitle": {
+ "description": "Title for the alert dialog with title component demo."
+ },
+ "demoSimpleDialogTitle": "Simple",
+ "@demoSimpleDialogTitle": {
+ "description": "Title for the simple dialog component demo."
+ },
+ "demoSimpleDialogDescription": "A simple dialog offers the user a choice between several options. A simple dialog has an optional title that is displayed above the choices.",
+ "@demoSimpleDialogDescription": {
+ "description": "Description for the simple dialog component demo."
+ },
+ "demoFullscreenDialogTitle": "Fullscreen",
+ "@demoFullscreenDialogTitle": {
+ "description": "Title for the fullscreen dialog component demo."
+ },
+ "demoFullscreenDialogDescription": "The fullscreenDialog property specifies whether the incoming page is a fullscreen modal dialog",
+ "@demoFullscreenDialogDescription": {
+ "description": "Description for the fullscreen dialog component demo."
+ },
+ "demoCupertinoButtonsTitle": "Buttons",
+ "@demoCupertinoButtonsTitle": {
+ "description": "Title for the cupertino buttons component demo."
+ },
+ "demoCupertinoButtonsSubtitle": "iOS-style buttons",
+ "@demoCupertinoButtonsSubtitle": {
+ "description": "Subtitle for the cupertino buttons component demo."
+ },
+ "demoCupertinoButtonsDescription": "An iOS-style button. It takes in text and/or an icon that fades out and in on touch. May optionally have a background.",
+ "@demoCupertinoButtonsDescription": {
+ "description": "Description for the cupertino buttons component demo."
+ },
+ "demoCupertinoAlertsTitle": "Alerts",
+ "@demoCupertinoAlertsTitle": {
+ "description": "Title for the cupertino alerts component demo."
+ },
+ "demoCupertinoAlertsSubtitle": "iOS-style alert dialogs",
+ "@demoCupertinoAlertsSubtitle": {
+ "description": "Subtitle for the cupertino alerts component demo."
+ },
+ "demoCupertinoAlertTitle": "Alert",
+ "@demoCupertinoAlertTitle": {
+ "description": "Title for the cupertino alert component demo."
+ },
+ "demoCupertinoAlertDescription": "An alert dialog informs the user about situations that require acknowledgement. An alert dialog has an optional title, optional content, and an optional list of actions. The title is displayed above the content and the actions are displayed below the content.",
+ "@demoCupertinoAlertDescription": {
+ "description": "Description for the cupertino alert component demo."
+ },
+ "demoCupertinoAlertWithTitleTitle": "Alert With Title",
+ "@demoCupertinoAlertWithTitleTitle": {
+ "description": "Title for the cupertino alert with title component demo."
+ },
+ "demoCupertinoAlertButtonsTitle": "Alert With Buttons",
+ "@demoCupertinoAlertButtonsTitle": {
+ "description": "Title for the cupertino alert with buttons component demo."
+ },
+ "demoCupertinoAlertButtonsOnlyTitle": "Alert Buttons Only",
+ "@demoCupertinoAlertButtonsOnlyTitle": {
+ "description": "Title for the cupertino alert buttons only component demo."
+ },
+ "demoCupertinoActionSheetTitle": "Action Sheet",
+ "@demoCupertinoActionSheetTitle": {
+ "description": "Title for the cupertino action sheet component demo."
+ },
+ "demoCupertinoActionSheetDescription": "An action sheet is a specific style of alert that presents the user with a set of two or more choices related to the current context. An action sheet can have a title, an additional message, and a list of actions.",
+ "@demoCupertinoActionSheetDescription": {
+ "description": "Description for the cupertino action sheet component demo."
+ },
+ "demoCupertinoSegmentedControlTitle": "Segmented Control",
+ "@demoCupertinoSegmentedControlTitle": {
+ "description": "Title for the cupertino segmented control component demo."
+ },
+ "demoCupertinoSegmentedControlSubtitle": "iOS-style segmented control",
+ "@demoCupertinoSegmentedControlSubtitle": {
+ "description": "Subtitle for the cupertino segmented control component demo."
+ },
+ "demoCupertinoSegmentedControlDescription": "Used to select between a number of mutually exclusive options. When one option in the segmented control is selected, the other options in the segmented control cease to be selected.",
+ "@demoCupertinoSegmentedControlDescription": {
+ "description": "Description for the cupertino segmented control component demo."
+ },
+ "demoColorsTitle": "Colors",
+ "@demoColorsTitle": {
+ "description": "Title for the colors demo."
+ },
+ "demoColorsSubtitle": "All of the predefined colors",
+ "@demoColorsSubtitle": {
+ "description": "Subtitle for the colors demo."
+ },
+ "demoColorsDescription": "Color and color swatch constants which represent Material Design's color palette.",
+ "@demoColorsDescription": {
+ "description": "Description for the colors demo. Material Design should remain capitalized."
+ },
+ "demoTypographyTitle": "Typography",
+ "@demoTypographyTitle": {
+ "description": "Title for the typography demo."
+ },
+ "demoTypographySubtitle": "All of the predefined text styles",
+ "@demoTypographySubtitle": {
+ "description": "Subtitle for the typography demo."
+ },
+ "demoTypographyDescription": "Definitions for the various typographical styles found in Material Design.",
+ "@demoTypographyDescription": {
+ "description": "Description for the typography demo. Material Design should remain capitalized."
+ },
+ "buttonText": "BUTTON",
+ "@buttonText": {
+ "description": "Text for a generic button."
+ },
+ "demoBottomSheetTitle": "Bottom sheet",
+ "@demoBottomSheetTitle": {
+ "description": "Title for bottom sheet demo."
+ },
+ "demoBottomSheetSubtitle": "Persistent and modal bottom sheets",
+ "@demoBottomSheetSubtitle": {
+ "description": "Description for bottom sheet demo."
+ },
+ "demoBottomSheetPersistentTitle": "Persistent bottom sheet",
+ "@demoBottomSheetPersistentTitle": {
+ "description": "Title for persistent bottom sheet demo."
+ },
+ "demoBottomSheetPersistentDescription": "A persistent bottom sheet shows information that supplements the primary content of the app. A persistent bottom sheet remains visible even when the user interacts with other parts of the app.",
+ "@demoBottomSheetPersistentDescription": {
+ "description": "Description for persistent bottom sheet demo."
+ },
+ "demoBottomSheetModalTitle": "Modal bottom sheet",
+ "@demoBottomSheetModalTitle": {
+ "description": "Title for modal bottom sheet demo."
+ },
+ "demoBottomSheetModalDescription": "A modal bottom sheet is an alternative to a menu or a dialog and prevents the user from interacting with the rest of the app.",
+ "@demoBottomSheetModalDescription": {
+ "description": "Description for modal bottom sheet demo."
+ },
+ "demoBottomSheetAddLabel": "Add",
+ "@demoBottomSheetAddLabel": {
+ "description": "Semantic label for add icon."
+ },
+ "demoBottomSheetButtonText": "SHOW BOTTOM SHEET",
+ "@demoBottomSheetButtonText": {
+ "description": "Button text to show bottom sheet."
+ },
+ "demoBottomSheetHeader": "Header",
+ "@demoBottomSheetHeader": {
+ "description": "Generic header placeholder."
+ },
+ "demoBottomSheetItem": "Item {value}",
+ "@demoBottomSheetItem": {
+ "description": "Generic item placeholder.",
+ "placeholders": {
+ "value": {
+ "example": "1"
+ }
+ }
+ },
+ "demoListsTitle": "Lists",
+ "@demoListsTitle": {
+ "description": "Title for lists demo."
+ },
+ "demoListsSubtitle": "Scrolling list layouts",
+ "@demoListsSubtitle": {
+ "description": "Subtitle for lists demo."
+ },
+ "demoListsDescription": "A single fixed-height row that typically contains some text as well as a leading or trailing icon.",
+ "@demoListsDescription": {
+ "description": "Description for lists demo. This describes what a single row in a list consists of."
+ },
+ "demoOneLineListsTitle": "One Line",
+ "@demoOneLineListsTitle": {
+ "description": "Title for lists demo with only one line of text per row."
+ },
+ "demoTwoLineListsTitle": "Two Lines",
+ "@demoTwoLineListsTitle": {
+ "description": "Title for lists demo with two lines of text per row."
+ },
+ "demoListsSecondary": "Secondary text",
+ "@demoListsSecondary": {
+ "description": "Text that appears in the second line of a list item."
+ },
+ "demoTabsTitle": "Tabs",
+ "@demoTabsTitle": {
+ "description": "Title for tabs demo."
+ },
+ "demoTabsSubtitle": "Tabs with independently scrollable views",
+ "@demoTabsSubtitle": {
+ "description": "Subtitle for tabs demo."
+ },
+ "demoTabsDescription": "Tabs organize content across different screens, data sets, and other interactions.",
+ "@demoTabsDescription": {
+ "description": "Description for tabs demo."
+ },
+ "demoSelectionControlsTitle": "Selection controls",
+ "@demoSelectionControlsTitle": {
+ "description": "Title for selection controls demo."
+ },
+ "demoSelectionControlsSubtitle": "Checkboxes, radio buttons, and switches",
+ "@demoSelectionControlsSubtitle": {
+ "description": "Subtitle for selection controls demo."
+ },
+ "demoSelectionControlsCheckboxTitle": "Checkbox",
+ "@demoSelectionControlsCheckboxTitle": {
+ "description": "Title for the checkbox (selection controls) demo."
+ },
+ "demoSelectionControlsCheckboxDescription": "Checkboxes allow the user to select multiple options from a set. A normal checkbox's value is true or false and a tristate checkbox's value can also be null.",
+ "@demoSelectionControlsCheckboxDescription": {
+ "description": "Description for the checkbox (selection controls) demo."
+ },
+ "demoSelectionControlsRadioTitle": "Radio",
+ "@demoSelectionControlsRadioTitle": {
+ "description": "Title for the radio button (selection controls) demo."
+ },
+ "demoSelectionControlsRadioDescription": "Radio buttons allow the user to select one option from a set. Use radio buttons for exclusive selection if you think that the user needs to see all available options side-by-side.",
+ "@demoSelectionControlsRadioDescription": {
+ "description": "Description for the radio button (selection controls) demo."
+ },
+ "demoSelectionControlsSwitchTitle": "Switch",
+ "@demoSelectionControlsSwitchTitle": {
+ "description": "Title for the switches (selection controls) demo."
+ },
+ "demoSelectionControlsSwitchDescription": "On/off switches toggle the state of a single settings option. The option that the switch controls, as well as the state it’s in, should be made clear from the corresponding inline label.",
+ "@demoSelectionControlsSwitchDescription": {
+ "description": "Description for the switches (selection controls) demo."
+ },
+ "demoBottomTextFieldsTitle": "Text fields",
+ "@demoBottomTextFieldsTitle": {
+ "description": "Title for text fields demo."
+ },
+ "demoBottomSheetSubtitle": "Persistent and modal bottom sheets",
+ "@demoBottomSheetSubtitle": {
+ "description": "Description for bottom sheet demo."
+ },
+ "demoTextFieldTitle": "Text fields",
+ "@demoTextFieldTitle": {
+ "description": "Title for text fields demo."
+ },
+ "demoTextFieldSubtitle": "Single line of editable text and numbers",
+ "@demoTextFieldSubtitle": {
+ "description": "Description for text fields demo."
+ },
+ "demoTextFieldDescription": "Text fields allow users to enter text into a UI. They typically appear in forms and dialogs.",
+ "@demoTextFieldDescription": {
+ "description": "Description for text fields demo."
+ },
+ "demoTextFieldShowPasswordLabel": "Show password",
+ "@demoTextFieldShowPasswordLabel": {
+ "description": "Label for show password icon."
+ },
+ "demoTextFieldHidePasswordLabel": "Hide password",
+ "@demoTextFieldHidePasswordLabel": {
+ "description": "Label for hide password icon."
+ },
+ "demoTextFieldFormErrors": "Please fix the errors in red before submitting.",
+ "@demoTextFieldFormErrors": {
+ "description": "Text that shows up on form errors."
+ },
+ "demoTextFieldNameRequired": "Name is required.",
+ "@demoTextFieldNameRequired": {
+ "description": "Shows up as submission error if name is not given in the form."
+ },
+ "demoTextFieldOnlyAlphabeticalChars": "Please enter only alphabetical characters.",
+ "@demoTextFieldOnlyAlphabeticalChars": {
+ "description": "Error that shows if non-alphabetical characters are given."
+ },
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Enter a US phone number.",
+ "@demoTextFieldEnterUSPhoneNumber": {
+ "description": "Error that shows up if non-valid non-US phone number is given."
+ },
+ "demoTextFieldEnterPassword": "Please enter a password.",
+ "@demoTextFieldEnterPassword": {
+ "description": "Error that shows up if password is not given."
+ },
+ "demoTextFieldPasswordsDoNotMatch": "The passwords don't match",
+ "@demoTextFieldPasswordsDoNotMatch": {
+ "description": "Error that shows up, if the re-typed password does not match the already given password."
+ },
+ "demoTextFieldWhatDoPeopleCallYou": "What do people call you?",
+ "@demoTextFieldWhatDoPeopleCallYou": {
+ "description": "Placeholder for name field in form."
+ },
+ "demoTextFieldNameField": "Name*",
+ "@demoTextFieldNameField": {
+ "description": "The label for a name input field that is required (hence the star)."
+ },
+ "demoTextFieldWhereCanWeReachYou": "Where can we reach you?",
+ "@demoTextFieldWhereCanWeReachYou": {
+ "description": "Placeholder for when entering a phone number in a form."
+ },
+ "demoTextFieldPhoneNumber": "Phone number*",
+ "@demoTextFieldPhoneNumber": {
+ "description": "The label for a phone number input field that is required (hence the star)."
+ },
+ "demoTextFieldYourEmailAddress": "Your email address",
+ "@demoTextFieldYourEmailAddress": {
+ "description": "The label for an email address input field."
+ },
+ "demoTextFieldEmail": "E-mail",
+ "@demoTextFieldEmail": {
+ "description": "The label for an email address input field"
+ },
+ "demoTextFieldTellUsAboutYourself": "Tell us about yourself (e.g., write down what you do or what hobbies you have)",
+ "@demoTextFieldTellUsAboutYourself": {
+ "description": "The placeholder text for biography/life story input field."
+ },
+ "demoTextFieldKeepItShort": "Keep it short, this is just a demo.",
+ "@demoTextFieldKeepItShort": {
+ "description": "Helper text for biography/life story input field."
+ },
+ "demoTextFieldLifeStory": "Life story",
+ "@demoTextFieldLifeStory": {
+ "description": "The label for for biography/life story input field."
+ },
+ "demoTextFieldSalary": "Salary",
+ "@demoTextFieldSalary": {
+ "description": "The label for salary input field."
+ },
+ "demoTextFieldUSD": "USD",
+ "@demoTextFieldUSD": {
+ "description": "US currency, used as suffix in input field for salary."
+ },
+ "demoTextFieldNoMoreThan": "No more than 8 characters.",
+ "@demoTextFieldNoMoreThan": {
+ "description": "Helper text for password input field."
+ },
+ "demoTextFieldPassword": "Password*",
+ "@demoTextFieldPassword": {
+ "description": "Label for password input field, that is required (hence the star)."
+ },
+ "demoTextFieldRetypePassword": "Re-type password*",
+ "@demoTextFieldRetypePassword": {
+ "description": "Label for repeat password input field."
+ },
+ "demoTextFieldSubmit": "SUBMIT",
+ "@demoTextFieldSubmit": {
+ "description": "The submit button text for form."
+ },
+ "demoTextFieldNameHasPhoneNumber": "{name} phone number is {phoneNumber}",
+ "@demoTextFieldNameHasPhoneNumber": {
+ "description": "Text that shows up when valid phone number and name is submitted in form.",
+ "placeholders": {
+ "name": {
+ "example": "Peter"
+ },
+ "phoneNumber": {
+ "phoneNumber": "+1 (000) 000-0000"
+ }
+ }
+ },
+ "demoTextFieldRequiredField": "* indicates required field",
+ "@demoTextFieldRequiredField": {
+ "description": "Helper text to indicate that * means that it is a required field."
+ },
+ "bottomNavigationCommentsTab": "Comments",
+ "@bottomNavigationCommentsTab": {
+ "description": "Title for Comments tab of bottom navigation."
+ },
+ "bottomNavigationCalendarTab": "Calendar",
+ "@bottomNavigationCalendarTab": {
+ "description": "Title for Calendar tab of bottom navigation."
+ },
+ "bottomNavigationAccountTab": "Account",
+ "@bottomNavigationAccountTab": {
+ "description": "Title for Account tab of bottom navigation."
+ },
+ "bottomNavigationAlarmTab": "Alarm",
+ "@bottomNavigationAlarmTab": {
+ "description": "Title for Alarm tab of bottom navigation."
+ },
+ "bottomNavigationCameraTab": "Camera",
+ "@bottomNavigationCameraTab": {
+ "description": "Title for Camera tab of bottom navigation."
+ },
+ "bottomNavigationContentPlaceholder": "Placeholder for {title} tab",
+ "@bottomNavigationContentPlaceholder": {
+ "description": "Accessibility label for the content placeholder in the bottom navigation demo",
+ "placeholders": {
+ "title": {
+ "example": "Account"
+ }
+ }
+ },
+ "buttonTextCreate": "Create",
+ "@buttonTextCreate": {
+ "description": "Tooltip text for a create button."
+ },
+ "dialogSelectedOption": "You selected: \"{value}\"",
+ "@dialogSelectedOption": {
+ "description": "Message displayed after an option is selected from a dialog",
+ "placeholders": {
+ "value": {
+ "example": "AGREE"
+ }
+ }
+ },
+ "chipTurnOnLights": "Turn on lights",
+ "@chipTurnOnLights": {
+ "description": "A chip component to turn on the lights."
+ },
+ "chipSmall": "Small",
+ "@chipSmall": {
+ "description": "A chip component to select a small size."
+ },
+ "chipMedium": "Medium",
+ "@chipMedium": {
+ "description": "A chip component to select a medium size."
+ },
+ "chipLarge": "Large",
+ "@chipLarge": {
+ "description": "A chip component to select a large size."
+ },
+ "chipElevator": "Elevator",
+ "@chipElevator": {
+ "description": "A chip component to filter selection by elevators."
+ },
+ "chipWasher": "Washer",
+ "@chipWasher": {
+ "description": "A chip component to filter selection by washers."
+ },
+ "chipFireplace": "Fireplace",
+ "@chipFireplace": {
+ "description": "A chip component to filter selection by fireplaces."
+ },
+ "chipBiking": "Biking",
+ "@chipBiking": {
+ "description": "A chip component to that indicates a biking selection."
+ },
+ "dialogDiscardTitle": "Discard draft?",
+ "@dialogDiscardTitle": {
+ "description": "Alert dialog message to discard draft."
+ },
+ "dialogLocationTitle": "Use Google's location service?",
+ "@dialogLocationTitle": {
+ "description": "Alert dialog title to use location services."
+ },
+ "dialogLocationDescription": "Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running.",
+ "@dialogLocationDescription": {
+ "description": "Alert dialog description to use location services."
+ },
+ "dialogCancel": "CANCEL",
+ "@dialogCancel": {
+ "description": "Alert dialog cancel option."
+ },
+ "dialogDiscard": "DISCARD",
+ "@dialogDiscard": {
+ "description": "Alert dialog discard option."
+ },
+ "dialogDisagree": "DISAGREE",
+ "@dialogDisagree": {
+ "description": "Alert dialog disagree option."
+ },
+ "dialogAgree": "AGREE",
+ "@dialogAgree": {
+ "description": "Alert dialog agree option."
+ },
+ "dialogSetBackup": "Set backup account",
+ "@dialogSetBackup": {
+ "description": "Alert dialog title for setting a backup account."
+ },
+ "dialogAddAccount": "Add account",
+ "@dialogAddAccount": {
+ "description": "Alert dialog option for adding an account."
+ },
+ "dialogShow": "SHOW DIALOG",
+ "@dialogShow": {
+ "description": "Button text to display a dialog."
+ },
+ "dialogFullscreenTitle": "Full Screen Dialog",
+ "@dialogFullscreenTitle": {
+ "description": "Title for full screen dialog demo."
+ },
+ "dialogFullscreenSave": "SAVE",
+ "@dialogFullscreenSave": {
+ "description": "Save button for full screen dialog demo."
+ },
+ "dialogFullscreenDescription": "A full screen dialog demo",
+ "@dialogFullscreenDescription": {
+ "description": "Description for full screen dialog demo."
+ },
+ "cupertinoButton": "Button",
+ "@cupertinoButton": {
+ "description": "Button text for a generic iOS-style button."
+ },
+ "cupertinoButtonWithBackground": "With Background",
+ "@cupertinoButtonWithBackground": {
+ "description": "Button text for a iOS-style button with a filled background."
+ },
+ "cupertinoAlertCancel": "Cancel",
+ "@cupertinoAlertCancel": {
+ "description": "iOS-style alert cancel option."
+ },
+ "cupertinoAlertDiscard": "Discard",
+ "@cupertinoAlertDiscard": {
+ "description": "iOS-style alert discard option."
+ },
+ "cupertinoAlertLocationTitle": "Allow \"Maps\" to access your location while you are using the app?",
+ "@cupertinoAlertLocationTitle": {
+ "description": "iOS-style alert title for location permission."
+ },
+ "cupertinoAlertLocationDescription": "Your current location will be displayed on the map and used for directions, nearby search results, and estimated travel times.",
+ "@cupertinoAlertLocationDescription": {
+ "description": "iOS-style alert description for location permission."
+ },
+ "cupertinoAlertAllow": "Allow",
+ "@cupertinoAlertAllow": {
+ "description": "iOS-style alert allow option."
+ },
+ "cupertinoAlertDontAllow": "Don't Allow",
+ "@cupertinoAlertDontAllow": {
+ "description": "iOS-style alert don't allow option."
+ },
+ "cupertinoAlertFavoriteDessert": "Select Favorite Dessert",
+ "@cupertinoAlertFavoriteDessert": {
+ "description": "iOS-style alert title for selecting favorite dessert."
+ },
+ "cupertinoAlertDessertDescription": "Please select your favorite type of dessert from the list below. Your selection will be used to customize the suggested list of eateries in your area.",
+ "@cupertinoAlertDessertDescription": {
+ "description": "iOS-style alert description for selecting favorite dessert."
+ },
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "@cupertinoAlertCheesecake": {
+ "description": "iOS-style alert cheesecake option."
+ },
+ "cupertinoAlertTiramisu": "Tiramisu",
+ "@cupertinoAlertTiramisu": {
+ "description": "iOS-style alert tiramisu option."
+ },
+ "cupertinoAlertApplePie": "Apple Pie",
+ "@cupertinoAlertApplePie": {
+ "description": "iOS-style alert apple pie option."
+ },
+ "cupertinoAlertChocolateBrownie": "Chocolate Brownie",
+ "@cupertinoAlertChocolateBrownie": {
+ "description": "iOS-style alert chocolate brownie option."
+ },
+ "cupertinoShowAlert": "Show Alert",
+ "@cupertinoShowAlert": {
+ "description": "Button text to show iOS-style alert."
+ },
+ "colorsRed": "RED",
+ "@colorsRed": {
+ "description": "Tab title for the color red."
+ },
+ "colorsPink": "PINK",
+ "@colorsPink": {
+ "description": "Tab title for the color pink."
+ },
+ "colorsPurple": "PURPLE",
+ "@colorsPurple": {
+ "description": "Tab title for the color purple."
+ },
+ "colorsDeepPurple": "DEEP PURPLE",
+ "@colorsDeepPurple": {
+ "description": "Tab title for the color deep purple."
+ },
+ "colorsIndigo": "INDIGO",
+ "@colorsIndigo": {
+ "description": "Tab title for the color indigo."
+ },
+ "colorsBlue": "BLUE",
+ "@colorsBlue": {
+ "description": "Tab title for the color blue."
+ },
+ "colorsLightBlue": "LIGHT BLUE",
+ "@colorsLightBlue": {
+ "description": "Tab title for the color light blue."
+ },
+ "colorsCyan": "CYAN",
+ "@colorsCyan": {
+ "description": "Tab title for the color cyan."
+ },
+ "colorsTeal": "TEAL",
+ "@colorsTeal": {
+ "description": "Tab title for the color teal."
+ },
+ "colorsGreen": "GREEN",
+ "@colorsGreen": {
+ "description": "Tab title for the color green."
+ },
+ "colorsLightGreen": "LIGHT GREEN",
+ "@colorsLightGreen": {
+ "description": "Tab title for the color light green."
+ },
+ "colorsLime": "LIME",
+ "@colorsLime": {
+ "description": "Tab title for the color lime."
+ },
+ "colorsYellow": "YELLOW",
+ "@colorsYellow": {
+ "description": "Tab title for the color yellow."
+ },
+ "colorsAmber": "AMBER",
+ "@colorsAmber": {
+ "description": "Tab title for the color amber."
+ },
+ "colorsOrange": "ORANGE",
+ "@colorsOrange": {
+ "description": "Tab title for the color orange."
+ },
+ "colorsDeepOrange": "DEEP ORANGE",
+ "@colorsDeepOrange": {
+ "description": "Tab title for the color deep orange."
+ },
+ "colorsBrown": "BROWN",
+ "@colorsBrown": {
+ "description": "Tab title for the color brown."
+ },
+ "colorsGrey": "GREY",
+ "@colorsGrey": {
+ "description": "Tab title for the color grey."
+ },
+ "colorsBlueGrey": "BLUE GREY",
+ "@colorsBlueGrey": {
+ "description": "Tab title for the color blue grey."
+ },
+ "starterAppTitle": "Starter app",
+ "@starterAppTitle": {
+ "description": "The title and name for the starter app."
+ },
+ "starterAppDescription": "A responsive starter layout",
+ "@starterAppDescription": {
+ "description": "The description for the starter app."
+ },
+ "starterAppGenericButton": "BUTTON",
+ "@starterAppGenericButton": {
+ "description": "Generic placeholder for button."
+ },
+ "starterAppTooltipAdd": "Add",
+ "@starterAppTooltipAdd": {
+ "description": "Tooltip on add icon."
+ },
+ "starterAppTooltipFavorite": "Favorite",
+ "@starterAppTooltipFavorite": {
+ "description": "Tooltip on favorite icon."
+ },
+ "starterAppTooltipShare": "Share",
+ "@starterAppTooltipShare": {
+ "description": "Tooltip on share icon."
+ },
+ "starterAppTooltipSearch": "Search",
+ "@starterAppTooltipSearch": {
+ "description": "Tooltip on search icon."
+ },
+ "starterAppGenericTitle": "Title",
+ "@starterAppGenericTitle": {
+ "description": "Generic placeholder for title in app bar."
+ },
+ "starterAppGenericSubtitle": "Subtitle",
+ "@starterAppGenericSubtitle": {
+ "description": "Generic placeholder for subtitle in drawer."
+ },
+ "starterAppGenericHeadline": "Headline",
+ "@starterAppGenericHeadline": {
+ "description": "Generic placeholder for headline in drawer."
+ },
+ "starterAppGenericBody": "Body",
+ "@starterAppGenericBody": {
+ "description": "Generic placeholder for body text in drawer."
+ },
+ "starterAppDrawerItem": "Item {value}",
+ "@starterAppDrawerItem": {
+ "description": "Generic placeholder drawer item.",
+ "placeholders": {
+ "value": {
+ "example": "1"
+ }
+ }
+ },
+ "shrineMenuCaption": "MENU",
+ "@shrineMenuCaption": {
+ "description": "Caption for a menu page."
+ },
+ "shrineCategoryNameAll": "ALL",
+ "@shrineCategoryNameAll": {
+ "description": "A tab showing products from all categories."
+ },
+ "shrineCategoryNameAccessories": "ACCESSORIES",
+ "@shrineCategoryNameAccessories": {
+ "description": "A category of products consisting of accessories (clothing items)."
+ },
+ "shrineCategoryNameClothing": "CLOTHING",
+ "@shrineCategoryNameClothing": {
+ "description": "A category of products consisting of clothing."
+ },
+ "shrineCategoryNameHome": "HOME",
+ "@shrineCategoryNameHome": {
+ "description": "A category of products consisting of items used at home."
+ },
+ "shrineLogoutButtonCaption": "LOGOUT",
+ "@shrineLogoutButtonCaption": {
+ "description": "Label for a logout button."
+ },
+ "shrineLoginUsernameLabel": "Username",
+ "@shrineLoginUsernameLabel": {
+ "description": "On the login screen, a label for a textfield for the user to input their username."
+ },
+ "shrineLoginPasswordLabel": "Password",
+ "@shrineLoginPasswordLabel": {
+ "description": "On the login screen, a label for a textfield for the user to input their password."
+ },
+ "shrineCancelButtonCaption": "CANCEL",
+ "@shrineCancelButtonCaption": {
+ "description": "On the login screen, the caption for a button to cancel login."
+ },
+ "shrineNextButtonCaption": "NEXT",
+ "@shrineNextButtonCaption": {
+ "description": "On the login screen, the caption for a button to proceed login."
+ },
+ "shrineCartPageCaption": "CART",
+ "@shrineCartPageCaption": {
+ "description": "Caption for a shopping cart page."
+ },
+ "shrineProductQuantity": "Quantity: {quantity}",
+ "@shrineProductQuantity": {
+ "description": "A text showing the number of items for a specific product.",
+ "placeholders": {
+ "quantity": {
+ "example": "3"
+ }
+ }
+ },
+ "shrineProductPrice": "x {price}",
+ "@shrineProductPrice": {
+ "description": "A text showing the unit price of each product. Used as: 'Quantity: 3 x $129'. The currency will be handled by the formatter.",
+ "placeholders": {
+ "price": {
+ "example": "$129"
+ }
+ }
+ },
+ "shrineCartItemCount": "{quantity, plural, =0{NO ITEMS} =1{1 ITEM} other{{quantity} ITEMS}}",
+ "@shrineCartItemCount": {
+ "description": "A text showing the total number of items in the cart.",
+ "placeholders": {
+ "quantity": {
+ "example": "3"
+ }
+ }
+ },
+ "shrineCartClearButtonCaption": "CLEAR CART",
+ "@shrineCartClearButtonCaption": {
+ "description": "Caption for a button used to clear the cart."
+ },
+ "shrineCartTotalCaption": "TOTAL",
+ "@shrineCartTotalCaption": {
+ "description": "Label for a text showing total price of the items in the cart."
+ },
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "@shrineCartSubtotalCaption": {
+ "description": "Label for a text showing the subtotal price of the items in the cart (excluding shipping and tax)."
+ },
+ "shrineCartShippingCaption": "Shipping:",
+ "@shrineCartShippingCaption": {
+ "description": "Label for a text showing the shipping cost for the items in the cart."
+ },
+ "shrineCartTaxCaption": "Tax:",
+ "@shrineCartTaxCaption": {
+ "description": "Label for a text showing the tax for the items in the cart."
+ },
+ "shrineProductVagabondSack": "Vagabond sack",
+ "@shrineProductVagabondSack": {
+ "description": "Name of the product 'Vagabond sack'."
+ },
+ "shrineProductStellaSunglasses": "Stella sunglasses",
+ "@shrineProductStellaSunglasses": {
+ "description": "Name of the product 'Stella sunglasses'."
+ },
+ "shrineProductWhitneyBelt": "Whitney belt",
+ "@shrineProductWhitneyBelt": {
+ "description": "Name of the product 'Whitney belt'."
+ },
+ "shrineProductGardenStrand": "Garden strand",
+ "@shrineProductGardenStrand": {
+ "description": "Name of the product 'Garden strand'."
+ },
+ "shrineProductStrutEarrings": "Strut earrings",
+ "@shrineProductStrutEarrings": {
+ "description": "Name of the product 'Strut earrings'."
+ },
+ "shrineProductVarsitySocks": "Varsity socks",
+ "@shrineProductVarsitySocks": {
+ "description": "Name of the product 'Varsity socks'."
+ },
+ "shrineProductWeaveKeyring": "Weave keyring",
+ "@shrineProductWeaveKeyring": {
+ "description": "Name of the product 'Weave keyring'."
+ },
+ "shrineProductGatsbyHat": "Gatsby hat",
+ "@shrineProductGatsbyHat": {
+ "description": "Name of the product 'Gatsby hat'."
+ },
+ "shrineProductShrugBag": "Shrug bag",
+ "@shrineProductShrugBag": {
+ "description": "Name of the product 'Shrug bag'."
+ },
+ "shrineProductGiltDeskTrio": "Gilt desk trio",
+ "@shrineProductGiltDeskTrio": {
+ "description": "Name of the product 'Gilt desk trio'."
+ },
+ "shrineProductCopperWireRack": "Copper wire rack",
+ "@shrineProductCopperWireRack": {
+ "description": "Name of the product 'Copper wire rack'."
+ },
+ "shrineProductSootheCeramicSet": "Soothe ceramic set",
+ "@shrineProductSootheCeramicSet": {
+ "description": "Name of the product 'Soothe ceramic set'."
+ },
+ "shrineProductHurrahsTeaSet": "Hurrahs tea set",
+ "@shrineProductHurrahsTeaSet": {
+ "description": "Name of the product 'Hurrahs tea set'."
+ },
+ "shrineProductBlueStoneMug": "Blue stone mug",
+ "@shrineProductBlueStoneMug": {
+ "description": "Name of the product 'Blue stone mug'."
+ },
+ "shrineProductRainwaterTray": "Rainwater tray",
+ "@shrineProductRainwaterTray": {
+ "description": "Name of the product 'Rainwater tray'."
+ },
+ "shrineProductChambrayNapkins": "Chambray napkins",
+ "@shrineProductChambrayNapkins": {
+ "description": "Name of the product 'Chambray napkins'."
+ },
+ "shrineProductSucculentPlanters": "Succulent planters",
+ "@shrineProductSucculentPlanters": {
+ "description": "Name of the product 'Succulent planters'."
+ },
+ "shrineProductQuartetTable": "Quartet table",
+ "@shrineProductQuartetTable": {
+ "description": "Name of the product 'Quartet table'."
+ },
+ "shrineProductKitchenQuattro": "Kitchen quattro",
+ "@shrineProductKitchenQuattro": {
+ "description": "Name of the product 'Kitchen quattro'."
+ },
+ "shrineProductClaySweater": "Clay sweater",
+ "@shrineProductClaySweater": {
+ "description": "Name of the product 'Clay sweater'."
+ },
+ "shrineProductSeaTunic": "Sea tunic",
+ "@shrineProductSeaTunic": {
+ "description": "Name of the product 'Sea tunic'."
+ },
+ "shrineProductPlasterTunic": "Plaster tunic",
+ "@shrineProductPlasterTunic": {
+ "description": "Name of the product 'Plaster tunic'."
+ },
+ "shrineProductWhitePinstripeShirt": "White pinstripe shirt",
+ "@shrineProductWhitePinstripeShirt": {
+ "description": "Name of the product 'White pinstripe shirt'."
+ },
+ "shrineProductChambrayShirt": "Chambray shirt",
+ "@shrineProductChambrayShirt": {
+ "description": "Name of the product 'Chambray shirt'."
+ },
+ "shrineProductSeabreezeSweater": "Seabreeze sweater",
+ "@shrineProductSeabreezeSweater": {
+ "description": "Name of the product 'Seabreeze sweater'."
+ },
+ "shrineProductGentryJacket": "Gentry jacket",
+ "@shrineProductGentryJacket": {
+ "description": "Name of the product 'Gentry jacket'."
+ },
+ "shrineProductNavyTrousers": "Navy trousers",
+ "@shrineProductNavyTrousers": {
+ "description": "Name of the product 'Navy trousers'."
+ },
+ "shrineProductWalterHenleyWhite": "Walter henley (white)",
+ "@shrineProductWalterHenleyWhite": {
+ "description": "Name of the product 'Walter henley (white)'."
+ },
+ "shrineProductSurfAndPerfShirt": "Surf and perf shirt",
+ "@shrineProductSurfAndPerfShirt": {
+ "description": "Name of the product 'Surf and perf shirt'."
+ },
+ "shrineProductGingerScarf": "Ginger scarf",
+ "@shrineProductGingerScarf": {
+ "description": "Name of the product 'Ginger scarf'."
+ },
+ "shrineProductRamonaCrossover": "Ramona crossover",
+ "@shrineProductRamonaCrossover": {
+ "description": "Name of the product 'Ramona crossover'."
+ },
+ "shrineProductChambrayShirt": "Chambray shirt",
+ "@shrineProductChambrayShirt": {
+ "description": "Name of the product 'Chambray shirt'."
+ },
+ "shrineProductClassicWhiteCollar": "Classic white collar",
+ "@shrineProductClassicWhiteCollar": {
+ "description": "Name of the product 'Classic white collar'."
+ },
+ "shrineProductCeriseScallopTee": "Cerise scallop tee",
+ "@shrineProductCeriseScallopTee": {
+ "description": "Name of the product 'Cerise scallop tee'."
+ },
+ "shrineProductShoulderRollsTee": "Shoulder rolls tee",
+ "@shrineProductShoulderRollsTee": {
+ "description": "Name of the product 'Shoulder rolls tee'."
+ },
+ "shrineProductGreySlouchTank": "Grey slouch tank",
+ "@shrineProductGreySlouchTank": {
+ "description": "Name of the product 'Grey slouch tank'."
+ },
+ "shrineProductSunshirtDress": "Sunshirt dress",
+ "@shrineProductSunshirtDress": {
+ "description": "Name of the product 'Sunshirt dress'."
+ },
+ "shrineProductFineLinesTee": "Fine lines tee",
+ "@shrineProductFineLinesTee": {
+ "description": "Name of the product 'Fine lines tee'."
+ },
+ "shrineTooltipSearch": "Search",
+ "@shrineTooltipSearch": {
+ "description": "The tooltip text for a search button. Also used as a semantic label, used by screen readers, such as TalkBack and VoiceOver."
+ },
+ "shrineTooltipSettings": "Settings",
+ "@shrineTooltipSettings": {
+ "description": "The tooltip text for a settings button. Also used as a semantic label, used by screen readers, such as TalkBack and VoiceOver."
+ },
+ "shrineTooltipOpenMenu": "Open menu",
+ "@shrineTooltipOpenMenu": {
+ "description": "The tooltip text for a menu button. Also used as a semantic label, used by screen readers, such as TalkBack and VoiceOver."
+ },
+ "shrineTooltipCloseMenu": "Close menu",
+ "@shrineTooltipCloseMenu": {
+ "description": "The tooltip text for a button to close a menu. Also used as a semantic label, used by screen readers, such as TalkBack and VoiceOver."
+ },
+ "shrineTooltipCloseCart": "Close cart",
+ "@shrineTooltipCloseCart": {
+ "description": "The tooltip text for a button to close the shopping cart page. Also used as a semantic label, used by screen readers, such as TalkBack and VoiceOver."
+ },
+ "shrineScreenReaderCart": "{quantity, plural, =0{Shopping cart, no items} =1{Shopping cart, 1 item} other{Shopping cart, {quantity} items}}",
+ "@shrineScreenReaderCart": {
+ "description": "The description of a shopping cart button containing some products. Used by screen readers, such as TalkBack and VoiceOver.",
+ "placeholders": {
+ "quantity": {
+ "example": "3"
+ }
+ }
+ },
+ "shrineScreenReaderProductAddToCart": "Add to cart",
+ "@shrineScreenReaderProductAddToCart": {
+ "description": "An announcement made by screen readers, such as TalkBack and VoiceOver to indicate the action of a button for adding a product to the cart."
+ },
+ "shrineScreenReaderRemoveProductButton": "Remove {product}",
+ "@shrineScreenReaderRemoveProductButton": {
+ "description": "A tooltip for a button to remove a product. This will be read by screen readers, such as TalkBack and VoiceOver when a product is added to the shopping cart.",
+ "placeholders": {
+ "product": {
+ "example": "Ginger scarf"
+ }
+ }
+ },
+ "shrineTooltipRemoveItem": "Remove item",
+ "@shrineTooltipRemoveItem": {
+ "description": "The tooltip text for a button to remove an item (a product) in a shopping cart. Also used as a semantic label, used by screen readers, such as TalkBack and VoiceOver."
+ },
+ "craneFormDiners": "Diners",
+ "@craneFormDiners": {
+ "description": "Form field label to enter the number of diners."
+ },
+ "craneFormDate": "Select Date",
+ "@craneFormDate": {
+ "description": "Form field label to select a date."
+ },
+ "craneFormTime": "Select Time",
+ "@craneFormTime": {
+ "description": "Form field label to select a time."
+ },
+ "craneFormLocation": "Select Location",
+ "@craneFormLocation": {
+ "description": "Form field label to select a location."
+ },
+ "craneFormTravelers": "Travelers",
+ "@craneFormTravelers": {
+ "description": "Form field label to select the number of travellers."
+ },
+ "craneFormOrigin": "Choose Origin",
+ "@craneFormOrigin": {
+ "description": "Form field label to choose a travel origin."
+ },
+ "craneFormDestination": "Choose Destination",
+ "@craneFormDestination": {
+ "description": "Form field label to choose a travel destination."
+ },
+ "craneFormDates": "Select Dates",
+ "@craneFormDates": {
+ "description": "Form field label to select multiple dates."
+ },
+ "craneFly": "FLY",
+ "@craneFly": {
+ "description": "Title for FLY tab."
+ },
+ "craneSleep": "SLEEP",
+ "@craneSleep": {
+ "description": "Title for SLEEP tab."
+ },
+ "craneEat": "EAT",
+ "@craneEat": {
+ "description": "Title for EAT tab."
+ },
+ "craneFlySubhead": "Explore Flights by Destination",
+ "@craneFlySubhead": {
+ "description": "Subhead for FLY tab."
+ },
+ "craneSleepSubhead": "Explore Properties by Destination",
+ "@craneSleepSubhead": {
+ "description": "Subhead for SLEEP tab."
+ },
+ "craneEatSubhead": "Explore Restaurants by Destination",
+ "@craneEatSubhead": {
+ "description": "Subhead for EAT tab."
+ },
+ "craneFlyStops": "{numberOfStops, plural, =0{Nonstop} =1{1 stop} other{{numberOfStops} stops}}",
+ "@craneFlyStops": {
+ "description": "Label indicating if a flight is nonstop or how many layovers it includes.",
+ "placeholders": {
+ "numberOfStops": {
+ "example": 2
+ }
+ }
+ },
+ "craneSleepProperties": "{totalProperties, plural, =0{No Available Properties} =1{1 Available Properties} other{{totalProperties} Available Properties}}",
+ "@craneSleepProperties": {
+ "description": "Text indicating the number of available properties (temporary rentals). Always plural.",
+ "placeholders": {
+ "totalProperties": {
+ "example": "100"
+ }
+ }
+ },
+ "craneEatRestaurants": "{totalRestaurants, plural, =0{No Restaurants} =1{1 Restaurant} other{{totalRestaurants} Restaurants}}",
+ "@craneEatRestaurants": {
+ "description": "Text indicating the number of restaurants. Always plural.",
+ "placeholders": {
+ "totalRestaurants": {
+ "example": "100"
+ }
+ }
+ },
+ "craneFly0": "Aspen, United States",
+ "@craneFly0": {
+ "description": "Label for city."
+ },
+ "craneFly1": "Big Sur, United States",
+ "@craneFly1": {
+ "description": "Label for city."
+ },
+ "craneFly2": "Khumbu Valley, Nepal",
+ "@craneFly2": {
+ "description": "Label for city."
+ },
+ "craneFly3": "Machu Picchu, Peru",
+ "@craneFly3": {
+ "description": "Label for city."
+ },
+ "craneFly4": "Malé, Maldives",
+ "@craneFly4": {
+ "description": "Label for city."
+ },
+ "craneFly5": "Vitznau, Switzerland",
+ "@craneFly5": {
+ "description": "Label for city."
+ },
+ "craneFly6": "Mexico City, Mexico",
+ "@craneFly6": {
+ "description": "Label for city."
+ },
+ "craneFly7": "Mount Rushmore, United States",
+ "@craneFly7": {
+ "description": "Label for city."
+ },
+ "craneFly8": "Singapore",
+ "@craneFly8": {
+ "description": "Label for city."
+ },
+ "craneFly9": "Havana, Cuba",
+ "@craneFly9": {
+ "description": "Label for city."
+ },
+ "craneFly10": "Cairo, Egypt",
+ "@craneFly10": {
+ "description": "Label for city."
+ },
+ "craneFly11": "Lisbon, Portugal",
+ "@craneFly11": {
+ "description": "Label for city."
+ },
+ "craneFly12": "Napa, United States",
+ "@craneFly12": {
+ "description": "Label for city."
+ },
+ "craneFly13": "Bali, Indonesia",
+ "@craneFly13": {
+ "description": "Label for city."
+ },
+ "craneSleep0": "Malé, Maldives",
+ "@craneSleep0": {
+ "description": "Label for city."
+ },
+ "craneSleep1": "Aspen, United States",
+ "@craneSleep1": {
+ "description": "Label for city."
+ },
+ "craneSleep2": "Machu Picchu, Peru",
+ "@craneSleep2": {
+ "description": "Label for city."
+ },
+ "craneSleep3": "Havana, Cuba",
+ "@craneSleep3": {
+ "description": "Label for city."
+ },
+ "craneSleep4": "Vitznau, Switzerland",
+ "@craneSleep4": {
+ "description": "Label for city."
+ },
+ "craneSleep5": "Big Sur, United States",
+ "@craneSleep5": {
+ "description": "Label for city."
+ },
+ "craneSleep6": "Napa, United States",
+ "@craneSleep6": {
+ "description": "Label for city."
+ },
+ "craneSleep7": "Porto, Portugal",
+ "@craneSleep7": {
+ "description": "Label for city."
+ },
+ "craneSleep8": "Tulum, Mexico",
+ "@craneSleep8": {
+ "description": "Label for city."
+ },
+ "craneSleep9": "Lisbon, Portugal",
+ "@craneSleep9": {
+ "description": "Label for city."
+ },
+ "craneSleep10": "Cairo, Egypt",
+ "@craneSleep10": {
+ "description": "Label for city."
+ },
+ "craneSleep11": "Taipei, Taiwan",
+ "@craneSleep11": {
+ "description": "Label for city."
+ },
+ "craneEat0": "Naples, Italy",
+ "@craneEat0": {
+ "description": "Label for city."
+ },
+ "craneEat1": "Dallas, United States",
+ "@craneEat1": {
+ "description": "Label for city."
+ },
+ "craneEat2": "Córdoba, Argentina",
+ "@craneEat2": {
+ "description": "Label for city."
+ },
+ "craneEat3": "Portland, United States",
+ "@craneEat3": {
+ "description": "Label for city."
+ },
+ "craneEat4": "Paris, France",
+ "@craneEat4": {
+ "description": "Label for city."
+ },
+ "craneEat5": "Seoul, South Korea",
+ "@craneEat5": {
+ "description": "Label for city."
+ },
+ "craneEat6": "Seattle, United States",
+ "@craneEat6": {
+ "description": "Label for city."
+ },
+ "craneEat7": "Nashville, United States",
+ "@craneEat7": {
+ "description": "Label for city."
+ },
+ "craneEat8": "Atlanta, United States",
+ "@craneEat8": {
+ "description": "Label for city."
+ },
+ "craneEat9": "Madrid, Spain",
+ "@craneEat9": {
+ "description": "Label for city."
+ },
+ "craneEat10": "Lisbon, Portugal",
+ "@craneEat10": {
+ "description": "Label for city."
+ },
+ "craneFly0SemanticLabel": "Chalet in a snowy landscape with evergreen trees",
+ "@craneFly0SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneFly1SemanticLabel": "Tent in a field",
+ "@craneFly1SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneFly2SemanticLabel": "Prayer flags in front of snowy mountain",
+ "@craneFly2SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneFly3SemanticLabel": "Machu Picchu citadel",
+ "@craneFly3SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneFly4SemanticLabel": "Overwater bungalows",
+ "@craneFly4SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneFly5SemanticLabel": "Lake-side hotel in front of mountains",
+ "@craneFly5SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneFly6SemanticLabel": "Aerial view of Palacio de Bellas Artes",
+ "@craneFly6SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneFly7SemanticLabel": "Mount Rushmore",
+ "@craneFly7SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "@craneFly8SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneFly9SemanticLabel": "Man leaning on an antique blue car",
+ "@craneFly9SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneFly10SemanticLabel": "Al-Azhar Mosque towers during sunset",
+ "@craneFly10SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneFly11SemanticLabel": "Brick lighthouse at sea",
+ "@craneFly11SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneFly12SemanticLabel": "Pool with palm trees",
+ "@craneFly12SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneFly13SemanticLabel": "Sea-side pool with palm trees",
+ "@craneFly13SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneSleep0SemanticLabel": "Overwater bungalows",
+ "@craneSleep0SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneSleep1SemanticLabel": "Chalet in a snowy landscape with evergreen trees",
+ "@craneSleep1SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneSleep2SemanticLabel": "Machu Picchu citadel",
+ "@craneSleep2SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneSleep3SemanticLabel": "Man leaning on an antique blue car",
+ "@craneSleep3SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneSleep4SemanticLabel": "Lake-side hotel in front of mountains",
+ "@craneSleep4SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneSleep5SemanticLabel": "Tent in a field",
+ "@craneSleep5SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneSleep6SemanticLabel": "Pool with palm trees",
+ "@craneSleep6SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneSleep7SemanticLabel": "Colorful apartments at Riberia Square",
+ "@craneSleep7SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneSleep8SemanticLabel": "Mayan ruins on a cliff above a beach",
+ "@craneSleep8SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneSleep9SemanticLabel": "Brick lighthouse at sea",
+ "@craneSleep9SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneSleep10SemanticLabel": "Al-Azhar Mosque towers during sunset",
+ "@craneSleep10SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneSleep11SemanticLabel": "Taipei 101 skyscraper",
+ "@craneSleep11SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneEat0SemanticLabel": "Pizza in a wood-fired oven",
+ "@craneEat0SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneEat1SemanticLabel": "Empty bar with diner-style stools",
+ "@craneEat1SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneEat2SemanticLabel": "Burger",
+ "@craneEat2SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneEat3SemanticLabel": "Korean taco",
+ "@craneEat3SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneEat4SemanticLabel": "Chocolate dessert",
+ "@craneEat4SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneEat5SemanticLabel": "Artsy restaurant seating area",
+ "@craneEat5SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneEat6SemanticLabel": "Shrimp dish",
+ "@craneEat6SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneEat7SemanticLabel": "Bakery entrance",
+ "@craneEat7SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneEat8SemanticLabel": "Plate of crawfish",
+ "@craneEat8SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneEat9SemanticLabel": "Cafe counter with pastries",
+ "@craneEat9SemanticLabel": {
+ "description": "Semantic label for an image."
+ },
+ "craneEat10SemanticLabel": "Woman holding huge pastrami sandwich",
+ "@craneEat10SemanticLabel": {
+ "description": "Semantic label for an image."
+ }
+}
diff --git a/gallery/lib/l10n/intl_en_US.xml b/gallery/lib/l10n/intl_en_US.xml
new file mode 100644
index 0000000..e95e922
--- /dev/null
+++ b/gallery/lib/l10n/intl_en_US.xml
@@ -0,0 +1,1784 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file was automatically generated.
+ Please do not edit it manually.
+ It was based on gallery/lib/src/l10n/intl_en_US.arb.
+-->
+<resources>
+ <string
+ name="aboutFlutterSamplesRepo"
+ description="Represents a link to the Flutter samples github repository."
+ >Flutter samples Github repo</string>
+ <string
+ name="aboutDialogDescription"
+ description="A description about how to view the source code for this app."
+ >To see the source code for this app, please visit the {value}.</string>
+ <string
+ name="homeHeaderGallery"
+ description="Header title on home screen for Gallery section."
+ >Gallery</string>
+ <string
+ name="homeHeaderCategories"
+ description="Header title on home screen for Categories section."
+ >Categories</string>
+ <string
+ name="shrineDescription"
+ description="Study description for Shrine."
+ >A fashionable retail app</string>
+ <string
+ name="rallyDescription"
+ description="Study description for Rally."
+ >A personal finance app</string>
+ <string
+ name="rallyAccountDataChecking"
+ description="Name for account made up by user."
+ >Checking</string>
+ <string
+ name="rallyAccountDataHomeSavings"
+ description="Name for account made up by user."
+ >Home Savings</string>
+ <string
+ name="rallyAccountDataCarSavings"
+ description="Name for account made up by user."
+ >Car Savings</string>
+ <string
+ name="rallyAccountDataVacation"
+ description="Name for account made up by user."
+ >Vacation</string>
+ <string
+ name="rallyAccountDetailDataAnnualPercentageYield"
+ description="Title for account statistics. Below a percentage such as 0.10% will be displayed."
+ >Annual Percentage Yield</string>
+ <string
+ name="rallyAccountDetailDataInterestRate"
+ description="Title for account statistics. Below a dollar amount such as $100 will be displayed."
+ >Interest Rate</string>
+ <string
+ name="rallyAccountDetailDataInterestYtd"
+ description="Title for account statistics. Below a dollar amount such as $100 will be displayed."
+ >Interest YTD</string>
+ <string
+ name="rallyAccountDetailDataInterestPaidLastYear"
+ description="Title for account statistics. Below a dollar amount such as $100 will be displayed."
+ >Interest Paid Last Year</string>
+ <string
+ name="rallyAccountDetailDataNextStatement"
+ description="Title for an account detail. Below a date for when the next account statement is released."
+ >Next Statement</string>
+ <string
+ name="rallyAccountDetailDataAccountOwner"
+ description="Title for an account detail. Below the name of the account owner will be displayed."
+ >Account Owner</string>
+ <string
+ name="rallyBudgetCategoryCoffeeShops"
+ description="Category for budget, to sort expenses / bills in."
+ >Coffee Shops</string>
+ <string
+ name="rallyBudgetCategoryGroceries"
+ description="Category for budget, to sort expenses / bills in."
+ >Groceries</string>
+ <string
+ name="rallyBudgetCategoryRestaurants"
+ description="Category for budget, to sort expenses / bills in."
+ >Restaurants</string>
+ <string
+ name="rallyBudgetCategoryClothing"
+ description="Category for budget, to sort expenses / bills in."
+ >Clothing</string>
+ <string
+ name="rallySettingsManageAccounts"
+ description="Link to go to the page 'Manage Accounts."
+ >Manage Accounts</string>
+ <string
+ name="rallySettingsTaxDocuments"
+ description="Link to go to the page 'Tax Documents'."
+ >Tax Documents</string>
+ <string
+ name="rallySettingsPasscodeAndTouchId"
+ description="Link to go to the page 'Passcode and Touch ID'."
+ >Passcode and Touch ID</string>
+ <string
+ name="rallySettingsNotifications"
+ description="Link to go to the page 'Notifications'."
+ >Notifications</string>
+ <string
+ name="rallySettingsPersonalInformation"
+ description="Link to go to the page 'Personal Information'."
+ >Personal Information</string>
+ <string
+ name="rallySettingsPaperlessSettings"
+ description="Link to go to the page 'Paperless Settings'."
+ >Paperless Settings</string>
+ <string
+ name="rallySettingsFindAtms"
+ description="Link to go to the page 'Find ATMs'."
+ >Find ATMs</string>
+ <string
+ name="rallySettingsHelp"
+ description="Link to go to the page 'Help'."
+ >Help</string>
+ <string
+ name="rallySettingsSignOut"
+ description="Link to go to the page 'Sign out'."
+ >Sign out</string>
+ <string
+ name="rallyAccountTotal"
+ description="Title for 'total account value' overview page, a dollar value is displayed next to it."
+ >Total</string>
+ <string
+ name="rallyBillsDue"
+ description="Title for 'bills due' page, a dollar value is displayed next to it."
+ >Due</string>
+ <string
+ name="rallyBudgetLeft"
+ description="Title for 'budget left' page, a dollar value is displayed next to it."
+ >Left</string>
+ <string
+ name="rallyAccounts"
+ description="Link text for accounts page."
+ >Accounts</string>
+ <string
+ name="rallyBills"
+ description="Link text for bills page."
+ >Bills</string>
+ <string
+ name="rallyBudgets"
+ description="Link text for budgets page."
+ >Budgets</string>
+ <string
+ name="rallyAlerts"
+ description="Title for alerts part of overview page."
+ >Alerts</string>
+ <string
+ name="rallySeeAll"
+ description="Link text for button to see all data for category."
+ >SEE ALL</string>
+ <string
+ name="rallyFinanceLeft"
+ description="Displayed as 'dollar amount left', for example $46.70 LEFT, for a budget category."
+ > LEFT</string>
+ <string
+ name="rallyTitleOverview"
+ description="The navigation link to the overview page."
+ >OVERVIEW</string>
+ <string
+ name="rallyTitleAccounts"
+ description="The navigation link to the accounts page."
+ >ACCOUNTS</string>
+ <string
+ name="rallyTitleBills"
+ description="The navigation link to the bills page."
+ >BILLS</string>
+ <string
+ name="rallyTitleBudgets"
+ description="The navigation link to the budgets page."
+ >BUDGETS</string>
+ <string
+ name="rallyTitleSettings"
+ description="The navigation link to the settings page."
+ >SETTINGS</string>
+ <string
+ name="rallyLoginLoginToRally"
+ description="Title for login page for the Rally app (Rally does not need to be translated as it is a product name)."
+ >Login to Rally</string>
+ <string
+ name="rallyLoginNoAccount"
+ description="Prompt for signing up for an account."
+ >Don't have an account?</string>
+ <string
+ name="rallyLoginSignUp"
+ description="Button text to sign up for an account."
+ >SIGN UP</string>
+ <string
+ name="rallyLoginUsername"
+ description="The username field in an login form."
+ >Username</string>
+ <string
+ name="rallyLoginPassword"
+ description="The password field in an login form."
+ >Password</string>
+ <string
+ name="rallyLoginLabelLogin"
+ description="The label text to login."
+ >Login</string>
+ <string
+ name="rallyLoginRememberMe"
+ description="Text if the user wants to stay logged in."
+ >Remember Me</string>
+ <string
+ name="rallyLoginButtonLogin"
+ description="Text for login button."
+ >LOGIN</string>
+ <string
+ name="rallyAlertsMessageHeadsUpShopping"
+ description="Alert message shown when for example, user has used more than 90% of their shopping budget."
+ >Heads up, you’ve used up {percent} of your Shopping budget for this month.</string>
+ <string
+ name="rallyAlertsMessageSpentOnRestaurants"
+ description="Alert message shown when for example, user has spent $120 on Restaurants this week."
+ >You’ve spent {amount} on Restaurants this week.</string>
+ <string
+ name="rallyAlertsMessageATMFees"
+ description="Alert message shown when for example, the user has spent $24 in ATM fees this month."
+ >You’ve spent {amount} in ATM fees this month</string>
+ <string
+ name="rallyAlertsMessageCheckingAccount"
+ description="Alert message shown when for example, the checking account is 1% higher than last month."
+ >Good work! Your checking account is {percent} higher than last month.</string>
+ <string
+ name="rallyAlertsMessageUnassignedTransactions"
+ description="Alert message shown when you have unassigned transactions."
+ >{count, plural, =1{Increase your potential tax deduction! Assign categories to 1 unassigned transaction.}other{Increase your potential tax deduction! Assign categories to {count} unassigned transactions.}}</string>
+ <string
+ name="rallySeeAllAccounts"
+ description="Semantics label for button to see all accounts. Accounts refer to bank account here."
+ >See all accounts</string>
+ <string
+ name="rallySeeAllBills"
+ description="Semantics label for button to see all bills."
+ >See all bills</string>
+ <string
+ name="rallySeeAllBudgets"
+ description="Semantics label for button to see all budgets."
+ >See all budgets</string>
+ <string
+ name="rallyAccountAmount"
+ description="Semantics label for row with bank account name (for example checking) and its bank account number (for example 123), with how much money is deposited in it (for example $12)."
+ >{accountName} account {accountNumber} with {amount}.</string>
+ <string
+ name="rallyBillAmount"
+ description="Semantics label for row with a bill (example name is rent), when the bill is due (1/12/2019 for example) and for how much money ($12)."
+ >{billName} bill due {date} for {amount}.</string>
+ <string
+ name="rallyBudgetAmount"
+ description="Semantics label for row with a budget (housing budget for example), with how much is used of the budget (for example $5), the total budget (for example $100) and the amount left in the budget (for example $95)."
+ >{budgetName} budget with {amountUsed} used of {amountTotal}, {amountLeft} left</string>
+ <string
+ name="craneDescription"
+ description="Study description for Crane."
+ >A personalized travel app</string>
+ <string
+ name="homeCategoryReference"
+ description="Category title on home screen for reference styles & media."
+ >REFERENCE STYLES & MEDIA</string>
+ <string
+ name="demoInvalidURL"
+ description="Error message when opening the URL for a demo."
+ >Couldn't display URL:</string>
+ <string
+ name="demoOptionsTooltip"
+ description="Tooltip for options button in a demo."
+ >Options</string>
+ <string
+ name="demoInfoTooltip"
+ description="Tooltip for info button in a demo."
+ >Info</string>
+ <string
+ name="demoCodeTooltip"
+ description="Tooltip for code sample button in a demo."
+ >Code Sample</string>
+ <string
+ name="demoDocumentationTooltip"
+ description="Tooltip for API documentation button in a demo."
+ >API Documentation</string>
+ <string
+ name="demoFullscreenTooltip"
+ description="Tooltip for Full Screen button in a demo."
+ >Full Screen</string>
+ <string
+ name="demoCodeViewerCopyAll"
+ description="Caption for a button to copy all text."
+ >COPY ALL</string>
+ <string
+ name="demoCodeViewerCopiedToClipboardMessage"
+ description="A message displayed to the user after clicking the COPY ALL button, if the text is successfully copied to the clipboard."
+ >Copied to clipboard.</string>
+ <string
+ name="demoCodeViewerFailedToCopyToClipboardMessage"
+ description="A message displayed to the user after clicking the COPY ALL button, if the text CANNOT be copied to the clipboard."
+ >Failed to copy to clipboard: {error}</string>
+ <string
+ name="demoOptionsFeatureTitle"
+ description="Title for an alert that explains what the options button does."
+ >View options</string>
+ <string
+ name="demoOptionsFeatureDescription"
+ description="Description for an alert that explains what the options button does."
+ >Tap here to view available options for this demo.</string>
+ <string
+ name="settingsTitle"
+ description="Title for the settings screen."
+ >Settings</string>
+ <string
+ name="settingsButtonLabel"
+ description="Accessibility label for the settings button when settings are not showing."
+ >Settings</string>
+ <string
+ name="settingsButtonCloseLabel"
+ description="Accessibility label for the settings button when settings are showing."
+ >Close settings</string>
+ <string
+ name="settingsSystemDefault"
+ description="Option label to indicate the system default will be used."
+ >System</string>
+ <string
+ name="settingsTextScaling"
+ description="Title for text scaling setting."
+ >Text scaling</string>
+ <string
+ name="settingsTextScalingSmall"
+ description="Option label for small text scale setting."
+ >Small</string>
+ <string
+ name="settingsTextScalingNormal"
+ description="Option label for normal text scale setting."
+ >Normal</string>
+ <string
+ name="settingsTextScalingLarge"
+ description="Option label for large text scale setting."
+ >Large</string>
+ <string
+ name="settingsTextScalingHuge"
+ description="Option label for huge text scale setting."
+ >Huge</string>
+ <string
+ name="settingsTextDirection"
+ description="Title for text direction setting."
+ >Text direction</string>
+ <string
+ name="settingsTextDirectionLocaleBased"
+ description="Option label for locale-based text direction setting."
+ >Based on locale</string>
+ <string
+ name="settingsTextDirectionLTR"
+ description="Option label for left-to-right text direction setting."
+ >LTR</string>
+ <string
+ name="settingsTextDirectionRTL"
+ description="Option label for right-to-left text direction setting."
+ >RTL</string>
+ <string
+ name="settingsLocale"
+ description="Title for locale setting."
+ >Locale</string>
+ <string
+ name="settingsPlatformMechanics"
+ description="Title for platform mechanics (iOS/Android) setting."
+ >Platform mechanics</string>
+ <string
+ name="settingsPlatformAndroid"
+ description="Title for Android platform setting."
+ >Android</string>
+ <string
+ name="settingsPlatformIOS"
+ description="Title for iOS platform setting."
+ >iOS</string>
+ <string
+ name="settingsTheme"
+ description="Title for the theme setting."
+ >Theme</string>
+ <string
+ name="settingsDarkTheme"
+ description="Title for the dark theme setting."
+ >Dark</string>
+ <string
+ name="settingsLightTheme"
+ description="Title for the light theme setting."
+ >Light</string>
+ <string
+ name="settingsSlowMotion"
+ description="Title for slow motion setting."
+ >Slow motion</string>
+ <string
+ name="settingsAbout"
+ description="Title for information button."
+ >About Flutter Gallery</string>
+ <string
+ name="settingsFeedback"
+ description="Title for feedback button."
+ >Send feedback</string>
+ <string
+ name="settingsAttribution"
+ description="Title for attribution (TOASTER is a proper name and should remain in English)."
+ >Designed by TOASTER in London</string>
+ <string
+ name="demoBottomNavigationTitle"
+ description="Title for the material bottom navigation component demo."
+ >Bottom navigation</string>
+ <string
+ name="demoBottomNavigationSubtitle"
+ description="Subtitle for the material bottom navigation component demo."
+ >Bottom navigation with cross-fading views</string>
+ <string
+ name="demoBottomNavigationPersistentLabels"
+ description="Option title for bottom navigation with persistent labels."
+ >Persistent labels</string>
+ <string
+ name="demoBottomNavigationSelectedLabel"
+ description="Option title for bottom navigation with only a selected label."
+ >Selected label</string>
+ <string
+ name="demoBottomNavigationDescription"
+ description="Description for the material bottom navigation component demo."
+ >Bottom navigation bars display three to five destinations at the bottom of a screen. Each destination is represented by an icon and an optional text label. When a bottom navigation icon is tapped, the user is taken to the top-level navigation destination associated with that icon.</string>
+ <string
+ name="demoButtonTitle"
+ description="Title for the material buttons component demo."
+ >Buttons</string>
+ <string
+ name="demoButtonSubtitle"
+ description="Subtitle for the material buttons component demo."
+ >Flat, raised, outline, and more</string>
+ <string
+ name="demoFlatButtonTitle"
+ description="Title for the flat button component demo."
+ >Flat Button</string>
+ <string
+ name="demoFlatButtonDescription"
+ description="Description for the flat button component demo."
+ >A flat button displays an ink splash on press but does not lift. Use flat buttons on toolbars, in dialogs and inline with padding</string>
+ <string
+ name="demoRaisedButtonTitle"
+ description="Title for the raised button component demo."
+ >Raised Button</string>
+ <string
+ name="demoRaisedButtonDescription"
+ description="Description for the raised button component demo."
+ >Raised buttons add dimension to mostly flat layouts. They emphasize functions on busy or wide spaces.</string>
+ <string
+ name="demoOutlineButtonTitle"
+ description="Title for the outline button component demo."
+ >Outline Button</string>
+ <string
+ name="demoOutlineButtonDescription"
+ description="Description for the outline button component demo."
+ >Outline buttons become opaque and elevate when pressed. They are often paired with raised buttons to indicate an alternative, secondary action.</string>
+ <string
+ name="demoToggleButtonTitle"
+ description="Title for the toggle buttons component demo."
+ >Toggle Buttons</string>
+ <string
+ name="demoToggleButtonDescription"
+ description="Description for the toggle buttons component demo."
+ >Toggle buttons can be used to group related options. To emphasize groups of related toggle buttons, a group should share a common container</string>
+ <string
+ name="demoFloatingButtonTitle"
+ description="Title for the floating action button component demo."
+ >Floating Action Button</string>
+ <string
+ name="demoFloatingButtonDescription"
+ description="Description for the floating action button component demo."
+ >A floating action button is a circular icon button that hovers over content to promote a primary action in the application.</string>
+ <string
+ name="demoChipTitle"
+ description="Title for the material chips component demo."
+ >Chips</string>
+ <string
+ name="demoChipSubtitle"
+ description="Subtitle for the material chips component demo."
+ >Compact elements that represent an input, attribute, or action</string>
+ <string
+ name="demoActionChipTitle"
+ description="Title for the action chip component demo."
+ >Action Chip</string>
+ <string
+ name="demoActionChipDescription"
+ description="Description for the action chip component demo."
+ >Action chips are a set of options which trigger an action related to primary content. Action chips should appear dynamically and contextually in a UI.</string>
+ <string
+ name="demoChoiceChipTitle"
+ description="Title for the choice chip component demo."
+ >Choice Chip</string>
+ <string
+ name="demoChoiceChipDescription"
+ description="Description for the choice chip component demo."
+ >Choice chips represent a single choice from a set. Choice chips contain related descriptive text or categories.</string>
+ <string
+ name="demoFilterChipTitle"
+ description="Title for the filter chip component demo."
+ >Filter Chip</string>
+ <string
+ name="demoFilterChipDescription"
+ description="Description for the filter chip component demo."
+ >Filter chips use tags or descriptive words as a way to filter content.</string>
+ <string
+ name="demoInputChipTitle"
+ description="Title for the input chip component demo."
+ >Input Chip</string>
+ <string
+ name="demoInputChipDescription"
+ description="Description for the input chip component demo."
+ >Input chips represent a complex piece of information, such as an entity (person, place, or thing) or conversational text, in a compact form.</string>
+ <string
+ name="demoDialogTitle"
+ description="Title for the material dialog component demo."
+ >Dialogs</string>
+ <string
+ name="demoDialogSubtitle"
+ description="Subtitle for the material dialog component demo."
+ >Simple, alert, and fullscreen</string>
+ <string
+ name="demoAlertDialogTitle"
+ description="Title for the alert dialog component demo."
+ >Alert</string>
+ <string
+ name="demoAlertDialogDescription"
+ description="Description for the alert dialog component demo."
+ >An alert dialog informs the user about situations that require acknowledgement. An alert dialog has an optional title and an optional list of actions.</string>
+ <string
+ name="demoAlertTitleDialogTitle"
+ description="Title for the alert dialog with title component demo."
+ >Alert With Title</string>
+ <string
+ name="demoSimpleDialogTitle"
+ description="Title for the simple dialog component demo."
+ >Simple</string>
+ <string
+ name="demoSimpleDialogDescription"
+ description="Description for the simple dialog component demo."
+ >A simple dialog offers the user a choice between several options. A simple dialog has an optional title that is displayed above the choices.</string>
+ <string
+ name="demoFullscreenDialogTitle"
+ description="Title for the fullscreen dialog component demo."
+ >Fullscreen</string>
+ <string
+ name="demoFullscreenDialogDescription"
+ description="Description for the fullscreen dialog component demo."
+ >The fullscreenDialog property specifies whether the incoming page is a fullscreen modal dialog</string>
+ <string
+ name="demoCupertinoButtonsTitle"
+ description="Title for the cupertino buttons component demo."
+ >Buttons</string>
+ <string
+ name="demoCupertinoButtonsSubtitle"
+ description="Subtitle for the cupertino buttons component demo."
+ >iOS-style buttons</string>
+ <string
+ name="demoCupertinoButtonsDescription"
+ description="Description for the cupertino buttons component demo."
+ >An iOS-style button. It takes in text and/or an icon that fades out and in on touch. May optionally have a background.</string>
+ <string
+ name="demoCupertinoAlertsTitle"
+ description="Title for the cupertino alerts component demo."
+ >Alerts</string>
+ <string
+ name="demoCupertinoAlertsSubtitle"
+ description="Subtitle for the cupertino alerts component demo."
+ >iOS-style alert dialogs</string>
+ <string
+ name="demoCupertinoAlertTitle"
+ description="Title for the cupertino alert component demo."
+ >Alert</string>
+ <string
+ name="demoCupertinoAlertDescription"
+ description="Description for the cupertino alert component demo."
+ >An alert dialog informs the user about situations that require acknowledgement. An alert dialog has an optional title, optional content, and an optional list of actions. The title is displayed above the content and the actions are displayed below the content.</string>
+ <string
+ name="demoCupertinoAlertWithTitleTitle"
+ description="Title for the cupertino alert with title component demo."
+ >Alert With Title</string>
+ <string
+ name="demoCupertinoAlertButtonsTitle"
+ description="Title for the cupertino alert with buttons component demo."
+ >Alert With Buttons</string>
+ <string
+ name="demoCupertinoAlertButtonsOnlyTitle"
+ description="Title for the cupertino alert buttons only component demo."
+ >Alert Buttons Only</string>
+ <string
+ name="demoCupertinoActionSheetTitle"
+ description="Title for the cupertino action sheet component demo."
+ >Action Sheet</string>
+ <string
+ name="demoCupertinoActionSheetDescription"
+ description="Description for the cupertino action sheet component demo."
+ >An action sheet is a specific style of alert that presents the user with a set of two or more choices related to the current context. An action sheet can have a title, an additional message, and a list of actions.</string>
+ <string
+ name="demoCupertinoSegmentedControlTitle"
+ description="Title for the cupertino segmented control component demo."
+ >Segmented Control</string>
+ <string
+ name="demoCupertinoSegmentedControlSubtitle"
+ description="Subtitle for the cupertino segmented control component demo."
+ >iOS-style segmented control</string>
+ <string
+ name="demoCupertinoSegmentedControlDescription"
+ description="Description for the cupertino segmented control component demo."
+ >Used to select between a number of mutually exclusive options. When one option in the segmented control is selected, the other options in the segmented control cease to be selected.</string>
+ <string
+ name="demoColorsTitle"
+ description="Title for the colors demo."
+ >Colors</string>
+ <string
+ name="demoColorsSubtitle"
+ description="Subtitle for the colors demo."
+ >All of the predefined colors</string>
+ <string
+ name="demoColorsDescription"
+ description="Description for the colors demo. Material Design should remain capitalized."
+ >Color and color swatch constants which represent Material Design's color palette.</string>
+ <string
+ name="demoTypographyTitle"
+ description="Title for the typography demo."
+ >Typography</string>
+ <string
+ name="demoTypographySubtitle"
+ description="Subtitle for the typography demo."
+ >All of the predefined text styles</string>
+ <string
+ name="demoTypographyDescription"
+ description="Description for the typography demo. Material Design should remain capitalized."
+ >Definitions for the various typographical styles found in Material Design.</string>
+ <string
+ name="buttonText"
+ description="Text for a generic button."
+ >BUTTON</string>
+ <string
+ name="demoBottomSheetTitle"
+ description="Title for bottom sheet demo."
+ >Bottom sheet</string>
+ <string
+ name="demoBottomSheetSubtitle"
+ description="Description for bottom sheet demo."
+ >Persistent and modal bottom sheets</string>
+ <string
+ name="demoBottomSheetPersistentTitle"
+ description="Title for persistent bottom sheet demo."
+ >Persistent bottom sheet</string>
+ <string
+ name="demoBottomSheetPersistentDescription"
+ description="Description for persistent bottom sheet demo."
+ >A persistent bottom sheet shows information that supplements the primary content of the app. A persistent bottom sheet remains visible even when the user interacts with other parts of the app.</string>
+ <string
+ name="demoBottomSheetModalTitle"
+ description="Title for modal bottom sheet demo."
+ >Modal bottom sheet</string>
+ <string
+ name="demoBottomSheetModalDescription"
+ description="Description for modal bottom sheet demo."
+ >A modal bottom sheet is an alternative to a menu or a dialog and prevents the user from interacting with the rest of the app.</string>
+ <string
+ name="demoBottomSheetAddLabel"
+ description="Semantic label for add icon."
+ >Add</string>
+ <string
+ name="demoBottomSheetButtonText"
+ description="Button text to show bottom sheet."
+ >SHOW BOTTOM SHEET</string>
+ <string
+ name="demoBottomSheetHeader"
+ description="Generic header placeholder."
+ >Header</string>
+ <string
+ name="demoBottomSheetItem"
+ description="Generic item placeholder."
+ >Item {value}</string>
+ <string
+ name="demoListsTitle"
+ description="Title for lists demo."
+ >Lists</string>
+ <string
+ name="demoListsSubtitle"
+ description="Subtitle for lists demo."
+ >Scrolling list layouts</string>
+ <string
+ name="demoListsDescription"
+ description="Description for lists demo. This describes what a single row in a list consists of."
+ >A single fixed-height row that typically contains some text as well as a leading or trailing icon.</string>
+ <string
+ name="demoOneLineListsTitle"
+ description="Title for lists demo with only one line of text per row."
+ >One Line</string>
+ <string
+ name="demoTwoLineListsTitle"
+ description="Title for lists demo with two lines of text per row."
+ >Two Lines</string>
+ <string
+ name="demoListsSecondary"
+ description="Text that appears in the second line of a list item."
+ >Secondary text</string>
+ <string
+ name="demoTabsTitle"
+ description="Title for tabs demo."
+ >Tabs</string>
+ <string
+ name="demoTabsSubtitle"
+ description="Subtitle for tabs demo."
+ >Tabs with independently scrollable views</string>
+ <string
+ name="demoTabsDescription"
+ description="Description for tabs demo."
+ >Tabs organize content across different screens, data sets, and other interactions.</string>
+ <string
+ name="demoSelectionControlsTitle"
+ description="Title for selection controls demo."
+ >Selection controls</string>
+ <string
+ name="demoSelectionControlsSubtitle"
+ description="Subtitle for selection controls demo."
+ >Checkboxes, radio buttons, and switches</string>
+ <string
+ name="demoSelectionControlsCheckboxTitle"
+ description="Title for the checkbox (selection controls) demo."
+ >Checkbox</string>
+ <string
+ name="demoSelectionControlsCheckboxDescription"
+ description="Description for the checkbox (selection controls) demo."
+ >Checkboxes allow the user to select multiple options from a set. A normal checkbox's value is true or false and a tristate checkbox's value can also be null.</string>
+ <string
+ name="demoSelectionControlsRadioTitle"
+ description="Title for the radio button (selection controls) demo."
+ >Radio</string>
+ <string
+ name="demoSelectionControlsRadioDescription"
+ description="Description for the radio button (selection controls) demo."
+ >Radio buttons allow the user to select one option from a set. Use radio buttons for exclusive selection if you think that the user needs to see all available options side-by-side.</string>
+ <string
+ name="demoSelectionControlsSwitchTitle"
+ description="Title for the switches (selection controls) demo."
+ >Switch</string>
+ <string
+ name="demoSelectionControlsSwitchDescription"
+ description="Description for the switches (selection controls) demo."
+ >On/off switches toggle the state of a single settings option. The option that the switch controls, as well as the state it’s in, should be made clear from the corresponding inline label.</string>
+ <string
+ name="demoBottomTextFieldsTitle"
+ description="Title for text fields demo."
+ >Text fields</string>
+ <string
+ name="demoTextFieldTitle"
+ description="Title for text fields demo."
+ >Text fields</string>
+ <string
+ name="demoTextFieldSubtitle"
+ description="Description for text fields demo."
+ >Single line of editable text and numbers</string>
+ <string
+ name="demoTextFieldDescription"
+ description="Description for text fields demo."
+ >Text fields allow users to enter text into a UI. They typically appear in forms and dialogs.</string>
+ <string
+ name="demoTextFieldShowPasswordLabel"
+ description="Label for show password icon."
+ >Show password</string>
+ <string
+ name="demoTextFieldHidePasswordLabel"
+ description="Label for hide password icon."
+ >Hide password</string>
+ <string
+ name="demoTextFieldFormErrors"
+ description="Text that shows up on form errors."
+ >Please fix the errors in red before submitting.</string>
+ <string
+ name="demoTextFieldNameRequired"
+ description="Shows up as submission error if name is not given in the form."
+ >Name is required.</string>
+ <string
+ name="demoTextFieldOnlyAlphabeticalChars"
+ description="Error that shows if non-alphabetical characters are given."
+ >Please enter only alphabetical characters.</string>
+ <string
+ name="demoTextFieldEnterUSPhoneNumber"
+ description="Error that shows up if non-valid non-US phone number is given."
+ >(###) ###-#### - Enter a US phone number.</string>
+ <string
+ name="demoTextFieldEnterPassword"
+ description="Error that shows up if password is not given."
+ >Please enter a password.</string>
+ <string
+ name="demoTextFieldPasswordsDoNotMatch"
+ description="Error that shows up, if the re-typed password does not match the already given password."
+ >The passwords don't match</string>
+ <string
+ name="demoTextFieldWhatDoPeopleCallYou"
+ description="Placeholder for name field in form."
+ >What do people call you?</string>
+ <string
+ name="demoTextFieldNameField"
+ description="The label for a name input field that is required (hence the star)."
+ >Name*</string>
+ <string
+ name="demoTextFieldWhereCanWeReachYou"
+ description="Placeholder for when entering a phone number in a form."
+ >Where can we reach you?</string>
+ <string
+ name="demoTextFieldPhoneNumber"
+ description="The label for a phone number input field that is required (hence the star)."
+ >Phone number*</string>
+ <string
+ name="demoTextFieldYourEmailAddress"
+ description="The label for an email address input field."
+ >Your email address</string>
+ <string
+ name="demoTextFieldEmail"
+ description="The label for an email address input field"
+ >E-mail</string>
+ <string
+ name="demoTextFieldTellUsAboutYourself"
+ description="The placeholder text for biography/life story input field."
+ >Tell us about yourself (e.g., write down what you do or what hobbies you have)</string>
+ <string
+ name="demoTextFieldKeepItShort"
+ description="Helper text for biography/life story input field."
+ >Keep it short, this is just a demo.</string>
+ <string
+ name="demoTextFieldLifeStory"
+ description="The label for for biography/life story input field."
+ >Life story</string>
+ <string
+ name="demoTextFieldSalary"
+ description="The label for salary input field."
+ >Salary</string>
+ <string
+ name="demoTextFieldUSD"
+ description="US currency, used as suffix in input field for salary."
+ >USD</string>
+ <string
+ name="demoTextFieldNoMoreThan"
+ description="Helper text for password input field."
+ >No more than 8 characters.</string>
+ <string
+ name="demoTextFieldPassword"
+ description="Label for password input field, that is required (hence the star)."
+ >Password*</string>
+ <string
+ name="demoTextFieldRetypePassword"
+ description="Label for repeat password input field."
+ >Re-type password*</string>
+ <string
+ name="demoTextFieldSubmit"
+ description="The submit button text for form."
+ >SUBMIT</string>
+ <string
+ name="demoTextFieldNameHasPhoneNumber"
+ description="Text that shows up when valid phone number and name is submitted in form."
+ >{name} phone number is {phoneNumber}</string>
+ <string
+ name="demoTextFieldRequiredField"
+ description="Helper text to indicate that * means that it is a required field."
+ >* indicates required field</string>
+ <string
+ name="bottomNavigationCommentsTab"
+ description="Title for Comments tab of bottom navigation."
+ >Comments</string>
+ <string
+ name="bottomNavigationCalendarTab"
+ description="Title for Calendar tab of bottom navigation."
+ >Calendar</string>
+ <string
+ name="bottomNavigationAccountTab"
+ description="Title for Account tab of bottom navigation."
+ >Account</string>
+ <string
+ name="bottomNavigationAlarmTab"
+ description="Title for Alarm tab of bottom navigation."
+ >Alarm</string>
+ <string
+ name="bottomNavigationCameraTab"
+ description="Title for Camera tab of bottom navigation."
+ >Camera</string>
+ <string
+ name="bottomNavigationContentPlaceholder"
+ description="Accessibility label for the content placeholder in the bottom navigation demo"
+ >Placeholder for {title} tab</string>
+ <string
+ name="buttonTextCreate"
+ description="Tooltip text for a create button."
+ >Create</string>
+ <string
+ name="dialogSelectedOption"
+ description="Message displayed after an option is selected from a dialog"
+ >You selected: "{value}"</string>
+ <string
+ name="chipTurnOnLights"
+ description="A chip component to turn on the lights."
+ >Turn on lights</string>
+ <string
+ name="chipSmall"
+ description="A chip component to select a small size."
+ >Small</string>
+ <string
+ name="chipMedium"
+ description="A chip component to select a medium size."
+ >Medium</string>
+ <string
+ name="chipLarge"
+ description="A chip component to select a large size."
+ >Large</string>
+ <string
+ name="chipElevator"
+ description="A chip component to filter selection by elevators."
+ >Elevator</string>
+ <string
+ name="chipWasher"
+ description="A chip component to filter selection by washers."
+ >Washer</string>
+ <string
+ name="chipFireplace"
+ description="A chip component to filter selection by fireplaces."
+ >Fireplace</string>
+ <string
+ name="chipBiking"
+ description="A chip component to that indicates a biking selection."
+ >Biking</string>
+ <string
+ name="dialogDiscardTitle"
+ description="Alert dialog message to discard draft."
+ >Discard draft?</string>
+ <string
+ name="dialogLocationTitle"
+ description="Alert dialog title to use location services."
+ >Use Google's location service?</string>
+ <string
+ name="dialogLocationDescription"
+ description="Alert dialog description to use location services."
+ >Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running.</string>
+ <string
+ name="dialogCancel"
+ description="Alert dialog cancel option."
+ >CANCEL</string>
+ <string
+ name="dialogDiscard"
+ description="Alert dialog discard option."
+ >DISCARD</string>
+ <string
+ name="dialogDisagree"
+ description="Alert dialog disagree option."
+ >DISAGREE</string>
+ <string
+ name="dialogAgree"
+ description="Alert dialog agree option."
+ >AGREE</string>
+ <string
+ name="dialogSetBackup"
+ description="Alert dialog title for setting a backup account."
+ >Set backup account</string>
+ <string
+ name="dialogAddAccount"
+ description="Alert dialog option for adding an account."
+ >Add account</string>
+ <string
+ name="dialogShow"
+ description="Button text to display a dialog."
+ >SHOW DIALOG</string>
+ <string
+ name="dialogFullscreenTitle"
+ description="Title for full screen dialog demo."
+ >Full Screen Dialog</string>
+ <string
+ name="dialogFullscreenSave"
+ description="Save button for full screen dialog demo."
+ >SAVE</string>
+ <string
+ name="dialogFullscreenDescription"
+ description="Description for full screen dialog demo."
+ >A full screen dialog demo</string>
+ <string
+ name="cupertinoButton"
+ description="Button text for a generic iOS-style button."
+ >Button</string>
+ <string
+ name="cupertinoButtonWithBackground"
+ description="Button text for a iOS-style button with a filled background."
+ >With Background</string>
+ <string
+ name="cupertinoAlertCancel"
+ description="iOS-style alert cancel option."
+ >Cancel</string>
+ <string
+ name="cupertinoAlertDiscard"
+ description="iOS-style alert discard option."
+ >Discard</string>
+ <string
+ name="cupertinoAlertLocationTitle"
+ description="iOS-style alert title for location permission."
+ >Allow "Maps" to access your location while you are using the app?</string>
+ <string
+ name="cupertinoAlertLocationDescription"
+ description="iOS-style alert description for location permission."
+ >Your current location will be displayed on the map and used for directions, nearby search results, and estimated travel times.</string>
+ <string
+ name="cupertinoAlertAllow"
+ description="iOS-style alert allow option."
+ >Allow</string>
+ <string
+ name="cupertinoAlertDontAllow"
+ description="iOS-style alert don't allow option."
+ >Don't Allow</string>
+ <string
+ name="cupertinoAlertFavoriteDessert"
+ description="iOS-style alert title for selecting favorite dessert."
+ >Select Favorite Dessert</string>
+ <string
+ name="cupertinoAlertDessertDescription"
+ description="iOS-style alert description for selecting favorite dessert."
+ >Please select your favorite type of dessert from the list below. Your selection will be used to customize the suggested list of eateries in your area.</string>
+ <string
+ name="cupertinoAlertCheesecake"
+ description="iOS-style alert cheesecake option."
+ >Cheesecake</string>
+ <string
+ name="cupertinoAlertTiramisu"
+ description="iOS-style alert tiramisu option."
+ >Tiramisu</string>
+ <string
+ name="cupertinoAlertApplePie"
+ description="iOS-style alert apple pie option."
+ >Apple Pie</string>
+ <string
+ name="cupertinoAlertChocolateBrownie"
+ description="iOS-style alert chocolate brownie option."
+ >Chocolate Brownie</string>
+ <string
+ name="cupertinoShowAlert"
+ description="Button text to show iOS-style alert."
+ >Show Alert</string>
+ <string
+ name="colorsRed"
+ description="Tab title for the color red."
+ >RED</string>
+ <string
+ name="colorsPink"
+ description="Tab title for the color pink."
+ >PINK</string>
+ <string
+ name="colorsPurple"
+ description="Tab title for the color purple."
+ >PURPLE</string>
+ <string
+ name="colorsDeepPurple"
+ description="Tab title for the color deep purple."
+ >DEEP PURPLE</string>
+ <string
+ name="colorsIndigo"
+ description="Tab title for the color indigo."
+ >INDIGO</string>
+ <string
+ name="colorsBlue"
+ description="Tab title for the color blue."
+ >BLUE</string>
+ <string
+ name="colorsLightBlue"
+ description="Tab title for the color light blue."
+ >LIGHT BLUE</string>
+ <string
+ name="colorsCyan"
+ description="Tab title for the color cyan."
+ >CYAN</string>
+ <string
+ name="colorsTeal"
+ description="Tab title for the color teal."
+ >TEAL</string>
+ <string
+ name="colorsGreen"
+ description="Tab title for the color green."
+ >GREEN</string>
+ <string
+ name="colorsLightGreen"
+ description="Tab title for the color light green."
+ >LIGHT GREEN</string>
+ <string
+ name="colorsLime"
+ description="Tab title for the color lime."
+ >LIME</string>
+ <string
+ name="colorsYellow"
+ description="Tab title for the color yellow."
+ >YELLOW</string>
+ <string
+ name="colorsAmber"
+ description="Tab title for the color amber."
+ >AMBER</string>
+ <string
+ name="colorsOrange"
+ description="Tab title for the color orange."
+ >ORANGE</string>
+ <string
+ name="colorsDeepOrange"
+ description="Tab title for the color deep orange."
+ >DEEP ORANGE</string>
+ <string
+ name="colorsBrown"
+ description="Tab title for the color brown."
+ >BROWN</string>
+ <string
+ name="colorsGrey"
+ description="Tab title for the color grey."
+ >GREY</string>
+ <string
+ name="colorsBlueGrey"
+ description="Tab title for the color blue grey."
+ >BLUE GREY</string>
+ <string
+ name="starterAppTitle"
+ description="The title and name for the starter app."
+ >Starter app</string>
+ <string
+ name="starterAppDescription"
+ description="The description for the starter app."
+ >A responsive starter layout</string>
+ <string
+ name="starterAppGenericButton"
+ description="Generic placeholder for button."
+ >BUTTON</string>
+ <string
+ name="starterAppTooltipAdd"
+ description="Tooltip on add icon."
+ >Add</string>
+ <string
+ name="starterAppTooltipFavorite"
+ description="Tooltip on favorite icon."
+ >Favorite</string>
+ <string
+ name="starterAppTooltipShare"
+ description="Tooltip on share icon."
+ >Share</string>
+ <string
+ name="starterAppTooltipSearch"
+ description="Tooltip on search icon."
+ >Search</string>
+ <string
+ name="starterAppGenericTitle"
+ description="Generic placeholder for title in app bar."
+ >Title</string>
+ <string
+ name="starterAppGenericSubtitle"
+ description="Generic placeholder for subtitle in drawer."
+ >Subtitle</string>
+ <string
+ name="starterAppGenericHeadline"
+ description="Generic placeholder for headline in drawer."
+ >Headline</string>
+ <string
+ name="starterAppGenericBody"
+ description="Generic placeholder for body text in drawer."
+ >Body</string>
+ <string
+ name="starterAppDrawerItem"
+ description="Generic placeholder drawer item."
+ >Item {value}</string>
+ <string
+ name="shrineMenuCaption"
+ description="Caption for a menu page."
+ >MENU</string>
+ <string
+ name="shrineCategoryNameAll"
+ description="A tab showing products from all categories."
+ >ALL</string>
+ <string
+ name="shrineCategoryNameAccessories"
+ description="A category of products consisting of accessories (clothing items)."
+ >ACCESSORIES</string>
+ <string
+ name="shrineCategoryNameClothing"
+ description="A category of products consisting of clothing."
+ >CLOTHING</string>
+ <string
+ name="shrineCategoryNameHome"
+ description="A category of products consisting of items used at home."
+ >HOME</string>
+ <string
+ name="shrineLogoutButtonCaption"
+ description="Label for a logout button."
+ >LOGOUT</string>
+ <string
+ name="shrineLoginUsernameLabel"
+ description="On the login screen, a label for a textfield for the user to input their username."
+ >Username</string>
+ <string
+ name="shrineLoginPasswordLabel"
+ description="On the login screen, a label for a textfield for the user to input their password."
+ >Password</string>
+ <string
+ name="shrineCancelButtonCaption"
+ description="On the login screen, the caption for a button to cancel login."
+ >CANCEL</string>
+ <string
+ name="shrineNextButtonCaption"
+ description="On the login screen, the caption for a button to proceed login."
+ >NEXT</string>
+ <string
+ name="shrineCartPageCaption"
+ description="Caption for a shopping cart page."
+ >CART</string>
+ <string
+ name="shrineProductQuantity"
+ description="A text showing the number of items for a specific product."
+ >Quantity: {quantity}</string>
+ <string
+ name="shrineProductPrice"
+ description="A text showing the unit price of each product. Used as: 'Quantity: 3 x $129'. The currency will be handled by the formatter."
+ >x {price}</string>
+ <string
+ name="shrineCartItemCount"
+ description="A text showing the total number of items in the cart."
+ >{quantity, plural, =0{NO ITEMS} =1{1 ITEM} other{{quantity} ITEMS}}</string>
+ <string
+ name="shrineCartClearButtonCaption"
+ description="Caption for a button used to clear the cart."
+ >CLEAR CART</string>
+ <string
+ name="shrineCartTotalCaption"
+ description="Label for a text showing total price of the items in the cart."
+ >TOTAL</string>
+ <string
+ name="shrineCartSubtotalCaption"
+ description="Label for a text showing the subtotal price of the items in the cart (excluding shipping and tax)."
+ >Subtotal:</string>
+ <string
+ name="shrineCartShippingCaption"
+ description="Label for a text showing the shipping cost for the items in the cart."
+ >Shipping:</string>
+ <string
+ name="shrineCartTaxCaption"
+ description="Label for a text showing the tax for the items in the cart."
+ >Tax:</string>
+ <string
+ name="shrineProductVagabondSack"
+ description="Name of the product 'Vagabond sack'."
+ >Vagabond sack</string>
+ <string
+ name="shrineProductStellaSunglasses"
+ description="Name of the product 'Stella sunglasses'."
+ >Stella sunglasses</string>
+ <string
+ name="shrineProductWhitneyBelt"
+ description="Name of the product 'Whitney belt'."
+ >Whitney belt</string>
+ <string
+ name="shrineProductGardenStrand"
+ description="Name of the product 'Garden strand'."
+ >Garden strand</string>
+ <string
+ name="shrineProductStrutEarrings"
+ description="Name of the product 'Strut earrings'."
+ >Strut earrings</string>
+ <string
+ name="shrineProductVarsitySocks"
+ description="Name of the product 'Varsity socks'."
+ >Varsity socks</string>
+ <string
+ name="shrineProductWeaveKeyring"
+ description="Name of the product 'Weave keyring'."
+ >Weave keyring</string>
+ <string
+ name="shrineProductGatsbyHat"
+ description="Name of the product 'Gatsby hat'."
+ >Gatsby hat</string>
+ <string
+ name="shrineProductShrugBag"
+ description="Name of the product 'Shrug bag'."
+ >Shrug bag</string>
+ <string
+ name="shrineProductGiltDeskTrio"
+ description="Name of the product 'Gilt desk trio'."
+ >Gilt desk trio</string>
+ <string
+ name="shrineProductCopperWireRack"
+ description="Name of the product 'Copper wire rack'."
+ >Copper wire rack</string>
+ <string
+ name="shrineProductSootheCeramicSet"
+ description="Name of the product 'Soothe ceramic set'."
+ >Soothe ceramic set</string>
+ <string
+ name="shrineProductHurrahsTeaSet"
+ description="Name of the product 'Hurrahs tea set'."
+ >Hurrahs tea set</string>
+ <string
+ name="shrineProductBlueStoneMug"
+ description="Name of the product 'Blue stone mug'."
+ >Blue stone mug</string>
+ <string
+ name="shrineProductRainwaterTray"
+ description="Name of the product 'Rainwater tray'."
+ >Rainwater tray</string>
+ <string
+ name="shrineProductChambrayNapkins"
+ description="Name of the product 'Chambray napkins'."
+ >Chambray napkins</string>
+ <string
+ name="shrineProductSucculentPlanters"
+ description="Name of the product 'Succulent planters'."
+ >Succulent planters</string>
+ <string
+ name="shrineProductQuartetTable"
+ description="Name of the product 'Quartet table'."
+ >Quartet table</string>
+ <string
+ name="shrineProductKitchenQuattro"
+ description="Name of the product 'Kitchen quattro'."
+ >Kitchen quattro</string>
+ <string
+ name="shrineProductClaySweater"
+ description="Name of the product 'Clay sweater'."
+ >Clay sweater</string>
+ <string
+ name="shrineProductSeaTunic"
+ description="Name of the product 'Sea tunic'."
+ >Sea tunic</string>
+ <string
+ name="shrineProductPlasterTunic"
+ description="Name of the product 'Plaster tunic'."
+ >Plaster tunic</string>
+ <string
+ name="shrineProductWhitePinstripeShirt"
+ description="Name of the product 'White pinstripe shirt'."
+ >White pinstripe shirt</string>
+ <string
+ name="shrineProductChambrayShirt"
+ description="Name of the product 'Chambray shirt'."
+ >Chambray shirt</string>
+ <string
+ name="shrineProductSeabreezeSweater"
+ description="Name of the product 'Seabreeze sweater'."
+ >Seabreeze sweater</string>
+ <string
+ name="shrineProductGentryJacket"
+ description="Name of the product 'Gentry jacket'."
+ >Gentry jacket</string>
+ <string
+ name="shrineProductNavyTrousers"
+ description="Name of the product 'Navy trousers'."
+ >Navy trousers</string>
+ <string
+ name="shrineProductWalterHenleyWhite"
+ description="Name of the product 'Walter henley (white)'."
+ >Walter henley (white)</string>
+ <string
+ name="shrineProductSurfAndPerfShirt"
+ description="Name of the product 'Surf and perf shirt'."
+ >Surf and perf shirt</string>
+ <string
+ name="shrineProductGingerScarf"
+ description="Name of the product 'Ginger scarf'."
+ >Ginger scarf</string>
+ <string
+ name="shrineProductRamonaCrossover"
+ description="Name of the product 'Ramona crossover'."
+ >Ramona crossover</string>
+ <string
+ name="shrineProductClassicWhiteCollar"
+ description="Name of the product 'Classic white collar'."
+ >Classic white collar</string>
+ <string
+ name="shrineProductCeriseScallopTee"
+ description="Name of the product 'Cerise scallop tee'."
+ >Cerise scallop tee</string>
+ <string
+ name="shrineProductShoulderRollsTee"
+ description="Name of the product 'Shoulder rolls tee'."
+ >Shoulder rolls tee</string>
+ <string
+ name="shrineProductGreySlouchTank"
+ description="Name of the product 'Grey slouch tank'."
+ >Grey slouch tank</string>
+ <string
+ name="shrineProductSunshirtDress"
+ description="Name of the product 'Sunshirt dress'."
+ >Sunshirt dress</string>
+ <string
+ name="shrineProductFineLinesTee"
+ description="Name of the product 'Fine lines tee'."
+ >Fine lines tee</string>
+ <string
+ name="shrineTooltipSearch"
+ description="The tooltip text for a search button. Also used as a semantic label, used by screen readers, such as TalkBack and VoiceOver."
+ >Search</string>
+ <string
+ name="shrineTooltipSettings"
+ description="The tooltip text for a settings button. Also used as a semantic label, used by screen readers, such as TalkBack and VoiceOver."
+ >Settings</string>
+ <string
+ name="shrineTooltipOpenMenu"
+ description="The tooltip text for a menu button. Also used as a semantic label, used by screen readers, such as TalkBack and VoiceOver."
+ >Open menu</string>
+ <string
+ name="shrineTooltipCloseMenu"
+ description="The tooltip text for a button to close a menu. Also used as a semantic label, used by screen readers, such as TalkBack and VoiceOver."
+ >Close menu</string>
+ <string
+ name="shrineTooltipCloseCart"
+ description="The tooltip text for a button to close the shopping cart page. Also used as a semantic label, used by screen readers, such as TalkBack and VoiceOver."
+ >Close cart</string>
+ <string
+ name="shrineScreenReaderCart"
+ description="The description of a shopping cart button containing some products. Used by screen readers, such as TalkBack and VoiceOver."
+ >{quantity, plural, =0{Shopping cart, no items} =1{Shopping cart, 1 item} other{Shopping cart, {quantity} items}}</string>
+ <string
+ name="shrineScreenReaderProductAddToCart"
+ description="An announcement made by screen readers, such as TalkBack and VoiceOver to indicate the action of a button for adding a product to the cart."
+ >Add to cart</string>
+ <string
+ name="shrineScreenReaderRemoveProductButton"
+ description="A tooltip for a button to remove a product. This will be read by screen readers, such as TalkBack and VoiceOver when a product is added to the shopping cart."
+ >Remove {product}</string>
+ <string
+ name="shrineTooltipRemoveItem"
+ description="The tooltip text for a button to remove an item (a product) in a shopping cart. Also used as a semantic label, used by screen readers, such as TalkBack and VoiceOver."
+ >Remove item</string>
+ <string
+ name="craneFormDiners"
+ description="Form field label to enter the number of diners."
+ >Diners</string>
+ <string
+ name="craneFormDate"
+ description="Form field label to select a date."
+ >Select Date</string>
+ <string
+ name="craneFormTime"
+ description="Form field label to select a time."
+ >Select Time</string>
+ <string
+ name="craneFormLocation"
+ description="Form field label to select a location."
+ >Select Location</string>
+ <string
+ name="craneFormTravelers"
+ description="Form field label to select the number of travellers."
+ >Travelers</string>
+ <string
+ name="craneFormOrigin"
+ description="Form field label to choose a travel origin."
+ >Choose Origin</string>
+ <string
+ name="craneFormDestination"
+ description="Form field label to choose a travel destination."
+ >Choose Destination</string>
+ <string
+ name="craneFormDates"
+ description="Form field label to select multiple dates."
+ >Select Dates</string>
+ <string
+ name="craneFly"
+ description="Title for FLY tab."
+ >FLY</string>
+ <string
+ name="craneSleep"
+ description="Title for SLEEP tab."
+ >SLEEP</string>
+ <string
+ name="craneEat"
+ description="Title for EAT tab."
+ >EAT</string>
+ <string
+ name="craneFlySubhead"
+ description="Subhead for FLY tab."
+ >Explore Flights by Destination</string>
+ <string
+ name="craneSleepSubhead"
+ description="Subhead for SLEEP tab."
+ >Explore Properties by Destination</string>
+ <string
+ name="craneEatSubhead"
+ description="Subhead for EAT tab."
+ >Explore Restaurants by Destination</string>
+ <string
+ name="craneFlyStops"
+ description="Label indicating if a flight is nonstop or how many layovers it includes."
+ >{numberOfStops, plural, =0{Nonstop} =1{1 stop} other{{numberOfStops} stops}}</string>
+ <string
+ name="craneSleepProperties"
+ description="Text indicating the number of available properties (temporary rentals). Always plural."
+ >{totalProperties, plural, =0{No Available Properties} =1{1 Available Properties} other{{totalProperties} Available Properties}}</string>
+ <string
+ name="craneEatRestaurants"
+ description="Text indicating the number of restaurants. Always plural."
+ >{totalRestaurants, plural, =0{No Restaurants} =1{1 Restaurant} other{{totalRestaurants} Restaurants}}</string>
+ <string
+ name="craneFly0"
+ description="Label for city."
+ >Aspen, United States</string>
+ <string
+ name="craneFly1"
+ description="Label for city."
+ >Big Sur, United States</string>
+ <string
+ name="craneFly2"
+ description="Label for city."
+ >Khumbu Valley, Nepal</string>
+ <string
+ name="craneFly3"
+ description="Label for city."
+ >Machu Picchu, Peru</string>
+ <string
+ name="craneFly4"
+ description="Label for city."
+ >Malé, Maldives</string>
+ <string
+ name="craneFly5"
+ description="Label for city."
+ >Vitznau, Switzerland</string>
+ <string
+ name="craneFly6"
+ description="Label for city."
+ >Mexico City, Mexico</string>
+ <string
+ name="craneFly7"
+ description="Label for city."
+ >Mount Rushmore, United States</string>
+ <string
+ name="craneFly8"
+ description="Label for city."
+ >Singapore</string>
+ <string
+ name="craneFly9"
+ description="Label for city."
+ >Havana, Cuba</string>
+ <string
+ name="craneFly10"
+ description="Label for city."
+ >Cairo, Egypt</string>
+ <string
+ name="craneFly11"
+ description="Label for city."
+ >Lisbon, Portugal</string>
+ <string
+ name="craneFly12"
+ description="Label for city."
+ >Napa, United States</string>
+ <string
+ name="craneFly13"
+ description="Label for city."
+ >Bali, Indonesia</string>
+ <string
+ name="craneSleep0"
+ description="Label for city."
+ >Malé, Maldives</string>
+ <string
+ name="craneSleep1"
+ description="Label for city."
+ >Aspen, United States</string>
+ <string
+ name="craneSleep2"
+ description="Label for city."
+ >Machu Picchu, Peru</string>
+ <string
+ name="craneSleep3"
+ description="Label for city."
+ >Havana, Cuba</string>
+ <string
+ name="craneSleep4"
+ description="Label for city."
+ >Vitznau, Switzerland</string>
+ <string
+ name="craneSleep5"
+ description="Label for city."
+ >Big Sur, United States</string>
+ <string
+ name="craneSleep6"
+ description="Label for city."
+ >Napa, United States</string>
+ <string
+ name="craneSleep7"
+ description="Label for city."
+ >Porto, Portugal</string>
+ <string
+ name="craneSleep8"
+ description="Label for city."
+ >Tulum, Mexico</string>
+ <string
+ name="craneSleep9"
+ description="Label for city."
+ >Lisbon, Portugal</string>
+ <string
+ name="craneSleep10"
+ description="Label for city."
+ >Cairo, Egypt</string>
+ <string
+ name="craneSleep11"
+ description="Label for city."
+ >Taipei, Taiwan</string>
+ <string
+ name="craneEat0"
+ description="Label for city."
+ >Naples, Italy</string>
+ <string
+ name="craneEat1"
+ description="Label for city."
+ >Dallas, United States</string>
+ <string
+ name="craneEat2"
+ description="Label for city."
+ >Córdoba, Argentina</string>
+ <string
+ name="craneEat3"
+ description="Label for city."
+ >Portland, United States</string>
+ <string
+ name="craneEat4"
+ description="Label for city."
+ >Paris, France</string>
+ <string
+ name="craneEat5"
+ description="Label for city."
+ >Seoul, South Korea</string>
+ <string
+ name="craneEat6"
+ description="Label for city."
+ >Seattle, United States</string>
+ <string
+ name="craneEat7"
+ description="Label for city."
+ >Nashville, United States</string>
+ <string
+ name="craneEat8"
+ description="Label for city."
+ >Atlanta, United States</string>
+ <string
+ name="craneEat9"
+ description="Label for city."
+ >Madrid, Spain</string>
+ <string
+ name="craneEat10"
+ description="Label for city."
+ >Lisbon, Portugal</string>
+ <string
+ name="craneFly0SemanticLabel"
+ description="Semantic label for an image."
+ >Chalet in a snowy landscape with evergreen trees</string>
+ <string
+ name="craneFly1SemanticLabel"
+ description="Semantic label for an image."
+ >Tent in a field</string>
+ <string
+ name="craneFly2SemanticLabel"
+ description="Semantic label for an image."
+ >Prayer flags in front of snowy mountain</string>
+ <string
+ name="craneFly3SemanticLabel"
+ description="Semantic label for an image."
+ >Machu Picchu citadel</string>
+ <string
+ name="craneFly4SemanticLabel"
+ description="Semantic label for an image."
+ >Overwater bungalows</string>
+ <string
+ name="craneFly5SemanticLabel"
+ description="Semantic label for an image."
+ >Lake-side hotel in front of mountains</string>
+ <string
+ name="craneFly6SemanticLabel"
+ description="Semantic label for an image."
+ >Aerial view of Palacio de Bellas Artes</string>
+ <string
+ name="craneFly7SemanticLabel"
+ description="Semantic label for an image."
+ >Mount Rushmore</string>
+ <string
+ name="craneFly8SemanticLabel"
+ description="Semantic label for an image."
+ >Supertree Grove</string>
+ <string
+ name="craneFly9SemanticLabel"
+ description="Semantic label for an image."
+ >Man leaning on an antique blue car</string>
+ <string
+ name="craneFly10SemanticLabel"
+ description="Semantic label for an image."
+ >Al-Azhar Mosque towers during sunset</string>
+ <string
+ name="craneFly11SemanticLabel"
+ description="Semantic label for an image."
+ >Brick lighthouse at sea</string>
+ <string
+ name="craneFly12SemanticLabel"
+ description="Semantic label for an image."
+ >Pool with palm trees</string>
+ <string
+ name="craneFly13SemanticLabel"
+ description="Semantic label for an image."
+ >Sea-side pool with palm trees</string>
+ <string
+ name="craneSleep0SemanticLabel"
+ description="Semantic label for an image."
+ >Overwater bungalows</string>
+ <string
+ name="craneSleep1SemanticLabel"
+ description="Semantic label for an image."
+ >Chalet in a snowy landscape with evergreen trees</string>
+ <string
+ name="craneSleep2SemanticLabel"
+ description="Semantic label for an image."
+ >Machu Picchu citadel</string>
+ <string
+ name="craneSleep3SemanticLabel"
+ description="Semantic label for an image."
+ >Man leaning on an antique blue car</string>
+ <string
+ name="craneSleep4SemanticLabel"
+ description="Semantic label for an image."
+ >Lake-side hotel in front of mountains</string>
+ <string
+ name="craneSleep5SemanticLabel"
+ description="Semantic label for an image."
+ >Tent in a field</string>
+ <string
+ name="craneSleep6SemanticLabel"
+ description="Semantic label for an image."
+ >Pool with palm trees</string>
+ <string
+ name="craneSleep7SemanticLabel"
+ description="Semantic label for an image."
+ >Colorful apartments at Riberia Square</string>
+ <string
+ name="craneSleep8SemanticLabel"
+ description="Semantic label for an image."
+ >Mayan ruins on a cliff above a beach</string>
+ <string
+ name="craneSleep9SemanticLabel"
+ description="Semantic label for an image."
+ >Brick lighthouse at sea</string>
+ <string
+ name="craneSleep10SemanticLabel"
+ description="Semantic label for an image."
+ >Al-Azhar Mosque towers during sunset</string>
+ <string
+ name="craneSleep11SemanticLabel"
+ description="Semantic label for an image."
+ >Taipei 101 skyscraper</string>
+ <string
+ name="craneEat0SemanticLabel"
+ description="Semantic label for an image."
+ >Pizza in a wood-fired oven</string>
+ <string
+ name="craneEat1SemanticLabel"
+ description="Semantic label for an image."
+ >Empty bar with diner-style stools</string>
+ <string
+ name="craneEat2SemanticLabel"
+ description="Semantic label for an image."
+ >Burger</string>
+ <string
+ name="craneEat3SemanticLabel"
+ description="Semantic label for an image."
+ >Korean taco</string>
+ <string
+ name="craneEat4SemanticLabel"
+ description="Semantic label for an image."
+ >Chocolate dessert</string>
+ <string
+ name="craneEat5SemanticLabel"
+ description="Semantic label for an image."
+ >Artsy restaurant seating area</string>
+ <string
+ name="craneEat6SemanticLabel"
+ description="Semantic label for an image."
+ >Shrimp dish</string>
+ <string
+ name="craneEat7SemanticLabel"
+ description="Semantic label for an image."
+ >Bakery entrance</string>
+ <string
+ name="craneEat8SemanticLabel"
+ description="Semantic label for an image."
+ >Plate of crawfish</string>
+ <string
+ name="craneEat9SemanticLabel"
+ description="Semantic label for an image."
+ >Cafe counter with pastries</string>
+ <string
+ name="craneEat10SemanticLabel"
+ description="Semantic label for an image."
+ >Woman holding huge pastrami sandwich</string>
+</resources>
diff --git a/gallery/lib/l10n/intl_en_ZA.arb b/gallery/lib/l10n/intl_en_ZA.arb
new file mode 100644
index 0000000..50706f7
--- /dev/null
+++ b/gallery/lib/l10n/intl_en_ZA.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "View options",
+ "demoOptionsFeatureDescription": "Tap here to view available options for this demo.",
+ "demoCodeViewerCopyAll": "COPY ALL",
+ "shrineScreenReaderRemoveProductButton": "Remove {product}",
+ "shrineScreenReaderProductAddToCart": "Add to basket",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Shopping basket, no items}=1{Shopping basket, 1 item}other{Shopping basket, {quantity} items}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "Failed to copy to clipboard: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Copied to clipboard.",
+ "craneSleep8SemanticLabel": "Mayan ruins on a cliff above a beach",
+ "craneSleep4SemanticLabel": "Lake-side hotel in front of mountains",
+ "craneSleep2SemanticLabel": "Machu Picchu citadel",
+ "craneSleep1SemanticLabel": "Chalet in a snowy landscape with evergreen trees",
+ "craneSleep0SemanticLabel": "Overwater bungalows",
+ "craneFly13SemanticLabel": "Seaside pool with palm trees",
+ "craneFly12SemanticLabel": "Pool with palm trees",
+ "craneFly11SemanticLabel": "Brick lighthouse at sea",
+ "craneFly10SemanticLabel": "Al-Azhar Mosque towers during sunset",
+ "craneFly9SemanticLabel": "Man leaning on an antique blue car",
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "craneEat9SemanticLabel": "Café counter with pastries",
+ "craneEat2SemanticLabel": "Burger",
+ "craneFly5SemanticLabel": "Lake-side hotel in front of mountains",
+ "demoSelectionControlsSubtitle": "Tick boxes, radio buttons and switches",
+ "craneEat10SemanticLabel": "Woman holding huge pastrami sandwich",
+ "craneFly4SemanticLabel": "Overwater bungalows",
+ "craneEat7SemanticLabel": "Bakery entrance",
+ "craneEat6SemanticLabel": "Shrimp dish",
+ "craneEat5SemanticLabel": "Artsy restaurant seating area",
+ "craneEat4SemanticLabel": "Chocolate dessert",
+ "craneEat3SemanticLabel": "Korean taco",
+ "craneFly3SemanticLabel": "Machu Picchu citadel",
+ "craneEat1SemanticLabel": "Empty bar with diner-style stools",
+ "craneEat0SemanticLabel": "Pizza in a wood-fired oven",
+ "craneSleep11SemanticLabel": "Taipei 101 skyscraper",
+ "craneSleep10SemanticLabel": "Al-Azhar Mosque towers during sunset",
+ "craneSleep9SemanticLabel": "Brick lighthouse at sea",
+ "craneEat8SemanticLabel": "Plate of crawfish",
+ "craneSleep7SemanticLabel": "Colourful apartments at Ribeira Square",
+ "craneSleep6SemanticLabel": "Pool with palm trees",
+ "craneSleep5SemanticLabel": "Tent in a field",
+ "settingsButtonCloseLabel": "Close settings",
+ "demoSelectionControlsCheckboxDescription": "Tick boxes allow the user to select multiple options from a set. A normal tick box's value is true or false and a tristate tick box's value can also be null.",
+ "settingsButtonLabel": "Settings",
+ "demoListsTitle": "Lists",
+ "demoListsSubtitle": "Scrolling list layouts",
+ "demoListsDescription": "A single fixed-height row that typically contains some text as well as a leading or trailing icon.",
+ "demoOneLineListsTitle": "One line",
+ "demoTwoLineListsTitle": "Two lines",
+ "demoListsSecondary": "Secondary text",
+ "demoSelectionControlsTitle": "Selection controls",
+ "craneFly7SemanticLabel": "Mount Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Tick box",
+ "craneSleep3SemanticLabel": "Man leaning on an antique blue car",
+ "demoSelectionControlsRadioTitle": "Radio",
+ "demoSelectionControlsRadioDescription": "Radio buttons allow the user to select one option from a set. Use radio buttons for exclusive selection if you think that the user needs to see all available options side by side.",
+ "demoSelectionControlsSwitchTitle": "Switch",
+ "demoSelectionControlsSwitchDescription": "On/off switches toggle the state of a single settings option. The option that the switch controls, as well as the state it’s in, should be made clear from the corresponding inline label.",
+ "craneFly0SemanticLabel": "Chalet in a snowy landscape with evergreen trees",
+ "craneFly1SemanticLabel": "Tent in a field",
+ "craneFly2SemanticLabel": "Prayer flags in front of snowy mountain",
+ "craneFly6SemanticLabel": "Aerial view of Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "See all accounts",
+ "rallyBillAmount": "{billName} bill due {date} for {amount}.",
+ "shrineTooltipCloseCart": "Close basket",
+ "shrineTooltipCloseMenu": "Close menu",
+ "shrineTooltipOpenMenu": "Open menu",
+ "shrineTooltipSettings": "Settings",
+ "shrineTooltipSearch": "Search",
+ "demoTabsDescription": "Tabs organise content across different screens, data sets and other interactions.",
+ "demoTabsSubtitle": "Tabs with independently scrollable views",
+ "demoTabsTitle": "Tabs",
+ "rallyBudgetAmount": "{budgetName} budget with {amountUsed} used of {amountTotal}, {amountLeft} left",
+ "shrineTooltipRemoveItem": "Remove item",
+ "rallyAccountAmount": "{accountName} account {accountNumber} with {amount}.",
+ "rallySeeAllBudgets": "See all budgets",
+ "rallySeeAllBills": "See all bills",
+ "craneFormDate": "Select date",
+ "craneFormOrigin": "Choose origin",
+ "craneFly2": "Khumbu Valley, Nepal",
+ "craneFly3": "Machu Picchu, Peru",
+ "craneFly4": "Malé, Maldives",
+ "craneFly5": "Vitznau, Switzerland",
+ "craneFly6": "Mexico City, Mexico",
+ "craneFly7": "Mount Rushmore, United States",
+ "settingsTextDirectionLocaleBased": "Based on locale",
+ "craneFly9": "Havana, Cuba",
+ "craneFly10": "Cairo, Egypt",
+ "craneFly11": "Lisbon, Portugal",
+ "craneFly12": "Napa, United States",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldives",
+ "craneSleep1": "Aspen, United States",
+ "craneSleep2": "Machu Picchu, Peru",
+ "demoCupertinoSegmentedControlTitle": "Segmented control",
+ "craneSleep4": "Vitznau, Switzerland",
+ "craneSleep5": "Big Sur, United States",
+ "craneSleep6": "Napa, United States",
+ "craneSleep7": "Porto, Portugal",
+ "craneSleep8": "Tulum, Mexico",
+ "craneEat5": "Seoul, South Korea",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Compact elements that represent an input, attribute or action",
+ "demoActionChipTitle": "Action chip",
+ "demoActionChipDescription": "Action chips are a set of options which trigger an action related to primary content. Action chips should appear dynamically and contextually in a UI.",
+ "demoChoiceChipTitle": "Choice chip",
+ "demoChoiceChipDescription": "Choice chips represent a single choice from a set. Choice chips contain related descriptive text or categories.",
+ "demoFilterChipTitle": "Filter chip",
+ "demoFilterChipDescription": "Filter chips use tags or descriptive words as a way to filter content.",
+ "demoInputChipTitle": "Input chip",
+ "demoInputChipDescription": "Input chips represent a complex piece of information, such as an entity (person, place or thing) or conversational text, in a compact form.",
+ "craneSleep9": "Lisbon, Portugal",
+ "craneEat10": "Lisbon, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Used to select between a number of mutually exclusive options. When one option in the segmented control is selected, the other options in the segmented control cease to be selected.",
+ "chipTurnOnLights": "Turn on lights",
+ "chipSmall": "Small",
+ "chipMedium": "Medium",
+ "chipLarge": "Large",
+ "chipElevator": "Lift",
+ "chipWasher": "Washing machine",
+ "chipFireplace": "Fireplace",
+ "chipBiking": "Cycling",
+ "craneFormDiners": "Diners",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Increase your potential tax deduction! Assign categories to 1 unassigned transaction.}other{Increase your potential tax deduction! Assign categories to {count} unassigned transactions.}}",
+ "craneFormTime": "Select time",
+ "craneFormLocation": "Select location",
+ "craneFormTravelers": "Travellers",
+ "craneEat8": "Atlanta, United States",
+ "craneFormDestination": "Choose destination",
+ "craneFormDates": "Select dates",
+ "craneFly": "FLY",
+ "craneSleep": "SLEEP",
+ "craneEat": "EAT",
+ "craneFlySubhead": "Explore flights by destination",
+ "craneSleepSubhead": "Explore properties by destination",
+ "craneEatSubhead": "Explore restaurants by destination",
+ "craneFlyStops": "{numberOfStops,plural, =0{Non-stop}=1{1 stop}other{{numberOfStops} stops}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No available properties}=1{1 available property}other{{totalProperties} available properties}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No restaurants}=1{1 restaurant}other{{totalRestaurants} restaurants}}",
+ "craneFly0": "Aspen, United States",
+ "demoCupertinoSegmentedControlSubtitle": "iOS-style segmented control",
+ "craneSleep10": "Cairo, Egypt",
+ "craneEat9": "Madrid, Spain",
+ "craneFly1": "Big Sur, United States",
+ "craneEat7": "Nashville, United States",
+ "craneEat6": "Seattle, United States",
+ "craneFly8": "Singapore",
+ "craneEat4": "Paris, France",
+ "craneEat3": "Portland, United States",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, United States",
+ "craneEat0": "Naples, Italy",
+ "craneSleep11": "Taipei, Taiwan",
+ "craneSleep3": "Havana, Cuba",
+ "shrineLogoutButtonCaption": "LOGOUT",
+ "rallyTitleBills": "BILLS",
+ "rallyTitleAccounts": "ACCOUNTS",
+ "shrineProductVagabondSack": "Vagabond sack",
+ "rallyAccountDetailDataInterestYtd": "Interest YTD",
+ "shrineProductWhitneyBelt": "Whitney belt",
+ "shrineProductGardenStrand": "Garden strand",
+ "shrineProductStrutEarrings": "Strut earrings",
+ "shrineProductVarsitySocks": "Varsity socks",
+ "shrineProductWeaveKeyring": "Weave keyring",
+ "shrineProductGatsbyHat": "Gatsby hat",
+ "shrineProductShrugBag": "Shrug bag",
+ "shrineProductGiltDeskTrio": "Gilt desk trio",
+ "shrineProductCopperWireRack": "Copper wire rack",
+ "shrineProductSootheCeramicSet": "Soothe ceramic set",
+ "shrineProductHurrahsTeaSet": "Hurrahs tea set",
+ "shrineProductBlueStoneMug": "Blue stone mug",
+ "shrineProductRainwaterTray": "Rainwater tray",
+ "shrineProductChambrayNapkins": "Chambray napkins",
+ "shrineProductSucculentPlanters": "Succulent planters",
+ "shrineProductQuartetTable": "Quartet table",
+ "shrineProductKitchenQuattro": "Kitchen quattro",
+ "shrineProductClaySweater": "Clay sweater",
+ "shrineProductSeaTunic": "Sea tunic",
+ "shrineProductPlasterTunic": "Plaster tunic",
+ "rallyBudgetCategoryRestaurants": "Restaurants",
+ "shrineProductChambrayShirt": "Chambray shirt",
+ "shrineProductSeabreezeSweater": "Seabreeze sweater",
+ "shrineProductGentryJacket": "Gentry jacket",
+ "shrineProductNavyTrousers": "Navy trousers",
+ "shrineProductWalterHenleyWhite": "Walter henley (white)",
+ "shrineProductSurfAndPerfShirt": "Surf and perf shirt",
+ "shrineProductGingerScarf": "Ginger scarf",
+ "shrineProductRamonaCrossover": "Ramona crossover",
+ "shrineProductClassicWhiteCollar": "Classic white collar",
+ "shrineProductSunshirtDress": "Sunshirt dress",
+ "rallyAccountDetailDataInterestRate": "Interest rate",
+ "rallyAccountDetailDataAnnualPercentageYield": "Annual percentage yield",
+ "rallyAccountDataVacation": "Holiday",
+ "shrineProductFineLinesTee": "Fine lines tee",
+ "rallyAccountDataHomeSavings": "Home savings",
+ "rallyAccountDataChecking": "Current",
+ "rallyAccountDetailDataInterestPaidLastYear": "Interest paid last year",
+ "rallyAccountDetailDataNextStatement": "Next statement",
+ "rallyAccountDetailDataAccountOwner": "Account owner",
+ "rallyBudgetCategoryCoffeeShops": "Coffee shops",
+ "rallyBudgetCategoryGroceries": "Groceries",
+ "shrineProductCeriseScallopTee": "Cerise scallop tee",
+ "rallyBudgetCategoryClothing": "Clothing",
+ "rallySettingsManageAccounts": "Manage accounts",
+ "rallyAccountDataCarSavings": "Car savings",
+ "rallySettingsTaxDocuments": "Tax documents",
+ "rallySettingsPasscodeAndTouchId": "Passcode and Touch ID",
+ "rallySettingsNotifications": "Notifications",
+ "rallySettingsPersonalInformation": "Personal information",
+ "rallySettingsPaperlessSettings": "Paperless settings",
+ "rallySettingsFindAtms": "Find ATMs",
+ "rallySettingsHelp": "Help",
+ "rallySettingsSignOut": "Sign out",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Due",
+ "rallyBudgetLeft": "Left",
+ "rallyAccounts": "Accounts",
+ "rallyBills": "Bills",
+ "rallyBudgets": "Budgets",
+ "rallyAlerts": "Alerts",
+ "rallySeeAll": "SEE ALL",
+ "rallyFinanceLeft": "LEFT",
+ "rallyTitleOverview": "OVERVIEW",
+ "shrineProductShoulderRollsTee": "Shoulder rolls tee",
+ "shrineNextButtonCaption": "NEXT",
+ "rallyTitleBudgets": "BUDGETS",
+ "rallyTitleSettings": "SETTINGS",
+ "rallyLoginLoginToRally": "Log in to Rally",
+ "rallyLoginNoAccount": "Don't have an account?",
+ "rallyLoginSignUp": "SIGN UP",
+ "rallyLoginUsername": "Username",
+ "rallyLoginPassword": "Password",
+ "rallyLoginLabelLogin": "Log in",
+ "rallyLoginRememberMe": "Remember me",
+ "rallyLoginButtonLogin": "LOGIN",
+ "rallyAlertsMessageHeadsUpShopping": "Beware: you’ve used up {percent} of your shopping budget for this month.",
+ "rallyAlertsMessageSpentOnRestaurants": "You’ve spent {amount} on restaurants this week.",
+ "rallyAlertsMessageATMFees": "You’ve spent {amount} in ATM fees this month",
+ "rallyAlertsMessageCheckingAccount": "Good work! Your current account is {percent} higher than last month.",
+ "shrineMenuCaption": "MENU",
+ "shrineCategoryNameAll": "ALL",
+ "shrineCategoryNameAccessories": "ACCESSORIES",
+ "shrineCategoryNameClothing": "CLOTHING",
+ "shrineCategoryNameHome": "HOME",
+ "shrineLoginUsernameLabel": "Username",
+ "shrineLoginPasswordLabel": "Password",
+ "shrineCancelButtonCaption": "CANCEL",
+ "shrineCartTaxCaption": "Tax:",
+ "shrineCartPageCaption": "BASKET",
+ "shrineProductQuantity": "Quantity: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{NO ITEMS}=1{1 ITEM}other{{quantity} ITEMS}}",
+ "shrineCartClearButtonCaption": "CLEAR BASKET",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Delivery:",
+ "shrineProductGreySlouchTank": "Grey slouch tank top",
+ "shrineProductStellaSunglasses": "Stella sunglasses",
+ "shrineProductWhitePinstripeShirt": "White pinstripe shirt",
+ "demoTextFieldWhereCanWeReachYou": "Where can we contact you?",
+ "settingsTextDirectionLTR": "LTR",
+ "settingsTextScalingLarge": "Large",
+ "demoBottomSheetHeader": "Header",
+ "demoBottomSheetItem": "Item {value}",
+ "demoBottomTextFieldsTitle": "Text fields",
+ "demoTextFieldTitle": "Text fields",
+ "demoTextFieldSubtitle": "Single line of editable text and numbers",
+ "demoTextFieldDescription": "Text fields allow users to enter text into a UI. They typically appear in forms and dialogues.",
+ "demoTextFieldShowPasswordLabel": "Show password",
+ "demoTextFieldHidePasswordLabel": "Hide password",
+ "demoTextFieldFormErrors": "Please fix the errors in red before submitting.",
+ "demoTextFieldNameRequired": "Name is required.",
+ "demoTextFieldOnlyAlphabeticalChars": "Please enter only alphabetical characters.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### – Enter a US phone number.",
+ "demoTextFieldEnterPassword": "Please enter a password.",
+ "demoTextFieldPasswordsDoNotMatch": "The passwords don't match",
+ "demoTextFieldWhatDoPeopleCallYou": "What do people call you?",
+ "demoTextFieldNameField": "Name*",
+ "demoBottomSheetButtonText": "SHOW BOTTOM SHEET",
+ "demoTextFieldPhoneNumber": "Phone number*",
+ "demoBottomSheetTitle": "Bottom sheet",
+ "demoTextFieldEmail": "Email",
+ "demoTextFieldTellUsAboutYourself": "Tell us about yourself (e.g. write down what you do or what hobbies you have)",
+ "demoTextFieldKeepItShort": "Keep it short, this is just a demo.",
+ "starterAppGenericButton": "BUTTON",
+ "demoTextFieldLifeStory": "Life story",
+ "demoTextFieldSalary": "Salary",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "No more than 8 characters.",
+ "demoTextFieldPassword": "Password*",
+ "demoTextFieldRetypePassword": "Re-type password*",
+ "demoTextFieldSubmit": "SUBMIT",
+ "demoBottomNavigationSubtitle": "Bottom navigation with cross-fading views",
+ "demoBottomSheetAddLabel": "Add",
+ "demoBottomSheetModalDescription": "A modal bottom sheet is an alternative to a menu or a dialogue and prevents the user from interacting with the rest of the app.",
+ "demoBottomSheetModalTitle": "Modal bottom sheet",
+ "demoBottomSheetPersistentDescription": "A persistent bottom sheet shows information that supplements the primary content of the app. A persistent bottom sheet remains visible even when the user interacts with other parts of the app.",
+ "demoBottomSheetPersistentTitle": "Persistent bottom sheet",
+ "demoBottomSheetSubtitle": "Persistent and modal bottom sheets",
+ "demoTextFieldNameHasPhoneNumber": "{name} phone number is {phoneNumber}",
+ "buttonText": "BUTTON",
+ "demoTypographyDescription": "Definitions for the various typographical styles found in Material Design.",
+ "demoTypographySubtitle": "All of the predefined text styles",
+ "demoTypographyTitle": "Typography",
+ "demoFullscreenDialogDescription": "The fullscreenDialog property specifies whether the incoming page is a full-screen modal dialogue",
+ "demoFlatButtonDescription": "A flat button displays an ink splash on press but does not lift. Use flat buttons on toolbars, in dialogues and inline with padding",
+ "demoBottomNavigationDescription": "Bottom navigation bars display three to five destinations at the bottom of a screen. Each destination is represented by an icon and an optional text label. When a bottom navigation icon is tapped, the user is taken to the top-level navigation destination associated with that icon.",
+ "demoBottomNavigationSelectedLabel": "Selected label",
+ "demoBottomNavigationPersistentLabels": "Persistent labels",
+ "starterAppDrawerItem": "Item {value}",
+ "demoTextFieldRequiredField": "* indicates required field",
+ "demoBottomNavigationTitle": "Bottom navigation",
+ "settingsLightTheme": "Light",
+ "settingsTheme": "Theme",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "RTL",
+ "settingsTextScalingHuge": "Huge",
+ "cupertinoButton": "Button",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Small",
+ "settingsSystemDefault": "System",
+ "settingsTitle": "Settings",
+ "rallyDescription": "A personal finance app",
+ "aboutDialogDescription": "To see the source code for this app, please visit the {value}.",
+ "bottomNavigationCommentsTab": "Comments",
+ "starterAppGenericBody": "Body",
+ "starterAppGenericHeadline": "Headline",
+ "starterAppGenericSubtitle": "Subtitle",
+ "starterAppGenericTitle": "Title",
+ "starterAppTooltipSearch": "Search",
+ "starterAppTooltipShare": "Share",
+ "starterAppTooltipFavorite": "Favourite",
+ "starterAppTooltipAdd": "Add",
+ "bottomNavigationCalendarTab": "Calendar",
+ "starterAppDescription": "A responsive starter layout",
+ "starterAppTitle": "Starter app",
+ "aboutFlutterSamplesRepo": "Flutter samples Github repo",
+ "bottomNavigationContentPlaceholder": "Placeholder for {title} tab",
+ "bottomNavigationCameraTab": "Camera",
+ "bottomNavigationAlarmTab": "Alarm",
+ "bottomNavigationAccountTab": "Account",
+ "demoTextFieldYourEmailAddress": "Your email address",
+ "demoToggleButtonDescription": "Toggle buttons can be used to group related options. To emphasise groups of related toggle buttons, a group should share a common container",
+ "colorsGrey": "GREY",
+ "colorsBrown": "BROWN",
+ "colorsDeepOrange": "DEEP ORANGE",
+ "colorsOrange": "ORANGE",
+ "colorsAmber": "AMBER",
+ "colorsYellow": "YELLOW",
+ "colorsLime": "LIME",
+ "colorsLightGreen": "LIGHT GREEN",
+ "colorsGreen": "GREEN",
+ "homeHeaderGallery": "Gallery",
+ "homeHeaderCategories": "Categories",
+ "shrineDescription": "A fashionable retail app",
+ "craneDescription": "A personalised travel app",
+ "homeCategoryReference": "REFERENCE STYLES & MEDIA",
+ "demoInvalidURL": "Couldn't display URL:",
+ "demoOptionsTooltip": "Options",
+ "demoInfoTooltip": "Info",
+ "demoCodeTooltip": "Code Sample",
+ "demoDocumentationTooltip": "API Documentation",
+ "demoFullscreenTooltip": "Full screen",
+ "settingsTextScaling": "Text scaling",
+ "settingsTextDirection": "Text direction",
+ "settingsLocale": "Locale",
+ "settingsPlatformMechanics": "Platform mechanics",
+ "settingsDarkTheme": "Dark",
+ "settingsSlowMotion": "Slow motion",
+ "settingsAbout": "About Flutter Gallery",
+ "settingsFeedback": "Send feedback",
+ "settingsAttribution": "Designed by TOASTER in London",
+ "demoButtonTitle": "Buttons",
+ "demoButtonSubtitle": "Flat, raised, outline and more",
+ "demoFlatButtonTitle": "Flat Button",
+ "demoRaisedButtonDescription": "Raised buttons add dimension to mostly flat layouts. They emphasise functions on busy or wide spaces.",
+ "demoRaisedButtonTitle": "Raised Button",
+ "demoOutlineButtonTitle": "Outline Button",
+ "demoOutlineButtonDescription": "Outline buttons become opaque and elevate when pressed. They are often paired with raised buttons to indicate an alternative, secondary action.",
+ "demoToggleButtonTitle": "Toggle Buttons",
+ "colorsTeal": "TEAL",
+ "demoFloatingButtonTitle": "Floating Action Button",
+ "demoFloatingButtonDescription": "A floating action button is a circular icon button that hovers over content to promote a primary action in the application.",
+ "demoDialogTitle": "Dialogues",
+ "demoDialogSubtitle": "Simple, alert and full-screen",
+ "demoAlertDialogTitle": "Alert",
+ "demoAlertDialogDescription": "An alert dialogue informs the user about situations that require acknowledgement. An alert dialogue has an optional title and an optional list of actions.",
+ "demoAlertTitleDialogTitle": "Alert With Title",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "A simple dialogue offers the user a choice between several options. A simple dialogue has an optional title that is displayed above the choices.",
+ "demoFullscreenDialogTitle": "Full screen",
+ "demoCupertinoButtonsTitle": "Buttons",
+ "demoCupertinoButtonsSubtitle": "iOS-style buttons",
+ "demoCupertinoButtonsDescription": "An iOS-style button. It takes in text and/or an icon that fades out and in on touch. May optionally have a background.",
+ "demoCupertinoAlertsTitle": "Alerts",
+ "demoCupertinoAlertsSubtitle": "iOS-style alert dialogues",
+ "demoCupertinoAlertTitle": "Alert",
+ "demoCupertinoAlertDescription": "An alert dialogue informs the user about situations that require acknowledgement. An alert dialogue has an optional title, optional content and an optional list of actions. The title is displayed above the content and the actions are displayed below the content.",
+ "demoCupertinoAlertWithTitleTitle": "Alert with title",
+ "demoCupertinoAlertButtonsTitle": "Alert With Buttons",
+ "demoCupertinoAlertButtonsOnlyTitle": "Alert Buttons Only",
+ "demoCupertinoActionSheetTitle": "Action Sheet",
+ "demoCupertinoActionSheetDescription": "An action sheet is a specific style of alert that presents the user with a set of two or more choices related to the current context. An action sheet can have a title, an additional message and a list of actions.",
+ "demoColorsTitle": "Colours",
+ "demoColorsSubtitle": "All of the predefined colours",
+ "demoColorsDescription": "Colour and colour swatch constants which represent Material Design's colour palette.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Create",
+ "dialogSelectedOption": "You selected: '{value}'",
+ "dialogDiscardTitle": "Discard draft?",
+ "dialogLocationTitle": "Use Google's location service?",
+ "dialogLocationDescription": "Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running.",
+ "dialogCancel": "CANCEL",
+ "dialogDiscard": "DISCARD",
+ "dialogDisagree": "DISAGREE",
+ "dialogAgree": "AGREE",
+ "dialogSetBackup": "Set backup account",
+ "colorsBlueGrey": "BLUE GREY",
+ "dialogShow": "SHOW DIALOGUE",
+ "dialogFullscreenTitle": "Full-Screen Dialogue",
+ "dialogFullscreenSave": "SAVE",
+ "dialogFullscreenDescription": "A full-screen dialogue demo",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "With background",
+ "cupertinoAlertCancel": "Cancel",
+ "cupertinoAlertDiscard": "Discard",
+ "cupertinoAlertLocationTitle": "Allow 'Maps' to access your location while you are using the app?",
+ "cupertinoAlertLocationDescription": "Your current location will be displayed on the map and used for directions, nearby search results and estimated travel times.",
+ "cupertinoAlertAllow": "Allow",
+ "cupertinoAlertDontAllow": "Don't allow",
+ "cupertinoAlertFavoriteDessert": "Select Favourite Dessert",
+ "cupertinoAlertDessertDescription": "Please select your favourite type of dessert from the list below. Your selection will be used to customise the suggested list of eateries in your area.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisu",
+ "cupertinoAlertApplePie": "Apple Pie",
+ "cupertinoAlertChocolateBrownie": "Chocolate brownie",
+ "cupertinoShowAlert": "Show alert",
+ "colorsRed": "RED",
+ "colorsPink": "PINK",
+ "colorsPurple": "PURPLE",
+ "colorsDeepPurple": "DEEP PURPLE",
+ "colorsIndigo": "INDIGO",
+ "colorsBlue": "BLUE",
+ "colorsLightBlue": "LIGHT BLUE",
+ "colorsCyan": "CYAN",
+ "dialogAddAccount": "Add account",
+ "Gallery": "Gallery",
+ "Categories": "Categories",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "Basic shopping app",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "Travel app",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "REFERENCE STYLES & MEDIA"
+}
diff --git a/gallery/lib/l10n/intl_es.arb b/gallery/lib/l10n/intl_es.arb
new file mode 100644
index 0000000..6332d4f
--- /dev/null
+++ b/gallery/lib/l10n/intl_es.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Toca aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Añadir al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito: 0 artículos}=1{Carrito: 1 artículo}other{Carrito: {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se ha podido copiar en el portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se ha copiado en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en lo alto de un acantilado junto a una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago y frente a montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalet en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Bungalós flotantes",
+ "craneFly13SemanticLabel": "Piscina junto al mar con palmeras",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos junto al mar",
+ "craneFly10SemanticLabel": "Minaretes de la mezquita de al-Azhar al atardecer",
+ "craneFly9SemanticLabel": "Hombre apoyado en un coche azul antiguo",
+ "craneFly8SemanticLabel": "Supertree Grove",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastas",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago y frente a montañas",
+ "demoSelectionControlsSubtitle": "Casillas, botones de selección e interruptores",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Bungalós flotantes",
+ "craneEat7SemanticLabel": "Entrada de una panadería",
+ "craneEat6SemanticLabel": "Plato de gambas",
+ "craneEat5SemanticLabel": "Sala de un restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con taburetes junto a la barra",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Minaretes de la mezquita de al-Azhar al atardecer",
+ "craneSleep9SemanticLabel": "Faro de ladrillos junto al mar",
+ "craneEat8SemanticLabel": "Plato con cangrejos de río",
+ "craneSleep7SemanticLabel": "Apartamentos de vivos colores en la Plaza de la Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda de campaña en un campo",
+ "settingsButtonCloseLabel": "Cerrar la configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas permiten que los usuarios seleccionen varias opciones de un conjunto de opciones. Por lo general, las casillas pueden tener dos valores (verdadero o falso), aunque hay casillas que pueden tener tres (el tercero es el valor nulo).",
+ "settingsButtonLabel": "Ajustes",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de listas por las que se puede desplazar",
+ "demoListsDescription": "Fila con un altura fija que por lo general incluye texto y un icono al principio o al final.",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla",
+ "craneSleep3SemanticLabel": "Hombre apoyado en un coche azul antiguo",
+ "demoSelectionControlsRadioTitle": "Botón de selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten que los usuarios seleccionen una opción de un conjunto de opciones. Utilízalos si quieres que los usuarios elijan una única opción, pero quieres mostrarles todas las que están disponibles.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores controlan el estado de un solo ajuste. La etiqueta insertada del interruptor debería indicar de forma clara el ajuste que controla y el estado en el que está.",
+ "craneFly0SemanticLabel": "Chalet en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda de campaña en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Fecha límite de la factura {billName} ({amount}): {date}.",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Ajustes",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "En las pestañas se organiza contenido en distintas pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas desplazables por separado",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Has gastado {amountUsed} de {amountTotal} del presupuesto {budgetName}. Cantidad restante: {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} ({accountNumber}) con {amount}.",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Elegir origen",
+ "craneFly2": "Valle del Khumbu (Nepal)",
+ "craneFly3": "Machu Picchu (Perú)",
+ "craneFly4": "Malé (Maldivas)",
+ "craneFly5": "Vitznau (Suiza)",
+ "craneFly6": "Ciudad de México (México)",
+ "craneFly7": "Monte Rushmore (Estados Unidos)",
+ "settingsTextDirectionLocaleBased": "Basado en la configuración regional",
+ "craneFly9": "La Habana (Cuba)",
+ "craneFly10": "El Cairo (Egipto)",
+ "craneFly11": "Lisboa (Portugal)",
+ "craneFly12": "Napa (Estados Unidos)",
+ "craneFly13": "Bali (Indonesia)",
+ "craneSleep0": "Malé (Maldivas)",
+ "craneSleep1": "Aspen (Estados Unidos)",
+ "craneSleep2": "Machu Picchu (Perú)",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau (Suiza)",
+ "craneSleep5": "Big Sur (Estados Unidos)",
+ "craneSleep6": "Napa (Estados Unidos)",
+ "craneSleep7": "Oporto (Portugal)",
+ "craneSleep8": "Tulum (México)",
+ "craneEat5": "Seúl (Corea del Sur)",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Elementos compactos que representan atributos, acciones o texto que se ha introducido",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acción son un conjunto de opciones que permiten llevar a cabo tareas relacionadas con el contenido principal. Deberían aparecer de forma dinámica y según el contexto en la interfaz.",
+ "demoChoiceChipTitle": "Chip de elección",
+ "demoChoiceChipDescription": "Los chips de elección representan una opción de un conjunto de opciones. Incluyen descripciones o categorías relacionadas.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtro sirven para filtrar contenido por etiquetas o palabras descriptivas.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos de forma compacta, como textos o entidades (por ejemplo, personas, lugares o cosas).",
+ "craneSleep9": "Lisboa (Portugal)",
+ "craneEat10": "Lisboa (Portugal)",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre un número de opciones igualmente exclusivas. Si se selecciona una opción en el control segmentado, el resto no se podrán seleccionar.",
+ "chipTurnOnLights": "Encender las luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Medio",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicleta",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu posible deducción fiscal Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu posible deducción fiscal Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta (Estados Unidos)",
+ "craneFormDestination": "Elegir destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VOLAR",
+ "craneSleep": "DORMIR",
+ "craneEat": "COMER",
+ "craneFlySubhead": "Buscar vuelos por destino",
+ "craneSleepSubhead": "Buscar propiedades por destino",
+ "craneEatSubhead": "Buscar restaurantes por destino",
+ "craneFlyStops": "{numberOfStops,plural, =0{Vuelo directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen (Estados Unidos)",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado similar al de iOS",
+ "craneSleep10": "El Cairo (Egipto)",
+ "craneEat9": "Madrid (España)",
+ "craneFly1": "Big Sur (Estados Unidos)",
+ "craneEat7": "Nashville (Estados Unidos)",
+ "craneEat6": "Seattle (Estados Unidos)",
+ "craneFly8": "Singapur",
+ "craneEat4": "París (Francia)",
+ "craneEat3": "Portland (Estados Unidos)",
+ "craneEat2": "Córdoba (Argentina)",
+ "craneEat1": "Dallas (Estados Unidos)",
+ "craneEat0": "Nápoles (Italia)",
+ "craneSleep11": "Taipéi (Taiwán)",
+ "craneSleep3": "La Habana (Cuba)",
+ "shrineLogoutButtonCaption": "CERRAR SESIÓN",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Mochila Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Intereses pagados este año hasta la fecha",
+ "shrineProductWhitneyBelt": "Cinturón Whitney",
+ "shrineProductGardenStrand": "Collar de cuentas",
+ "shrineProductStrutEarrings": "Pendientes Strut",
+ "shrineProductVarsitySocks": "Calcetines Varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Gorra",
+ "shrineProductShrugBag": "Mochila Shrug",
+ "shrineProductGiltDeskTrio": "Conjunto de tres mesas",
+ "shrineProductCopperWireRack": "Estantería de alambre de cobre",
+ "shrineProductSootheCeramicSet": "Juego de tazas para infusiones",
+ "shrineProductHurrahsTeaSet": "Juego de té clásico",
+ "shrineProductBlueStoneMug": "Taza Blue Stone",
+ "shrineProductRainwaterTray": "Cubo de recogida de agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de cambray",
+ "shrineProductSucculentPlanters": "Maceteros para plantas suculentas",
+ "shrineProductQuartetTable": "Mesa cuadrada",
+ "shrineProductKitchenQuattro": "Kitchen Quattro",
+ "shrineProductClaySweater": "Jersey Clay",
+ "shrineProductSeaTunic": "Túnica azul claro",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de cambray",
+ "shrineProductSeabreezeSweater": "Jersey de tejido liviano",
+ "shrineProductGentryJacket": "Chaqueta Gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta de rayas (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camisa surfera",
+ "shrineProductGingerScarf": "Bufanda anaranjada",
+ "shrineProductRamonaCrossover": "Blusa cruzada Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa de cuello clásico en blanco",
+ "shrineProductSunshirtDress": "Vestido playero",
+ "rallyAccountDetailDataInterestRate": "Tipo de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros para la casa",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Siguiente extracto",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Alimentación",
+ "shrineProductCeriseScallopTee": "Camiseta color cereza",
+ "rallyBudgetCategoryClothing": "Ropa",
+ "rallySettingsManageAccounts": "Gestionar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros para el coche",
+ "rallySettingsTaxDocuments": "Documentos fiscales",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Ajustes sin papel",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Cerrar sesión",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Pendiente:",
+ "rallyBudgetLeft": "Presupuesto restante:",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "RESUMEN",
+ "shrineProductShoulderRollsTee": "Camiseta de hombros descubiertos",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "AJUSTES",
+ "rallyLoginLoginToRally": "Iniciar sesión en Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Iniciar sesión",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "INICIAR SESIÓN",
+ "rallyAlertsMessageHeadsUpShopping": "Aviso: Has utilizado un {percent} de tu presupuesto para compras este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Has gastado {amount} en restaurantes esta semana.",
+ "rallyAlertsMessageATMFees": "Has pagado {amount} de comisiones por utilizar cajeros automáticos este mes.",
+ "rallyAlertsMessageCheckingAccount": "¡Bien hecho! El saldo positivo de tu cuenta corriente está un {percent} más alto que el mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODO",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "ROPA",
+ "shrineCategoryNameHome": "CASA",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuestos:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{NO HAY ELEMENTOS}=1{1 ELEMENTO}other{{quantity} ELEMENTOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Gastos de envío:",
+ "shrineProductGreySlouchTank": "Camiseta de tirantes gris",
+ "shrineProductStellaSunglasses": "Gafas de sol Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa blanca de rayas diplomáticas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos ponernos en contacto contigo?",
+ "settingsTextDirectionLTR": "Texto de izquierda a derecha",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Una línea de texto y números editables",
+ "demoTextFieldDescription": "En los campos de texto, los usuarios pueden introducir texto en la interfaz. Estos campos suelen aparecer en formularios y cuadros de diálogo.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Corrige los errores marcados en rojo antes de enviar el formulario.",
+ "demoTextFieldNameRequired": "Es obligatorio indicar el nombre.",
+ "demoTextFieldOnlyAlphabeticalChars": "Introduce solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-####. Introduce un número de teléfono de EE. UU.",
+ "demoTextFieldEnterPassword": "Introduce una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llamas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Háblanos de ti (p. ej., dinos a qué te dedicas o las aficiones que tienes)",
+ "demoTextFieldKeepItShort": "Sé breve, esto es solo una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Biografía",
+ "demoTextFieldSalary": "Salario",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Menos de 8 caracteres",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas de fusión cruzada",
+ "demoBottomSheetAddLabel": "Añadir",
+ "demoBottomSheetModalDescription": "Una hoja inferior modal es la alternativa al menú o a los cuadros de diálogo y evita que los usuarios interactúen con el resto de la aplicación que estén utilizando.",
+ "demoBottomSheetModalTitle": "Hoja inferior modal",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información complementaria al contenido principal de la aplicación que estén utilizando y permanece siempre visible, aunque los usuarios interactúen con otras partes de la aplicación.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Las definiciones para los estilos tipográficos que se han encontrado en Material Design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página entrante es un cuadro de diálogo modal a pantalla completa",
+ "demoFlatButtonDescription": "Al pulsar un botón plano, se muestra una salpicadura de tinta que no recupera el relieve al dejar de pulsarse. Utiliza este tipo de botones en barras de herramientas, cuadros de diálogo y elementos insertados con márgenes.",
+ "demoBottomNavigationDescription": "En la barra de navegación inferior de la pantalla se muestran entre tres y cinco destinos. Cada destino está representado mediante un icono y, de forma opcional, con una etiqueta de texto. Al tocar un icono de navegación inferior, se redirige al usuario al destino de nivel superior que esté asociado a ese icono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "* indica que el campo es obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "Texto de derecha a izquierda",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Ajustes",
+ "rallyDescription": "Una aplicación de finanzas personales",
+ "aboutDialogDescription": "Visita {value} para ver el código fuente de esta aplicación.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favorito",
+ "starterAppTooltipAdd": "Añadir",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio adaptable",
+ "starterAppTitle": "Aplicación de inicio",
+ "aboutFlutterSamplesRepo": "Ejemplos de Flutter en el repositorio de Github",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Se pueden usar los botones de activar y desactivar para agrupar opciones relacionadas. Para destacar grupos de botones que se pueden activar y desactivar relacionados, los botones deben compartir un mismo contenedor",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA INTENSO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una aplicación para comprar productos de moda",
+ "craneDescription": "Una aplicación de viajes personalizada",
+ "homeCategoryReference": "ESTILOS Y RECURSOS MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se ha podido mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Código de ejemplo",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Enviar comentarios",
+ "settingsAttribution": "Diseñado por TOASTER en Londres",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Plano, con relieve, con contorno y más",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve añaden dimensión a los diseños mayormente planos. Destacan funciones en espacios llenos o amplios.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan al pulsarlos. Suelen aparecer junto a botones elevados para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones que se pueden activar y desactivar",
+ "colorsTeal": "TURQUESA",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón con un icono circular que aparece sobre contenido para fomentar una acción principal en la aplicación.",
+ "demoDialogTitle": "Cuadros de diálogo",
+ "demoDialogSubtitle": "Sencillo, con alerta y a pantalla completa",
+ "demoAlertDialogTitle": "Con alerta",
+ "demoAlertDialogDescription": "En un cuadro de diálogo de alerta se informa al usuario sobre situaciones que requieren su confirmación. Este tipo de cuadros de diálogo incluyen un título opcional y una lista de acciones opcional.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Sencillo",
+ "demoSimpleDialogDescription": "Un cuadro de diálogo sencillo ofrece al usuario la posibilidad de elegir entre diversas opciones e incluye un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "A pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones similares a los de iOS",
+ "demoCupertinoButtonsDescription": "Un botón similar a los de iOS que incluye texto o un icono que desaparece y aparece al tocarlo. Puede tener un fondo opcionalmente.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Cuadros de diálogo de alerta similares a los de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "En un cuadro de diálogo de alerta se informa al usuario sobre situaciones que requieren su confirmación. Un cuadro de diálogo de alerta incluye un título opcional, contenido opcional y una lista con acciones opcional. El título se muestra encima del contenido y las acciones, bajo el contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acción es un estilo concreto de alerta que presenta al usuario dos o más opciones relacionadas con el contexto; puede incluir un título, un mensaje adicional y una lista con acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Color y muestra de color que representa la paleta de colores de Material Design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Has seleccionado: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres utilizar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las aplicaciones a determinar la ubicación haciendo que el usuario envíe datos de ubicación anónimos a Google aunque las aplicaciones no se estén ejecutando.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Crear cuenta de copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR CUADRO DE DIÁLOGO",
+ "dialogFullscreenTitle": "Cuadro de diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Demostración del cuadro de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Das permiso a Maps para que acceda a tu ubicación mientras usas la aplicación?",
+ "cupertinoAlertLocationDescription": "Se mostrará tu ubicación en el mapa y se utilizará para ofrecerte indicaciones, resultados de búsqueda cercanos y la duración prevista de los desplazamientos.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Seleccionar postre favorito",
+ "cupertinoAlertDessertDescription": "En la siguiente lista, elige tu tipo de postre favorito. Lo que elijas se usará para personalizar la lista de restaurantes recomendados de tu zona.",
+ "cupertinoAlertCheesecake": "Tarta de queso",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Tarta de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSA",
+ "colorsPurple": "VIOLETA",
+ "colorsDeepPurple": "VIOLETA INTENSO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "AZUL CLARO",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Añadir cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "Aplicación básica de compras",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "Aplicación de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y RECURSOS MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_419.arb b/gallery/lib/l10n/intl_es_419.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_419.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palabras descriptivas para filtrar contenido.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos, como una entidad (persona, objeto o lugar), o texto conversacional de forma compacta.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre varias opciones mutuamente excluyentes. Cuando se selecciona una opción del control segmentado, se anula la selección de las otras.",
+ "chipTurnOnLights": "Encender luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Mediano",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicletas",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu potencial de deducción de impuestos. Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu potencial de deducción de impuestos. Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta, Estados Unidos",
+ "craneFormDestination": "Seleccionar destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VUELOS",
+ "craneSleep": "ALOJAMIENTO",
+ "craneEat": "GASTRONOMÍA",
+ "craneFlySubhead": "Explora vuelos por destino",
+ "craneSleepSubhead": "Explora propiedades por destino",
+ "craneEatSubhead": "Explora restaurantes por ubicación",
+ "craneFlyStops": "{numberOfStops,plural, =0{Directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen, Estados Unidos",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado de estilo iOS",
+ "craneSleep10": "El Cairo, Egipto",
+ "craneEat9": "Madrid, España",
+ "craneFly1": "Big Sur, Estados Unidos",
+ "craneEat7": "Nashville, Estados Unidos",
+ "craneEat6": "Seattle, Estados Unidos",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, Francia",
+ "craneEat3": "Portland, Estados Unidos",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estados Unidos",
+ "craneEat0": "Nápoles, Italia",
+ "craneSleep11": "Taipéi, Taiwán",
+ "craneSleep3": "La Habana, Cuba",
+ "shrineLogoutButtonCaption": "SALIR",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Bolso Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interés del comienzo del año fiscal",
+ "shrineProductWhitneyBelt": "Cinturón",
+ "shrineProductGardenStrand": "Hebras para jardín",
+ "shrineProductStrutEarrings": "Aros Strut",
+ "shrineProductVarsitySocks": "Medias varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Boina gatsby",
+ "shrineProductShrugBag": "Bolso de hombro",
+ "shrineProductGiltDeskTrio": "Juego de tres mesas",
+ "shrineProductCopperWireRack": "Estante de metal color cobre",
+ "shrineProductSootheCeramicSet": "Juego de cerámica",
+ "shrineProductHurrahsTeaSet": "Juego de té de cerámica",
+ "shrineProductBlueStoneMug": "Taza de color azul piedra",
+ "shrineProductRainwaterTray": "Bandeja para recolectar agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de chambray",
+ "shrineProductSucculentPlanters": "Macetas de suculentas",
+ "shrineProductQuartetTable": "Mesa para cuatro",
+ "shrineProductKitchenQuattro": "Cocina quattro",
+ "shrineProductClaySweater": "Suéter color arcilla",
+ "shrineProductSeaTunic": "Vestido de verano",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de chambray",
+ "shrineProductSeabreezeSweater": "Suéter de hilo liviano",
+ "shrineProductGentryJacket": "Chaqueta estilo gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta con botones (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camiseta estilo surf and perf",
+ "shrineProductGingerScarf": "Pañuelo color tierra",
+ "shrineProductRamonaCrossover": "Mezcla de estilos Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa clásica de cuello blanco",
+ "shrineProductSunshirtDress": "Camisa larga de verano",
+ "rallyAccountDetailDataInterestRate": "Tasa de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros del hogar",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Próximo resumen",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Compras de comestibles",
+ "shrineProductCeriseScallopTee": "Camiseta de cuello cerrado color cereza",
+ "rallyBudgetCategoryClothing": "Indumentaria",
+ "rallySettingsManageAccounts": "Administrar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros de vehículo",
+ "rallySettingsTaxDocuments": "Documentos de impuestos",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Configuración para recibir resúmenes en formato digital",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Salir",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Debes",
+ "rallyBudgetLeft": "Restante",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "DESCRIPCIÓN GENERAL",
+ "shrineProductShoulderRollsTee": "Camiseta con mangas",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "CONFIGURACIÓN",
+ "rallyLoginLoginToRally": "Accede a Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Acceder",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "ACCEDER",
+ "rallyAlertsMessageHeadsUpShopping": "Atención, utilizaste un {percent} del presupuesto para compras de este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Esta semana, gastaste {amount} en restaurantes",
+ "rallyAlertsMessageATMFees": "Este mes, gastaste {amount} en tarifas de cajeros automáticos",
+ "rallyAlertsMessageCheckingAccount": "¡Buen trabajo! El saldo de la cuenta corriente es un {percent} mayor al mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODAS",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "INDUMENTARIA",
+ "shrineCategoryNameHome": "HOGAR",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuesto:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{SIN ARTÍCULOS}=1{1 ARTÍCULO}other{{quantity} ARTÍCULOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Envío:",
+ "shrineProductGreySlouchTank": "Camiseta gris holgada de tirantes",
+ "shrineProductStellaSunglasses": "Anteojos Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa de rayas finas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos comunicarnos contigo?",
+ "settingsTextDirectionLTR": "IZQ. a DER.",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Línea única de texto y números editables",
+ "demoTextFieldDescription": "Los campos de texto permiten que los usuarios escriban en una IU. Suelen aparecer en diálogos y formularios.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Antes de enviar, corrige los errores marcados con rojo.",
+ "demoTextFieldNameRequired": "El nombre es obligatorio.",
+ "demoTextFieldOnlyAlphabeticalChars": "Ingresa solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Ingresa un número de teléfono de EE.UU.",
+ "demoTextFieldEnterPassword": "Ingresa una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llaman otras personas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Cuéntanos sobre ti (p. ej., escribe sobre lo que haces o tus pasatiempos)",
+ "demoTextFieldKeepItShort": "Sé breve, ya que esta es una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Historia de vida",
+ "demoTextFieldSalary": "Sueldo",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Incluye hasta 8 caracteres.",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas encadenadas",
+ "demoBottomSheetAddLabel": "Agregar",
+ "demoBottomSheetModalDescription": "Una hoja modal inferior es una alternativa a un menú o diálogo que impide que el usuario interactúe con el resto de la app.",
+ "demoBottomSheetModalTitle": "Hoja modal inferior",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información que suplementa el contenido principal de la app. La hoja permanece visible, incluso si el usuario interactúa con otras partes de la app.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Definiciones de distintos estilos de tipografía que se encuentran en material design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página nueva es un diálogo modal de pantalla completa.",
+ "demoFlatButtonDescription": "Un botón plano que muestra una gota de tinta cuando se lo presiona, pero que no tiene sombra. Usa los botones planos en barras de herramientas, diálogos y también intercalados con el relleno.",
+ "demoBottomNavigationDescription": "Las barras de navegación inferiores muestran entre tres y cinco destinos en la parte inferior de la pantalla. Cada destino se representa con un ícono y una etiqueta de texto opcional. Cuando el usuario presiona un ícono de navegación inferior, se lo redirecciona al destino de navegación de nivel superior que está asociado con el ícono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "El asterisco (*) indica que es un campo obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "DER. a IZQ.",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuración",
+ "rallyDescription": "Una app personal de finanzas",
+ "aboutDialogDescription": "Para ver el código fuente de esta app, visita {value}.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favoritos",
+ "starterAppTooltipAdd": "Agregar",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio responsivo",
+ "starterAppTitle": "App de inicio",
+ "aboutFlutterSamplesRepo": "Repositorio de GitHub con muestras de Flutter",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Puedes usar los botones de activación para agrupar opciones relacionadas. Para destacar los grupos de botones de activación relacionados, el grupo debe compartir un contenedor común.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA OSCURO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "VERDE LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una app de venta minorista a la moda",
+ "craneDescription": "Una app personalizada para viajes",
+ "homeCategoryReference": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se pudo mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Ejemplo de código",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Envía comentarios",
+ "settingsAttribution": "Diseño de TOASTER (Londres)",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Planos, con relieve, con contorno, etc.",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve agregan profundidad a los diseños más que nada planos. Destacan las funciones en espacios amplios o con muchos elementos.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan cuando se los presiona. A menudo, se combinan con botones con relieve para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones de activación",
+ "colorsTeal": "VERDE AZULADO",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón de ícono circular que se coloca sobre el contenido para propiciar una acción principal en la aplicación.",
+ "demoDialogTitle": "Diálogos",
+ "demoDialogSubtitle": "Simple, de alerta y de pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título y una lista de acciones que son opcionales.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "Un diálogo simple le ofrece al usuario la posibilidad de elegir entre varias opciones. Un diálogo simple tiene un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones con estilo de iOS",
+ "demoCupertinoButtonsDescription": "Un botón con el estilo de iOS. Contiene texto o un ícono que aparece o desaparece poco a poco cuando se lo toca. De manera opcional, puede tener un fondo.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Diálogos de alerta con estilo de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título, un contenido y una lista de acciones que son opcionales. El título se muestra encima del contenido y las acciones debajo del contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acciones es un estilo específico de alerta que brinda al usuario un conjunto de dos o más opciones relacionadas con el contexto actual. Una hoja de acciones puede tener un título, un mensaje adicional y una lista de acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Son las constantes de colores y de muestras de color que representan la paleta de material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Seleccionaste: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres usar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las apps a determinar la ubicación. Esto implica el envío de datos de ubicación anónimos a Google, incluso cuando no se estén ejecutando apps.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Configurar cuenta para copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR DIÁLOGO",
+ "dialogFullscreenTitle": "Diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Una demostración de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Quieres permitir que \"Maps\" acceda a tu ubicación mientras usas la app?",
+ "cupertinoAlertLocationDescription": "Tu ubicación actual se mostrará en el mapa y se usará para obtener instrucciones sobre cómo llegar a lugares, resultados cercanos de la búsqueda y tiempos de viaje aproximados.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Selecciona tu postre favorito",
+ "cupertinoAlertDessertDescription": "Selecciona tu postre favorito de la siguiente lista. Se usará tu elección para personalizar la lista de restaurantes sugeridos en tu área.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastel de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSADO",
+ "colorsPurple": "PÚRPURA",
+ "colorsDeepPurple": "PÚRPURA OSCURO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "CELESTE",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Agregar cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "App de compras básica",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "App de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_AR.arb b/gallery/lib/l10n/intl_es_AR.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_AR.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palabras descriptivas para filtrar contenido.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos, como una entidad (persona, objeto o lugar), o texto conversacional de forma compacta.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre varias opciones mutuamente excluyentes. Cuando se selecciona una opción del control segmentado, se anula la selección de las otras.",
+ "chipTurnOnLights": "Encender luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Mediano",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicletas",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu potencial de deducción de impuestos. Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu potencial de deducción de impuestos. Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta, Estados Unidos",
+ "craneFormDestination": "Seleccionar destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VUELOS",
+ "craneSleep": "ALOJAMIENTO",
+ "craneEat": "GASTRONOMÍA",
+ "craneFlySubhead": "Explora vuelos por destino",
+ "craneSleepSubhead": "Explora propiedades por destino",
+ "craneEatSubhead": "Explora restaurantes por ubicación",
+ "craneFlyStops": "{numberOfStops,plural, =0{Directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen, Estados Unidos",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado de estilo iOS",
+ "craneSleep10": "El Cairo, Egipto",
+ "craneEat9": "Madrid, España",
+ "craneFly1": "Big Sur, Estados Unidos",
+ "craneEat7": "Nashville, Estados Unidos",
+ "craneEat6": "Seattle, Estados Unidos",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, Francia",
+ "craneEat3": "Portland, Estados Unidos",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estados Unidos",
+ "craneEat0": "Nápoles, Italia",
+ "craneSleep11": "Taipéi, Taiwán",
+ "craneSleep3": "La Habana, Cuba",
+ "shrineLogoutButtonCaption": "SALIR",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Bolso Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interés del comienzo del año fiscal",
+ "shrineProductWhitneyBelt": "Cinturón",
+ "shrineProductGardenStrand": "Hebras para jardín",
+ "shrineProductStrutEarrings": "Aros Strut",
+ "shrineProductVarsitySocks": "Medias varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Boina gatsby",
+ "shrineProductShrugBag": "Bolso de hombro",
+ "shrineProductGiltDeskTrio": "Juego de tres mesas",
+ "shrineProductCopperWireRack": "Estante de metal color cobre",
+ "shrineProductSootheCeramicSet": "Juego de cerámica",
+ "shrineProductHurrahsTeaSet": "Juego de té de cerámica",
+ "shrineProductBlueStoneMug": "Taza de color azul piedra",
+ "shrineProductRainwaterTray": "Bandeja para recolectar agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de chambray",
+ "shrineProductSucculentPlanters": "Macetas de suculentas",
+ "shrineProductQuartetTable": "Mesa para cuatro",
+ "shrineProductKitchenQuattro": "Cocina quattro",
+ "shrineProductClaySweater": "Suéter color arcilla",
+ "shrineProductSeaTunic": "Vestido de verano",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de chambray",
+ "shrineProductSeabreezeSweater": "Suéter de hilo liviano",
+ "shrineProductGentryJacket": "Chaqueta estilo gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta con botones (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camiseta estilo surf and perf",
+ "shrineProductGingerScarf": "Pañuelo color tierra",
+ "shrineProductRamonaCrossover": "Mezcla de estilos Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa clásica de cuello blanco",
+ "shrineProductSunshirtDress": "Camisa larga de verano",
+ "rallyAccountDetailDataInterestRate": "Tasa de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros del hogar",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Próximo resumen",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Compras de comestibles",
+ "shrineProductCeriseScallopTee": "Camiseta de cuello cerrado color cereza",
+ "rallyBudgetCategoryClothing": "Indumentaria",
+ "rallySettingsManageAccounts": "Administrar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros de vehículo",
+ "rallySettingsTaxDocuments": "Documentos de impuestos",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Configuración para recibir resúmenes en formato digital",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Salir",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Debes",
+ "rallyBudgetLeft": "Restante",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "DESCRIPCIÓN GENERAL",
+ "shrineProductShoulderRollsTee": "Camiseta con mangas",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "CONFIGURACIÓN",
+ "rallyLoginLoginToRally": "Accede a Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Acceder",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "ACCEDER",
+ "rallyAlertsMessageHeadsUpShopping": "Atención, utilizaste un {percent} del presupuesto para compras de este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Esta semana, gastaste {amount} en restaurantes",
+ "rallyAlertsMessageATMFees": "Este mes, gastaste {amount} en tarifas de cajeros automáticos",
+ "rallyAlertsMessageCheckingAccount": "¡Buen trabajo! El saldo de la cuenta corriente es un {percent} mayor al mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODAS",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "INDUMENTARIA",
+ "shrineCategoryNameHome": "HOGAR",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuesto:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{SIN ARTÍCULOS}=1{1 ARTÍCULO}other{{quantity} ARTÍCULOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Envío:",
+ "shrineProductGreySlouchTank": "Camiseta gris holgada de tirantes",
+ "shrineProductStellaSunglasses": "Anteojos Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa de rayas finas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos comunicarnos contigo?",
+ "settingsTextDirectionLTR": "IZQ. a DER.",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Línea única de texto y números editables",
+ "demoTextFieldDescription": "Los campos de texto permiten que los usuarios escriban en una IU. Suelen aparecer en diálogos y formularios.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Antes de enviar, corrige los errores marcados con rojo.",
+ "demoTextFieldNameRequired": "El nombre es obligatorio.",
+ "demoTextFieldOnlyAlphabeticalChars": "Ingresa solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Ingresa un número de teléfono de EE.UU.",
+ "demoTextFieldEnterPassword": "Ingresa una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llaman otras personas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Cuéntanos sobre ti (p. ej., escribe sobre lo que haces o tus pasatiempos)",
+ "demoTextFieldKeepItShort": "Sé breve, ya que esta es una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Historia de vida",
+ "demoTextFieldSalary": "Sueldo",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Incluye hasta 8 caracteres.",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas encadenadas",
+ "demoBottomSheetAddLabel": "Agregar",
+ "demoBottomSheetModalDescription": "Una hoja modal inferior es una alternativa a un menú o diálogo que impide que el usuario interactúe con el resto de la app.",
+ "demoBottomSheetModalTitle": "Hoja modal inferior",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información que suplementa el contenido principal de la app. La hoja permanece visible, incluso si el usuario interactúa con otras partes de la app.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Definiciones de distintos estilos de tipografía que se encuentran en material design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página nueva es un diálogo modal de pantalla completa.",
+ "demoFlatButtonDescription": "Un botón plano que muestra una gota de tinta cuando se lo presiona, pero que no tiene sombra. Usa los botones planos en barras de herramientas, diálogos y también intercalados con el relleno.",
+ "demoBottomNavigationDescription": "Las barras de navegación inferiores muestran entre tres y cinco destinos en la parte inferior de la pantalla. Cada destino se representa con un ícono y una etiqueta de texto opcional. Cuando el usuario presiona un ícono de navegación inferior, se lo redirecciona al destino de navegación de nivel superior que está asociado con el ícono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "El asterisco (*) indica que es un campo obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "DER. a IZQ.",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuración",
+ "rallyDescription": "Una app personal de finanzas",
+ "aboutDialogDescription": "Para ver el código fuente de esta app, visita {value}.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favoritos",
+ "starterAppTooltipAdd": "Agregar",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio responsivo",
+ "starterAppTitle": "App de inicio",
+ "aboutFlutterSamplesRepo": "Repositorio de GitHub con muestras de Flutter",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Puedes usar los botones de activación para agrupar opciones relacionadas. Para destacar los grupos de botones de activación relacionados, el grupo debe compartir un contenedor común.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA OSCURO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "VERDE LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una app de venta minorista a la moda",
+ "craneDescription": "Una app personalizada para viajes",
+ "homeCategoryReference": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se pudo mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Ejemplo de código",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Envía comentarios",
+ "settingsAttribution": "Diseño de TOASTER (Londres)",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Planos, con relieve, con contorno, etc.",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve agregan profundidad a los diseños más que nada planos. Destacan las funciones en espacios amplios o con muchos elementos.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan cuando se los presiona. A menudo, se combinan con botones con relieve para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones de activación",
+ "colorsTeal": "VERDE AZULADO",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón de ícono circular que se coloca sobre el contenido para propiciar una acción principal en la aplicación.",
+ "demoDialogTitle": "Diálogos",
+ "demoDialogSubtitle": "Simple, de alerta y de pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título y una lista de acciones que son opcionales.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "Un diálogo simple le ofrece al usuario la posibilidad de elegir entre varias opciones. Un diálogo simple tiene un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones con estilo de iOS",
+ "demoCupertinoButtonsDescription": "Un botón con el estilo de iOS. Contiene texto o un ícono que aparece o desaparece poco a poco cuando se lo toca. De manera opcional, puede tener un fondo.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Diálogos de alerta con estilo de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título, un contenido y una lista de acciones que son opcionales. El título se muestra encima del contenido y las acciones debajo del contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acciones es un estilo específico de alerta que brinda al usuario un conjunto de dos o más opciones relacionadas con el contexto actual. Una hoja de acciones puede tener un título, un mensaje adicional y una lista de acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Son las constantes de colores y de muestras de color que representan la paleta de material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Seleccionaste: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres usar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las apps a determinar la ubicación. Esto implica el envío de datos de ubicación anónimos a Google, incluso cuando no se estén ejecutando apps.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Configurar cuenta para copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR DIÁLOGO",
+ "dialogFullscreenTitle": "Diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Una demostración de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Quieres permitir que \"Maps\" acceda a tu ubicación mientras usas la app?",
+ "cupertinoAlertLocationDescription": "Tu ubicación actual se mostrará en el mapa y se usará para obtener instrucciones sobre cómo llegar a lugares, resultados cercanos de la búsqueda y tiempos de viaje aproximados.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Selecciona tu postre favorito",
+ "cupertinoAlertDessertDescription": "Selecciona tu postre favorito de la siguiente lista. Se usará tu elección para personalizar la lista de restaurantes sugeridos en tu área.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastel de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSADO",
+ "colorsPurple": "PÚRPURA",
+ "colorsDeepPurple": "PÚRPURA OSCURO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "CELESTE",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Agregar cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "App de compras básica",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "App de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_BO.arb b/gallery/lib/l10n/intl_es_BO.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_BO.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palabras descriptivas para filtrar contenido.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos, como una entidad (persona, objeto o lugar), o texto conversacional de forma compacta.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre varias opciones mutuamente excluyentes. Cuando se selecciona una opción del control segmentado, se anula la selección de las otras.",
+ "chipTurnOnLights": "Encender luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Mediano",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicletas",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu potencial de deducción de impuestos. Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu potencial de deducción de impuestos. Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta, Estados Unidos",
+ "craneFormDestination": "Seleccionar destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VUELOS",
+ "craneSleep": "ALOJAMIENTO",
+ "craneEat": "GASTRONOMÍA",
+ "craneFlySubhead": "Explora vuelos por destino",
+ "craneSleepSubhead": "Explora propiedades por destino",
+ "craneEatSubhead": "Explora restaurantes por ubicación",
+ "craneFlyStops": "{numberOfStops,plural, =0{Directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen, Estados Unidos",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado de estilo iOS",
+ "craneSleep10": "El Cairo, Egipto",
+ "craneEat9": "Madrid, España",
+ "craneFly1": "Big Sur, Estados Unidos",
+ "craneEat7": "Nashville, Estados Unidos",
+ "craneEat6": "Seattle, Estados Unidos",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, Francia",
+ "craneEat3": "Portland, Estados Unidos",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estados Unidos",
+ "craneEat0": "Nápoles, Italia",
+ "craneSleep11": "Taipéi, Taiwán",
+ "craneSleep3": "La Habana, Cuba",
+ "shrineLogoutButtonCaption": "SALIR",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Bolso Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interés del comienzo del año fiscal",
+ "shrineProductWhitneyBelt": "Cinturón",
+ "shrineProductGardenStrand": "Hebras para jardín",
+ "shrineProductStrutEarrings": "Aros Strut",
+ "shrineProductVarsitySocks": "Medias varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Boina gatsby",
+ "shrineProductShrugBag": "Bolso de hombro",
+ "shrineProductGiltDeskTrio": "Juego de tres mesas",
+ "shrineProductCopperWireRack": "Estante de metal color cobre",
+ "shrineProductSootheCeramicSet": "Juego de cerámica",
+ "shrineProductHurrahsTeaSet": "Juego de té de cerámica",
+ "shrineProductBlueStoneMug": "Taza de color azul piedra",
+ "shrineProductRainwaterTray": "Bandeja para recolectar agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de chambray",
+ "shrineProductSucculentPlanters": "Macetas de suculentas",
+ "shrineProductQuartetTable": "Mesa para cuatro",
+ "shrineProductKitchenQuattro": "Cocina quattro",
+ "shrineProductClaySweater": "Suéter color arcilla",
+ "shrineProductSeaTunic": "Vestido de verano",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de chambray",
+ "shrineProductSeabreezeSweater": "Suéter de hilo liviano",
+ "shrineProductGentryJacket": "Chaqueta estilo gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta con botones (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camiseta estilo surf and perf",
+ "shrineProductGingerScarf": "Pañuelo color tierra",
+ "shrineProductRamonaCrossover": "Mezcla de estilos Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa clásica de cuello blanco",
+ "shrineProductSunshirtDress": "Camisa larga de verano",
+ "rallyAccountDetailDataInterestRate": "Tasa de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros del hogar",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Próximo resumen",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Compras de comestibles",
+ "shrineProductCeriseScallopTee": "Camiseta de cuello cerrado color cereza",
+ "rallyBudgetCategoryClothing": "Indumentaria",
+ "rallySettingsManageAccounts": "Administrar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros de vehículo",
+ "rallySettingsTaxDocuments": "Documentos de impuestos",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Configuración para recibir resúmenes en formato digital",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Salir",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Debes",
+ "rallyBudgetLeft": "Restante",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "DESCRIPCIÓN GENERAL",
+ "shrineProductShoulderRollsTee": "Camiseta con mangas",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "CONFIGURACIÓN",
+ "rallyLoginLoginToRally": "Accede a Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Acceder",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "ACCEDER",
+ "rallyAlertsMessageHeadsUpShopping": "Atención, utilizaste un {percent} del presupuesto para compras de este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Esta semana, gastaste {amount} en restaurantes",
+ "rallyAlertsMessageATMFees": "Este mes, gastaste {amount} en tarifas de cajeros automáticos",
+ "rallyAlertsMessageCheckingAccount": "¡Buen trabajo! El saldo de la cuenta corriente es un {percent} mayor al mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODAS",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "INDUMENTARIA",
+ "shrineCategoryNameHome": "HOGAR",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuesto:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{SIN ARTÍCULOS}=1{1 ARTÍCULO}other{{quantity} ARTÍCULOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Envío:",
+ "shrineProductGreySlouchTank": "Camiseta gris holgada de tirantes",
+ "shrineProductStellaSunglasses": "Anteojos Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa de rayas finas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos comunicarnos contigo?",
+ "settingsTextDirectionLTR": "IZQ. a DER.",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Línea única de texto y números editables",
+ "demoTextFieldDescription": "Los campos de texto permiten que los usuarios escriban en una IU. Suelen aparecer en diálogos y formularios.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Antes de enviar, corrige los errores marcados con rojo.",
+ "demoTextFieldNameRequired": "El nombre es obligatorio.",
+ "demoTextFieldOnlyAlphabeticalChars": "Ingresa solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Ingresa un número de teléfono de EE.UU.",
+ "demoTextFieldEnterPassword": "Ingresa una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llaman otras personas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Cuéntanos sobre ti (p. ej., escribe sobre lo que haces o tus pasatiempos)",
+ "demoTextFieldKeepItShort": "Sé breve, ya que esta es una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Historia de vida",
+ "demoTextFieldSalary": "Sueldo",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Incluye hasta 8 caracteres.",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas encadenadas",
+ "demoBottomSheetAddLabel": "Agregar",
+ "demoBottomSheetModalDescription": "Una hoja modal inferior es una alternativa a un menú o diálogo que impide que el usuario interactúe con el resto de la app.",
+ "demoBottomSheetModalTitle": "Hoja modal inferior",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información que suplementa el contenido principal de la app. La hoja permanece visible, incluso si el usuario interactúa con otras partes de la app.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Definiciones de distintos estilos de tipografía que se encuentran en material design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página nueva es un diálogo modal de pantalla completa.",
+ "demoFlatButtonDescription": "Un botón plano que muestra una gota de tinta cuando se lo presiona, pero que no tiene sombra. Usa los botones planos en barras de herramientas, diálogos y también intercalados con el relleno.",
+ "demoBottomNavigationDescription": "Las barras de navegación inferiores muestran entre tres y cinco destinos en la parte inferior de la pantalla. Cada destino se representa con un ícono y una etiqueta de texto opcional. Cuando el usuario presiona un ícono de navegación inferior, se lo redirecciona al destino de navegación de nivel superior que está asociado con el ícono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "El asterisco (*) indica que es un campo obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "DER. a IZQ.",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuración",
+ "rallyDescription": "Una app personal de finanzas",
+ "aboutDialogDescription": "Para ver el código fuente de esta app, visita {value}.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favoritos",
+ "starterAppTooltipAdd": "Agregar",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio responsivo",
+ "starterAppTitle": "App de inicio",
+ "aboutFlutterSamplesRepo": "Repositorio de GitHub con muestras de Flutter",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Puedes usar los botones de activación para agrupar opciones relacionadas. Para destacar los grupos de botones de activación relacionados, el grupo debe compartir un contenedor común.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA OSCURO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "VERDE LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una app de venta minorista a la moda",
+ "craneDescription": "Una app personalizada para viajes",
+ "homeCategoryReference": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se pudo mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Ejemplo de código",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Envía comentarios",
+ "settingsAttribution": "Diseño de TOASTER (Londres)",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Planos, con relieve, con contorno, etc.",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve agregan profundidad a los diseños más que nada planos. Destacan las funciones en espacios amplios o con muchos elementos.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan cuando se los presiona. A menudo, se combinan con botones con relieve para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones de activación",
+ "colorsTeal": "VERDE AZULADO",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón de ícono circular que se coloca sobre el contenido para propiciar una acción principal en la aplicación.",
+ "demoDialogTitle": "Diálogos",
+ "demoDialogSubtitle": "Simple, de alerta y de pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título y una lista de acciones que son opcionales.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "Un diálogo simple le ofrece al usuario la posibilidad de elegir entre varias opciones. Un diálogo simple tiene un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones con estilo de iOS",
+ "demoCupertinoButtonsDescription": "Un botón con el estilo de iOS. Contiene texto o un ícono que aparece o desaparece poco a poco cuando se lo toca. De manera opcional, puede tener un fondo.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Diálogos de alerta con estilo de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título, un contenido y una lista de acciones que son opcionales. El título se muestra encima del contenido y las acciones debajo del contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acciones es un estilo específico de alerta que brinda al usuario un conjunto de dos o más opciones relacionadas con el contexto actual. Una hoja de acciones puede tener un título, un mensaje adicional y una lista de acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Son las constantes de colores y de muestras de color que representan la paleta de material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Seleccionaste: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres usar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las apps a determinar la ubicación. Esto implica el envío de datos de ubicación anónimos a Google, incluso cuando no se estén ejecutando apps.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Configurar cuenta para copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR DIÁLOGO",
+ "dialogFullscreenTitle": "Diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Una demostración de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Quieres permitir que \"Maps\" acceda a tu ubicación mientras usas la app?",
+ "cupertinoAlertLocationDescription": "Tu ubicación actual se mostrará en el mapa y se usará para obtener instrucciones sobre cómo llegar a lugares, resultados cercanos de la búsqueda y tiempos de viaje aproximados.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Selecciona tu postre favorito",
+ "cupertinoAlertDessertDescription": "Selecciona tu postre favorito de la siguiente lista. Se usará tu elección para personalizar la lista de restaurantes sugeridos en tu área.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastel de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSADO",
+ "colorsPurple": "PÚRPURA",
+ "colorsDeepPurple": "PÚRPURA OSCURO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "CELESTE",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Agregar cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "App de compras básica",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "App de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_CL.arb b/gallery/lib/l10n/intl_es_CL.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_CL.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palabras descriptivas para filtrar contenido.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos, como una entidad (persona, objeto o lugar), o texto conversacional de forma compacta.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre varias opciones mutuamente excluyentes. Cuando se selecciona una opción del control segmentado, se anula la selección de las otras.",
+ "chipTurnOnLights": "Encender luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Mediano",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicletas",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu potencial de deducción de impuestos. Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu potencial de deducción de impuestos. Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta, Estados Unidos",
+ "craneFormDestination": "Seleccionar destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VUELOS",
+ "craneSleep": "ALOJAMIENTO",
+ "craneEat": "GASTRONOMÍA",
+ "craneFlySubhead": "Explora vuelos por destino",
+ "craneSleepSubhead": "Explora propiedades por destino",
+ "craneEatSubhead": "Explora restaurantes por ubicación",
+ "craneFlyStops": "{numberOfStops,plural, =0{Directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen, Estados Unidos",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado de estilo iOS",
+ "craneSleep10": "El Cairo, Egipto",
+ "craneEat9": "Madrid, España",
+ "craneFly1": "Big Sur, Estados Unidos",
+ "craneEat7": "Nashville, Estados Unidos",
+ "craneEat6": "Seattle, Estados Unidos",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, Francia",
+ "craneEat3": "Portland, Estados Unidos",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estados Unidos",
+ "craneEat0": "Nápoles, Italia",
+ "craneSleep11": "Taipéi, Taiwán",
+ "craneSleep3": "La Habana, Cuba",
+ "shrineLogoutButtonCaption": "SALIR",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Bolso Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interés del comienzo del año fiscal",
+ "shrineProductWhitneyBelt": "Cinturón",
+ "shrineProductGardenStrand": "Hebras para jardín",
+ "shrineProductStrutEarrings": "Aros Strut",
+ "shrineProductVarsitySocks": "Medias varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Boina gatsby",
+ "shrineProductShrugBag": "Bolso de hombro",
+ "shrineProductGiltDeskTrio": "Juego de tres mesas",
+ "shrineProductCopperWireRack": "Estante de metal color cobre",
+ "shrineProductSootheCeramicSet": "Juego de cerámica",
+ "shrineProductHurrahsTeaSet": "Juego de té de cerámica",
+ "shrineProductBlueStoneMug": "Taza de color azul piedra",
+ "shrineProductRainwaterTray": "Bandeja para recolectar agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de chambray",
+ "shrineProductSucculentPlanters": "Macetas de suculentas",
+ "shrineProductQuartetTable": "Mesa para cuatro",
+ "shrineProductKitchenQuattro": "Cocina quattro",
+ "shrineProductClaySweater": "Suéter color arcilla",
+ "shrineProductSeaTunic": "Vestido de verano",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de chambray",
+ "shrineProductSeabreezeSweater": "Suéter de hilo liviano",
+ "shrineProductGentryJacket": "Chaqueta estilo gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta con botones (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camiseta estilo surf and perf",
+ "shrineProductGingerScarf": "Pañuelo color tierra",
+ "shrineProductRamonaCrossover": "Mezcla de estilos Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa clásica de cuello blanco",
+ "shrineProductSunshirtDress": "Camisa larga de verano",
+ "rallyAccountDetailDataInterestRate": "Tasa de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros del hogar",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Próximo resumen",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Compras de comestibles",
+ "shrineProductCeriseScallopTee": "Camiseta de cuello cerrado color cereza",
+ "rallyBudgetCategoryClothing": "Indumentaria",
+ "rallySettingsManageAccounts": "Administrar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros de vehículo",
+ "rallySettingsTaxDocuments": "Documentos de impuestos",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Configuración para recibir resúmenes en formato digital",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Salir",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Debes",
+ "rallyBudgetLeft": "Restante",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "DESCRIPCIÓN GENERAL",
+ "shrineProductShoulderRollsTee": "Camiseta con mangas",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "CONFIGURACIÓN",
+ "rallyLoginLoginToRally": "Accede a Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Acceder",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "ACCEDER",
+ "rallyAlertsMessageHeadsUpShopping": "Atención, utilizaste un {percent} del presupuesto para compras de este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Esta semana, gastaste {amount} en restaurantes",
+ "rallyAlertsMessageATMFees": "Este mes, gastaste {amount} en tarifas de cajeros automáticos",
+ "rallyAlertsMessageCheckingAccount": "¡Buen trabajo! El saldo de la cuenta corriente es un {percent} mayor al mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODAS",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "INDUMENTARIA",
+ "shrineCategoryNameHome": "HOGAR",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuesto:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{SIN ARTÍCULOS}=1{1 ARTÍCULO}other{{quantity} ARTÍCULOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Envío:",
+ "shrineProductGreySlouchTank": "Camiseta gris holgada de tirantes",
+ "shrineProductStellaSunglasses": "Anteojos Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa de rayas finas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos comunicarnos contigo?",
+ "settingsTextDirectionLTR": "IZQ. a DER.",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Línea única de texto y números editables",
+ "demoTextFieldDescription": "Los campos de texto permiten que los usuarios escriban en una IU. Suelen aparecer en diálogos y formularios.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Antes de enviar, corrige los errores marcados con rojo.",
+ "demoTextFieldNameRequired": "El nombre es obligatorio.",
+ "demoTextFieldOnlyAlphabeticalChars": "Ingresa solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Ingresa un número de teléfono de EE.UU.",
+ "demoTextFieldEnterPassword": "Ingresa una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llaman otras personas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Cuéntanos sobre ti (p. ej., escribe sobre lo que haces o tus pasatiempos)",
+ "demoTextFieldKeepItShort": "Sé breve, ya que esta es una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Historia de vida",
+ "demoTextFieldSalary": "Sueldo",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Incluye hasta 8 caracteres.",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas encadenadas",
+ "demoBottomSheetAddLabel": "Agregar",
+ "demoBottomSheetModalDescription": "Una hoja modal inferior es una alternativa a un menú o diálogo que impide que el usuario interactúe con el resto de la app.",
+ "demoBottomSheetModalTitle": "Hoja modal inferior",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información que suplementa el contenido principal de la app. La hoja permanece visible, incluso si el usuario interactúa con otras partes de la app.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Definiciones de distintos estilos de tipografía que se encuentran en material design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página nueva es un diálogo modal de pantalla completa.",
+ "demoFlatButtonDescription": "Un botón plano que muestra una gota de tinta cuando se lo presiona, pero que no tiene sombra. Usa los botones planos en barras de herramientas, diálogos y también intercalados con el relleno.",
+ "demoBottomNavigationDescription": "Las barras de navegación inferiores muestran entre tres y cinco destinos en la parte inferior de la pantalla. Cada destino se representa con un ícono y una etiqueta de texto opcional. Cuando el usuario presiona un ícono de navegación inferior, se lo redirecciona al destino de navegación de nivel superior que está asociado con el ícono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "El asterisco (*) indica que es un campo obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "DER. a IZQ.",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuración",
+ "rallyDescription": "Una app personal de finanzas",
+ "aboutDialogDescription": "Para ver el código fuente de esta app, visita {value}.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favoritos",
+ "starterAppTooltipAdd": "Agregar",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio responsivo",
+ "starterAppTitle": "App de inicio",
+ "aboutFlutterSamplesRepo": "Repositorio de GitHub con muestras de Flutter",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Puedes usar los botones de activación para agrupar opciones relacionadas. Para destacar los grupos de botones de activación relacionados, el grupo debe compartir un contenedor común.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA OSCURO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "VERDE LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una app de venta minorista a la moda",
+ "craneDescription": "Una app personalizada para viajes",
+ "homeCategoryReference": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se pudo mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Ejemplo de código",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Envía comentarios",
+ "settingsAttribution": "Diseño de TOASTER (Londres)",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Planos, con relieve, con contorno, etc.",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve agregan profundidad a los diseños más que nada planos. Destacan las funciones en espacios amplios o con muchos elementos.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan cuando se los presiona. A menudo, se combinan con botones con relieve para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones de activación",
+ "colorsTeal": "VERDE AZULADO",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón de ícono circular que se coloca sobre el contenido para propiciar una acción principal en la aplicación.",
+ "demoDialogTitle": "Diálogos",
+ "demoDialogSubtitle": "Simple, de alerta y de pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título y una lista de acciones que son opcionales.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "Un diálogo simple le ofrece al usuario la posibilidad de elegir entre varias opciones. Un diálogo simple tiene un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones con estilo de iOS",
+ "demoCupertinoButtonsDescription": "Un botón con el estilo de iOS. Contiene texto o un ícono que aparece o desaparece poco a poco cuando se lo toca. De manera opcional, puede tener un fondo.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Diálogos de alerta con estilo de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título, un contenido y una lista de acciones que son opcionales. El título se muestra encima del contenido y las acciones debajo del contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acciones es un estilo específico de alerta que brinda al usuario un conjunto de dos o más opciones relacionadas con el contexto actual. Una hoja de acciones puede tener un título, un mensaje adicional y una lista de acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Son las constantes de colores y de muestras de color que representan la paleta de material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Seleccionaste: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres usar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las apps a determinar la ubicación. Esto implica el envío de datos de ubicación anónimos a Google, incluso cuando no se estén ejecutando apps.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Configurar cuenta para copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR DIÁLOGO",
+ "dialogFullscreenTitle": "Diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Una demostración de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Quieres permitir que \"Maps\" acceda a tu ubicación mientras usas la app?",
+ "cupertinoAlertLocationDescription": "Tu ubicación actual se mostrará en el mapa y se usará para obtener instrucciones sobre cómo llegar a lugares, resultados cercanos de la búsqueda y tiempos de viaje aproximados.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Selecciona tu postre favorito",
+ "cupertinoAlertDessertDescription": "Selecciona tu postre favorito de la siguiente lista. Se usará tu elección para personalizar la lista de restaurantes sugeridos en tu área.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastel de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSADO",
+ "colorsPurple": "PÚRPURA",
+ "colorsDeepPurple": "PÚRPURA OSCURO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "CELESTE",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Agregar cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "App de compras básica",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "App de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_CO.arb b/gallery/lib/l10n/intl_es_CO.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_CO.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palabras descriptivas para filtrar contenido.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos, como una entidad (persona, objeto o lugar), o texto conversacional de forma compacta.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre varias opciones mutuamente excluyentes. Cuando se selecciona una opción del control segmentado, se anula la selección de las otras.",
+ "chipTurnOnLights": "Encender luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Mediano",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicletas",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu potencial de deducción de impuestos. Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu potencial de deducción de impuestos. Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta, Estados Unidos",
+ "craneFormDestination": "Seleccionar destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VUELOS",
+ "craneSleep": "ALOJAMIENTO",
+ "craneEat": "GASTRONOMÍA",
+ "craneFlySubhead": "Explora vuelos por destino",
+ "craneSleepSubhead": "Explora propiedades por destino",
+ "craneEatSubhead": "Explora restaurantes por ubicación",
+ "craneFlyStops": "{numberOfStops,plural, =0{Directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen, Estados Unidos",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado de estilo iOS",
+ "craneSleep10": "El Cairo, Egipto",
+ "craneEat9": "Madrid, España",
+ "craneFly1": "Big Sur, Estados Unidos",
+ "craneEat7": "Nashville, Estados Unidos",
+ "craneEat6": "Seattle, Estados Unidos",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, Francia",
+ "craneEat3": "Portland, Estados Unidos",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estados Unidos",
+ "craneEat0": "Nápoles, Italia",
+ "craneSleep11": "Taipéi, Taiwán",
+ "craneSleep3": "La Habana, Cuba",
+ "shrineLogoutButtonCaption": "SALIR",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Bolso Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interés del comienzo del año fiscal",
+ "shrineProductWhitneyBelt": "Cinturón",
+ "shrineProductGardenStrand": "Hebras para jardín",
+ "shrineProductStrutEarrings": "Aros Strut",
+ "shrineProductVarsitySocks": "Medias varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Boina gatsby",
+ "shrineProductShrugBag": "Bolso de hombro",
+ "shrineProductGiltDeskTrio": "Juego de tres mesas",
+ "shrineProductCopperWireRack": "Estante de metal color cobre",
+ "shrineProductSootheCeramicSet": "Juego de cerámica",
+ "shrineProductHurrahsTeaSet": "Juego de té de cerámica",
+ "shrineProductBlueStoneMug": "Taza de color azul piedra",
+ "shrineProductRainwaterTray": "Bandeja para recolectar agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de chambray",
+ "shrineProductSucculentPlanters": "Macetas de suculentas",
+ "shrineProductQuartetTable": "Mesa para cuatro",
+ "shrineProductKitchenQuattro": "Cocina quattro",
+ "shrineProductClaySweater": "Suéter color arcilla",
+ "shrineProductSeaTunic": "Vestido de verano",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de chambray",
+ "shrineProductSeabreezeSweater": "Suéter de hilo liviano",
+ "shrineProductGentryJacket": "Chaqueta estilo gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta con botones (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camiseta estilo surf and perf",
+ "shrineProductGingerScarf": "Pañuelo color tierra",
+ "shrineProductRamonaCrossover": "Mezcla de estilos Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa clásica de cuello blanco",
+ "shrineProductSunshirtDress": "Camisa larga de verano",
+ "rallyAccountDetailDataInterestRate": "Tasa de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros del hogar",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Próximo resumen",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Compras de comestibles",
+ "shrineProductCeriseScallopTee": "Camiseta de cuello cerrado color cereza",
+ "rallyBudgetCategoryClothing": "Indumentaria",
+ "rallySettingsManageAccounts": "Administrar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros de vehículo",
+ "rallySettingsTaxDocuments": "Documentos de impuestos",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Configuración para recibir resúmenes en formato digital",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Salir",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Debes",
+ "rallyBudgetLeft": "Restante",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "DESCRIPCIÓN GENERAL",
+ "shrineProductShoulderRollsTee": "Camiseta con mangas",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "CONFIGURACIÓN",
+ "rallyLoginLoginToRally": "Accede a Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Acceder",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "ACCEDER",
+ "rallyAlertsMessageHeadsUpShopping": "Atención, utilizaste un {percent} del presupuesto para compras de este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Esta semana, gastaste {amount} en restaurantes",
+ "rallyAlertsMessageATMFees": "Este mes, gastaste {amount} en tarifas de cajeros automáticos",
+ "rallyAlertsMessageCheckingAccount": "¡Buen trabajo! El saldo de la cuenta corriente es un {percent} mayor al mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODAS",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "INDUMENTARIA",
+ "shrineCategoryNameHome": "HOGAR",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuesto:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{SIN ARTÍCULOS}=1{1 ARTÍCULO}other{{quantity} ARTÍCULOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Envío:",
+ "shrineProductGreySlouchTank": "Camiseta gris holgada de tirantes",
+ "shrineProductStellaSunglasses": "Anteojos Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa de rayas finas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos comunicarnos contigo?",
+ "settingsTextDirectionLTR": "IZQ. a DER.",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Línea única de texto y números editables",
+ "demoTextFieldDescription": "Los campos de texto permiten que los usuarios escriban en una IU. Suelen aparecer en diálogos y formularios.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Antes de enviar, corrige los errores marcados con rojo.",
+ "demoTextFieldNameRequired": "El nombre es obligatorio.",
+ "demoTextFieldOnlyAlphabeticalChars": "Ingresa solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Ingresa un número de teléfono de EE.UU.",
+ "demoTextFieldEnterPassword": "Ingresa una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llaman otras personas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Cuéntanos sobre ti (p. ej., escribe sobre lo que haces o tus pasatiempos)",
+ "demoTextFieldKeepItShort": "Sé breve, ya que esta es una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Historia de vida",
+ "demoTextFieldSalary": "Sueldo",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Incluye hasta 8 caracteres.",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas encadenadas",
+ "demoBottomSheetAddLabel": "Agregar",
+ "demoBottomSheetModalDescription": "Una hoja modal inferior es una alternativa a un menú o diálogo que impide que el usuario interactúe con el resto de la app.",
+ "demoBottomSheetModalTitle": "Hoja modal inferior",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información que suplementa el contenido principal de la app. La hoja permanece visible, incluso si el usuario interactúa con otras partes de la app.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Definiciones de distintos estilos de tipografía que se encuentran en material design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página nueva es un diálogo modal de pantalla completa.",
+ "demoFlatButtonDescription": "Un botón plano que muestra una gota de tinta cuando se lo presiona, pero que no tiene sombra. Usa los botones planos en barras de herramientas, diálogos y también intercalados con el relleno.",
+ "demoBottomNavigationDescription": "Las barras de navegación inferiores muestran entre tres y cinco destinos en la parte inferior de la pantalla. Cada destino se representa con un ícono y una etiqueta de texto opcional. Cuando el usuario presiona un ícono de navegación inferior, se lo redirecciona al destino de navegación de nivel superior que está asociado con el ícono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "El asterisco (*) indica que es un campo obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "DER. a IZQ.",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuración",
+ "rallyDescription": "Una app personal de finanzas",
+ "aboutDialogDescription": "Para ver el código fuente de esta app, visita {value}.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favoritos",
+ "starterAppTooltipAdd": "Agregar",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio responsivo",
+ "starterAppTitle": "App de inicio",
+ "aboutFlutterSamplesRepo": "Repositorio de GitHub con muestras de Flutter",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Puedes usar los botones de activación para agrupar opciones relacionadas. Para destacar los grupos de botones de activación relacionados, el grupo debe compartir un contenedor común.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA OSCURO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "VERDE LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una app de venta minorista a la moda",
+ "craneDescription": "Una app personalizada para viajes",
+ "homeCategoryReference": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se pudo mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Ejemplo de código",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Envía comentarios",
+ "settingsAttribution": "Diseño de TOASTER (Londres)",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Planos, con relieve, con contorno, etc.",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve agregan profundidad a los diseños más que nada planos. Destacan las funciones en espacios amplios o con muchos elementos.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan cuando se los presiona. A menudo, se combinan con botones con relieve para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones de activación",
+ "colorsTeal": "VERDE AZULADO",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón de ícono circular que se coloca sobre el contenido para propiciar una acción principal en la aplicación.",
+ "demoDialogTitle": "Diálogos",
+ "demoDialogSubtitle": "Simple, de alerta y de pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título y una lista de acciones que son opcionales.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "Un diálogo simple le ofrece al usuario la posibilidad de elegir entre varias opciones. Un diálogo simple tiene un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones con estilo de iOS",
+ "demoCupertinoButtonsDescription": "Un botón con el estilo de iOS. Contiene texto o un ícono que aparece o desaparece poco a poco cuando se lo toca. De manera opcional, puede tener un fondo.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Diálogos de alerta con estilo de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título, un contenido y una lista de acciones que son opcionales. El título se muestra encima del contenido y las acciones debajo del contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acciones es un estilo específico de alerta que brinda al usuario un conjunto de dos o más opciones relacionadas con el contexto actual. Una hoja de acciones puede tener un título, un mensaje adicional y una lista de acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Son las constantes de colores y de muestras de color que representan la paleta de material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Seleccionaste: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres usar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las apps a determinar la ubicación. Esto implica el envío de datos de ubicación anónimos a Google, incluso cuando no se estén ejecutando apps.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Configurar cuenta para copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR DIÁLOGO",
+ "dialogFullscreenTitle": "Diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Una demostración de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Quieres permitir que \"Maps\" acceda a tu ubicación mientras usas la app?",
+ "cupertinoAlertLocationDescription": "Tu ubicación actual se mostrará en el mapa y se usará para obtener instrucciones sobre cómo llegar a lugares, resultados cercanos de la búsqueda y tiempos de viaje aproximados.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Selecciona tu postre favorito",
+ "cupertinoAlertDessertDescription": "Selecciona tu postre favorito de la siguiente lista. Se usará tu elección para personalizar la lista de restaurantes sugeridos en tu área.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastel de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSADO",
+ "colorsPurple": "PÚRPURA",
+ "colorsDeepPurple": "PÚRPURA OSCURO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "CELESTE",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Agregar cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "App de compras básica",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "App de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_CR.arb b/gallery/lib/l10n/intl_es_CR.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_CR.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palabras descriptivas para filtrar contenido.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos, como una entidad (persona, objeto o lugar), o texto conversacional de forma compacta.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre varias opciones mutuamente excluyentes. Cuando se selecciona una opción del control segmentado, se anula la selección de las otras.",
+ "chipTurnOnLights": "Encender luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Mediano",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicletas",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu potencial de deducción de impuestos. Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu potencial de deducción de impuestos. Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta, Estados Unidos",
+ "craneFormDestination": "Seleccionar destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VUELOS",
+ "craneSleep": "ALOJAMIENTO",
+ "craneEat": "GASTRONOMÍA",
+ "craneFlySubhead": "Explora vuelos por destino",
+ "craneSleepSubhead": "Explora propiedades por destino",
+ "craneEatSubhead": "Explora restaurantes por ubicación",
+ "craneFlyStops": "{numberOfStops,plural, =0{Directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen, Estados Unidos",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado de estilo iOS",
+ "craneSleep10": "El Cairo, Egipto",
+ "craneEat9": "Madrid, España",
+ "craneFly1": "Big Sur, Estados Unidos",
+ "craneEat7": "Nashville, Estados Unidos",
+ "craneEat6": "Seattle, Estados Unidos",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, Francia",
+ "craneEat3": "Portland, Estados Unidos",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estados Unidos",
+ "craneEat0": "Nápoles, Italia",
+ "craneSleep11": "Taipéi, Taiwán",
+ "craneSleep3": "La Habana, Cuba",
+ "shrineLogoutButtonCaption": "SALIR",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Bolso Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interés del comienzo del año fiscal",
+ "shrineProductWhitneyBelt": "Cinturón",
+ "shrineProductGardenStrand": "Hebras para jardín",
+ "shrineProductStrutEarrings": "Aros Strut",
+ "shrineProductVarsitySocks": "Medias varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Boina gatsby",
+ "shrineProductShrugBag": "Bolso de hombro",
+ "shrineProductGiltDeskTrio": "Juego de tres mesas",
+ "shrineProductCopperWireRack": "Estante de metal color cobre",
+ "shrineProductSootheCeramicSet": "Juego de cerámica",
+ "shrineProductHurrahsTeaSet": "Juego de té de cerámica",
+ "shrineProductBlueStoneMug": "Taza de color azul piedra",
+ "shrineProductRainwaterTray": "Bandeja para recolectar agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de chambray",
+ "shrineProductSucculentPlanters": "Macetas de suculentas",
+ "shrineProductQuartetTable": "Mesa para cuatro",
+ "shrineProductKitchenQuattro": "Cocina quattro",
+ "shrineProductClaySweater": "Suéter color arcilla",
+ "shrineProductSeaTunic": "Vestido de verano",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de chambray",
+ "shrineProductSeabreezeSweater": "Suéter de hilo liviano",
+ "shrineProductGentryJacket": "Chaqueta estilo gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta con botones (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camiseta estilo surf and perf",
+ "shrineProductGingerScarf": "Pañuelo color tierra",
+ "shrineProductRamonaCrossover": "Mezcla de estilos Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa clásica de cuello blanco",
+ "shrineProductSunshirtDress": "Camisa larga de verano",
+ "rallyAccountDetailDataInterestRate": "Tasa de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros del hogar",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Próximo resumen",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Compras de comestibles",
+ "shrineProductCeriseScallopTee": "Camiseta de cuello cerrado color cereza",
+ "rallyBudgetCategoryClothing": "Indumentaria",
+ "rallySettingsManageAccounts": "Administrar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros de vehículo",
+ "rallySettingsTaxDocuments": "Documentos de impuestos",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Configuración para recibir resúmenes en formato digital",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Salir",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Debes",
+ "rallyBudgetLeft": "Restante",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "DESCRIPCIÓN GENERAL",
+ "shrineProductShoulderRollsTee": "Camiseta con mangas",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "CONFIGURACIÓN",
+ "rallyLoginLoginToRally": "Accede a Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Acceder",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "ACCEDER",
+ "rallyAlertsMessageHeadsUpShopping": "Atención, utilizaste un {percent} del presupuesto para compras de este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Esta semana, gastaste {amount} en restaurantes",
+ "rallyAlertsMessageATMFees": "Este mes, gastaste {amount} en tarifas de cajeros automáticos",
+ "rallyAlertsMessageCheckingAccount": "¡Buen trabajo! El saldo de la cuenta corriente es un {percent} mayor al mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODAS",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "INDUMENTARIA",
+ "shrineCategoryNameHome": "HOGAR",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuesto:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{SIN ARTÍCULOS}=1{1 ARTÍCULO}other{{quantity} ARTÍCULOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Envío:",
+ "shrineProductGreySlouchTank": "Camiseta gris holgada de tirantes",
+ "shrineProductStellaSunglasses": "Anteojos Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa de rayas finas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos comunicarnos contigo?",
+ "settingsTextDirectionLTR": "IZQ. a DER.",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Línea única de texto y números editables",
+ "demoTextFieldDescription": "Los campos de texto permiten que los usuarios escriban en una IU. Suelen aparecer en diálogos y formularios.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Antes de enviar, corrige los errores marcados con rojo.",
+ "demoTextFieldNameRequired": "El nombre es obligatorio.",
+ "demoTextFieldOnlyAlphabeticalChars": "Ingresa solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Ingresa un número de teléfono de EE.UU.",
+ "demoTextFieldEnterPassword": "Ingresa una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llaman otras personas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Cuéntanos sobre ti (p. ej., escribe sobre lo que haces o tus pasatiempos)",
+ "demoTextFieldKeepItShort": "Sé breve, ya que esta es una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Historia de vida",
+ "demoTextFieldSalary": "Sueldo",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Incluye hasta 8 caracteres.",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas encadenadas",
+ "demoBottomSheetAddLabel": "Agregar",
+ "demoBottomSheetModalDescription": "Una hoja modal inferior es una alternativa a un menú o diálogo que impide que el usuario interactúe con el resto de la app.",
+ "demoBottomSheetModalTitle": "Hoja modal inferior",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información que suplementa el contenido principal de la app. La hoja permanece visible, incluso si el usuario interactúa con otras partes de la app.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Definiciones de distintos estilos de tipografía que se encuentran en material design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página nueva es un diálogo modal de pantalla completa.",
+ "demoFlatButtonDescription": "Un botón plano que muestra una gota de tinta cuando se lo presiona, pero que no tiene sombra. Usa los botones planos en barras de herramientas, diálogos y también intercalados con el relleno.",
+ "demoBottomNavigationDescription": "Las barras de navegación inferiores muestran entre tres y cinco destinos en la parte inferior de la pantalla. Cada destino se representa con un ícono y una etiqueta de texto opcional. Cuando el usuario presiona un ícono de navegación inferior, se lo redirecciona al destino de navegación de nivel superior que está asociado con el ícono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "El asterisco (*) indica que es un campo obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "DER. a IZQ.",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuración",
+ "rallyDescription": "Una app personal de finanzas",
+ "aboutDialogDescription": "Para ver el código fuente de esta app, visita {value}.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favoritos",
+ "starterAppTooltipAdd": "Agregar",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio responsivo",
+ "starterAppTitle": "App de inicio",
+ "aboutFlutterSamplesRepo": "Repositorio de GitHub con muestras de Flutter",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Puedes usar los botones de activación para agrupar opciones relacionadas. Para destacar los grupos de botones de activación relacionados, el grupo debe compartir un contenedor común.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA OSCURO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "VERDE LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una app de venta minorista a la moda",
+ "craneDescription": "Una app personalizada para viajes",
+ "homeCategoryReference": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se pudo mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Ejemplo de código",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Envía comentarios",
+ "settingsAttribution": "Diseño de TOASTER (Londres)",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Planos, con relieve, con contorno, etc.",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve agregan profundidad a los diseños más que nada planos. Destacan las funciones en espacios amplios o con muchos elementos.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan cuando se los presiona. A menudo, se combinan con botones con relieve para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones de activación",
+ "colorsTeal": "VERDE AZULADO",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón de ícono circular que se coloca sobre el contenido para propiciar una acción principal en la aplicación.",
+ "demoDialogTitle": "Diálogos",
+ "demoDialogSubtitle": "Simple, de alerta y de pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título y una lista de acciones que son opcionales.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "Un diálogo simple le ofrece al usuario la posibilidad de elegir entre varias opciones. Un diálogo simple tiene un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones con estilo de iOS",
+ "demoCupertinoButtonsDescription": "Un botón con el estilo de iOS. Contiene texto o un ícono que aparece o desaparece poco a poco cuando se lo toca. De manera opcional, puede tener un fondo.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Diálogos de alerta con estilo de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título, un contenido y una lista de acciones que son opcionales. El título se muestra encima del contenido y las acciones debajo del contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acciones es un estilo específico de alerta que brinda al usuario un conjunto de dos o más opciones relacionadas con el contexto actual. Una hoja de acciones puede tener un título, un mensaje adicional y una lista de acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Son las constantes de colores y de muestras de color que representan la paleta de material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Seleccionaste: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres usar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las apps a determinar la ubicación. Esto implica el envío de datos de ubicación anónimos a Google, incluso cuando no se estén ejecutando apps.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Configurar cuenta para copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR DIÁLOGO",
+ "dialogFullscreenTitle": "Diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Una demostración de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Quieres permitir que \"Maps\" acceda a tu ubicación mientras usas la app?",
+ "cupertinoAlertLocationDescription": "Tu ubicación actual se mostrará en el mapa y se usará para obtener instrucciones sobre cómo llegar a lugares, resultados cercanos de la búsqueda y tiempos de viaje aproximados.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Selecciona tu postre favorito",
+ "cupertinoAlertDessertDescription": "Selecciona tu postre favorito de la siguiente lista. Se usará tu elección para personalizar la lista de restaurantes sugeridos en tu área.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastel de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSADO",
+ "colorsPurple": "PÚRPURA",
+ "colorsDeepPurple": "PÚRPURA OSCURO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "CELESTE",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Agregar cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "App de compras básica",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "App de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_DO.arb b/gallery/lib/l10n/intl_es_DO.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_DO.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palabras descriptivas para filtrar contenido.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos, como una entidad (persona, objeto o lugar), o texto conversacional de forma compacta.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre varias opciones mutuamente excluyentes. Cuando se selecciona una opción del control segmentado, se anula la selección de las otras.",
+ "chipTurnOnLights": "Encender luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Mediano",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicletas",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu potencial de deducción de impuestos. Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu potencial de deducción de impuestos. Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta, Estados Unidos",
+ "craneFormDestination": "Seleccionar destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VUELOS",
+ "craneSleep": "ALOJAMIENTO",
+ "craneEat": "GASTRONOMÍA",
+ "craneFlySubhead": "Explora vuelos por destino",
+ "craneSleepSubhead": "Explora propiedades por destino",
+ "craneEatSubhead": "Explora restaurantes por ubicación",
+ "craneFlyStops": "{numberOfStops,plural, =0{Directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen, Estados Unidos",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado de estilo iOS",
+ "craneSleep10": "El Cairo, Egipto",
+ "craneEat9": "Madrid, España",
+ "craneFly1": "Big Sur, Estados Unidos",
+ "craneEat7": "Nashville, Estados Unidos",
+ "craneEat6": "Seattle, Estados Unidos",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, Francia",
+ "craneEat3": "Portland, Estados Unidos",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estados Unidos",
+ "craneEat0": "Nápoles, Italia",
+ "craneSleep11": "Taipéi, Taiwán",
+ "craneSleep3": "La Habana, Cuba",
+ "shrineLogoutButtonCaption": "SALIR",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Bolso Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interés del comienzo del año fiscal",
+ "shrineProductWhitneyBelt": "Cinturón",
+ "shrineProductGardenStrand": "Hebras para jardín",
+ "shrineProductStrutEarrings": "Aros Strut",
+ "shrineProductVarsitySocks": "Medias varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Boina gatsby",
+ "shrineProductShrugBag": "Bolso de hombro",
+ "shrineProductGiltDeskTrio": "Juego de tres mesas",
+ "shrineProductCopperWireRack": "Estante de metal color cobre",
+ "shrineProductSootheCeramicSet": "Juego de cerámica",
+ "shrineProductHurrahsTeaSet": "Juego de té de cerámica",
+ "shrineProductBlueStoneMug": "Taza de color azul piedra",
+ "shrineProductRainwaterTray": "Bandeja para recolectar agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de chambray",
+ "shrineProductSucculentPlanters": "Macetas de suculentas",
+ "shrineProductQuartetTable": "Mesa para cuatro",
+ "shrineProductKitchenQuattro": "Cocina quattro",
+ "shrineProductClaySweater": "Suéter color arcilla",
+ "shrineProductSeaTunic": "Vestido de verano",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de chambray",
+ "shrineProductSeabreezeSweater": "Suéter de hilo liviano",
+ "shrineProductGentryJacket": "Chaqueta estilo gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta con botones (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camiseta estilo surf and perf",
+ "shrineProductGingerScarf": "Pañuelo color tierra",
+ "shrineProductRamonaCrossover": "Mezcla de estilos Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa clásica de cuello blanco",
+ "shrineProductSunshirtDress": "Camisa larga de verano",
+ "rallyAccountDetailDataInterestRate": "Tasa de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros del hogar",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Próximo resumen",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Compras de comestibles",
+ "shrineProductCeriseScallopTee": "Camiseta de cuello cerrado color cereza",
+ "rallyBudgetCategoryClothing": "Indumentaria",
+ "rallySettingsManageAccounts": "Administrar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros de vehículo",
+ "rallySettingsTaxDocuments": "Documentos de impuestos",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Configuración para recibir resúmenes en formato digital",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Salir",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Debes",
+ "rallyBudgetLeft": "Restante",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "DESCRIPCIÓN GENERAL",
+ "shrineProductShoulderRollsTee": "Camiseta con mangas",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "CONFIGURACIÓN",
+ "rallyLoginLoginToRally": "Accede a Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Acceder",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "ACCEDER",
+ "rallyAlertsMessageHeadsUpShopping": "Atención, utilizaste un {percent} del presupuesto para compras de este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Esta semana, gastaste {amount} en restaurantes",
+ "rallyAlertsMessageATMFees": "Este mes, gastaste {amount} en tarifas de cajeros automáticos",
+ "rallyAlertsMessageCheckingAccount": "¡Buen trabajo! El saldo de la cuenta corriente es un {percent} mayor al mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODAS",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "INDUMENTARIA",
+ "shrineCategoryNameHome": "HOGAR",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuesto:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{SIN ARTÍCULOS}=1{1 ARTÍCULO}other{{quantity} ARTÍCULOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Envío:",
+ "shrineProductGreySlouchTank": "Camiseta gris holgada de tirantes",
+ "shrineProductStellaSunglasses": "Anteojos Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa de rayas finas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos comunicarnos contigo?",
+ "settingsTextDirectionLTR": "IZQ. a DER.",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Línea única de texto y números editables",
+ "demoTextFieldDescription": "Los campos de texto permiten que los usuarios escriban en una IU. Suelen aparecer en diálogos y formularios.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Antes de enviar, corrige los errores marcados con rojo.",
+ "demoTextFieldNameRequired": "El nombre es obligatorio.",
+ "demoTextFieldOnlyAlphabeticalChars": "Ingresa solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Ingresa un número de teléfono de EE.UU.",
+ "demoTextFieldEnterPassword": "Ingresa una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llaman otras personas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Cuéntanos sobre ti (p. ej., escribe sobre lo que haces o tus pasatiempos)",
+ "demoTextFieldKeepItShort": "Sé breve, ya que esta es una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Historia de vida",
+ "demoTextFieldSalary": "Sueldo",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Incluye hasta 8 caracteres.",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas encadenadas",
+ "demoBottomSheetAddLabel": "Agregar",
+ "demoBottomSheetModalDescription": "Una hoja modal inferior es una alternativa a un menú o diálogo que impide que el usuario interactúe con el resto de la app.",
+ "demoBottomSheetModalTitle": "Hoja modal inferior",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información que suplementa el contenido principal de la app. La hoja permanece visible, incluso si el usuario interactúa con otras partes de la app.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Definiciones de distintos estilos de tipografía que se encuentran en material design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página nueva es un diálogo modal de pantalla completa.",
+ "demoFlatButtonDescription": "Un botón plano que muestra una gota de tinta cuando se lo presiona, pero que no tiene sombra. Usa los botones planos en barras de herramientas, diálogos y también intercalados con el relleno.",
+ "demoBottomNavigationDescription": "Las barras de navegación inferiores muestran entre tres y cinco destinos en la parte inferior de la pantalla. Cada destino se representa con un ícono y una etiqueta de texto opcional. Cuando el usuario presiona un ícono de navegación inferior, se lo redirecciona al destino de navegación de nivel superior que está asociado con el ícono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "El asterisco (*) indica que es un campo obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "DER. a IZQ.",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuración",
+ "rallyDescription": "Una app personal de finanzas",
+ "aboutDialogDescription": "Para ver el código fuente de esta app, visita {value}.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favoritos",
+ "starterAppTooltipAdd": "Agregar",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio responsivo",
+ "starterAppTitle": "App de inicio",
+ "aboutFlutterSamplesRepo": "Repositorio de GitHub con muestras de Flutter",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Puedes usar los botones de activación para agrupar opciones relacionadas. Para destacar los grupos de botones de activación relacionados, el grupo debe compartir un contenedor común.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA OSCURO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "VERDE LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una app de venta minorista a la moda",
+ "craneDescription": "Una app personalizada para viajes",
+ "homeCategoryReference": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se pudo mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Ejemplo de código",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Envía comentarios",
+ "settingsAttribution": "Diseño de TOASTER (Londres)",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Planos, con relieve, con contorno, etc.",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve agregan profundidad a los diseños más que nada planos. Destacan las funciones en espacios amplios o con muchos elementos.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan cuando se los presiona. A menudo, se combinan con botones con relieve para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones de activación",
+ "colorsTeal": "VERDE AZULADO",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón de ícono circular que se coloca sobre el contenido para propiciar una acción principal en la aplicación.",
+ "demoDialogTitle": "Diálogos",
+ "demoDialogSubtitle": "Simple, de alerta y de pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título y una lista de acciones que son opcionales.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "Un diálogo simple le ofrece al usuario la posibilidad de elegir entre varias opciones. Un diálogo simple tiene un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones con estilo de iOS",
+ "demoCupertinoButtonsDescription": "Un botón con el estilo de iOS. Contiene texto o un ícono que aparece o desaparece poco a poco cuando se lo toca. De manera opcional, puede tener un fondo.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Diálogos de alerta con estilo de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título, un contenido y una lista de acciones que son opcionales. El título se muestra encima del contenido y las acciones debajo del contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acciones es un estilo específico de alerta que brinda al usuario un conjunto de dos o más opciones relacionadas con el contexto actual. Una hoja de acciones puede tener un título, un mensaje adicional y una lista de acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Son las constantes de colores y de muestras de color que representan la paleta de material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Seleccionaste: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres usar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las apps a determinar la ubicación. Esto implica el envío de datos de ubicación anónimos a Google, incluso cuando no se estén ejecutando apps.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Configurar cuenta para copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR DIÁLOGO",
+ "dialogFullscreenTitle": "Diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Una demostración de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Quieres permitir que \"Maps\" acceda a tu ubicación mientras usas la app?",
+ "cupertinoAlertLocationDescription": "Tu ubicación actual se mostrará en el mapa y se usará para obtener instrucciones sobre cómo llegar a lugares, resultados cercanos de la búsqueda y tiempos de viaje aproximados.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Selecciona tu postre favorito",
+ "cupertinoAlertDessertDescription": "Selecciona tu postre favorito de la siguiente lista. Se usará tu elección para personalizar la lista de restaurantes sugeridos en tu área.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastel de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSADO",
+ "colorsPurple": "PÚRPURA",
+ "colorsDeepPurple": "PÚRPURA OSCURO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "CELESTE",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Agregar cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "App de compras básica",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "App de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_EC.arb b/gallery/lib/l10n/intl_es_EC.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_EC.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palabras descriptivas para filtrar contenido.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos, como una entidad (persona, objeto o lugar), o texto conversacional de forma compacta.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre varias opciones mutuamente excluyentes. Cuando se selecciona una opción del control segmentado, se anula la selección de las otras.",
+ "chipTurnOnLights": "Encender luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Mediano",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicletas",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu potencial de deducción de impuestos. Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu potencial de deducción de impuestos. Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta, Estados Unidos",
+ "craneFormDestination": "Seleccionar destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VUELOS",
+ "craneSleep": "ALOJAMIENTO",
+ "craneEat": "GASTRONOMÍA",
+ "craneFlySubhead": "Explora vuelos por destino",
+ "craneSleepSubhead": "Explora propiedades por destino",
+ "craneEatSubhead": "Explora restaurantes por ubicación",
+ "craneFlyStops": "{numberOfStops,plural, =0{Directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen, Estados Unidos",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado de estilo iOS",
+ "craneSleep10": "El Cairo, Egipto",
+ "craneEat9": "Madrid, España",
+ "craneFly1": "Big Sur, Estados Unidos",
+ "craneEat7": "Nashville, Estados Unidos",
+ "craneEat6": "Seattle, Estados Unidos",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, Francia",
+ "craneEat3": "Portland, Estados Unidos",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estados Unidos",
+ "craneEat0": "Nápoles, Italia",
+ "craneSleep11": "Taipéi, Taiwán",
+ "craneSleep3": "La Habana, Cuba",
+ "shrineLogoutButtonCaption": "SALIR",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Bolso Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interés del comienzo del año fiscal",
+ "shrineProductWhitneyBelt": "Cinturón",
+ "shrineProductGardenStrand": "Hebras para jardín",
+ "shrineProductStrutEarrings": "Aros Strut",
+ "shrineProductVarsitySocks": "Medias varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Boina gatsby",
+ "shrineProductShrugBag": "Bolso de hombro",
+ "shrineProductGiltDeskTrio": "Juego de tres mesas",
+ "shrineProductCopperWireRack": "Estante de metal color cobre",
+ "shrineProductSootheCeramicSet": "Juego de cerámica",
+ "shrineProductHurrahsTeaSet": "Juego de té de cerámica",
+ "shrineProductBlueStoneMug": "Taza de color azul piedra",
+ "shrineProductRainwaterTray": "Bandeja para recolectar agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de chambray",
+ "shrineProductSucculentPlanters": "Macetas de suculentas",
+ "shrineProductQuartetTable": "Mesa para cuatro",
+ "shrineProductKitchenQuattro": "Cocina quattro",
+ "shrineProductClaySweater": "Suéter color arcilla",
+ "shrineProductSeaTunic": "Vestido de verano",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de chambray",
+ "shrineProductSeabreezeSweater": "Suéter de hilo liviano",
+ "shrineProductGentryJacket": "Chaqueta estilo gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta con botones (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camiseta estilo surf and perf",
+ "shrineProductGingerScarf": "Pañuelo color tierra",
+ "shrineProductRamonaCrossover": "Mezcla de estilos Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa clásica de cuello blanco",
+ "shrineProductSunshirtDress": "Camisa larga de verano",
+ "rallyAccountDetailDataInterestRate": "Tasa de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros del hogar",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Próximo resumen",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Compras de comestibles",
+ "shrineProductCeriseScallopTee": "Camiseta de cuello cerrado color cereza",
+ "rallyBudgetCategoryClothing": "Indumentaria",
+ "rallySettingsManageAccounts": "Administrar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros de vehículo",
+ "rallySettingsTaxDocuments": "Documentos de impuestos",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Configuración para recibir resúmenes en formato digital",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Salir",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Debes",
+ "rallyBudgetLeft": "Restante",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "DESCRIPCIÓN GENERAL",
+ "shrineProductShoulderRollsTee": "Camiseta con mangas",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "CONFIGURACIÓN",
+ "rallyLoginLoginToRally": "Accede a Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Acceder",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "ACCEDER",
+ "rallyAlertsMessageHeadsUpShopping": "Atención, utilizaste un {percent} del presupuesto para compras de este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Esta semana, gastaste {amount} en restaurantes",
+ "rallyAlertsMessageATMFees": "Este mes, gastaste {amount} en tarifas de cajeros automáticos",
+ "rallyAlertsMessageCheckingAccount": "¡Buen trabajo! El saldo de la cuenta corriente es un {percent} mayor al mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODAS",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "INDUMENTARIA",
+ "shrineCategoryNameHome": "HOGAR",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuesto:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{SIN ARTÍCULOS}=1{1 ARTÍCULO}other{{quantity} ARTÍCULOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Envío:",
+ "shrineProductGreySlouchTank": "Camiseta gris holgada de tirantes",
+ "shrineProductStellaSunglasses": "Anteojos Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa de rayas finas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos comunicarnos contigo?",
+ "settingsTextDirectionLTR": "IZQ. a DER.",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Línea única de texto y números editables",
+ "demoTextFieldDescription": "Los campos de texto permiten que los usuarios escriban en una IU. Suelen aparecer en diálogos y formularios.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Antes de enviar, corrige los errores marcados con rojo.",
+ "demoTextFieldNameRequired": "El nombre es obligatorio.",
+ "demoTextFieldOnlyAlphabeticalChars": "Ingresa solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Ingresa un número de teléfono de EE.UU.",
+ "demoTextFieldEnterPassword": "Ingresa una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llaman otras personas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Cuéntanos sobre ti (p. ej., escribe sobre lo que haces o tus pasatiempos)",
+ "demoTextFieldKeepItShort": "Sé breve, ya que esta es una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Historia de vida",
+ "demoTextFieldSalary": "Sueldo",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Incluye hasta 8 caracteres.",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas encadenadas",
+ "demoBottomSheetAddLabel": "Agregar",
+ "demoBottomSheetModalDescription": "Una hoja modal inferior es una alternativa a un menú o diálogo que impide que el usuario interactúe con el resto de la app.",
+ "demoBottomSheetModalTitle": "Hoja modal inferior",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información que suplementa el contenido principal de la app. La hoja permanece visible, incluso si el usuario interactúa con otras partes de la app.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Definiciones de distintos estilos de tipografía que se encuentran en material design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página nueva es un diálogo modal de pantalla completa.",
+ "demoFlatButtonDescription": "Un botón plano que muestra una gota de tinta cuando se lo presiona, pero que no tiene sombra. Usa los botones planos en barras de herramientas, diálogos y también intercalados con el relleno.",
+ "demoBottomNavigationDescription": "Las barras de navegación inferiores muestran entre tres y cinco destinos en la parte inferior de la pantalla. Cada destino se representa con un ícono y una etiqueta de texto opcional. Cuando el usuario presiona un ícono de navegación inferior, se lo redirecciona al destino de navegación de nivel superior que está asociado con el ícono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "El asterisco (*) indica que es un campo obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "DER. a IZQ.",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuración",
+ "rallyDescription": "Una app personal de finanzas",
+ "aboutDialogDescription": "Para ver el código fuente de esta app, visita {value}.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favoritos",
+ "starterAppTooltipAdd": "Agregar",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio responsivo",
+ "starterAppTitle": "App de inicio",
+ "aboutFlutterSamplesRepo": "Repositorio de GitHub con muestras de Flutter",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Puedes usar los botones de activación para agrupar opciones relacionadas. Para destacar los grupos de botones de activación relacionados, el grupo debe compartir un contenedor común.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA OSCURO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "VERDE LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una app de venta minorista a la moda",
+ "craneDescription": "Una app personalizada para viajes",
+ "homeCategoryReference": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se pudo mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Ejemplo de código",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Envía comentarios",
+ "settingsAttribution": "Diseño de TOASTER (Londres)",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Planos, con relieve, con contorno, etc.",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve agregan profundidad a los diseños más que nada planos. Destacan las funciones en espacios amplios o con muchos elementos.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan cuando se los presiona. A menudo, se combinan con botones con relieve para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones de activación",
+ "colorsTeal": "VERDE AZULADO",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón de ícono circular que se coloca sobre el contenido para propiciar una acción principal en la aplicación.",
+ "demoDialogTitle": "Diálogos",
+ "demoDialogSubtitle": "Simple, de alerta y de pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título y una lista de acciones que son opcionales.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "Un diálogo simple le ofrece al usuario la posibilidad de elegir entre varias opciones. Un diálogo simple tiene un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones con estilo de iOS",
+ "demoCupertinoButtonsDescription": "Un botón con el estilo de iOS. Contiene texto o un ícono que aparece o desaparece poco a poco cuando se lo toca. De manera opcional, puede tener un fondo.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Diálogos de alerta con estilo de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título, un contenido y una lista de acciones que son opcionales. El título se muestra encima del contenido y las acciones debajo del contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acciones es un estilo específico de alerta que brinda al usuario un conjunto de dos o más opciones relacionadas con el contexto actual. Una hoja de acciones puede tener un título, un mensaje adicional y una lista de acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Son las constantes de colores y de muestras de color que representan la paleta de material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Seleccionaste: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres usar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las apps a determinar la ubicación. Esto implica el envío de datos de ubicación anónimos a Google, incluso cuando no se estén ejecutando apps.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Configurar cuenta para copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR DIÁLOGO",
+ "dialogFullscreenTitle": "Diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Una demostración de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Quieres permitir que \"Maps\" acceda a tu ubicación mientras usas la app?",
+ "cupertinoAlertLocationDescription": "Tu ubicación actual se mostrará en el mapa y se usará para obtener instrucciones sobre cómo llegar a lugares, resultados cercanos de la búsqueda y tiempos de viaje aproximados.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Selecciona tu postre favorito",
+ "cupertinoAlertDessertDescription": "Selecciona tu postre favorito de la siguiente lista. Se usará tu elección para personalizar la lista de restaurantes sugeridos en tu área.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastel de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSADO",
+ "colorsPurple": "PÚRPURA",
+ "colorsDeepPurple": "PÚRPURA OSCURO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "CELESTE",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Agregar cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "App de compras básica",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "App de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_GT.arb b/gallery/lib/l10n/intl_es_GT.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_GT.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palabras descriptivas para filtrar contenido.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos, como una entidad (persona, objeto o lugar), o texto conversacional de forma compacta.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre varias opciones mutuamente excluyentes. Cuando se selecciona una opción del control segmentado, se anula la selección de las otras.",
+ "chipTurnOnLights": "Encender luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Mediano",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicletas",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu potencial de deducción de impuestos. Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu potencial de deducción de impuestos. Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta, Estados Unidos",
+ "craneFormDestination": "Seleccionar destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VUELOS",
+ "craneSleep": "ALOJAMIENTO",
+ "craneEat": "GASTRONOMÍA",
+ "craneFlySubhead": "Explora vuelos por destino",
+ "craneSleepSubhead": "Explora propiedades por destino",
+ "craneEatSubhead": "Explora restaurantes por ubicación",
+ "craneFlyStops": "{numberOfStops,plural, =0{Directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen, Estados Unidos",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado de estilo iOS",
+ "craneSleep10": "El Cairo, Egipto",
+ "craneEat9": "Madrid, España",
+ "craneFly1": "Big Sur, Estados Unidos",
+ "craneEat7": "Nashville, Estados Unidos",
+ "craneEat6": "Seattle, Estados Unidos",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, Francia",
+ "craneEat3": "Portland, Estados Unidos",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estados Unidos",
+ "craneEat0": "Nápoles, Italia",
+ "craneSleep11": "Taipéi, Taiwán",
+ "craneSleep3": "La Habana, Cuba",
+ "shrineLogoutButtonCaption": "SALIR",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Bolso Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interés del comienzo del año fiscal",
+ "shrineProductWhitneyBelt": "Cinturón",
+ "shrineProductGardenStrand": "Hebras para jardín",
+ "shrineProductStrutEarrings": "Aros Strut",
+ "shrineProductVarsitySocks": "Medias varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Boina gatsby",
+ "shrineProductShrugBag": "Bolso de hombro",
+ "shrineProductGiltDeskTrio": "Juego de tres mesas",
+ "shrineProductCopperWireRack": "Estante de metal color cobre",
+ "shrineProductSootheCeramicSet": "Juego de cerámica",
+ "shrineProductHurrahsTeaSet": "Juego de té de cerámica",
+ "shrineProductBlueStoneMug": "Taza de color azul piedra",
+ "shrineProductRainwaterTray": "Bandeja para recolectar agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de chambray",
+ "shrineProductSucculentPlanters": "Macetas de suculentas",
+ "shrineProductQuartetTable": "Mesa para cuatro",
+ "shrineProductKitchenQuattro": "Cocina quattro",
+ "shrineProductClaySweater": "Suéter color arcilla",
+ "shrineProductSeaTunic": "Vestido de verano",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de chambray",
+ "shrineProductSeabreezeSweater": "Suéter de hilo liviano",
+ "shrineProductGentryJacket": "Chaqueta estilo gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta con botones (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camiseta estilo surf and perf",
+ "shrineProductGingerScarf": "Pañuelo color tierra",
+ "shrineProductRamonaCrossover": "Mezcla de estilos Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa clásica de cuello blanco",
+ "shrineProductSunshirtDress": "Camisa larga de verano",
+ "rallyAccountDetailDataInterestRate": "Tasa de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros del hogar",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Próximo resumen",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Compras de comestibles",
+ "shrineProductCeriseScallopTee": "Camiseta de cuello cerrado color cereza",
+ "rallyBudgetCategoryClothing": "Indumentaria",
+ "rallySettingsManageAccounts": "Administrar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros de vehículo",
+ "rallySettingsTaxDocuments": "Documentos de impuestos",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Configuración para recibir resúmenes en formato digital",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Salir",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Debes",
+ "rallyBudgetLeft": "Restante",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "DESCRIPCIÓN GENERAL",
+ "shrineProductShoulderRollsTee": "Camiseta con mangas",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "CONFIGURACIÓN",
+ "rallyLoginLoginToRally": "Accede a Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Acceder",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "ACCEDER",
+ "rallyAlertsMessageHeadsUpShopping": "Atención, utilizaste un {percent} del presupuesto para compras de este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Esta semana, gastaste {amount} en restaurantes",
+ "rallyAlertsMessageATMFees": "Este mes, gastaste {amount} en tarifas de cajeros automáticos",
+ "rallyAlertsMessageCheckingAccount": "¡Buen trabajo! El saldo de la cuenta corriente es un {percent} mayor al mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODAS",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "INDUMENTARIA",
+ "shrineCategoryNameHome": "HOGAR",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuesto:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{SIN ARTÍCULOS}=1{1 ARTÍCULO}other{{quantity} ARTÍCULOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Envío:",
+ "shrineProductGreySlouchTank": "Camiseta gris holgada de tirantes",
+ "shrineProductStellaSunglasses": "Anteojos Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa de rayas finas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos comunicarnos contigo?",
+ "settingsTextDirectionLTR": "IZQ. a DER.",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Línea única de texto y números editables",
+ "demoTextFieldDescription": "Los campos de texto permiten que los usuarios escriban en una IU. Suelen aparecer en diálogos y formularios.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Antes de enviar, corrige los errores marcados con rojo.",
+ "demoTextFieldNameRequired": "El nombre es obligatorio.",
+ "demoTextFieldOnlyAlphabeticalChars": "Ingresa solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Ingresa un número de teléfono de EE.UU.",
+ "demoTextFieldEnterPassword": "Ingresa una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llaman otras personas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Cuéntanos sobre ti (p. ej., escribe sobre lo que haces o tus pasatiempos)",
+ "demoTextFieldKeepItShort": "Sé breve, ya que esta es una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Historia de vida",
+ "demoTextFieldSalary": "Sueldo",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Incluye hasta 8 caracteres.",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas encadenadas",
+ "demoBottomSheetAddLabel": "Agregar",
+ "demoBottomSheetModalDescription": "Una hoja modal inferior es una alternativa a un menú o diálogo que impide que el usuario interactúe con el resto de la app.",
+ "demoBottomSheetModalTitle": "Hoja modal inferior",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información que suplementa el contenido principal de la app. La hoja permanece visible, incluso si el usuario interactúa con otras partes de la app.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Definiciones de distintos estilos de tipografía que se encuentran en material design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página nueva es un diálogo modal de pantalla completa.",
+ "demoFlatButtonDescription": "Un botón plano que muestra una gota de tinta cuando se lo presiona, pero que no tiene sombra. Usa los botones planos en barras de herramientas, diálogos y también intercalados con el relleno.",
+ "demoBottomNavigationDescription": "Las barras de navegación inferiores muestran entre tres y cinco destinos en la parte inferior de la pantalla. Cada destino se representa con un ícono y una etiqueta de texto opcional. Cuando el usuario presiona un ícono de navegación inferior, se lo redirecciona al destino de navegación de nivel superior que está asociado con el ícono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "El asterisco (*) indica que es un campo obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "DER. a IZQ.",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuración",
+ "rallyDescription": "Una app personal de finanzas",
+ "aboutDialogDescription": "Para ver el código fuente de esta app, visita {value}.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favoritos",
+ "starterAppTooltipAdd": "Agregar",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio responsivo",
+ "starterAppTitle": "App de inicio",
+ "aboutFlutterSamplesRepo": "Repositorio de GitHub con muestras de Flutter",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Puedes usar los botones de activación para agrupar opciones relacionadas. Para destacar los grupos de botones de activación relacionados, el grupo debe compartir un contenedor común.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA OSCURO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "VERDE LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una app de venta minorista a la moda",
+ "craneDescription": "Una app personalizada para viajes",
+ "homeCategoryReference": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se pudo mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Ejemplo de código",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Envía comentarios",
+ "settingsAttribution": "Diseño de TOASTER (Londres)",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Planos, con relieve, con contorno, etc.",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve agregan profundidad a los diseños más que nada planos. Destacan las funciones en espacios amplios o con muchos elementos.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan cuando se los presiona. A menudo, se combinan con botones con relieve para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones de activación",
+ "colorsTeal": "VERDE AZULADO",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón de ícono circular que se coloca sobre el contenido para propiciar una acción principal en la aplicación.",
+ "demoDialogTitle": "Diálogos",
+ "demoDialogSubtitle": "Simple, de alerta y de pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título y una lista de acciones que son opcionales.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "Un diálogo simple le ofrece al usuario la posibilidad de elegir entre varias opciones. Un diálogo simple tiene un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones con estilo de iOS",
+ "demoCupertinoButtonsDescription": "Un botón con el estilo de iOS. Contiene texto o un ícono que aparece o desaparece poco a poco cuando se lo toca. De manera opcional, puede tener un fondo.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Diálogos de alerta con estilo de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título, un contenido y una lista de acciones que son opcionales. El título se muestra encima del contenido y las acciones debajo del contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acciones es un estilo específico de alerta que brinda al usuario un conjunto de dos o más opciones relacionadas con el contexto actual. Una hoja de acciones puede tener un título, un mensaje adicional y una lista de acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Son las constantes de colores y de muestras de color que representan la paleta de material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Seleccionaste: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres usar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las apps a determinar la ubicación. Esto implica el envío de datos de ubicación anónimos a Google, incluso cuando no se estén ejecutando apps.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Configurar cuenta para copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR DIÁLOGO",
+ "dialogFullscreenTitle": "Diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Una demostración de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Quieres permitir que \"Maps\" acceda a tu ubicación mientras usas la app?",
+ "cupertinoAlertLocationDescription": "Tu ubicación actual se mostrará en el mapa y se usará para obtener instrucciones sobre cómo llegar a lugares, resultados cercanos de la búsqueda y tiempos de viaje aproximados.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Selecciona tu postre favorito",
+ "cupertinoAlertDessertDescription": "Selecciona tu postre favorito de la siguiente lista. Se usará tu elección para personalizar la lista de restaurantes sugeridos en tu área.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastel de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSADO",
+ "colorsPurple": "PÚRPURA",
+ "colorsDeepPurple": "PÚRPURA OSCURO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "CELESTE",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Agregar cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "App de compras básica",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "App de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_HN.arb b/gallery/lib/l10n/intl_es_HN.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_HN.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palabras descriptivas para filtrar contenido.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos, como una entidad (persona, objeto o lugar), o texto conversacional de forma compacta.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre varias opciones mutuamente excluyentes. Cuando se selecciona una opción del control segmentado, se anula la selección de las otras.",
+ "chipTurnOnLights": "Encender luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Mediano",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicletas",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu potencial de deducción de impuestos. Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu potencial de deducción de impuestos. Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta, Estados Unidos",
+ "craneFormDestination": "Seleccionar destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VUELOS",
+ "craneSleep": "ALOJAMIENTO",
+ "craneEat": "GASTRONOMÍA",
+ "craneFlySubhead": "Explora vuelos por destino",
+ "craneSleepSubhead": "Explora propiedades por destino",
+ "craneEatSubhead": "Explora restaurantes por ubicación",
+ "craneFlyStops": "{numberOfStops,plural, =0{Directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen, Estados Unidos",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado de estilo iOS",
+ "craneSleep10": "El Cairo, Egipto",
+ "craneEat9": "Madrid, España",
+ "craneFly1": "Big Sur, Estados Unidos",
+ "craneEat7": "Nashville, Estados Unidos",
+ "craneEat6": "Seattle, Estados Unidos",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, Francia",
+ "craneEat3": "Portland, Estados Unidos",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estados Unidos",
+ "craneEat0": "Nápoles, Italia",
+ "craneSleep11": "Taipéi, Taiwán",
+ "craneSleep3": "La Habana, Cuba",
+ "shrineLogoutButtonCaption": "SALIR",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Bolso Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interés del comienzo del año fiscal",
+ "shrineProductWhitneyBelt": "Cinturón",
+ "shrineProductGardenStrand": "Hebras para jardín",
+ "shrineProductStrutEarrings": "Aros Strut",
+ "shrineProductVarsitySocks": "Medias varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Boina gatsby",
+ "shrineProductShrugBag": "Bolso de hombro",
+ "shrineProductGiltDeskTrio": "Juego de tres mesas",
+ "shrineProductCopperWireRack": "Estante de metal color cobre",
+ "shrineProductSootheCeramicSet": "Juego de cerámica",
+ "shrineProductHurrahsTeaSet": "Juego de té de cerámica",
+ "shrineProductBlueStoneMug": "Taza de color azul piedra",
+ "shrineProductRainwaterTray": "Bandeja para recolectar agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de chambray",
+ "shrineProductSucculentPlanters": "Macetas de suculentas",
+ "shrineProductQuartetTable": "Mesa para cuatro",
+ "shrineProductKitchenQuattro": "Cocina quattro",
+ "shrineProductClaySweater": "Suéter color arcilla",
+ "shrineProductSeaTunic": "Vestido de verano",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de chambray",
+ "shrineProductSeabreezeSweater": "Suéter de hilo liviano",
+ "shrineProductGentryJacket": "Chaqueta estilo gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta con botones (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camiseta estilo surf and perf",
+ "shrineProductGingerScarf": "Pañuelo color tierra",
+ "shrineProductRamonaCrossover": "Mezcla de estilos Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa clásica de cuello blanco",
+ "shrineProductSunshirtDress": "Camisa larga de verano",
+ "rallyAccountDetailDataInterestRate": "Tasa de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros del hogar",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Próximo resumen",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Compras de comestibles",
+ "shrineProductCeriseScallopTee": "Camiseta de cuello cerrado color cereza",
+ "rallyBudgetCategoryClothing": "Indumentaria",
+ "rallySettingsManageAccounts": "Administrar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros de vehículo",
+ "rallySettingsTaxDocuments": "Documentos de impuestos",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Configuración para recibir resúmenes en formato digital",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Salir",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Debes",
+ "rallyBudgetLeft": "Restante",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "DESCRIPCIÓN GENERAL",
+ "shrineProductShoulderRollsTee": "Camiseta con mangas",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "CONFIGURACIÓN",
+ "rallyLoginLoginToRally": "Accede a Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Acceder",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "ACCEDER",
+ "rallyAlertsMessageHeadsUpShopping": "Atención, utilizaste un {percent} del presupuesto para compras de este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Esta semana, gastaste {amount} en restaurantes",
+ "rallyAlertsMessageATMFees": "Este mes, gastaste {amount} en tarifas de cajeros automáticos",
+ "rallyAlertsMessageCheckingAccount": "¡Buen trabajo! El saldo de la cuenta corriente es un {percent} mayor al mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODAS",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "INDUMENTARIA",
+ "shrineCategoryNameHome": "HOGAR",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuesto:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{SIN ARTÍCULOS}=1{1 ARTÍCULO}other{{quantity} ARTÍCULOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Envío:",
+ "shrineProductGreySlouchTank": "Camiseta gris holgada de tirantes",
+ "shrineProductStellaSunglasses": "Anteojos Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa de rayas finas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos comunicarnos contigo?",
+ "settingsTextDirectionLTR": "IZQ. a DER.",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Línea única de texto y números editables",
+ "demoTextFieldDescription": "Los campos de texto permiten que los usuarios escriban en una IU. Suelen aparecer en diálogos y formularios.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Antes de enviar, corrige los errores marcados con rojo.",
+ "demoTextFieldNameRequired": "El nombre es obligatorio.",
+ "demoTextFieldOnlyAlphabeticalChars": "Ingresa solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Ingresa un número de teléfono de EE.UU.",
+ "demoTextFieldEnterPassword": "Ingresa una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llaman otras personas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Cuéntanos sobre ti (p. ej., escribe sobre lo que haces o tus pasatiempos)",
+ "demoTextFieldKeepItShort": "Sé breve, ya que esta es una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Historia de vida",
+ "demoTextFieldSalary": "Sueldo",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Incluye hasta 8 caracteres.",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas encadenadas",
+ "demoBottomSheetAddLabel": "Agregar",
+ "demoBottomSheetModalDescription": "Una hoja modal inferior es una alternativa a un menú o diálogo que impide que el usuario interactúe con el resto de la app.",
+ "demoBottomSheetModalTitle": "Hoja modal inferior",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información que suplementa el contenido principal de la app. La hoja permanece visible, incluso si el usuario interactúa con otras partes de la app.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Definiciones de distintos estilos de tipografía que se encuentran en material design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página nueva es un diálogo modal de pantalla completa.",
+ "demoFlatButtonDescription": "Un botón plano que muestra una gota de tinta cuando se lo presiona, pero que no tiene sombra. Usa los botones planos en barras de herramientas, diálogos y también intercalados con el relleno.",
+ "demoBottomNavigationDescription": "Las barras de navegación inferiores muestran entre tres y cinco destinos en la parte inferior de la pantalla. Cada destino se representa con un ícono y una etiqueta de texto opcional. Cuando el usuario presiona un ícono de navegación inferior, se lo redirecciona al destino de navegación de nivel superior que está asociado con el ícono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "El asterisco (*) indica que es un campo obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "DER. a IZQ.",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuración",
+ "rallyDescription": "Una app personal de finanzas",
+ "aboutDialogDescription": "Para ver el código fuente de esta app, visita {value}.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favoritos",
+ "starterAppTooltipAdd": "Agregar",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio responsivo",
+ "starterAppTitle": "App de inicio",
+ "aboutFlutterSamplesRepo": "Repositorio de GitHub con muestras de Flutter",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Puedes usar los botones de activación para agrupar opciones relacionadas. Para destacar los grupos de botones de activación relacionados, el grupo debe compartir un contenedor común.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA OSCURO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "VERDE LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una app de venta minorista a la moda",
+ "craneDescription": "Una app personalizada para viajes",
+ "homeCategoryReference": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se pudo mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Ejemplo de código",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Envía comentarios",
+ "settingsAttribution": "Diseño de TOASTER (Londres)",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Planos, con relieve, con contorno, etc.",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve agregan profundidad a los diseños más que nada planos. Destacan las funciones en espacios amplios o con muchos elementos.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan cuando se los presiona. A menudo, se combinan con botones con relieve para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones de activación",
+ "colorsTeal": "VERDE AZULADO",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón de ícono circular que se coloca sobre el contenido para propiciar una acción principal en la aplicación.",
+ "demoDialogTitle": "Diálogos",
+ "demoDialogSubtitle": "Simple, de alerta y de pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título y una lista de acciones que son opcionales.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "Un diálogo simple le ofrece al usuario la posibilidad de elegir entre varias opciones. Un diálogo simple tiene un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones con estilo de iOS",
+ "demoCupertinoButtonsDescription": "Un botón con el estilo de iOS. Contiene texto o un ícono que aparece o desaparece poco a poco cuando se lo toca. De manera opcional, puede tener un fondo.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Diálogos de alerta con estilo de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título, un contenido y una lista de acciones que son opcionales. El título se muestra encima del contenido y las acciones debajo del contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acciones es un estilo específico de alerta que brinda al usuario un conjunto de dos o más opciones relacionadas con el contexto actual. Una hoja de acciones puede tener un título, un mensaje adicional y una lista de acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Son las constantes de colores y de muestras de color que representan la paleta de material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Seleccionaste: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres usar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las apps a determinar la ubicación. Esto implica el envío de datos de ubicación anónimos a Google, incluso cuando no se estén ejecutando apps.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Configurar cuenta para copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR DIÁLOGO",
+ "dialogFullscreenTitle": "Diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Una demostración de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Quieres permitir que \"Maps\" acceda a tu ubicación mientras usas la app?",
+ "cupertinoAlertLocationDescription": "Tu ubicación actual se mostrará en el mapa y se usará para obtener instrucciones sobre cómo llegar a lugares, resultados cercanos de la búsqueda y tiempos de viaje aproximados.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Selecciona tu postre favorito",
+ "cupertinoAlertDessertDescription": "Selecciona tu postre favorito de la siguiente lista. Se usará tu elección para personalizar la lista de restaurantes sugeridos en tu área.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastel de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSADO",
+ "colorsPurple": "PÚRPURA",
+ "colorsDeepPurple": "PÚRPURA OSCURO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "CELESTE",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Agregar cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "App de compras básica",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "App de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_MX.arb b/gallery/lib/l10n/intl_es_MX.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_MX.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palabras descriptivas para filtrar contenido.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos, como una entidad (persona, objeto o lugar), o texto conversacional de forma compacta.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre varias opciones mutuamente excluyentes. Cuando se selecciona una opción del control segmentado, se anula la selección de las otras.",
+ "chipTurnOnLights": "Encender luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Mediano",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicletas",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu potencial de deducción de impuestos. Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu potencial de deducción de impuestos. Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta, Estados Unidos",
+ "craneFormDestination": "Seleccionar destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VUELOS",
+ "craneSleep": "ALOJAMIENTO",
+ "craneEat": "GASTRONOMÍA",
+ "craneFlySubhead": "Explora vuelos por destino",
+ "craneSleepSubhead": "Explora propiedades por destino",
+ "craneEatSubhead": "Explora restaurantes por ubicación",
+ "craneFlyStops": "{numberOfStops,plural, =0{Directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen, Estados Unidos",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado de estilo iOS",
+ "craneSleep10": "El Cairo, Egipto",
+ "craneEat9": "Madrid, España",
+ "craneFly1": "Big Sur, Estados Unidos",
+ "craneEat7": "Nashville, Estados Unidos",
+ "craneEat6": "Seattle, Estados Unidos",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, Francia",
+ "craneEat3": "Portland, Estados Unidos",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estados Unidos",
+ "craneEat0": "Nápoles, Italia",
+ "craneSleep11": "Taipéi, Taiwán",
+ "craneSleep3": "La Habana, Cuba",
+ "shrineLogoutButtonCaption": "SALIR",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Bolso Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interés del comienzo del año fiscal",
+ "shrineProductWhitneyBelt": "Cinturón",
+ "shrineProductGardenStrand": "Hebras para jardín",
+ "shrineProductStrutEarrings": "Aros Strut",
+ "shrineProductVarsitySocks": "Medias varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Boina gatsby",
+ "shrineProductShrugBag": "Bolso de hombro",
+ "shrineProductGiltDeskTrio": "Juego de tres mesas",
+ "shrineProductCopperWireRack": "Estante de metal color cobre",
+ "shrineProductSootheCeramicSet": "Juego de cerámica",
+ "shrineProductHurrahsTeaSet": "Juego de té de cerámica",
+ "shrineProductBlueStoneMug": "Taza de color azul piedra",
+ "shrineProductRainwaterTray": "Bandeja para recolectar agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de chambray",
+ "shrineProductSucculentPlanters": "Macetas de suculentas",
+ "shrineProductQuartetTable": "Mesa para cuatro",
+ "shrineProductKitchenQuattro": "Cocina quattro",
+ "shrineProductClaySweater": "Suéter color arcilla",
+ "shrineProductSeaTunic": "Vestido de verano",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de chambray",
+ "shrineProductSeabreezeSweater": "Suéter de hilo liviano",
+ "shrineProductGentryJacket": "Chaqueta estilo gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta con botones (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camiseta estilo surf and perf",
+ "shrineProductGingerScarf": "Pañuelo color tierra",
+ "shrineProductRamonaCrossover": "Mezcla de estilos Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa clásica de cuello blanco",
+ "shrineProductSunshirtDress": "Camisa larga de verano",
+ "rallyAccountDetailDataInterestRate": "Tasa de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros del hogar",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Próximo resumen",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Compras de comestibles",
+ "shrineProductCeriseScallopTee": "Camiseta de cuello cerrado color cereza",
+ "rallyBudgetCategoryClothing": "Indumentaria",
+ "rallySettingsManageAccounts": "Administrar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros de vehículo",
+ "rallySettingsTaxDocuments": "Documentos de impuestos",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Configuración para recibir resúmenes en formato digital",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Salir",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Debes",
+ "rallyBudgetLeft": "Restante",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "DESCRIPCIÓN GENERAL",
+ "shrineProductShoulderRollsTee": "Camiseta con mangas",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "CONFIGURACIÓN",
+ "rallyLoginLoginToRally": "Accede a Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Acceder",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "ACCEDER",
+ "rallyAlertsMessageHeadsUpShopping": "Atención, utilizaste un {percent} del presupuesto para compras de este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Esta semana, gastaste {amount} en restaurantes",
+ "rallyAlertsMessageATMFees": "Este mes, gastaste {amount} en tarifas de cajeros automáticos",
+ "rallyAlertsMessageCheckingAccount": "¡Buen trabajo! El saldo de la cuenta corriente es un {percent} mayor al mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODAS",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "INDUMENTARIA",
+ "shrineCategoryNameHome": "HOGAR",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuesto:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{SIN ARTÍCULOS}=1{1 ARTÍCULO}other{{quantity} ARTÍCULOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Envío:",
+ "shrineProductGreySlouchTank": "Camiseta gris holgada de tirantes",
+ "shrineProductStellaSunglasses": "Anteojos Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa de rayas finas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos comunicarnos contigo?",
+ "settingsTextDirectionLTR": "IZQ. a DER.",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Línea única de texto y números editables",
+ "demoTextFieldDescription": "Los campos de texto permiten que los usuarios escriban en una IU. Suelen aparecer en diálogos y formularios.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Antes de enviar, corrige los errores marcados con rojo.",
+ "demoTextFieldNameRequired": "El nombre es obligatorio.",
+ "demoTextFieldOnlyAlphabeticalChars": "Ingresa solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Ingresa un número de teléfono de EE.UU.",
+ "demoTextFieldEnterPassword": "Ingresa una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llaman otras personas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Cuéntanos sobre ti (p. ej., escribe sobre lo que haces o tus pasatiempos)",
+ "demoTextFieldKeepItShort": "Sé breve, ya que esta es una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Historia de vida",
+ "demoTextFieldSalary": "Sueldo",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Incluye hasta 8 caracteres.",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas encadenadas",
+ "demoBottomSheetAddLabel": "Agregar",
+ "demoBottomSheetModalDescription": "Una hoja modal inferior es una alternativa a un menú o diálogo que impide que el usuario interactúe con el resto de la app.",
+ "demoBottomSheetModalTitle": "Hoja modal inferior",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información que suplementa el contenido principal de la app. La hoja permanece visible, incluso si el usuario interactúa con otras partes de la app.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Definiciones de distintos estilos de tipografía que se encuentran en material design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página nueva es un diálogo modal de pantalla completa.",
+ "demoFlatButtonDescription": "Un botón plano que muestra una gota de tinta cuando se lo presiona, pero que no tiene sombra. Usa los botones planos en barras de herramientas, diálogos y también intercalados con el relleno.",
+ "demoBottomNavigationDescription": "Las barras de navegación inferiores muestran entre tres y cinco destinos en la parte inferior de la pantalla. Cada destino se representa con un ícono y una etiqueta de texto opcional. Cuando el usuario presiona un ícono de navegación inferior, se lo redirecciona al destino de navegación de nivel superior que está asociado con el ícono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "El asterisco (*) indica que es un campo obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "DER. a IZQ.",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuración",
+ "rallyDescription": "Una app personal de finanzas",
+ "aboutDialogDescription": "Para ver el código fuente de esta app, visita {value}.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favoritos",
+ "starterAppTooltipAdd": "Agregar",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio responsivo",
+ "starterAppTitle": "App de inicio",
+ "aboutFlutterSamplesRepo": "Repositorio de GitHub con muestras de Flutter",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Puedes usar los botones de activación para agrupar opciones relacionadas. Para destacar los grupos de botones de activación relacionados, el grupo debe compartir un contenedor común.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA OSCURO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "VERDE LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una app de venta minorista a la moda",
+ "craneDescription": "Una app personalizada para viajes",
+ "homeCategoryReference": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se pudo mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Ejemplo de código",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Envía comentarios",
+ "settingsAttribution": "Diseño de TOASTER (Londres)",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Planos, con relieve, con contorno, etc.",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve agregan profundidad a los diseños más que nada planos. Destacan las funciones en espacios amplios o con muchos elementos.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan cuando se los presiona. A menudo, se combinan con botones con relieve para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones de activación",
+ "colorsTeal": "VERDE AZULADO",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón de ícono circular que se coloca sobre el contenido para propiciar una acción principal en la aplicación.",
+ "demoDialogTitle": "Diálogos",
+ "demoDialogSubtitle": "Simple, de alerta y de pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título y una lista de acciones que son opcionales.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "Un diálogo simple le ofrece al usuario la posibilidad de elegir entre varias opciones. Un diálogo simple tiene un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones con estilo de iOS",
+ "demoCupertinoButtonsDescription": "Un botón con el estilo de iOS. Contiene texto o un ícono que aparece o desaparece poco a poco cuando se lo toca. De manera opcional, puede tener un fondo.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Diálogos de alerta con estilo de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título, un contenido y una lista de acciones que son opcionales. El título se muestra encima del contenido y las acciones debajo del contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acciones es un estilo específico de alerta que brinda al usuario un conjunto de dos o más opciones relacionadas con el contexto actual. Una hoja de acciones puede tener un título, un mensaje adicional y una lista de acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Son las constantes de colores y de muestras de color que representan la paleta de material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Seleccionaste: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres usar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las apps a determinar la ubicación. Esto implica el envío de datos de ubicación anónimos a Google, incluso cuando no se estén ejecutando apps.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Configurar cuenta para copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR DIÁLOGO",
+ "dialogFullscreenTitle": "Diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Una demostración de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Quieres permitir que \"Maps\" acceda a tu ubicación mientras usas la app?",
+ "cupertinoAlertLocationDescription": "Tu ubicación actual se mostrará en el mapa y se usará para obtener instrucciones sobre cómo llegar a lugares, resultados cercanos de la búsqueda y tiempos de viaje aproximados.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Selecciona tu postre favorito",
+ "cupertinoAlertDessertDescription": "Selecciona tu postre favorito de la siguiente lista. Se usará tu elección para personalizar la lista de restaurantes sugeridos en tu área.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastel de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSADO",
+ "colorsPurple": "PÚRPURA",
+ "colorsDeepPurple": "PÚRPURA OSCURO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "CELESTE",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Agregar cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "App de compras básica",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "App de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_NI.arb b/gallery/lib/l10n/intl_es_NI.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_NI.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palabras descriptivas para filtrar contenido.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos, como una entidad (persona, objeto o lugar), o texto conversacional de forma compacta.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre varias opciones mutuamente excluyentes. Cuando se selecciona una opción del control segmentado, se anula la selección de las otras.",
+ "chipTurnOnLights": "Encender luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Mediano",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicletas",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu potencial de deducción de impuestos. Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu potencial de deducción de impuestos. Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta, Estados Unidos",
+ "craneFormDestination": "Seleccionar destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VUELOS",
+ "craneSleep": "ALOJAMIENTO",
+ "craneEat": "GASTRONOMÍA",
+ "craneFlySubhead": "Explora vuelos por destino",
+ "craneSleepSubhead": "Explora propiedades por destino",
+ "craneEatSubhead": "Explora restaurantes por ubicación",
+ "craneFlyStops": "{numberOfStops,plural, =0{Directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen, Estados Unidos",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado de estilo iOS",
+ "craneSleep10": "El Cairo, Egipto",
+ "craneEat9": "Madrid, España",
+ "craneFly1": "Big Sur, Estados Unidos",
+ "craneEat7": "Nashville, Estados Unidos",
+ "craneEat6": "Seattle, Estados Unidos",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, Francia",
+ "craneEat3": "Portland, Estados Unidos",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estados Unidos",
+ "craneEat0": "Nápoles, Italia",
+ "craneSleep11": "Taipéi, Taiwán",
+ "craneSleep3": "La Habana, Cuba",
+ "shrineLogoutButtonCaption": "SALIR",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Bolso Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interés del comienzo del año fiscal",
+ "shrineProductWhitneyBelt": "Cinturón",
+ "shrineProductGardenStrand": "Hebras para jardín",
+ "shrineProductStrutEarrings": "Aros Strut",
+ "shrineProductVarsitySocks": "Medias varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Boina gatsby",
+ "shrineProductShrugBag": "Bolso de hombro",
+ "shrineProductGiltDeskTrio": "Juego de tres mesas",
+ "shrineProductCopperWireRack": "Estante de metal color cobre",
+ "shrineProductSootheCeramicSet": "Juego de cerámica",
+ "shrineProductHurrahsTeaSet": "Juego de té de cerámica",
+ "shrineProductBlueStoneMug": "Taza de color azul piedra",
+ "shrineProductRainwaterTray": "Bandeja para recolectar agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de chambray",
+ "shrineProductSucculentPlanters": "Macetas de suculentas",
+ "shrineProductQuartetTable": "Mesa para cuatro",
+ "shrineProductKitchenQuattro": "Cocina quattro",
+ "shrineProductClaySweater": "Suéter color arcilla",
+ "shrineProductSeaTunic": "Vestido de verano",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de chambray",
+ "shrineProductSeabreezeSweater": "Suéter de hilo liviano",
+ "shrineProductGentryJacket": "Chaqueta estilo gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta con botones (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camiseta estilo surf and perf",
+ "shrineProductGingerScarf": "Pañuelo color tierra",
+ "shrineProductRamonaCrossover": "Mezcla de estilos Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa clásica de cuello blanco",
+ "shrineProductSunshirtDress": "Camisa larga de verano",
+ "rallyAccountDetailDataInterestRate": "Tasa de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros del hogar",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Próximo resumen",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Compras de comestibles",
+ "shrineProductCeriseScallopTee": "Camiseta de cuello cerrado color cereza",
+ "rallyBudgetCategoryClothing": "Indumentaria",
+ "rallySettingsManageAccounts": "Administrar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros de vehículo",
+ "rallySettingsTaxDocuments": "Documentos de impuestos",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Configuración para recibir resúmenes en formato digital",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Salir",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Debes",
+ "rallyBudgetLeft": "Restante",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "DESCRIPCIÓN GENERAL",
+ "shrineProductShoulderRollsTee": "Camiseta con mangas",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "CONFIGURACIÓN",
+ "rallyLoginLoginToRally": "Accede a Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Acceder",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "ACCEDER",
+ "rallyAlertsMessageHeadsUpShopping": "Atención, utilizaste un {percent} del presupuesto para compras de este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Esta semana, gastaste {amount} en restaurantes",
+ "rallyAlertsMessageATMFees": "Este mes, gastaste {amount} en tarifas de cajeros automáticos",
+ "rallyAlertsMessageCheckingAccount": "¡Buen trabajo! El saldo de la cuenta corriente es un {percent} mayor al mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODAS",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "INDUMENTARIA",
+ "shrineCategoryNameHome": "HOGAR",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuesto:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{SIN ARTÍCULOS}=1{1 ARTÍCULO}other{{quantity} ARTÍCULOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Envío:",
+ "shrineProductGreySlouchTank": "Camiseta gris holgada de tirantes",
+ "shrineProductStellaSunglasses": "Anteojos Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa de rayas finas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos comunicarnos contigo?",
+ "settingsTextDirectionLTR": "IZQ. a DER.",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Línea única de texto y números editables",
+ "demoTextFieldDescription": "Los campos de texto permiten que los usuarios escriban en una IU. Suelen aparecer en diálogos y formularios.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Antes de enviar, corrige los errores marcados con rojo.",
+ "demoTextFieldNameRequired": "El nombre es obligatorio.",
+ "demoTextFieldOnlyAlphabeticalChars": "Ingresa solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Ingresa un número de teléfono de EE.UU.",
+ "demoTextFieldEnterPassword": "Ingresa una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llaman otras personas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Cuéntanos sobre ti (p. ej., escribe sobre lo que haces o tus pasatiempos)",
+ "demoTextFieldKeepItShort": "Sé breve, ya que esta es una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Historia de vida",
+ "demoTextFieldSalary": "Sueldo",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Incluye hasta 8 caracteres.",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas encadenadas",
+ "demoBottomSheetAddLabel": "Agregar",
+ "demoBottomSheetModalDescription": "Una hoja modal inferior es una alternativa a un menú o diálogo que impide que el usuario interactúe con el resto de la app.",
+ "demoBottomSheetModalTitle": "Hoja modal inferior",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información que suplementa el contenido principal de la app. La hoja permanece visible, incluso si el usuario interactúa con otras partes de la app.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Definiciones de distintos estilos de tipografía que se encuentran en material design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página nueva es un diálogo modal de pantalla completa.",
+ "demoFlatButtonDescription": "Un botón plano que muestra una gota de tinta cuando se lo presiona, pero que no tiene sombra. Usa los botones planos en barras de herramientas, diálogos y también intercalados con el relleno.",
+ "demoBottomNavigationDescription": "Las barras de navegación inferiores muestran entre tres y cinco destinos en la parte inferior de la pantalla. Cada destino se representa con un ícono y una etiqueta de texto opcional. Cuando el usuario presiona un ícono de navegación inferior, se lo redirecciona al destino de navegación de nivel superior que está asociado con el ícono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "El asterisco (*) indica que es un campo obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "DER. a IZQ.",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuración",
+ "rallyDescription": "Una app personal de finanzas",
+ "aboutDialogDescription": "Para ver el código fuente de esta app, visita {value}.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favoritos",
+ "starterAppTooltipAdd": "Agregar",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio responsivo",
+ "starterAppTitle": "App de inicio",
+ "aboutFlutterSamplesRepo": "Repositorio de GitHub con muestras de Flutter",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Puedes usar los botones de activación para agrupar opciones relacionadas. Para destacar los grupos de botones de activación relacionados, el grupo debe compartir un contenedor común.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA OSCURO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "VERDE LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una app de venta minorista a la moda",
+ "craneDescription": "Una app personalizada para viajes",
+ "homeCategoryReference": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se pudo mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Ejemplo de código",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Envía comentarios",
+ "settingsAttribution": "Diseño de TOASTER (Londres)",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Planos, con relieve, con contorno, etc.",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve agregan profundidad a los diseños más que nada planos. Destacan las funciones en espacios amplios o con muchos elementos.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan cuando se los presiona. A menudo, se combinan con botones con relieve para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones de activación",
+ "colorsTeal": "VERDE AZULADO",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón de ícono circular que se coloca sobre el contenido para propiciar una acción principal en la aplicación.",
+ "demoDialogTitle": "Diálogos",
+ "demoDialogSubtitle": "Simple, de alerta y de pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título y una lista de acciones que son opcionales.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "Un diálogo simple le ofrece al usuario la posibilidad de elegir entre varias opciones. Un diálogo simple tiene un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones con estilo de iOS",
+ "demoCupertinoButtonsDescription": "Un botón con el estilo de iOS. Contiene texto o un ícono que aparece o desaparece poco a poco cuando se lo toca. De manera opcional, puede tener un fondo.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Diálogos de alerta con estilo de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título, un contenido y una lista de acciones que son opcionales. El título se muestra encima del contenido y las acciones debajo del contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acciones es un estilo específico de alerta que brinda al usuario un conjunto de dos o más opciones relacionadas con el contexto actual. Una hoja de acciones puede tener un título, un mensaje adicional y una lista de acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Son las constantes de colores y de muestras de color que representan la paleta de material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Seleccionaste: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres usar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las apps a determinar la ubicación. Esto implica el envío de datos de ubicación anónimos a Google, incluso cuando no se estén ejecutando apps.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Configurar cuenta para copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR DIÁLOGO",
+ "dialogFullscreenTitle": "Diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Una demostración de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Quieres permitir que \"Maps\" acceda a tu ubicación mientras usas la app?",
+ "cupertinoAlertLocationDescription": "Tu ubicación actual se mostrará en el mapa y se usará para obtener instrucciones sobre cómo llegar a lugares, resultados cercanos de la búsqueda y tiempos de viaje aproximados.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Selecciona tu postre favorito",
+ "cupertinoAlertDessertDescription": "Selecciona tu postre favorito de la siguiente lista. Se usará tu elección para personalizar la lista de restaurantes sugeridos en tu área.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastel de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSADO",
+ "colorsPurple": "PÚRPURA",
+ "colorsDeepPurple": "PÚRPURA OSCURO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "CELESTE",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Agregar cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "App de compras básica",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "App de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_PA.arb b/gallery/lib/l10n/intl_es_PA.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_PA.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palabras descriptivas para filtrar contenido.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos, como una entidad (persona, objeto o lugar), o texto conversacional de forma compacta.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre varias opciones mutuamente excluyentes. Cuando se selecciona una opción del control segmentado, se anula la selección de las otras.",
+ "chipTurnOnLights": "Encender luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Mediano",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicletas",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu potencial de deducción de impuestos. Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu potencial de deducción de impuestos. Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta, Estados Unidos",
+ "craneFormDestination": "Seleccionar destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VUELOS",
+ "craneSleep": "ALOJAMIENTO",
+ "craneEat": "GASTRONOMÍA",
+ "craneFlySubhead": "Explora vuelos por destino",
+ "craneSleepSubhead": "Explora propiedades por destino",
+ "craneEatSubhead": "Explora restaurantes por ubicación",
+ "craneFlyStops": "{numberOfStops,plural, =0{Directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen, Estados Unidos",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado de estilo iOS",
+ "craneSleep10": "El Cairo, Egipto",
+ "craneEat9": "Madrid, España",
+ "craneFly1": "Big Sur, Estados Unidos",
+ "craneEat7": "Nashville, Estados Unidos",
+ "craneEat6": "Seattle, Estados Unidos",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, Francia",
+ "craneEat3": "Portland, Estados Unidos",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estados Unidos",
+ "craneEat0": "Nápoles, Italia",
+ "craneSleep11": "Taipéi, Taiwán",
+ "craneSleep3": "La Habana, Cuba",
+ "shrineLogoutButtonCaption": "SALIR",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Bolso Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interés del comienzo del año fiscal",
+ "shrineProductWhitneyBelt": "Cinturón",
+ "shrineProductGardenStrand": "Hebras para jardín",
+ "shrineProductStrutEarrings": "Aros Strut",
+ "shrineProductVarsitySocks": "Medias varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Boina gatsby",
+ "shrineProductShrugBag": "Bolso de hombro",
+ "shrineProductGiltDeskTrio": "Juego de tres mesas",
+ "shrineProductCopperWireRack": "Estante de metal color cobre",
+ "shrineProductSootheCeramicSet": "Juego de cerámica",
+ "shrineProductHurrahsTeaSet": "Juego de té de cerámica",
+ "shrineProductBlueStoneMug": "Taza de color azul piedra",
+ "shrineProductRainwaterTray": "Bandeja para recolectar agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de chambray",
+ "shrineProductSucculentPlanters": "Macetas de suculentas",
+ "shrineProductQuartetTable": "Mesa para cuatro",
+ "shrineProductKitchenQuattro": "Cocina quattro",
+ "shrineProductClaySweater": "Suéter color arcilla",
+ "shrineProductSeaTunic": "Vestido de verano",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de chambray",
+ "shrineProductSeabreezeSweater": "Suéter de hilo liviano",
+ "shrineProductGentryJacket": "Chaqueta estilo gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta con botones (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camiseta estilo surf and perf",
+ "shrineProductGingerScarf": "Pañuelo color tierra",
+ "shrineProductRamonaCrossover": "Mezcla de estilos Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa clásica de cuello blanco",
+ "shrineProductSunshirtDress": "Camisa larga de verano",
+ "rallyAccountDetailDataInterestRate": "Tasa de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros del hogar",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Próximo resumen",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Compras de comestibles",
+ "shrineProductCeriseScallopTee": "Camiseta de cuello cerrado color cereza",
+ "rallyBudgetCategoryClothing": "Indumentaria",
+ "rallySettingsManageAccounts": "Administrar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros de vehículo",
+ "rallySettingsTaxDocuments": "Documentos de impuestos",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Configuración para recibir resúmenes en formato digital",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Salir",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Debes",
+ "rallyBudgetLeft": "Restante",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "DESCRIPCIÓN GENERAL",
+ "shrineProductShoulderRollsTee": "Camiseta con mangas",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "CONFIGURACIÓN",
+ "rallyLoginLoginToRally": "Accede a Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Acceder",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "ACCEDER",
+ "rallyAlertsMessageHeadsUpShopping": "Atención, utilizaste un {percent} del presupuesto para compras de este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Esta semana, gastaste {amount} en restaurantes",
+ "rallyAlertsMessageATMFees": "Este mes, gastaste {amount} en tarifas de cajeros automáticos",
+ "rallyAlertsMessageCheckingAccount": "¡Buen trabajo! El saldo de la cuenta corriente es un {percent} mayor al mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODAS",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "INDUMENTARIA",
+ "shrineCategoryNameHome": "HOGAR",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuesto:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{SIN ARTÍCULOS}=1{1 ARTÍCULO}other{{quantity} ARTÍCULOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Envío:",
+ "shrineProductGreySlouchTank": "Camiseta gris holgada de tirantes",
+ "shrineProductStellaSunglasses": "Anteojos Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa de rayas finas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos comunicarnos contigo?",
+ "settingsTextDirectionLTR": "IZQ. a DER.",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Línea única de texto y números editables",
+ "demoTextFieldDescription": "Los campos de texto permiten que los usuarios escriban en una IU. Suelen aparecer en diálogos y formularios.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Antes de enviar, corrige los errores marcados con rojo.",
+ "demoTextFieldNameRequired": "El nombre es obligatorio.",
+ "demoTextFieldOnlyAlphabeticalChars": "Ingresa solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Ingresa un número de teléfono de EE.UU.",
+ "demoTextFieldEnterPassword": "Ingresa una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llaman otras personas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Cuéntanos sobre ti (p. ej., escribe sobre lo que haces o tus pasatiempos)",
+ "demoTextFieldKeepItShort": "Sé breve, ya que esta es una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Historia de vida",
+ "demoTextFieldSalary": "Sueldo",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Incluye hasta 8 caracteres.",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas encadenadas",
+ "demoBottomSheetAddLabel": "Agregar",
+ "demoBottomSheetModalDescription": "Una hoja modal inferior es una alternativa a un menú o diálogo que impide que el usuario interactúe con el resto de la app.",
+ "demoBottomSheetModalTitle": "Hoja modal inferior",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información que suplementa el contenido principal de la app. La hoja permanece visible, incluso si el usuario interactúa con otras partes de la app.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Definiciones de distintos estilos de tipografía que se encuentran en material design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página nueva es un diálogo modal de pantalla completa.",
+ "demoFlatButtonDescription": "Un botón plano que muestra una gota de tinta cuando se lo presiona, pero que no tiene sombra. Usa los botones planos en barras de herramientas, diálogos y también intercalados con el relleno.",
+ "demoBottomNavigationDescription": "Las barras de navegación inferiores muestran entre tres y cinco destinos en la parte inferior de la pantalla. Cada destino se representa con un ícono y una etiqueta de texto opcional. Cuando el usuario presiona un ícono de navegación inferior, se lo redirecciona al destino de navegación de nivel superior que está asociado con el ícono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "El asterisco (*) indica que es un campo obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "DER. a IZQ.",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuración",
+ "rallyDescription": "Una app personal de finanzas",
+ "aboutDialogDescription": "Para ver el código fuente de esta app, visita {value}.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favoritos",
+ "starterAppTooltipAdd": "Agregar",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio responsivo",
+ "starterAppTitle": "App de inicio",
+ "aboutFlutterSamplesRepo": "Repositorio de GitHub con muestras de Flutter",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Puedes usar los botones de activación para agrupar opciones relacionadas. Para destacar los grupos de botones de activación relacionados, el grupo debe compartir un contenedor común.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA OSCURO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "VERDE LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una app de venta minorista a la moda",
+ "craneDescription": "Una app personalizada para viajes",
+ "homeCategoryReference": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se pudo mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Ejemplo de código",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Envía comentarios",
+ "settingsAttribution": "Diseño de TOASTER (Londres)",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Planos, con relieve, con contorno, etc.",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve agregan profundidad a los diseños más que nada planos. Destacan las funciones en espacios amplios o con muchos elementos.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan cuando se los presiona. A menudo, se combinan con botones con relieve para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones de activación",
+ "colorsTeal": "VERDE AZULADO",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón de ícono circular que se coloca sobre el contenido para propiciar una acción principal en la aplicación.",
+ "demoDialogTitle": "Diálogos",
+ "demoDialogSubtitle": "Simple, de alerta y de pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título y una lista de acciones que son opcionales.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "Un diálogo simple le ofrece al usuario la posibilidad de elegir entre varias opciones. Un diálogo simple tiene un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones con estilo de iOS",
+ "demoCupertinoButtonsDescription": "Un botón con el estilo de iOS. Contiene texto o un ícono que aparece o desaparece poco a poco cuando se lo toca. De manera opcional, puede tener un fondo.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Diálogos de alerta con estilo de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título, un contenido y una lista de acciones que son opcionales. El título se muestra encima del contenido y las acciones debajo del contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acciones es un estilo específico de alerta que brinda al usuario un conjunto de dos o más opciones relacionadas con el contexto actual. Una hoja de acciones puede tener un título, un mensaje adicional y una lista de acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Son las constantes de colores y de muestras de color que representan la paleta de material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Seleccionaste: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres usar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las apps a determinar la ubicación. Esto implica el envío de datos de ubicación anónimos a Google, incluso cuando no se estén ejecutando apps.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Configurar cuenta para copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR DIÁLOGO",
+ "dialogFullscreenTitle": "Diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Una demostración de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Quieres permitir que \"Maps\" acceda a tu ubicación mientras usas la app?",
+ "cupertinoAlertLocationDescription": "Tu ubicación actual se mostrará en el mapa y se usará para obtener instrucciones sobre cómo llegar a lugares, resultados cercanos de la búsqueda y tiempos de viaje aproximados.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Selecciona tu postre favorito",
+ "cupertinoAlertDessertDescription": "Selecciona tu postre favorito de la siguiente lista. Se usará tu elección para personalizar la lista de restaurantes sugeridos en tu área.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastel de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSADO",
+ "colorsPurple": "PÚRPURA",
+ "colorsDeepPurple": "PÚRPURA OSCURO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "CELESTE",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Agregar cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "App de compras básica",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "App de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_PE.arb b/gallery/lib/l10n/intl_es_PE.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_PE.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palabras descriptivas para filtrar contenido.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos, como una entidad (persona, objeto o lugar), o texto conversacional de forma compacta.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre varias opciones mutuamente excluyentes. Cuando se selecciona una opción del control segmentado, se anula la selección de las otras.",
+ "chipTurnOnLights": "Encender luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Mediano",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicletas",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu potencial de deducción de impuestos. Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu potencial de deducción de impuestos. Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta, Estados Unidos",
+ "craneFormDestination": "Seleccionar destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VUELOS",
+ "craneSleep": "ALOJAMIENTO",
+ "craneEat": "GASTRONOMÍA",
+ "craneFlySubhead": "Explora vuelos por destino",
+ "craneSleepSubhead": "Explora propiedades por destino",
+ "craneEatSubhead": "Explora restaurantes por ubicación",
+ "craneFlyStops": "{numberOfStops,plural, =0{Directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen, Estados Unidos",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado de estilo iOS",
+ "craneSleep10": "El Cairo, Egipto",
+ "craneEat9": "Madrid, España",
+ "craneFly1": "Big Sur, Estados Unidos",
+ "craneEat7": "Nashville, Estados Unidos",
+ "craneEat6": "Seattle, Estados Unidos",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, Francia",
+ "craneEat3": "Portland, Estados Unidos",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estados Unidos",
+ "craneEat0": "Nápoles, Italia",
+ "craneSleep11": "Taipéi, Taiwán",
+ "craneSleep3": "La Habana, Cuba",
+ "shrineLogoutButtonCaption": "SALIR",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Bolso Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interés del comienzo del año fiscal",
+ "shrineProductWhitneyBelt": "Cinturón",
+ "shrineProductGardenStrand": "Hebras para jardín",
+ "shrineProductStrutEarrings": "Aros Strut",
+ "shrineProductVarsitySocks": "Medias varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Boina gatsby",
+ "shrineProductShrugBag": "Bolso de hombro",
+ "shrineProductGiltDeskTrio": "Juego de tres mesas",
+ "shrineProductCopperWireRack": "Estante de metal color cobre",
+ "shrineProductSootheCeramicSet": "Juego de cerámica",
+ "shrineProductHurrahsTeaSet": "Juego de té de cerámica",
+ "shrineProductBlueStoneMug": "Taza de color azul piedra",
+ "shrineProductRainwaterTray": "Bandeja para recolectar agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de chambray",
+ "shrineProductSucculentPlanters": "Macetas de suculentas",
+ "shrineProductQuartetTable": "Mesa para cuatro",
+ "shrineProductKitchenQuattro": "Cocina quattro",
+ "shrineProductClaySweater": "Suéter color arcilla",
+ "shrineProductSeaTunic": "Vestido de verano",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de chambray",
+ "shrineProductSeabreezeSweater": "Suéter de hilo liviano",
+ "shrineProductGentryJacket": "Chaqueta estilo gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta con botones (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camiseta estilo surf and perf",
+ "shrineProductGingerScarf": "Pañuelo color tierra",
+ "shrineProductRamonaCrossover": "Mezcla de estilos Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa clásica de cuello blanco",
+ "shrineProductSunshirtDress": "Camisa larga de verano",
+ "rallyAccountDetailDataInterestRate": "Tasa de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros del hogar",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Próximo resumen",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Compras de comestibles",
+ "shrineProductCeriseScallopTee": "Camiseta de cuello cerrado color cereza",
+ "rallyBudgetCategoryClothing": "Indumentaria",
+ "rallySettingsManageAccounts": "Administrar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros de vehículo",
+ "rallySettingsTaxDocuments": "Documentos de impuestos",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Configuración para recibir resúmenes en formato digital",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Salir",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Debes",
+ "rallyBudgetLeft": "Restante",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "DESCRIPCIÓN GENERAL",
+ "shrineProductShoulderRollsTee": "Camiseta con mangas",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "CONFIGURACIÓN",
+ "rallyLoginLoginToRally": "Accede a Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Acceder",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "ACCEDER",
+ "rallyAlertsMessageHeadsUpShopping": "Atención, utilizaste un {percent} del presupuesto para compras de este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Esta semana, gastaste {amount} en restaurantes",
+ "rallyAlertsMessageATMFees": "Este mes, gastaste {amount} en tarifas de cajeros automáticos",
+ "rallyAlertsMessageCheckingAccount": "¡Buen trabajo! El saldo de la cuenta corriente es un {percent} mayor al mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODAS",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "INDUMENTARIA",
+ "shrineCategoryNameHome": "HOGAR",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuesto:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{SIN ARTÍCULOS}=1{1 ARTÍCULO}other{{quantity} ARTÍCULOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Envío:",
+ "shrineProductGreySlouchTank": "Camiseta gris holgada de tirantes",
+ "shrineProductStellaSunglasses": "Anteojos Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa de rayas finas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos comunicarnos contigo?",
+ "settingsTextDirectionLTR": "IZQ. a DER.",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Línea única de texto y números editables",
+ "demoTextFieldDescription": "Los campos de texto permiten que los usuarios escriban en una IU. Suelen aparecer en diálogos y formularios.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Antes de enviar, corrige los errores marcados con rojo.",
+ "demoTextFieldNameRequired": "El nombre es obligatorio.",
+ "demoTextFieldOnlyAlphabeticalChars": "Ingresa solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Ingresa un número de teléfono de EE.UU.",
+ "demoTextFieldEnterPassword": "Ingresa una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llaman otras personas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Cuéntanos sobre ti (p. ej., escribe sobre lo que haces o tus pasatiempos)",
+ "demoTextFieldKeepItShort": "Sé breve, ya que esta es una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Historia de vida",
+ "demoTextFieldSalary": "Sueldo",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Incluye hasta 8 caracteres.",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas encadenadas",
+ "demoBottomSheetAddLabel": "Agregar",
+ "demoBottomSheetModalDescription": "Una hoja modal inferior es una alternativa a un menú o diálogo que impide que el usuario interactúe con el resto de la app.",
+ "demoBottomSheetModalTitle": "Hoja modal inferior",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información que suplementa el contenido principal de la app. La hoja permanece visible, incluso si el usuario interactúa con otras partes de la app.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Definiciones de distintos estilos de tipografía que se encuentran en material design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página nueva es un diálogo modal de pantalla completa.",
+ "demoFlatButtonDescription": "Un botón plano que muestra una gota de tinta cuando se lo presiona, pero que no tiene sombra. Usa los botones planos en barras de herramientas, diálogos y también intercalados con el relleno.",
+ "demoBottomNavigationDescription": "Las barras de navegación inferiores muestran entre tres y cinco destinos en la parte inferior de la pantalla. Cada destino se representa con un ícono y una etiqueta de texto opcional. Cuando el usuario presiona un ícono de navegación inferior, se lo redirecciona al destino de navegación de nivel superior que está asociado con el ícono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "El asterisco (*) indica que es un campo obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "DER. a IZQ.",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuración",
+ "rallyDescription": "Una app personal de finanzas",
+ "aboutDialogDescription": "Para ver el código fuente de esta app, visita {value}.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favoritos",
+ "starterAppTooltipAdd": "Agregar",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio responsivo",
+ "starterAppTitle": "App de inicio",
+ "aboutFlutterSamplesRepo": "Repositorio de GitHub con muestras de Flutter",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Puedes usar los botones de activación para agrupar opciones relacionadas. Para destacar los grupos de botones de activación relacionados, el grupo debe compartir un contenedor común.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA OSCURO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "VERDE LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una app de venta minorista a la moda",
+ "craneDescription": "Una app personalizada para viajes",
+ "homeCategoryReference": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se pudo mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Ejemplo de código",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Envía comentarios",
+ "settingsAttribution": "Diseño de TOASTER (Londres)",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Planos, con relieve, con contorno, etc.",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve agregan profundidad a los diseños más que nada planos. Destacan las funciones en espacios amplios o con muchos elementos.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan cuando se los presiona. A menudo, se combinan con botones con relieve para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones de activación",
+ "colorsTeal": "VERDE AZULADO",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón de ícono circular que se coloca sobre el contenido para propiciar una acción principal en la aplicación.",
+ "demoDialogTitle": "Diálogos",
+ "demoDialogSubtitle": "Simple, de alerta y de pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título y una lista de acciones que son opcionales.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "Un diálogo simple le ofrece al usuario la posibilidad de elegir entre varias opciones. Un diálogo simple tiene un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones con estilo de iOS",
+ "demoCupertinoButtonsDescription": "Un botón con el estilo de iOS. Contiene texto o un ícono que aparece o desaparece poco a poco cuando se lo toca. De manera opcional, puede tener un fondo.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Diálogos de alerta con estilo de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título, un contenido y una lista de acciones que son opcionales. El título se muestra encima del contenido y las acciones debajo del contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acciones es un estilo específico de alerta que brinda al usuario un conjunto de dos o más opciones relacionadas con el contexto actual. Una hoja de acciones puede tener un título, un mensaje adicional y una lista de acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Son las constantes de colores y de muestras de color que representan la paleta de material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Seleccionaste: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres usar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las apps a determinar la ubicación. Esto implica el envío de datos de ubicación anónimos a Google, incluso cuando no se estén ejecutando apps.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Configurar cuenta para copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR DIÁLOGO",
+ "dialogFullscreenTitle": "Diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Una demostración de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Quieres permitir que \"Maps\" acceda a tu ubicación mientras usas la app?",
+ "cupertinoAlertLocationDescription": "Tu ubicación actual se mostrará en el mapa y se usará para obtener instrucciones sobre cómo llegar a lugares, resultados cercanos de la búsqueda y tiempos de viaje aproximados.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Selecciona tu postre favorito",
+ "cupertinoAlertDessertDescription": "Selecciona tu postre favorito de la siguiente lista. Se usará tu elección para personalizar la lista de restaurantes sugeridos en tu área.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastel de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSADO",
+ "colorsPurple": "PÚRPURA",
+ "colorsDeepPurple": "PÚRPURA OSCURO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "CELESTE",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Agregar cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "App de compras básica",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "App de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_PR.arb b/gallery/lib/l10n/intl_es_PR.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_PR.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palabras descriptivas para filtrar contenido.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos, como una entidad (persona, objeto o lugar), o texto conversacional de forma compacta.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre varias opciones mutuamente excluyentes. Cuando se selecciona una opción del control segmentado, se anula la selección de las otras.",
+ "chipTurnOnLights": "Encender luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Mediano",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicletas",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu potencial de deducción de impuestos. Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu potencial de deducción de impuestos. Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta, Estados Unidos",
+ "craneFormDestination": "Seleccionar destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VUELOS",
+ "craneSleep": "ALOJAMIENTO",
+ "craneEat": "GASTRONOMÍA",
+ "craneFlySubhead": "Explora vuelos por destino",
+ "craneSleepSubhead": "Explora propiedades por destino",
+ "craneEatSubhead": "Explora restaurantes por ubicación",
+ "craneFlyStops": "{numberOfStops,plural, =0{Directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen, Estados Unidos",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado de estilo iOS",
+ "craneSleep10": "El Cairo, Egipto",
+ "craneEat9": "Madrid, España",
+ "craneFly1": "Big Sur, Estados Unidos",
+ "craneEat7": "Nashville, Estados Unidos",
+ "craneEat6": "Seattle, Estados Unidos",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, Francia",
+ "craneEat3": "Portland, Estados Unidos",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estados Unidos",
+ "craneEat0": "Nápoles, Italia",
+ "craneSleep11": "Taipéi, Taiwán",
+ "craneSleep3": "La Habana, Cuba",
+ "shrineLogoutButtonCaption": "SALIR",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Bolso Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interés del comienzo del año fiscal",
+ "shrineProductWhitneyBelt": "Cinturón",
+ "shrineProductGardenStrand": "Hebras para jardín",
+ "shrineProductStrutEarrings": "Aros Strut",
+ "shrineProductVarsitySocks": "Medias varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Boina gatsby",
+ "shrineProductShrugBag": "Bolso de hombro",
+ "shrineProductGiltDeskTrio": "Juego de tres mesas",
+ "shrineProductCopperWireRack": "Estante de metal color cobre",
+ "shrineProductSootheCeramicSet": "Juego de cerámica",
+ "shrineProductHurrahsTeaSet": "Juego de té de cerámica",
+ "shrineProductBlueStoneMug": "Taza de color azul piedra",
+ "shrineProductRainwaterTray": "Bandeja para recolectar agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de chambray",
+ "shrineProductSucculentPlanters": "Macetas de suculentas",
+ "shrineProductQuartetTable": "Mesa para cuatro",
+ "shrineProductKitchenQuattro": "Cocina quattro",
+ "shrineProductClaySweater": "Suéter color arcilla",
+ "shrineProductSeaTunic": "Vestido de verano",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de chambray",
+ "shrineProductSeabreezeSweater": "Suéter de hilo liviano",
+ "shrineProductGentryJacket": "Chaqueta estilo gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta con botones (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camiseta estilo surf and perf",
+ "shrineProductGingerScarf": "Pañuelo color tierra",
+ "shrineProductRamonaCrossover": "Mezcla de estilos Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa clásica de cuello blanco",
+ "shrineProductSunshirtDress": "Camisa larga de verano",
+ "rallyAccountDetailDataInterestRate": "Tasa de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros del hogar",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Próximo resumen",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Compras de comestibles",
+ "shrineProductCeriseScallopTee": "Camiseta de cuello cerrado color cereza",
+ "rallyBudgetCategoryClothing": "Indumentaria",
+ "rallySettingsManageAccounts": "Administrar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros de vehículo",
+ "rallySettingsTaxDocuments": "Documentos de impuestos",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Configuración para recibir resúmenes en formato digital",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Salir",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Debes",
+ "rallyBudgetLeft": "Restante",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "DESCRIPCIÓN GENERAL",
+ "shrineProductShoulderRollsTee": "Camiseta con mangas",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "CONFIGURACIÓN",
+ "rallyLoginLoginToRally": "Accede a Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Acceder",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "ACCEDER",
+ "rallyAlertsMessageHeadsUpShopping": "Atención, utilizaste un {percent} del presupuesto para compras de este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Esta semana, gastaste {amount} en restaurantes",
+ "rallyAlertsMessageATMFees": "Este mes, gastaste {amount} en tarifas de cajeros automáticos",
+ "rallyAlertsMessageCheckingAccount": "¡Buen trabajo! El saldo de la cuenta corriente es un {percent} mayor al mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODAS",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "INDUMENTARIA",
+ "shrineCategoryNameHome": "HOGAR",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuesto:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{SIN ARTÍCULOS}=1{1 ARTÍCULO}other{{quantity} ARTÍCULOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Envío:",
+ "shrineProductGreySlouchTank": "Camiseta gris holgada de tirantes",
+ "shrineProductStellaSunglasses": "Anteojos Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa de rayas finas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos comunicarnos contigo?",
+ "settingsTextDirectionLTR": "IZQ. a DER.",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Línea única de texto y números editables",
+ "demoTextFieldDescription": "Los campos de texto permiten que los usuarios escriban en una IU. Suelen aparecer en diálogos y formularios.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Antes de enviar, corrige los errores marcados con rojo.",
+ "demoTextFieldNameRequired": "El nombre es obligatorio.",
+ "demoTextFieldOnlyAlphabeticalChars": "Ingresa solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Ingresa un número de teléfono de EE.UU.",
+ "demoTextFieldEnterPassword": "Ingresa una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llaman otras personas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Cuéntanos sobre ti (p. ej., escribe sobre lo que haces o tus pasatiempos)",
+ "demoTextFieldKeepItShort": "Sé breve, ya que esta es una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Historia de vida",
+ "demoTextFieldSalary": "Sueldo",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Incluye hasta 8 caracteres.",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas encadenadas",
+ "demoBottomSheetAddLabel": "Agregar",
+ "demoBottomSheetModalDescription": "Una hoja modal inferior es una alternativa a un menú o diálogo que impide que el usuario interactúe con el resto de la app.",
+ "demoBottomSheetModalTitle": "Hoja modal inferior",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información que suplementa el contenido principal de la app. La hoja permanece visible, incluso si el usuario interactúa con otras partes de la app.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Definiciones de distintos estilos de tipografía que se encuentran en material design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página nueva es un diálogo modal de pantalla completa.",
+ "demoFlatButtonDescription": "Un botón plano que muestra una gota de tinta cuando se lo presiona, pero que no tiene sombra. Usa los botones planos en barras de herramientas, diálogos y también intercalados con el relleno.",
+ "demoBottomNavigationDescription": "Las barras de navegación inferiores muestran entre tres y cinco destinos en la parte inferior de la pantalla. Cada destino se representa con un ícono y una etiqueta de texto opcional. Cuando el usuario presiona un ícono de navegación inferior, se lo redirecciona al destino de navegación de nivel superior que está asociado con el ícono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "El asterisco (*) indica que es un campo obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "DER. a IZQ.",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuración",
+ "rallyDescription": "Una app personal de finanzas",
+ "aboutDialogDescription": "Para ver el código fuente de esta app, visita {value}.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favoritos",
+ "starterAppTooltipAdd": "Agregar",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio responsivo",
+ "starterAppTitle": "App de inicio",
+ "aboutFlutterSamplesRepo": "Repositorio de GitHub con muestras de Flutter",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Puedes usar los botones de activación para agrupar opciones relacionadas. Para destacar los grupos de botones de activación relacionados, el grupo debe compartir un contenedor común.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA OSCURO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "VERDE LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una app de venta minorista a la moda",
+ "craneDescription": "Una app personalizada para viajes",
+ "homeCategoryReference": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se pudo mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Ejemplo de código",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Envía comentarios",
+ "settingsAttribution": "Diseño de TOASTER (Londres)",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Planos, con relieve, con contorno, etc.",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve agregan profundidad a los diseños más que nada planos. Destacan las funciones en espacios amplios o con muchos elementos.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan cuando se los presiona. A menudo, se combinan con botones con relieve para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones de activación",
+ "colorsTeal": "VERDE AZULADO",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón de ícono circular que se coloca sobre el contenido para propiciar una acción principal en la aplicación.",
+ "demoDialogTitle": "Diálogos",
+ "demoDialogSubtitle": "Simple, de alerta y de pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título y una lista de acciones que son opcionales.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "Un diálogo simple le ofrece al usuario la posibilidad de elegir entre varias opciones. Un diálogo simple tiene un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones con estilo de iOS",
+ "demoCupertinoButtonsDescription": "Un botón con el estilo de iOS. Contiene texto o un ícono que aparece o desaparece poco a poco cuando se lo toca. De manera opcional, puede tener un fondo.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Diálogos de alerta con estilo de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título, un contenido y una lista de acciones que son opcionales. El título se muestra encima del contenido y las acciones debajo del contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acciones es un estilo específico de alerta que brinda al usuario un conjunto de dos o más opciones relacionadas con el contexto actual. Una hoja de acciones puede tener un título, un mensaje adicional y una lista de acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Son las constantes de colores y de muestras de color que representan la paleta de material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Seleccionaste: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres usar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las apps a determinar la ubicación. Esto implica el envío de datos de ubicación anónimos a Google, incluso cuando no se estén ejecutando apps.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Configurar cuenta para copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR DIÁLOGO",
+ "dialogFullscreenTitle": "Diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Una demostración de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Quieres permitir que \"Maps\" acceda a tu ubicación mientras usas la app?",
+ "cupertinoAlertLocationDescription": "Tu ubicación actual se mostrará en el mapa y se usará para obtener instrucciones sobre cómo llegar a lugares, resultados cercanos de la búsqueda y tiempos de viaje aproximados.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Selecciona tu postre favorito",
+ "cupertinoAlertDessertDescription": "Selecciona tu postre favorito de la siguiente lista. Se usará tu elección para personalizar la lista de restaurantes sugeridos en tu área.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastel de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSADO",
+ "colorsPurple": "PÚRPURA",
+ "colorsDeepPurple": "PÚRPURA OSCURO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "CELESTE",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Agregar cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "App de compras básica",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "App de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_PY.arb b/gallery/lib/l10n/intl_es_PY.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_PY.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palabras descriptivas para filtrar contenido.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos, como una entidad (persona, objeto o lugar), o texto conversacional de forma compacta.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre varias opciones mutuamente excluyentes. Cuando se selecciona una opción del control segmentado, se anula la selección de las otras.",
+ "chipTurnOnLights": "Encender luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Mediano",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicletas",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu potencial de deducción de impuestos. Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu potencial de deducción de impuestos. Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta, Estados Unidos",
+ "craneFormDestination": "Seleccionar destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VUELOS",
+ "craneSleep": "ALOJAMIENTO",
+ "craneEat": "GASTRONOMÍA",
+ "craneFlySubhead": "Explora vuelos por destino",
+ "craneSleepSubhead": "Explora propiedades por destino",
+ "craneEatSubhead": "Explora restaurantes por ubicación",
+ "craneFlyStops": "{numberOfStops,plural, =0{Directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen, Estados Unidos",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado de estilo iOS",
+ "craneSleep10": "El Cairo, Egipto",
+ "craneEat9": "Madrid, España",
+ "craneFly1": "Big Sur, Estados Unidos",
+ "craneEat7": "Nashville, Estados Unidos",
+ "craneEat6": "Seattle, Estados Unidos",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, Francia",
+ "craneEat3": "Portland, Estados Unidos",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estados Unidos",
+ "craneEat0": "Nápoles, Italia",
+ "craneSleep11": "Taipéi, Taiwán",
+ "craneSleep3": "La Habana, Cuba",
+ "shrineLogoutButtonCaption": "SALIR",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Bolso Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interés del comienzo del año fiscal",
+ "shrineProductWhitneyBelt": "Cinturón",
+ "shrineProductGardenStrand": "Hebras para jardín",
+ "shrineProductStrutEarrings": "Aros Strut",
+ "shrineProductVarsitySocks": "Medias varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Boina gatsby",
+ "shrineProductShrugBag": "Bolso de hombro",
+ "shrineProductGiltDeskTrio": "Juego de tres mesas",
+ "shrineProductCopperWireRack": "Estante de metal color cobre",
+ "shrineProductSootheCeramicSet": "Juego de cerámica",
+ "shrineProductHurrahsTeaSet": "Juego de té de cerámica",
+ "shrineProductBlueStoneMug": "Taza de color azul piedra",
+ "shrineProductRainwaterTray": "Bandeja para recolectar agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de chambray",
+ "shrineProductSucculentPlanters": "Macetas de suculentas",
+ "shrineProductQuartetTable": "Mesa para cuatro",
+ "shrineProductKitchenQuattro": "Cocina quattro",
+ "shrineProductClaySweater": "Suéter color arcilla",
+ "shrineProductSeaTunic": "Vestido de verano",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de chambray",
+ "shrineProductSeabreezeSweater": "Suéter de hilo liviano",
+ "shrineProductGentryJacket": "Chaqueta estilo gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta con botones (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camiseta estilo surf and perf",
+ "shrineProductGingerScarf": "Pañuelo color tierra",
+ "shrineProductRamonaCrossover": "Mezcla de estilos Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa clásica de cuello blanco",
+ "shrineProductSunshirtDress": "Camisa larga de verano",
+ "rallyAccountDetailDataInterestRate": "Tasa de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros del hogar",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Próximo resumen",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Compras de comestibles",
+ "shrineProductCeriseScallopTee": "Camiseta de cuello cerrado color cereza",
+ "rallyBudgetCategoryClothing": "Indumentaria",
+ "rallySettingsManageAccounts": "Administrar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros de vehículo",
+ "rallySettingsTaxDocuments": "Documentos de impuestos",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Configuración para recibir resúmenes en formato digital",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Salir",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Debes",
+ "rallyBudgetLeft": "Restante",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "DESCRIPCIÓN GENERAL",
+ "shrineProductShoulderRollsTee": "Camiseta con mangas",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "CONFIGURACIÓN",
+ "rallyLoginLoginToRally": "Accede a Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Acceder",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "ACCEDER",
+ "rallyAlertsMessageHeadsUpShopping": "Atención, utilizaste un {percent} del presupuesto para compras de este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Esta semana, gastaste {amount} en restaurantes",
+ "rallyAlertsMessageATMFees": "Este mes, gastaste {amount} en tarifas de cajeros automáticos",
+ "rallyAlertsMessageCheckingAccount": "¡Buen trabajo! El saldo de la cuenta corriente es un {percent} mayor al mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODAS",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "INDUMENTARIA",
+ "shrineCategoryNameHome": "HOGAR",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuesto:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{SIN ARTÍCULOS}=1{1 ARTÍCULO}other{{quantity} ARTÍCULOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Envío:",
+ "shrineProductGreySlouchTank": "Camiseta gris holgada de tirantes",
+ "shrineProductStellaSunglasses": "Anteojos Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa de rayas finas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos comunicarnos contigo?",
+ "settingsTextDirectionLTR": "IZQ. a DER.",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Línea única de texto y números editables",
+ "demoTextFieldDescription": "Los campos de texto permiten que los usuarios escriban en una IU. Suelen aparecer en diálogos y formularios.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Antes de enviar, corrige los errores marcados con rojo.",
+ "demoTextFieldNameRequired": "El nombre es obligatorio.",
+ "demoTextFieldOnlyAlphabeticalChars": "Ingresa solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Ingresa un número de teléfono de EE.UU.",
+ "demoTextFieldEnterPassword": "Ingresa una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llaman otras personas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Cuéntanos sobre ti (p. ej., escribe sobre lo que haces o tus pasatiempos)",
+ "demoTextFieldKeepItShort": "Sé breve, ya que esta es una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Historia de vida",
+ "demoTextFieldSalary": "Sueldo",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Incluye hasta 8 caracteres.",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas encadenadas",
+ "demoBottomSheetAddLabel": "Agregar",
+ "demoBottomSheetModalDescription": "Una hoja modal inferior es una alternativa a un menú o diálogo que impide que el usuario interactúe con el resto de la app.",
+ "demoBottomSheetModalTitle": "Hoja modal inferior",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información que suplementa el contenido principal de la app. La hoja permanece visible, incluso si el usuario interactúa con otras partes de la app.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Definiciones de distintos estilos de tipografía que se encuentran en material design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página nueva es un diálogo modal de pantalla completa.",
+ "demoFlatButtonDescription": "Un botón plano que muestra una gota de tinta cuando se lo presiona, pero que no tiene sombra. Usa los botones planos en barras de herramientas, diálogos y también intercalados con el relleno.",
+ "demoBottomNavigationDescription": "Las barras de navegación inferiores muestran entre tres y cinco destinos en la parte inferior de la pantalla. Cada destino se representa con un ícono y una etiqueta de texto opcional. Cuando el usuario presiona un ícono de navegación inferior, se lo redirecciona al destino de navegación de nivel superior que está asociado con el ícono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "El asterisco (*) indica que es un campo obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "DER. a IZQ.",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuración",
+ "rallyDescription": "Una app personal de finanzas",
+ "aboutDialogDescription": "Para ver el código fuente de esta app, visita {value}.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favoritos",
+ "starterAppTooltipAdd": "Agregar",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio responsivo",
+ "starterAppTitle": "App de inicio",
+ "aboutFlutterSamplesRepo": "Repositorio de GitHub con muestras de Flutter",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Puedes usar los botones de activación para agrupar opciones relacionadas. Para destacar los grupos de botones de activación relacionados, el grupo debe compartir un contenedor común.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA OSCURO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "VERDE LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una app de venta minorista a la moda",
+ "craneDescription": "Una app personalizada para viajes",
+ "homeCategoryReference": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se pudo mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Ejemplo de código",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Envía comentarios",
+ "settingsAttribution": "Diseño de TOASTER (Londres)",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Planos, con relieve, con contorno, etc.",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve agregan profundidad a los diseños más que nada planos. Destacan las funciones en espacios amplios o con muchos elementos.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan cuando se los presiona. A menudo, se combinan con botones con relieve para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones de activación",
+ "colorsTeal": "VERDE AZULADO",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón de ícono circular que se coloca sobre el contenido para propiciar una acción principal en la aplicación.",
+ "demoDialogTitle": "Diálogos",
+ "demoDialogSubtitle": "Simple, de alerta y de pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título y una lista de acciones que son opcionales.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "Un diálogo simple le ofrece al usuario la posibilidad de elegir entre varias opciones. Un diálogo simple tiene un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones con estilo de iOS",
+ "demoCupertinoButtonsDescription": "Un botón con el estilo de iOS. Contiene texto o un ícono que aparece o desaparece poco a poco cuando se lo toca. De manera opcional, puede tener un fondo.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Diálogos de alerta con estilo de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título, un contenido y una lista de acciones que son opcionales. El título se muestra encima del contenido y las acciones debajo del contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acciones es un estilo específico de alerta que brinda al usuario un conjunto de dos o más opciones relacionadas con el contexto actual. Una hoja de acciones puede tener un título, un mensaje adicional y una lista de acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Son las constantes de colores y de muestras de color que representan la paleta de material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Seleccionaste: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres usar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las apps a determinar la ubicación. Esto implica el envío de datos de ubicación anónimos a Google, incluso cuando no se estén ejecutando apps.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Configurar cuenta para copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR DIÁLOGO",
+ "dialogFullscreenTitle": "Diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Una demostración de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Quieres permitir que \"Maps\" acceda a tu ubicación mientras usas la app?",
+ "cupertinoAlertLocationDescription": "Tu ubicación actual se mostrará en el mapa y se usará para obtener instrucciones sobre cómo llegar a lugares, resultados cercanos de la búsqueda y tiempos de viaje aproximados.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Selecciona tu postre favorito",
+ "cupertinoAlertDessertDescription": "Selecciona tu postre favorito de la siguiente lista. Se usará tu elección para personalizar la lista de restaurantes sugeridos en tu área.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastel de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSADO",
+ "colorsPurple": "PÚRPURA",
+ "colorsDeepPurple": "PÚRPURA OSCURO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "CELESTE",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Agregar cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "App de compras básica",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "App de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_SV.arb b/gallery/lib/l10n/intl_es_SV.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_SV.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palabras descriptivas para filtrar contenido.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos, como una entidad (persona, objeto o lugar), o texto conversacional de forma compacta.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre varias opciones mutuamente excluyentes. Cuando se selecciona una opción del control segmentado, se anula la selección de las otras.",
+ "chipTurnOnLights": "Encender luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Mediano",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicletas",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu potencial de deducción de impuestos. Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu potencial de deducción de impuestos. Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta, Estados Unidos",
+ "craneFormDestination": "Seleccionar destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VUELOS",
+ "craneSleep": "ALOJAMIENTO",
+ "craneEat": "GASTRONOMÍA",
+ "craneFlySubhead": "Explora vuelos por destino",
+ "craneSleepSubhead": "Explora propiedades por destino",
+ "craneEatSubhead": "Explora restaurantes por ubicación",
+ "craneFlyStops": "{numberOfStops,plural, =0{Directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen, Estados Unidos",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado de estilo iOS",
+ "craneSleep10": "El Cairo, Egipto",
+ "craneEat9": "Madrid, España",
+ "craneFly1": "Big Sur, Estados Unidos",
+ "craneEat7": "Nashville, Estados Unidos",
+ "craneEat6": "Seattle, Estados Unidos",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, Francia",
+ "craneEat3": "Portland, Estados Unidos",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estados Unidos",
+ "craneEat0": "Nápoles, Italia",
+ "craneSleep11": "Taipéi, Taiwán",
+ "craneSleep3": "La Habana, Cuba",
+ "shrineLogoutButtonCaption": "SALIR",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Bolso Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interés del comienzo del año fiscal",
+ "shrineProductWhitneyBelt": "Cinturón",
+ "shrineProductGardenStrand": "Hebras para jardín",
+ "shrineProductStrutEarrings": "Aros Strut",
+ "shrineProductVarsitySocks": "Medias varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Boina gatsby",
+ "shrineProductShrugBag": "Bolso de hombro",
+ "shrineProductGiltDeskTrio": "Juego de tres mesas",
+ "shrineProductCopperWireRack": "Estante de metal color cobre",
+ "shrineProductSootheCeramicSet": "Juego de cerámica",
+ "shrineProductHurrahsTeaSet": "Juego de té de cerámica",
+ "shrineProductBlueStoneMug": "Taza de color azul piedra",
+ "shrineProductRainwaterTray": "Bandeja para recolectar agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de chambray",
+ "shrineProductSucculentPlanters": "Macetas de suculentas",
+ "shrineProductQuartetTable": "Mesa para cuatro",
+ "shrineProductKitchenQuattro": "Cocina quattro",
+ "shrineProductClaySweater": "Suéter color arcilla",
+ "shrineProductSeaTunic": "Vestido de verano",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de chambray",
+ "shrineProductSeabreezeSweater": "Suéter de hilo liviano",
+ "shrineProductGentryJacket": "Chaqueta estilo gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta con botones (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camiseta estilo surf and perf",
+ "shrineProductGingerScarf": "Pañuelo color tierra",
+ "shrineProductRamonaCrossover": "Mezcla de estilos Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa clásica de cuello blanco",
+ "shrineProductSunshirtDress": "Camisa larga de verano",
+ "rallyAccountDetailDataInterestRate": "Tasa de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros del hogar",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Próximo resumen",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Compras de comestibles",
+ "shrineProductCeriseScallopTee": "Camiseta de cuello cerrado color cereza",
+ "rallyBudgetCategoryClothing": "Indumentaria",
+ "rallySettingsManageAccounts": "Administrar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros de vehículo",
+ "rallySettingsTaxDocuments": "Documentos de impuestos",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Configuración para recibir resúmenes en formato digital",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Salir",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Debes",
+ "rallyBudgetLeft": "Restante",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "DESCRIPCIÓN GENERAL",
+ "shrineProductShoulderRollsTee": "Camiseta con mangas",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "CONFIGURACIÓN",
+ "rallyLoginLoginToRally": "Accede a Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Acceder",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "ACCEDER",
+ "rallyAlertsMessageHeadsUpShopping": "Atención, utilizaste un {percent} del presupuesto para compras de este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Esta semana, gastaste {amount} en restaurantes",
+ "rallyAlertsMessageATMFees": "Este mes, gastaste {amount} en tarifas de cajeros automáticos",
+ "rallyAlertsMessageCheckingAccount": "¡Buen trabajo! El saldo de la cuenta corriente es un {percent} mayor al mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODAS",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "INDUMENTARIA",
+ "shrineCategoryNameHome": "HOGAR",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuesto:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{SIN ARTÍCULOS}=1{1 ARTÍCULO}other{{quantity} ARTÍCULOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Envío:",
+ "shrineProductGreySlouchTank": "Camiseta gris holgada de tirantes",
+ "shrineProductStellaSunglasses": "Anteojos Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa de rayas finas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos comunicarnos contigo?",
+ "settingsTextDirectionLTR": "IZQ. a DER.",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Línea única de texto y números editables",
+ "demoTextFieldDescription": "Los campos de texto permiten que los usuarios escriban en una IU. Suelen aparecer en diálogos y formularios.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Antes de enviar, corrige los errores marcados con rojo.",
+ "demoTextFieldNameRequired": "El nombre es obligatorio.",
+ "demoTextFieldOnlyAlphabeticalChars": "Ingresa solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Ingresa un número de teléfono de EE.UU.",
+ "demoTextFieldEnterPassword": "Ingresa una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llaman otras personas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Cuéntanos sobre ti (p. ej., escribe sobre lo que haces o tus pasatiempos)",
+ "demoTextFieldKeepItShort": "Sé breve, ya que esta es una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Historia de vida",
+ "demoTextFieldSalary": "Sueldo",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Incluye hasta 8 caracteres.",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas encadenadas",
+ "demoBottomSheetAddLabel": "Agregar",
+ "demoBottomSheetModalDescription": "Una hoja modal inferior es una alternativa a un menú o diálogo que impide que el usuario interactúe con el resto de la app.",
+ "demoBottomSheetModalTitle": "Hoja modal inferior",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información que suplementa el contenido principal de la app. La hoja permanece visible, incluso si el usuario interactúa con otras partes de la app.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Definiciones de distintos estilos de tipografía que se encuentran en material design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página nueva es un diálogo modal de pantalla completa.",
+ "demoFlatButtonDescription": "Un botón plano que muestra una gota de tinta cuando se lo presiona, pero que no tiene sombra. Usa los botones planos en barras de herramientas, diálogos y también intercalados con el relleno.",
+ "demoBottomNavigationDescription": "Las barras de navegación inferiores muestran entre tres y cinco destinos en la parte inferior de la pantalla. Cada destino se representa con un ícono y una etiqueta de texto opcional. Cuando el usuario presiona un ícono de navegación inferior, se lo redirecciona al destino de navegación de nivel superior que está asociado con el ícono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "El asterisco (*) indica que es un campo obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "DER. a IZQ.",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuración",
+ "rallyDescription": "Una app personal de finanzas",
+ "aboutDialogDescription": "Para ver el código fuente de esta app, visita {value}.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favoritos",
+ "starterAppTooltipAdd": "Agregar",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio responsivo",
+ "starterAppTitle": "App de inicio",
+ "aboutFlutterSamplesRepo": "Repositorio de GitHub con muestras de Flutter",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Puedes usar los botones de activación para agrupar opciones relacionadas. Para destacar los grupos de botones de activación relacionados, el grupo debe compartir un contenedor común.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA OSCURO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "VERDE LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una app de venta minorista a la moda",
+ "craneDescription": "Una app personalizada para viajes",
+ "homeCategoryReference": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se pudo mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Ejemplo de código",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Envía comentarios",
+ "settingsAttribution": "Diseño de TOASTER (Londres)",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Planos, con relieve, con contorno, etc.",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve agregan profundidad a los diseños más que nada planos. Destacan las funciones en espacios amplios o con muchos elementos.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan cuando se los presiona. A menudo, se combinan con botones con relieve para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones de activación",
+ "colorsTeal": "VERDE AZULADO",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón de ícono circular que se coloca sobre el contenido para propiciar una acción principal en la aplicación.",
+ "demoDialogTitle": "Diálogos",
+ "demoDialogSubtitle": "Simple, de alerta y de pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título y una lista de acciones que son opcionales.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "Un diálogo simple le ofrece al usuario la posibilidad de elegir entre varias opciones. Un diálogo simple tiene un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones con estilo de iOS",
+ "demoCupertinoButtonsDescription": "Un botón con el estilo de iOS. Contiene texto o un ícono que aparece o desaparece poco a poco cuando se lo toca. De manera opcional, puede tener un fondo.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Diálogos de alerta con estilo de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título, un contenido y una lista de acciones que son opcionales. El título se muestra encima del contenido y las acciones debajo del contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acciones es un estilo específico de alerta que brinda al usuario un conjunto de dos o más opciones relacionadas con el contexto actual. Una hoja de acciones puede tener un título, un mensaje adicional y una lista de acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Son las constantes de colores y de muestras de color que representan la paleta de material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Seleccionaste: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres usar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las apps a determinar la ubicación. Esto implica el envío de datos de ubicación anónimos a Google, incluso cuando no se estén ejecutando apps.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Configurar cuenta para copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR DIÁLOGO",
+ "dialogFullscreenTitle": "Diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Una demostración de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Quieres permitir que \"Maps\" acceda a tu ubicación mientras usas la app?",
+ "cupertinoAlertLocationDescription": "Tu ubicación actual se mostrará en el mapa y se usará para obtener instrucciones sobre cómo llegar a lugares, resultados cercanos de la búsqueda y tiempos de viaje aproximados.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Selecciona tu postre favorito",
+ "cupertinoAlertDessertDescription": "Selecciona tu postre favorito de la siguiente lista. Se usará tu elección para personalizar la lista de restaurantes sugeridos en tu área.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastel de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSADO",
+ "colorsPurple": "PÚRPURA",
+ "colorsDeepPurple": "PÚRPURA OSCURO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "CELESTE",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Agregar cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "App de compras básica",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "App de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_US.arb b/gallery/lib/l10n/intl_es_US.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_US.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palabras descriptivas para filtrar contenido.",
+ "demoInputChipTitle": "Chip de entrada",
+ "demoInputChipDescription": "Los chips de entrada representan datos complejos, como una entidad (persona, objeto o lugar), o texto conversacional de forma compacta.",
+ "craneSleep9": "Lisboa, Portugal",
+ "craneEat10": "Lisboa, Portugal",
+ "demoCupertinoSegmentedControlDescription": "Se usa para seleccionar entre varias opciones mutuamente excluyentes. Cuando se selecciona una opción del control segmentado, se anula la selección de las otras.",
+ "chipTurnOnLights": "Encender luces",
+ "chipSmall": "Pequeño",
+ "chipMedium": "Mediano",
+ "chipLarge": "Grande",
+ "chipElevator": "Ascensor",
+ "chipWasher": "Lavadora",
+ "chipFireplace": "Chimenea",
+ "chipBiking": "Bicicletas",
+ "craneFormDiners": "Restaurantes",
+ "rallyAlertsMessageUnassignedTransactions": "{count,plural, =1{Aumenta tu potencial de deducción de impuestos. Asigna categorías a 1 transacción sin asignar.}other{Aumenta tu potencial de deducción de impuestos. Asigna categorías a {count} transacciones sin asignar.}}",
+ "craneFormTime": "Seleccionar hora",
+ "craneFormLocation": "Seleccionar ubicación",
+ "craneFormTravelers": "Viajeros",
+ "craneEat8": "Atlanta, Estados Unidos",
+ "craneFormDestination": "Seleccionar destino",
+ "craneFormDates": "Seleccionar fechas",
+ "craneFly": "VUELOS",
+ "craneSleep": "ALOJAMIENTO",
+ "craneEat": "GASTRONOMÍA",
+ "craneFlySubhead": "Explora vuelos por destino",
+ "craneSleepSubhead": "Explora propiedades por destino",
+ "craneEatSubhead": "Explora restaurantes por ubicación",
+ "craneFlyStops": "{numberOfStops,plural, =0{Directo}=1{1 escala}other{{numberOfStops} escalas}}",
+ "craneSleepProperties": "{totalProperties,plural, =0{No hay propiedades disponibles}=1{1 propiedad disponible}other{{totalProperties} propiedades disponibles}}",
+ "craneEatRestaurants": "{totalRestaurants,plural, =0{No hay restaurantes}=1{1 restaurante}other{{totalRestaurants} restaurantes}}",
+ "craneFly0": "Aspen, Estados Unidos",
+ "demoCupertinoSegmentedControlSubtitle": "Control segmentado de estilo iOS",
+ "craneSleep10": "El Cairo, Egipto",
+ "craneEat9": "Madrid, España",
+ "craneFly1": "Big Sur, Estados Unidos",
+ "craneEat7": "Nashville, Estados Unidos",
+ "craneEat6": "Seattle, Estados Unidos",
+ "craneFly8": "Singapur",
+ "craneEat4": "París, Francia",
+ "craneEat3": "Portland, Estados Unidos",
+ "craneEat2": "Córdoba, Argentina",
+ "craneEat1": "Dallas, Estados Unidos",
+ "craneEat0": "Nápoles, Italia",
+ "craneSleep11": "Taipéi, Taiwán",
+ "craneSleep3": "La Habana, Cuba",
+ "shrineLogoutButtonCaption": "SALIR",
+ "rallyTitleBills": "FACTURAS",
+ "rallyTitleAccounts": "CUENTAS",
+ "shrineProductVagabondSack": "Bolso Vagabond",
+ "rallyAccountDetailDataInterestYtd": "Interés del comienzo del año fiscal",
+ "shrineProductWhitneyBelt": "Cinturón",
+ "shrineProductGardenStrand": "Hebras para jardín",
+ "shrineProductStrutEarrings": "Aros Strut",
+ "shrineProductVarsitySocks": "Medias varsity",
+ "shrineProductWeaveKeyring": "Llavero de tela",
+ "shrineProductGatsbyHat": "Boina gatsby",
+ "shrineProductShrugBag": "Bolso de hombro",
+ "shrineProductGiltDeskTrio": "Juego de tres mesas",
+ "shrineProductCopperWireRack": "Estante de metal color cobre",
+ "shrineProductSootheCeramicSet": "Juego de cerámica",
+ "shrineProductHurrahsTeaSet": "Juego de té de cerámica",
+ "shrineProductBlueStoneMug": "Taza de color azul piedra",
+ "shrineProductRainwaterTray": "Bandeja para recolectar agua de lluvia",
+ "shrineProductChambrayNapkins": "Servilletas de chambray",
+ "shrineProductSucculentPlanters": "Macetas de suculentas",
+ "shrineProductQuartetTable": "Mesa para cuatro",
+ "shrineProductKitchenQuattro": "Cocina quattro",
+ "shrineProductClaySweater": "Suéter color arcilla",
+ "shrineProductSeaTunic": "Vestido de verano",
+ "shrineProductPlasterTunic": "Túnica color yeso",
+ "rallyBudgetCategoryRestaurants": "Restaurantes",
+ "shrineProductChambrayShirt": "Camisa de chambray",
+ "shrineProductSeabreezeSweater": "Suéter de hilo liviano",
+ "shrineProductGentryJacket": "Chaqueta estilo gentry",
+ "shrineProductNavyTrousers": "Pantalones azul marino",
+ "shrineProductWalterHenleyWhite": "Camiseta con botones (blanca)",
+ "shrineProductSurfAndPerfShirt": "Camiseta estilo surf and perf",
+ "shrineProductGingerScarf": "Pañuelo color tierra",
+ "shrineProductRamonaCrossover": "Mezcla de estilos Ramona",
+ "shrineProductClassicWhiteCollar": "Camisa clásica de cuello blanco",
+ "shrineProductSunshirtDress": "Camisa larga de verano",
+ "rallyAccountDetailDataInterestRate": "Tasa de interés",
+ "rallyAccountDetailDataAnnualPercentageYield": "Porcentaje de rendimiento anual",
+ "rallyAccountDataVacation": "Vacaciones",
+ "shrineProductFineLinesTee": "Camiseta de rayas finas",
+ "rallyAccountDataHomeSavings": "Ahorros del hogar",
+ "rallyAccountDataChecking": "Cuenta corriente",
+ "rallyAccountDetailDataInterestPaidLastYear": "Intereses pagados el año pasado",
+ "rallyAccountDetailDataNextStatement": "Próximo resumen",
+ "rallyAccountDetailDataAccountOwner": "Propietario de la cuenta",
+ "rallyBudgetCategoryCoffeeShops": "Cafeterías",
+ "rallyBudgetCategoryGroceries": "Compras de comestibles",
+ "shrineProductCeriseScallopTee": "Camiseta de cuello cerrado color cereza",
+ "rallyBudgetCategoryClothing": "Indumentaria",
+ "rallySettingsManageAccounts": "Administrar cuentas",
+ "rallyAccountDataCarSavings": "Ahorros de vehículo",
+ "rallySettingsTaxDocuments": "Documentos de impuestos",
+ "rallySettingsPasscodeAndTouchId": "Contraseña y Touch ID",
+ "rallySettingsNotifications": "Notificaciones",
+ "rallySettingsPersonalInformation": "Información personal",
+ "rallySettingsPaperlessSettings": "Configuración para recibir resúmenes en formato digital",
+ "rallySettingsFindAtms": "Buscar cajeros automáticos",
+ "rallySettingsHelp": "Ayuda",
+ "rallySettingsSignOut": "Salir",
+ "rallyAccountTotal": "Total",
+ "rallyBillsDue": "Debes",
+ "rallyBudgetLeft": "Restante",
+ "rallyAccounts": "Cuentas",
+ "rallyBills": "Facturas",
+ "rallyBudgets": "Presupuestos",
+ "rallyAlerts": "Alertas",
+ "rallySeeAll": "VER TODO",
+ "rallyFinanceLeft": "RESTANTE",
+ "rallyTitleOverview": "DESCRIPCIÓN GENERAL",
+ "shrineProductShoulderRollsTee": "Camiseta con mangas",
+ "shrineNextButtonCaption": "SIGUIENTE",
+ "rallyTitleBudgets": "PRESUPUESTOS",
+ "rallyTitleSettings": "CONFIGURACIÓN",
+ "rallyLoginLoginToRally": "Accede a Rally",
+ "rallyLoginNoAccount": "¿No tienes una cuenta?",
+ "rallyLoginSignUp": "REGISTRARSE",
+ "rallyLoginUsername": "Nombre de usuario",
+ "rallyLoginPassword": "Contraseña",
+ "rallyLoginLabelLogin": "Acceder",
+ "rallyLoginRememberMe": "Recordarme",
+ "rallyLoginButtonLogin": "ACCEDER",
+ "rallyAlertsMessageHeadsUpShopping": "Atención, utilizaste un {percent} del presupuesto para compras de este mes.",
+ "rallyAlertsMessageSpentOnRestaurants": "Esta semana, gastaste {amount} en restaurantes",
+ "rallyAlertsMessageATMFees": "Este mes, gastaste {amount} en tarifas de cajeros automáticos",
+ "rallyAlertsMessageCheckingAccount": "¡Buen trabajo! El saldo de la cuenta corriente es un {percent} mayor al mes pasado.",
+ "shrineMenuCaption": "MENÚ",
+ "shrineCategoryNameAll": "TODAS",
+ "shrineCategoryNameAccessories": "ACCESORIOS",
+ "shrineCategoryNameClothing": "INDUMENTARIA",
+ "shrineCategoryNameHome": "HOGAR",
+ "shrineLoginUsernameLabel": "Nombre de usuario",
+ "shrineLoginPasswordLabel": "Contraseña",
+ "shrineCancelButtonCaption": "CANCELAR",
+ "shrineCartTaxCaption": "Impuesto:",
+ "shrineCartPageCaption": "CARRITO",
+ "shrineProductQuantity": "Cantidad: {quantity}",
+ "shrineProductPrice": "x {price}",
+ "shrineCartItemCount": "{quantity,plural, =0{SIN ARTÍCULOS}=1{1 ARTÍCULO}other{{quantity} ARTÍCULOS}}",
+ "shrineCartClearButtonCaption": "VACIAR CARRITO",
+ "shrineCartTotalCaption": "TOTAL",
+ "shrineCartSubtotalCaption": "Subtotal:",
+ "shrineCartShippingCaption": "Envío:",
+ "shrineProductGreySlouchTank": "Camiseta gris holgada de tirantes",
+ "shrineProductStellaSunglasses": "Anteojos Stella",
+ "shrineProductWhitePinstripeShirt": "Camisa de rayas finas",
+ "demoTextFieldWhereCanWeReachYou": "¿Cómo podemos comunicarnos contigo?",
+ "settingsTextDirectionLTR": "IZQ. a DER.",
+ "settingsTextScalingLarge": "Grande",
+ "demoBottomSheetHeader": "Encabezado",
+ "demoBottomSheetItem": "Artículo {value}",
+ "demoBottomTextFieldsTitle": "Campos de texto",
+ "demoTextFieldTitle": "Campos de texto",
+ "demoTextFieldSubtitle": "Línea única de texto y números editables",
+ "demoTextFieldDescription": "Los campos de texto permiten que los usuarios escriban en una IU. Suelen aparecer en diálogos y formularios.",
+ "demoTextFieldShowPasswordLabel": "Mostrar contraseña",
+ "demoTextFieldHidePasswordLabel": "Ocultar contraseña",
+ "demoTextFieldFormErrors": "Antes de enviar, corrige los errores marcados con rojo.",
+ "demoTextFieldNameRequired": "El nombre es obligatorio.",
+ "demoTextFieldOnlyAlphabeticalChars": "Ingresa solo caracteres alfabéticos.",
+ "demoTextFieldEnterUSPhoneNumber": "(###) ###-#### - Ingresa un número de teléfono de EE.UU.",
+ "demoTextFieldEnterPassword": "Ingresa una contraseña.",
+ "demoTextFieldPasswordsDoNotMatch": "Las contraseñas no coinciden",
+ "demoTextFieldWhatDoPeopleCallYou": "¿Cómo te llaman otras personas?",
+ "demoTextFieldNameField": "Nombre*",
+ "demoBottomSheetButtonText": "MOSTRAR HOJA INFERIOR",
+ "demoTextFieldPhoneNumber": "Número de teléfono*",
+ "demoBottomSheetTitle": "Hoja inferior",
+ "demoTextFieldEmail": "Correo electrónico",
+ "demoTextFieldTellUsAboutYourself": "Cuéntanos sobre ti (p. ej., escribe sobre lo que haces o tus pasatiempos)",
+ "demoTextFieldKeepItShort": "Sé breve, ya que esta es una demostración.",
+ "starterAppGenericButton": "BOTÓN",
+ "demoTextFieldLifeStory": "Historia de vida",
+ "demoTextFieldSalary": "Sueldo",
+ "demoTextFieldUSD": "USD",
+ "demoTextFieldNoMoreThan": "Incluye hasta 8 caracteres.",
+ "demoTextFieldPassword": "Contraseña*",
+ "demoTextFieldRetypePassword": "Vuelve a escribir la contraseña*",
+ "demoTextFieldSubmit": "ENVIAR",
+ "demoBottomNavigationSubtitle": "Navegación inferior con vistas encadenadas",
+ "demoBottomSheetAddLabel": "Agregar",
+ "demoBottomSheetModalDescription": "Una hoja modal inferior es una alternativa a un menú o diálogo que impide que el usuario interactúe con el resto de la app.",
+ "demoBottomSheetModalTitle": "Hoja modal inferior",
+ "demoBottomSheetPersistentDescription": "Una hoja inferior persistente muestra información que suplementa el contenido principal de la app. La hoja permanece visible, incluso si el usuario interactúa con otras partes de la app.",
+ "demoBottomSheetPersistentTitle": "Hoja inferior persistente",
+ "demoBottomSheetSubtitle": "Hojas inferiores modales y persistentes",
+ "demoTextFieldNameHasPhoneNumber": "El número de teléfono de {name} es {phoneNumber}",
+ "buttonText": "BOTÓN",
+ "demoTypographyDescription": "Definiciones de distintos estilos de tipografía que se encuentran en material design.",
+ "demoTypographySubtitle": "Todos los estilos de texto predefinidos",
+ "demoTypographyTitle": "Tipografía",
+ "demoFullscreenDialogDescription": "La propiedad fullscreenDialog especifica si la página nueva es un diálogo modal de pantalla completa.",
+ "demoFlatButtonDescription": "Un botón plano que muestra una gota de tinta cuando se lo presiona, pero que no tiene sombra. Usa los botones planos en barras de herramientas, diálogos y también intercalados con el relleno.",
+ "demoBottomNavigationDescription": "Las barras de navegación inferiores muestran entre tres y cinco destinos en la parte inferior de la pantalla. Cada destino se representa con un ícono y una etiqueta de texto opcional. Cuando el usuario presiona un ícono de navegación inferior, se lo redirecciona al destino de navegación de nivel superior que está asociado con el ícono.",
+ "demoBottomNavigationSelectedLabel": "Etiqueta seleccionada",
+ "demoBottomNavigationPersistentLabels": "Etiquetas persistentes",
+ "starterAppDrawerItem": "Artículo {value}",
+ "demoTextFieldRequiredField": "El asterisco (*) indica que es un campo obligatorio",
+ "demoBottomNavigationTitle": "Navegación inferior",
+ "settingsLightTheme": "Claro",
+ "settingsTheme": "Tema",
+ "settingsPlatformIOS": "iOS",
+ "settingsPlatformAndroid": "Android",
+ "settingsTextDirectionRTL": "DER. a IZQ.",
+ "settingsTextScalingHuge": "Enorme",
+ "cupertinoButton": "Botón",
+ "settingsTextScalingNormal": "Normal",
+ "settingsTextScalingSmall": "Pequeño",
+ "settingsSystemDefault": "Sistema",
+ "settingsTitle": "Configuración",
+ "rallyDescription": "Una app personal de finanzas",
+ "aboutDialogDescription": "Para ver el código fuente de esta app, visita {value}.",
+ "bottomNavigationCommentsTab": "Comentarios",
+ "starterAppGenericBody": "Cuerpo",
+ "starterAppGenericHeadline": "Título",
+ "starterAppGenericSubtitle": "Subtítulo",
+ "starterAppGenericTitle": "Título",
+ "starterAppTooltipSearch": "Buscar",
+ "starterAppTooltipShare": "Compartir",
+ "starterAppTooltipFavorite": "Favoritos",
+ "starterAppTooltipAdd": "Agregar",
+ "bottomNavigationCalendarTab": "Calendario",
+ "starterAppDescription": "Diseño de inicio responsivo",
+ "starterAppTitle": "App de inicio",
+ "aboutFlutterSamplesRepo": "Repositorio de GitHub con muestras de Flutter",
+ "bottomNavigationContentPlaceholder": "Marcador de posición de la pestaña {title}",
+ "bottomNavigationCameraTab": "Cámara",
+ "bottomNavigationAlarmTab": "Alarma",
+ "bottomNavigationAccountTab": "Cuenta",
+ "demoTextFieldYourEmailAddress": "Tu dirección de correo electrónico",
+ "demoToggleButtonDescription": "Puedes usar los botones de activación para agrupar opciones relacionadas. Para destacar los grupos de botones de activación relacionados, el grupo debe compartir un contenedor común.",
+ "colorsGrey": "GRIS",
+ "colorsBrown": "MARRÓN",
+ "colorsDeepOrange": "NARANJA OSCURO",
+ "colorsOrange": "NARANJA",
+ "colorsAmber": "ÁMBAR",
+ "colorsYellow": "AMARILLO",
+ "colorsLime": "VERDE LIMA",
+ "colorsLightGreen": "VERDE CLARO",
+ "colorsGreen": "VERDE",
+ "homeHeaderGallery": "Galería",
+ "homeHeaderCategories": "Categorías",
+ "shrineDescription": "Una app de venta minorista a la moda",
+ "craneDescription": "Una app personalizada para viajes",
+ "homeCategoryReference": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA",
+ "demoInvalidURL": "No se pudo mostrar la URL:",
+ "demoOptionsTooltip": "Opciones",
+ "demoInfoTooltip": "Información",
+ "demoCodeTooltip": "Ejemplo de código",
+ "demoDocumentationTooltip": "Documentación de la API",
+ "demoFullscreenTooltip": "Pantalla completa",
+ "settingsTextScaling": "Ajuste de texto",
+ "settingsTextDirection": "Dirección del texto",
+ "settingsLocale": "Configuración regional",
+ "settingsPlatformMechanics": "Mecánica de la plataforma",
+ "settingsDarkTheme": "Oscuro",
+ "settingsSlowMotion": "Cámara lenta",
+ "settingsAbout": "Acerca de Flutter Gallery",
+ "settingsFeedback": "Envía comentarios",
+ "settingsAttribution": "Diseño de TOASTER (Londres)",
+ "demoButtonTitle": "Botones",
+ "demoButtonSubtitle": "Planos, con relieve, con contorno, etc.",
+ "demoFlatButtonTitle": "Botón plano",
+ "demoRaisedButtonDescription": "Los botones con relieve agregan profundidad a los diseños más que nada planos. Destacan las funciones en espacios amplios o con muchos elementos.",
+ "demoRaisedButtonTitle": "Botón con relieve",
+ "demoOutlineButtonTitle": "Botón con contorno",
+ "demoOutlineButtonDescription": "Los botones con contorno se vuelven opacos y se elevan cuando se los presiona. A menudo, se combinan con botones con relieve para indicar una acción secundaria alternativa.",
+ "demoToggleButtonTitle": "Botones de activación",
+ "colorsTeal": "VERDE AZULADO",
+ "demoFloatingButtonTitle": "Botón de acción flotante",
+ "demoFloatingButtonDescription": "Un botón de acción flotante es un botón de ícono circular que se coloca sobre el contenido para propiciar una acción principal en la aplicación.",
+ "demoDialogTitle": "Diálogos",
+ "demoDialogSubtitle": "Simple, de alerta y de pantalla completa",
+ "demoAlertDialogTitle": "Alerta",
+ "demoAlertDialogDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título y una lista de acciones que son opcionales.",
+ "demoAlertTitleDialogTitle": "Alerta con título",
+ "demoSimpleDialogTitle": "Simple",
+ "demoSimpleDialogDescription": "Un diálogo simple le ofrece al usuario la posibilidad de elegir entre varias opciones. Un diálogo simple tiene un título opcional que se muestra encima de las opciones.",
+ "demoFullscreenDialogTitle": "Pantalla completa",
+ "demoCupertinoButtonsTitle": "Botones",
+ "demoCupertinoButtonsSubtitle": "Botones con estilo de iOS",
+ "demoCupertinoButtonsDescription": "Un botón con el estilo de iOS. Contiene texto o un ícono que aparece o desaparece poco a poco cuando se lo toca. De manera opcional, puede tener un fondo.",
+ "demoCupertinoAlertsTitle": "Alertas",
+ "demoCupertinoAlertsSubtitle": "Diálogos de alerta con estilo de iOS",
+ "demoCupertinoAlertTitle": "Alerta",
+ "demoCupertinoAlertDescription": "Un diálogo de alerta informa al usuario sobre situaciones que debe conocer para poder seguir usando la app. Un diálogo de alerta tiene un título, un contenido y una lista de acciones que son opcionales. El título se muestra encima del contenido y las acciones debajo del contenido.",
+ "demoCupertinoAlertWithTitleTitle": "Alerta con título",
+ "demoCupertinoAlertButtonsTitle": "Alerta con botones",
+ "demoCupertinoAlertButtonsOnlyTitle": "Solo botones de alerta",
+ "demoCupertinoActionSheetTitle": "Hoja de acción",
+ "demoCupertinoActionSheetDescription": "Una hoja de acciones es un estilo específico de alerta que brinda al usuario un conjunto de dos o más opciones relacionadas con el contexto actual. Una hoja de acciones puede tener un título, un mensaje adicional y una lista de acciones.",
+ "demoColorsTitle": "Colores",
+ "demoColorsSubtitle": "Todos los colores predefinidos",
+ "demoColorsDescription": "Son las constantes de colores y de muestras de color que representan la paleta de material design.",
+ "buttonTextEnabled": "ENABLED",
+ "buttonTextDisabled": "DISABLED",
+ "buttonTextCreate": "Crear",
+ "dialogSelectedOption": "Seleccionaste: \"{value}\"",
+ "dialogDiscardTitle": "¿Quieres descartar el borrador?",
+ "dialogLocationTitle": "¿Quieres usar el servicio de ubicación de Google?",
+ "dialogLocationDescription": "Permite que Google ayude a las apps a determinar la ubicación. Esto implica el envío de datos de ubicación anónimos a Google, incluso cuando no se estén ejecutando apps.",
+ "dialogCancel": "CANCELAR",
+ "dialogDiscard": "DESCARTAR",
+ "dialogDisagree": "RECHAZAR",
+ "dialogAgree": "ACEPTAR",
+ "dialogSetBackup": "Configurar cuenta para copia de seguridad",
+ "colorsBlueGrey": "GRIS AZULADO",
+ "dialogShow": "MOSTRAR DIÁLOGO",
+ "dialogFullscreenTitle": "Diálogo de pantalla completa",
+ "dialogFullscreenSave": "GUARDAR",
+ "dialogFullscreenDescription": "Una demostración de diálogo de pantalla completa",
+ "cupertinoButtonEnabled": "Enabled",
+ "cupertinoButtonDisabled": "Disabled",
+ "cupertinoButtonWithBackground": "Con fondo",
+ "cupertinoAlertCancel": "Cancelar",
+ "cupertinoAlertDiscard": "Descartar",
+ "cupertinoAlertLocationTitle": "¿Quieres permitir que \"Maps\" acceda a tu ubicación mientras usas la app?",
+ "cupertinoAlertLocationDescription": "Tu ubicación actual se mostrará en el mapa y se usará para obtener instrucciones sobre cómo llegar a lugares, resultados cercanos de la búsqueda y tiempos de viaje aproximados.",
+ "cupertinoAlertAllow": "Permitir",
+ "cupertinoAlertDontAllow": "No permitir",
+ "cupertinoAlertFavoriteDessert": "Selecciona tu postre favorito",
+ "cupertinoAlertDessertDescription": "Selecciona tu postre favorito de la siguiente lista. Se usará tu elección para personalizar la lista de restaurantes sugeridos en tu área.",
+ "cupertinoAlertCheesecake": "Cheesecake",
+ "cupertinoAlertTiramisu": "Tiramisú",
+ "cupertinoAlertApplePie": "Pastel de manzana",
+ "cupertinoAlertChocolateBrownie": "Brownie de chocolate",
+ "cupertinoShowAlert": "Mostrar alerta",
+ "colorsRed": "ROJO",
+ "colorsPink": "ROSADO",
+ "colorsPurple": "PÚRPURA",
+ "colorsDeepPurple": "PÚRPURA OSCURO",
+ "colorsIndigo": "ÍNDIGO",
+ "colorsBlue": "AZUL",
+ "colorsLightBlue": "CELESTE",
+ "colorsCyan": "CIAN",
+ "dialogAddAccount": "Agregar cuenta",
+ "Gallery": "Galería",
+ "Categories": "Categorías",
+ "SHRINE": "SHRINE",
+ "Basic shopping app": "App de compras básica",
+ "RALLY": "RALLY",
+ "CRANE": "CRANE",
+ "Travel app": "App de viajes",
+ "MATERIAL": "MATERIAL",
+ "CUPERTINO": "CUPERTINO",
+ "REFERENCE STYLES & MEDIA": "ESTILOS Y CONTENIDO MULTIMEDIA DE REFERENCIA"
+}
diff --git a/gallery/lib/l10n/intl_es_UY.arb b/gallery/lib/l10n/intl_es_UY.arb
new file mode 100644
index 0000000..59f9dfd
--- /dev/null
+++ b/gallery/lib/l10n/intl_es_UY.arb
@@ -0,0 +1,460 @@
+{
+ "demoOptionsFeatureTitle": "Ver opciones",
+ "demoOptionsFeatureDescription": "Presiona aquí para ver las opciones disponibles en esta demostración.",
+ "demoCodeViewerCopyAll": "COPIAR TODO",
+ "shrineScreenReaderRemoveProductButton": "Quitar {product}",
+ "shrineScreenReaderProductAddToCart": "Agregar al carrito",
+ "shrineScreenReaderCart": "{quantity,plural, =0{Carrito de compras sin artículos}=1{Carrito de compras con 1 artículo}other{Carrito de compras con {quantity} artículos}}",
+ "demoCodeViewerFailedToCopyToClipboardMessage": "No se pudo copiar al portapapeles: {error}",
+ "demoCodeViewerCopiedToClipboardMessage": "Se copió el contenido en el portapapeles.",
+ "craneSleep8SemanticLabel": "Ruinas mayas en un acantilado sobre una playa",
+ "craneSleep4SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "craneSleep2SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneSleep1SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneSleep0SemanticLabel": "Cabañas sobre el agua",
+ "craneFly13SemanticLabel": "Piscina con palmeras a orillas del mar",
+ "craneFly12SemanticLabel": "Piscina con palmeras",
+ "craneFly11SemanticLabel": "Faro de ladrillos en el mar",
+ "craneFly10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneFly9SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "craneFly8SemanticLabel": "Arboleda de superárboles",
+ "craneEat9SemanticLabel": "Mostrador de cafetería con pastelería",
+ "craneEat2SemanticLabel": "Hamburguesa",
+ "craneFly5SemanticLabel": "Hotel a orillas de un lago frente a las montañas",
+ "demoSelectionControlsSubtitle": "Casillas de verificación, interruptores y botones de selección",
+ "craneEat10SemanticLabel": "Mujer que sostiene un gran sándwich de pastrami",
+ "craneFly4SemanticLabel": "Cabañas sobre el agua",
+ "craneEat7SemanticLabel": "Entrada de panadería",
+ "craneEat6SemanticLabel": "Plato de camarones",
+ "craneEat5SemanticLabel": "Área de descanso de restaurante artístico",
+ "craneEat4SemanticLabel": "Postre de chocolate",
+ "craneEat3SemanticLabel": "Taco coreano",
+ "craneFly3SemanticLabel": "Ciudadela de Machu Picchu",
+ "craneEat1SemanticLabel": "Bar vacío con banquetas estilo cafetería",
+ "craneEat0SemanticLabel": "Pizza en un horno de leña",
+ "craneSleep11SemanticLabel": "Rascacielos Taipei 101",
+ "craneSleep10SemanticLabel": "Torres de la mezquita de al-Azhar durante una puesta de sol",
+ "craneSleep9SemanticLabel": "Faro de ladrillos en el mar",
+ "craneEat8SemanticLabel": "Plato de langosta",
+ "craneSleep7SemanticLabel": "Casas coloridas en la Plaza Ribeira",
+ "craneSleep6SemanticLabel": "Piscina con palmeras",
+ "craneSleep5SemanticLabel": "Tienda en un campo",
+ "settingsButtonCloseLabel": "Cerrar configuración",
+ "demoSelectionControlsCheckboxDescription": "Las casillas de verificación permiten que el usuario seleccione varias opciones de un conjunto. El valor de una casilla de verificación normal es verdadero o falso y el valor de una casilla de verificación de triestado también puede ser nulo.",
+ "settingsButtonLabel": "Configuración",
+ "demoListsTitle": "Listas",
+ "demoListsSubtitle": "Diseños de lista que se puede desplazar",
+ "demoListsDescription": "Una fila de altura única y fija que suele tener texto y un ícono al principio o al final",
+ "demoOneLineListsTitle": "Una línea",
+ "demoTwoLineListsTitle": "Dos líneas",
+ "demoListsSecondary": "Texto secundario",
+ "demoSelectionControlsTitle": "Controles de selección",
+ "craneFly7SemanticLabel": "Monte Rushmore",
+ "demoSelectionControlsCheckboxTitle": "Casilla de verificación",
+ "craneSleep3SemanticLabel": "Hombre reclinado sobre un auto azul antiguo",
+ "demoSelectionControlsRadioTitle": "Selección",
+ "demoSelectionControlsRadioDescription": "Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Usa los botones de selección para una selección exclusiva si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra.",
+ "demoSelectionControlsSwitchTitle": "Interruptor",
+ "demoSelectionControlsSwitchDescription": "Los interruptores de activado/desactivado cambian el estado de una única opción de configuración. La opción que controla el interruptor, como también el estado en que se encuentra, debería resultar evidente desde la etiqueta intercalada correspondiente.",
+ "craneFly0SemanticLabel": "Chalé en un paisaje nevado con árboles de hoja perenne",
+ "craneFly1SemanticLabel": "Tienda en un campo",
+ "craneFly2SemanticLabel": "Banderas de plegaria frente a una montaña nevada",
+ "craneFly6SemanticLabel": "Vista aérea del Palacio de Bellas Artes",
+ "rallySeeAllAccounts": "Ver todas las cuentas",
+ "rallyBillAmount": "Factura de {billName} con vencimiento el {date} de {amount}",
+ "shrineTooltipCloseCart": "Cerrar carrito",
+ "shrineTooltipCloseMenu": "Cerrar menú",
+ "shrineTooltipOpenMenu": "Abrir menú",
+ "shrineTooltipSettings": "Configuración",
+ "shrineTooltipSearch": "Buscar",
+ "demoTabsDescription": "Las pestañas organizan el contenido en diferentes pantallas, conjuntos de datos y otras interacciones.",
+ "demoTabsSubtitle": "Pestañas con vistas independientes en las que el usuario puede desplazarse",
+ "demoTabsTitle": "Pestañas",
+ "rallyBudgetAmount": "Se usó un total de {amountUsed} de {amountTotal} del presupuesto {budgetName}; el saldo restante es {amountLeft}",
+ "shrineTooltipRemoveItem": "Quitar elemento",
+ "rallyAccountAmount": "Cuenta {accountName} {accountNumber} con {amount}",
+ "rallySeeAllBudgets": "Ver todos los presupuestos",
+ "rallySeeAllBills": "Ver todas las facturas",
+ "craneFormDate": "Seleccionar fecha",
+ "craneFormOrigin": "Seleccionar origen",
+ "craneFly2": "Khumbu, Nepal",
+ "craneFly3": "Machu Picchu, Perú",
+ "craneFly4": "Malé, Maldivas",
+ "craneFly5": "Vitznau, Suiza",
+ "craneFly6": "Ciudad de México, México",
+ "craneFly7": "Monte Rushmore, Estados Unidos",
+ "settingsTextDirectionLocaleBased": "En función de la configuración regional",
+ "craneFly9": "La Habana, Cuba",
+ "craneFly10": "El Cairo, Egipto",
+ "craneFly11": "Lisboa, Portugal",
+ "craneFly12": "Napa, Estados Unidos",
+ "craneFly13": "Bali, Indonesia",
+ "craneSleep0": "Malé, Maldivas",
+ "craneSleep1": "Aspen, Estados Unidos",
+ "craneSleep2": "Machu Picchu, Perú",
+ "demoCupertinoSegmentedControlTitle": "Control segmentado",
+ "craneSleep4": "Vitznau, Suiza",
+ "craneSleep5": "Big Sur, Estados Unidos",
+ "craneSleep6": "Napa, Estados Unidos",
+ "craneSleep7": "Oporto, Portugal",
+ "craneSleep8": "Tulum, México",
+ "craneEat5": "Seúl, Corea del Sur",
+ "demoChipTitle": "Chips",
+ "demoChipSubtitle": "Son elementos compactos que representan una entrada, un atributo o una acción",
+ "demoActionChipTitle": "Chip de acción",
+ "demoActionChipDescription": "Los chips de acciones son un conjunto de opciones que activan una acción relacionada al contenido principal. Deben aparecer de forma dinámica y en contexto en la IU.",
+ "demoChoiceChipTitle": "Chip de selección",
+ "demoChoiceChipDescription": "Los chips de selecciones representan una única selección de un conjunto. Estos incluyen categorías o texto descriptivo relacionado.",
+ "demoFilterChipTitle": "Chip de filtro",
+ "demoFilterChipDescription": "Los chips de filtros usan etiquetas o palab