Unverified Commit 99d5ef90 authored by David Shuckerow's avatar David Shuckerow Committed by GitHub

Add custom actions to the reorderable list (#20108)

parent 0630518b
......@@ -27,10 +27,8 @@ import 'typography.dart';
// flutter_localizations package, you must first add it to the English
// translations (lib/src/l10n/material_en.arb), including a description, then
// you must add it to every other language (all the other *.arb files in that
// same directory), including a best guess as to the translation, e.g.
// obtained by optimistic use of Google Translate
// (https://translate.google.com/). After that you have to re-generate
// lib/src/l10n/localizations.dart by running
// same directory), listing the translation as `TBD`. After that you have to
// re-generate lib/src/l10n/localizations.dart by running
// `dart dev/tools/gen_localizations.dart --overwrite`. There is a README
// file with further information in the lib/src/l10n/ directory.
//
......@@ -279,6 +277,30 @@ abstract class MaterialLocalizations {
/// shows the list of accounts.
String get showAccountsLabel;
/// The semantics label used for [ReorderableList] to reorder an item in the
/// list to the start of the list.
String get reorderItemToStart;
/// The semantics label used for [ReorderableList] to reorder an item in the
/// list to the end of the list.
String get reorderItemToEnd;
/// The semantics label used for [ReorderableList] to reorder an item in the
/// list one space up the list.
String get reorderItemUp;
/// The semantics label used for [ReorderableList] to reorder an item in the
/// list one space down the list.
String get reorderItemDown;
/// The semantics label used for [ReorderableList] to reorder an item in the
/// list one space left in the list.
String get reorderItemLeft;
/// The semantics label used for [ReorderableList] to reorder an item in the
/// list one space right in the list.
String get reorderItemRight;
/// The `MaterialLocalizations` from the closest [Localizations] instance
/// that encloses the given context.
///
......@@ -641,6 +663,24 @@ class DefaultMaterialLocalizations implements MaterialLocalizations {
@override
String get showAccountsLabel => 'Show accounts';
@override
String get reorderItemUp => 'Move up';
@override
String get reorderItemDown => 'Move down';
@override
String get reorderItemLeft => 'Move left';
@override
String get reorderItemRight => 'Move right';
@override
String get reorderItemToEnd => 'Move to the end';
@override
String get reorderItemToStart => 'Move to the start';
/// Creates an object that provides US English resource values for the material
/// library widgets.
///
......
......@@ -8,6 +8,7 @@ import 'package:flutter/widgets.dart';
import 'package:flutter/rendering.dart';
import 'material.dart';
import 'material_localizations.dart';
/// The callback used by [ReorderableListView] to move an item to a new
/// position in a list.
......@@ -310,13 +311,10 @@ class _ReorderableListContentState extends State<_ReorderableListContent> with T
// Handles up the logic for dragging and reordering items in the list.
Widget _wrap(Widget toWrap, int index, BoxConstraints constraints) {
assert(toWrap.key != null);
// We create a global key based on both the child key and index
// so that when we reorder the list, a key doesn't get created twice.
final GlobalObjectKey keyIndexGlobalKey = new GlobalObjectKey(toWrap.key);
// We pass the toWrapWithGlobalKey into the Draggable so that when a list
// item gets dragged, the accessibility framework can preserve the selected
// state of the dragging item.
final Widget toWrapWithGlobalKey = new KeyedSubtree(key: keyIndexGlobalKey, child: toWrap);
// Starts dragging toWrap.
void onDragStarted() {
......@@ -330,11 +328,11 @@ class _ReorderableListContentState extends State<_ReorderableListContent> with T
});
}
// Drops toWrap into the last position it was hovering over.
void onDragEnded() {
// Places the value from startIndex one space before the element at endIndex.
void reorder(int startIndex, int endIndex) {
setState(() {
if (_dragStartIndex != _currentIndex)
widget.onReorder(_dragStartIndex, _currentIndex);
if (startIndex != endIndex)
widget.onReorder(startIndex, endIndex);
// Animates leftover space in the drop area closed.
// TODO(djshuckerow): bring the animation in line with the Material
// specifications.
......@@ -344,7 +342,64 @@ class _ReorderableListContentState extends State<_ReorderableListContent> with T
});
}
// Drops toWrap into the last position it was hovering over.
void onDragEnded() {
reorder(_dragStartIndex, _currentIndex);
}
Widget wrapWithSemantics() {
// First, determine which semantics actions apply.
final Map<CustomSemanticsAction, VoidCallback> semanticsActions = <CustomSemanticsAction, VoidCallback>{};
// Create the appropriate semantics actions.
void moveToStart() => reorder(index, 0);
void moveToEnd() => reorder(index, widget.children.length);
void moveBefore() => reorder(index, index - 1);
// To move after, we go to index+2 because we are moving it to the space
// before index+2, which is after the space at index+1.
void moveAfter() => reorder(index, index + 2);
final MaterialLocalizations localizations = MaterialLocalizations.of(context);
// If the item can move to before its current position in the list.
if (index > 0) {
semanticsActions[new CustomSemanticsAction(label: localizations.reorderItemToStart)] = moveToStart;
String reorderItemBefore = localizations.reorderItemUp;
if (widget.scrollDirection == Axis.horizontal) {
reorderItemBefore = Directionality.of(context) == TextDirection.ltr
? localizations.reorderItemLeft
: localizations.reorderItemRight;
}
semanticsActions[new CustomSemanticsAction(label: reorderItemBefore)] = moveBefore;
}
// If the item can move to after its current position in the list.
if (index < widget.children.length - 1) {
String reorderItemAfter = localizations.reorderItemDown;
if (widget.scrollDirection == Axis.horizontal) {
reorderItemAfter = Directionality.of(context) == TextDirection.ltr
? localizations.reorderItemRight
: localizations.reorderItemLeft;
}
semanticsActions[new CustomSemanticsAction(label: reorderItemAfter)] = moveAfter;
semanticsActions[new CustomSemanticsAction(label: localizations.reorderItemToEnd)] = moveToEnd;
}
// We pass toWrap with a GlobalKey into the Draggable so that when a list
// item gets dragged, the accessibility framework can preserve the selected
// state of the dragging item.
//
// We also apply the relevant custom accessibility actions for moving the item
// up, down, to the start, and to the end of the list.
return new KeyedSubtree(key: keyIndexGlobalKey, child: new Semantics(
customSemanticsActions: semanticsActions,
child: toWrap,
));
}
Widget buildDragTarget(BuildContext context, List<Key> acceptedCandidates, List<dynamic> rejectedCandidates) {
final Widget toWrapWithSemantics = wrapWithSemantics();
// We build the draggable inside of a layout builder so that we can
// constrain the size of the feedback dragging widget.
Widget child = new LongPressDraggable<Key>(
......@@ -358,10 +413,10 @@ class _ReorderableListContentState extends State<_ReorderableListContent> with T
constraints: constraints,
child: new Material(
elevation: 6.0,
child: toWrapWithGlobalKey,
child: toWrapWithSemantics,
),
),
child: _dragging == toWrap.key ? const SizedBox() : toWrapWithGlobalKey,
child: _dragging == toWrap.key ? const SizedBox() : toWrapWithSemantics,
childWhenDragging: const SizedBox(),
dragAnchor: DragAnchor.child,
onDragStarted: onDragStarted,
......@@ -422,25 +477,22 @@ class _ReorderableListContentState extends State<_ReorderableListContent> with T
}
// We wrap the drag target in a Builder so that we can scroll to its specific context.
return new KeyedSubtree(
key: new Key('#$ReorderableListView|KeyedSubtree|${toWrap.key}'),
child:new Builder(builder: (BuildContext context) {
return new DragTarget<Key>(
builder: buildDragTarget,
onWillAccept: (Key toAccept) {
setState(() {
_nextIndex = index;
_requestAnimationToNextIndex();
});
_scrollTo(context);
// If the target is not the original starting point, then we will accept the drop.
return _dragging == toAccept && toAccept != toWrap.key;
},
onAccept: (Key accepted) {},
onLeave: (Key leaving) {},
);
}),
);
return new Builder(builder: (BuildContext context) {
return new DragTarget<Key>(
builder: buildDragTarget,
onWillAccept: (Key toAccept) {
setState(() {
_nextIndex = index;
_requestAnimationToNextIndex();
});
_scrollTo(context);
// If the target is not the original starting point, then we will accept the drop.
return _dragging == toAccept && toAccept != toWrap.key;
},
onAccept: (Key accepted) {},
onLeave: (Key leaving) {},
);
});
}
@override
......
......@@ -35,6 +35,12 @@ void main() {
expect(localizations.dialogLabel, isNotNull);
expect(localizations.alertDialogLabel, isNotNull);
expect(localizations.searchFieldLabel, isNotNull);
expect(localizations.reorderItemUp, isNotNull);
expect(localizations.reorderItemDown, isNotNull);
expect(localizations.reorderItemLeft, isNotNull);
expect(localizations.reorderItemRight, isNotNull);
expect(localizations.reorderItemToEnd, isNotNull);
expect(localizations.reorderItemToStart, isNotNull);
expect(localizations.aboutListTileTitle('FOO'), isNotNull);
expect(localizations.aboutListTileTitle('FOO'), contains('FOO'));
......
......@@ -43,5 +43,11 @@
"popupMenuLabel": "قائمة منبثقة",
"dialogLabel": "مربع حوار",
"alertDialogLabel": "مربع حوار التنبيه",
"searchFieldLabel": "بحث"
"searchFieldLabel": "بحث",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Изскачащо меню",
"dialogLabel": "Диалогов прозорец",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -40,5 +40,11 @@
"popupMenuLabel": "Skočni izbornik",
"dialogLabel": "Dijalog",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
}
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
\ No newline at end of file
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Menú emergent",
"dialogLabel": "Diàleg",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -41,5 +41,11 @@
"popupMenuLabel": "Vyskakovací nabídka",
"dialogLabel": "Dialogové okno",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Pop op-menu",
"dialogLabel": "Dialogboks",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -40,5 +40,11 @@
"popupMenuLabel": "Pop-up-Menü",
"dialogLabel": "Dialogfeld",
"alertDialogLabel": "Aufmerksam",
"searchFieldLabel": "Suchen"
"searchFieldLabel": "Suchen",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Pop-up-Menü",
"dialogLabel": "Dialogfeld",
"alertDialogLabel": "Aufmerksam",
"searchFieldLabel": "Suchen"
"searchFieldLabel": "Suchen",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Αναδυόμενο μενού",
"dialogLabel": "Παράθυρο διαλόγου",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -205,5 +205,35 @@
"searchFieldLabel": "Search",
"@searchFieldLabel": {
"description": "Label indicating that a text field is a search field. This will be used as a hint text in the text field."
},
"reorderItemToStart": "Move to the start",
"@reorderItemToStart": {
"description": "The audio announcement to move an item in a Reorderable List to the start of the list."
},
"reorderItemToEnd": "Move to the end",
"@reorderItemToEnd": {
"description": "The audio announcement to move an item in a Reorderable List to the end of the list."
},
"reorderItemUp": "Move up",
"@reorderItemUp": {
"description": "The audio announcement to move an item in a Reorderable List up in the list when it is oriented vertically."
},
"reorderItemDown": "Move down",
"@reorderItemDown": {
"description": "The audio announcement to move an item in a Reorderable List down in the list when it is oriented vertically."
},
"reorderItemLeft": "Move left",
"@reorderItemLeft": {
"description": "The audio announcement to move an item in a Reorderable List left in the list when it is oriented horizontally."
},
"reorderItemRight": "Move right",
"@reorderItemRight": {
"description": "The audio announcement to move an item in a Reorderable List right in the list when it is oriented horizontally."
}
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Pop-up menu",
"dialogLabel": "Dialogue",
"alertDialogLabel": "Alert",
"searchFieldLabel": "Search"
"searchFieldLabel": "Search",
"reorderItemToStart": "Move to the start",
"reorderItemToEnd": "Move to the end",
"reorderItemUp": "Move up",
"reorderItemDown": "Move down",
"reorderItemLeft": "Move left",
"reorderItemRight": "Move right"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Pop-up menu",
"dialogLabel": "Dialogue",
"alertDialogLabel": "Alert",
"searchFieldLabel": "Search"
"searchFieldLabel": "Search",
"reorderItemToStart": "Move to the start",
"reorderItemToEnd": "Move to the end",
"reorderItemUp": "Move up",
"reorderItemDown": "Move down",
"reorderItemLeft": "Move left",
"reorderItemRight": "Move right"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Pop-up menu",
"dialogLabel": "Dialogue",
"alertDialogLabel": "Alert",
"searchFieldLabel": "Search"
"searchFieldLabel": "Search",
"reorderItemToStart": "Move to the start",
"reorderItemToEnd": "Move to the end",
"reorderItemUp": "Move up",
"reorderItemDown": "Move down",
"reorderItemLeft": "Move left",
"reorderItemRight": "Move right"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Pop-up menu",
"dialogLabel": "Dialogue",
"alertDialogLabel": "Alert",
"searchFieldLabel": "Search"
"searchFieldLabel": "Search",
"reorderItemToStart": "Move to the start",
"reorderItemToEnd": "Move to the end",
"reorderItemUp": "Move up",
"reorderItemDown": "Move down",
"reorderItemLeft": "Move left",
"reorderItemRight": "Move right"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Pop-up menu",
"dialogLabel": "Dialogue",
"alertDialogLabel": "Alert",
"searchFieldLabel": "Search"
"searchFieldLabel": "Search",
"reorderItemToStart": "Move to the start",
"reorderItemToEnd": "Move to the end",
"reorderItemUp": "Move up",
"reorderItemDown": "Move down",
"reorderItemLeft": "Move left",
"reorderItemRight": "Move right"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Pop-up menu",
"dialogLabel": "Dialogue",
"alertDialogLabel": "Alert",
"searchFieldLabel": "Search"
"searchFieldLabel": "Search",
"reorderItemToStart": "Move to the start",
"reorderItemToEnd": "Move to the end",
"reorderItemUp": "Move up",
"reorderItemDown": "Move down",
"reorderItemLeft": "Move left",
"reorderItemRight": "Move right"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Pop-up menu",
"dialogLabel": "Dialogue",
"alertDialogLabel": "Alert",
"searchFieldLabel": "Search"
"searchFieldLabel": "Search",
"reorderItemToStart": "Move to the start",
"reorderItemToEnd": "Move to the end",
"reorderItemUp": "Move up",
"reorderItemDown": "Move down",
"reorderItemLeft": "Move left",
"reorderItemRight": "Move right"
}
......@@ -40,5 +40,11 @@
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Cuadro de diálogo",
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
"searchFieldLabel": "Buscar",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
"searchFieldLabel": "Buscar",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
"searchFieldLabel": "Buscar",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Hüpikmenüü",
"dialogLabel": "Dialoog",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "منوی بازشو",
"dialogLabel": "کادر گفتگو",
"alertDialogLabel": "هشدار",
"searchFieldLabel": "جستجو کردن"
"searchFieldLabel": "جستجو کردن",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Ponnahdusvalikko",
"dialogLabel": "Valintaikkuna",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Popup na menu",
"dialogLabel": "Dialog",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -40,5 +40,11 @@
"popupMenuLabel": "Menu contextuel",
"dialogLabel": "Boîte de dialogue",
"alertDialogLabel": "Alerte",
"searchFieldLabel": "Chercher"
"searchFieldLabel": "Chercher",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Pop-up-Menü",
"dialogLabel": "Dialogfeld",
"alertDialogLabel": "Aufmerksam",
"searchFieldLabel": "Suchen"
"searchFieldLabel": "Suchen",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -41,5 +41,11 @@
"popupMenuLabel": "תפריט קופץ",
"dialogLabel": "תיבת דו-שיח",
"alertDialogLabel": "עֵרָנִי",
"searchFieldLabel": "לחפש"
"searchFieldLabel": "לחפש",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "पॉपअप मेन्यू",
"dialogLabel": "संवाद",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -40,5 +40,11 @@
"popupMenuLabel": "Skočni izbornik",
"dialogLabel": "Dijalog",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Előugró menü",
"dialogLabel": "Párbeszédablak",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Menu pop-up",
"dialogLabel": "Dialog",
"alertDialogLabel": "Waspada",
"searchFieldLabel": "Pencarian"
"searchFieldLabel": "Pencarian",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Menu popup",
"dialogLabel": "Finestra di dialogo",
"alertDialogLabel": "Mettere in guardia",
"searchFieldLabel": "Ricerca"
"searchFieldLabel": "Ricerca",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "ポップアップ メニュー",
"dialogLabel": "ダイアログ",
"alertDialogLabel": "アラート",
"searchFieldLabel": "サーチ"
"searchFieldLabel": "サーチ",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "팝업 메뉴",
"dialogLabel": "대화상자",
"alertDialogLabel": "경보",
"searchFieldLabel": "수색"
"searchFieldLabel": "수색",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -41,5 +41,11 @@
"popupMenuLabel": "Iššokantysis meniu",
"dialogLabel": "Dialogo langas",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -40,5 +40,11 @@
"popupMenuLabel": "Uznirstošā izvēlne",
"dialogLabel": "Dialoglodziņš",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -40,5 +40,11 @@
"popupMenuLabel": "Menu pop timbul",
"dialogLabel": "Dialog",
"alertDialogLabel": "Amaran",
"searchFieldLabel": "Carian"
"searchFieldLabel": "Carian",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Forgrunnsmeny",
"dialogLabel": "Dialogboks",
"alertDialogLabel": "Varsling",
"searchFieldLabel": "Søke"
"searchFieldLabel": "Søke",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Pop-upmenu",
"dialogLabel": "Dialoogvenster",
"alertDialogLabel": "Alarm",
"searchFieldLabel": "Zoeken"
"searchFieldLabel": "Zoeken",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -41,5 +41,11 @@
"popupMenuLabel": "Wyskakujące menu",
"dialogLabel": "Okno dialogowe",
"alertDialogLabel": "Alarm",
"searchFieldLabel": "Szukaj"
"searchFieldLabel": "Szukaj",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -38,5 +38,11 @@
"popupMenuLabel": "د پاپ اپ مینو",
"dialogLabel": "خبرې اترې",
"alertDialogLabel": "خبرتیا",
"searchFieldLabel": "لټون"
"searchFieldLabel": "لټون",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -41,5 +41,11 @@
"popupMenuLabel": "Menu pop-up",
"dialogLabel": "Caixa de diálogo",
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Pesquisa"
"searchFieldLabel": "Pesquisa",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Menu pop-up",
"dialogLabel": "Caixa de diálogo",
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Pesquisa"
"searchFieldLabel": "Pesquisa",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -41,5 +41,11 @@
"popupMenuLabel": "Meniu pop-up",
"dialogLabel": "Casetă de dialog",
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Căutare"
"searchFieldLabel": "Căutare",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -42,5 +42,11 @@
"popupMenuLabel": "Всплывающее меню",
"dialogLabel": "Диалоговое окно",
"alertDialogLabel": "бдительный",
"searchFieldLabel": "Поиск"
"searchFieldLabel": "Поиск",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -41,5 +41,11 @@
"popupMenuLabel": "Kontextová ponuka",
"dialogLabel": "Dialógové okno",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -41,5 +41,11 @@
"popupMenuLabel": "Pojavni meni",
"dialogLabel": "Pogovorno okno",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -40,5 +40,11 @@
"popupMenuLabel": "Искачући мени",
"dialogLabel": "Дијалог",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -40,5 +40,11 @@
"popupMenuLabel": "Iskačući meni",
"dialogLabel": "Dijalog",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Popup-meny",
"dialogLabel": "Dialogruta",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "เมนูป๊อปอัป",
"dialogLabel": "กล่องโต้ตอบ",
"alertDialogLabel": "เตือนภัย",
"searchFieldLabel": "ค้นหา"
"searchFieldLabel": "ค้นหา",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Popup na menu",
"dialogLabel": "Dialog",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Popup menü",
"dialogLabel": "İletişim kutusu",
"alertDialogLabel": "Alarm",
"searchFieldLabel": "Arama"
"searchFieldLabel": "Arama",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -41,5 +41,11 @@
"popupMenuLabel": "Спливаюче меню",
"dialogLabel": "Вікно",
"alertDialogLabel": "TBD",
"searchFieldLabel": "TBD"
"searchFieldLabel": "TBD",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "پاپ اپ مینو",
"dialogLabel": "ڈائلاگ",
"alertDialogLabel": "انتباہ",
"searchFieldLabel": "تلاش کریں"
"searchFieldLabel": "تلاش کریں",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "Menu bật lên",
"dialogLabel": "Hộp thoại",
"alertDialogLabel": "Hộp thoại",
"searchFieldLabel": "Tìm kiếm"
"searchFieldLabel": "Tìm kiếm",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "弹出菜单",
"dialogLabel": "对话框",
"alertDialogLabel": "警报",
"searchFieldLabel": "搜索"
"searchFieldLabel": "搜索",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "彈出式選單",
"dialogLabel": "對話方塊",
"alertDialogLabel": "警报",
"searchFieldLabel": "搜索"
"searchFieldLabel": "搜索",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
......@@ -39,5 +39,11 @@
"popupMenuLabel": "彈出式選單",
"dialogLabel": "對話方塊",
"alertDialogLabel": "警报",
"searchFieldLabel": "搜索"
"searchFieldLabel": "搜索",
"reorderItemToStart": "TBD",
"reorderItemToEnd": "TBD",
"reorderItemUp": "TBD",
"reorderItemDown": "TBD",
"reorderItemLeft": "TBD",
"reorderItemRight": "TBD"
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment