chore: update l10n (#463)

This commit is contained in:
Sun Jiao 2023-09-15 16:13:49 +08:00 • committed by GitHub
commit 1944ab7a29
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 641 additions and 60 deletions

View file

@ -116,5 +116,34 @@
"resetToDefaultColor": "Reset to default color",
"ltr": "LTR",
"rtl": "RTL",
"auto": "Auto"
"auto": "Auto",
"cut": "Cut",
"copy": "Copy",
"paste": "Paste",
"find": "Find",
"previousMatch": "Previous match",
"nextMatch": "Next match",
"closeFind": "Close",
"replace": "Replace",
"replaceAll": "Replace all",
"uploadImage": "Upload Image",
"urlImage": "URL Image",
"incorrectLink": "Incorrect Link",
"upload": "Upload",
"chooseImage": "Choose an image",
"loading": "Loading",
"imageLoadFailed": "Could not load the image",
"divider": "Divider",
"table": "Table",
"colAddBefore": "Add before",
"rowAddBefore": "Add before",
"colAddAfter": "Add after",
"rowAddAfter": "Add after",
"colRemove": "Remove",
"rowRemove": "Remove",
"colDuplicate": "Duplicate",
"rowDuplicate": "Duplicate",
"colClear": "Clear Content",
"rowClear": "Clear Content",
"slashPlaceHolder": "Enter a / to insert a block, or start typing"
}

View file

@ -4,7 +4,7 @@
"@bold": {},
"bulletedList": "无序列表",
"@bulletedList": {},
"checkbox": "选框",
"checkbox": "复选框",
"@checkbox": {},
"embedCode": "代码块",
"@embedCode": {},
@ -116,5 +116,34 @@
"resetToDefaultColor": "重设为默认颜色",
"ltr": "自左至右",
"rtl": "自右至左",
"auto": "自动"
"auto": "自动",
"cut": "剪切",
"copy": "复制",
"paste": "粘贴",
"find": "查找",
"previousMatch": "上一匹配项",
"nextMatch": "下一匹配项",
"closeFind": "关闭",
"replace": "替换",
"replaceAll": "替换全部",
"uploadImage": "上传图片",
"urlImage": "网络图片",
"incorrectLink": "链接错误",
"upload": "上传",
"chooseImage": "选择图片文件",
"loading": "正在加载",
"imageLoadFailed": "无法加载图片",
"divider": "分割线",
"table": "表格",
"colAddBefore": "左侧插入列",
"rowAddBefore": "上方插入行",
"colAddAfter": "右侧插入列",
"rowAddAfter": "下方插入行",
"colRemove": "删除整列",
"rowRemove": "删除整行",
"colDuplicate": "复制整列",
"rowDuplicate": "复制整行",
"colClear": "清空整列",
"rowClear": "清空整行",
"slashPlaceHolder": "单击 / 以插入内容,或开始输入"
}

View file

@ -34,7 +34,7 @@
"@text": {},
"underline": "下劃線",
"@underline": {},
"fontColorDefault": "默認",
"fontColorDefault": "預設",
"@fontColorDefault": {},
"fontColorGray": "灰色",
"@fontColorGray": {},
@ -54,7 +54,7 @@
"@fontColorPink": {},
"fontColorRed": "紅色",
"@fontColorRed": {},
"backgroundColorDefault": "默認背景色",
"backgroundColorDefault": "預設背景色",
"@backgroundColorDefault": {},
"backgroundColorGray": "灰色背景",
"@backgroundColorGray": {},
@ -113,8 +113,37 @@
"customColor": "自定義顏色",
"hexValue": "十六進位值",
"opacity": "透明度",
"resetToDefaultColor": "重設為默認顏色",
"resetToDefaultColor": "重設為預設顏色",
"ltr": "自左至右",
"rtl": "自右至左",
"auto": "自動"
"auto": "自動",
"cut": "剪下",
"copy": "複製",
"paste": "貼上",
"find": "尋找",
"previousMatch": "上一相符項",
"nextMatch": "下一相符項",
"closeFind": "關閉",
"replace": "取代",
"replaceAll": "取代全部",
"uploadImage": "上載圖片",
"urlImage": "網路圖片",
"incorrectLink": "連結錯誤",
"upload": "上載",
"chooseImage": "選取圖像檔案",
"loading": "正在載入",
"imageLoadFailed": "無法載入圖像",
"divider": "分割線",
"table": "表格",
"colAddBefore": "左側插入行",
"rowAddBefore": "上方插入列",
"colAddAfter": "右側插入行",
"rowAddAfter": "下方插入列",
"colRemove": "刪除整行",
"rowRemove": "刪除整列",
"colDuplicate": "複製整行",
"rowDuplicate": "複製整列",
"colClear": "清空整行",
"rowClear": "清空整列",
"slashPlaceHolder": "輸入 / 以插入内容,或開始鍵入"
}

View file

@ -2,7 +2,7 @@ import 'package:appflowy_editor/appflowy_editor.dart';
import 'package:flutter/material.dart';
SelectionMenuItem dividerMenuItem = SelectionMenuItem(
name: 'Divider',
name: AppFlowyEditorLocalizations.current.divider,
icon: (editorState, isSelected, style) => SelectionMenuIconWidget(
icon: Icons.horizontal_rule,
isSelected: isSelected,

View file

@ -132,9 +132,9 @@ class _UploadImageMenuState extends State<UploadImageMenu> {
width: 260,
height: 36,
child: TabBar(
tabs: const [
Tab(text: 'Upload Image'),
Tab(text: 'URL Image'),
tabs: [
Tab(text: AppFlowyEditorLocalizations.current.uploadImage),
Tab(text: AppFlowyEditorLocalizations.current.urlImage),
],
labelColor: widget.headerColor,
unselectedLabelColor: Colors.grey,
@ -203,9 +203,9 @@ class _UploadImageMenuState extends State<UploadImageMenu> {
}
Widget _buildInvalidLinkText() {
return const Text(
'Incorrect Link',
style: TextStyle(color: Colors.red, fontSize: 12),
return Text(
AppFlowyEditorLocalizations.current.incorrectLink,
style: const TextStyle(color: Colors.red, fontSize: 12),
);
}
@ -240,7 +240,7 @@ class _UploadImageMenuState extends State<UploadImageMenu> {
}
},
child: Text(
'Upload',
AppFlowyEditorLocalizations.current.upload,
style: TextStyle(
color: Theme.of(context).colorScheme.onPrimary,
fontSize: 14.0,
@ -328,20 +328,22 @@ class _UploadImageMenuState extends State<UploadImageMenu> {
fit: BoxFit.cover,
),
)
: const Center(
: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
EditorSvg(
const EditorSvg(
name: 'upload_image',
width: 32,
height: 32,
),
SizedBox(height: 8.0),
const SizedBox(height: 8.0),
Text(
'Choose an image',
style:
TextStyle(fontSize: 14.0, color: Color(0xff00BCF0)),
AppFlowyEditorLocalizations.current.chooseImage,
style: const TextStyle(
fontSize: 14.0,
color: Color(0xff00BCF0),
),
),
],
),

View file

@ -1,6 +1,7 @@
import 'dart:io';
import 'dart:math';
import 'package:appflowy_editor/appflowy_editor.dart';
import 'package:flutter/material.dart';
import 'package:string_validator/string_validator.dart';
@ -146,7 +147,7 @@ class _ResizableImageState extends State<ResizableImage> {
SizedBox.fromSize(
size: const Size(10, 10),
),
const Text('Loading'),
Text(AppFlowyEditorLocalizations.current.loading),
],
),
);
@ -162,7 +163,7 @@ class _ResizableImageState extends State<ResizableImage> {
borderRadius: const BorderRadius.all(Radius.circular(4.0)),
border: Border.all(width: 1, color: Colors.black),
),
child: const Text('Could not load the image'),
child: Text(AppFlowyEditorLocalizations.current.imageLoadFailed),
);
}

View file

@ -7,7 +7,8 @@ final Map<String, BlockComponentBuilder> standardBlockComponentBuilderMap = {
PageBlockKeys.type: PageBlockComponentBuilder(),
ParagraphBlockKeys.type: TextBlockComponentBuilder(
configuration: standardBlockComponentConfiguration.copyWith(
placeholderText: (_) => 'Enter a / to insert a block, or start typing',
placeholderText: (_) =>
AppFlowyEditorLocalizations.current.slashPlaceHolder,
),
),
TodoListBlockKeys.type: TodoListBlockComponentBuilder(

View file

@ -38,25 +38,49 @@ void showActionMenu(
width: 200,
height: 230,
children: [
_menuItem(context, 'Add after', Icons.last_page, () {
_menuItem(
context,
dir == TableDirection.col
? AppFlowyEditorLocalizations.current.colAddAfter
: AppFlowyEditorLocalizations.current.rowAddAfter,
dir == TableDirection.col
? Icons.last_page
: Icons.vertical_align_bottom, () {
TableActions.add(node, position + 1, editorState, dir);
dismissOverlay();
}),
_menuItem(context, 'Add before', Icons.first_page, () {
_menuItem(
context,
dir == TableDirection.col
? AppFlowyEditorLocalizations.current.colAddBefore
: AppFlowyEditorLocalizations.current.rowAddBefore,
dir == TableDirection.col
? Icons.first_page
: Icons.vertical_align_top, () {
TableActions.add(node, position, editorState, dir);
dismissOverlay();
}),
_menuItem(context, 'Remove', Icons.delete, () {
_menuItem(
context,
dir == TableDirection.col
? AppFlowyEditorLocalizations.current.colRemove
: AppFlowyEditorLocalizations.current.rowRemove,
Icons.delete, () {
TableActions.delete(node, position, editorState, dir);
dismissOverlay();
}),
_menuItem(context, 'Duplicate', Icons.content_copy, () {
_menuItem(
context,
dir == TableDirection.col
? AppFlowyEditorLocalizations.current.colDuplicate
: AppFlowyEditorLocalizations.current.rowDuplicate,
Icons.content_copy, () {
TableActions.duplicate(node, position, editorState, dir);
dismissOverlay();
}),
_menuItem(
context,
'Background Color',
AppFlowyEditorLocalizations.current.backgroundColor,
Icons.format_color_fill,
() {
final cell = dir == TableDirection.col
@ -85,7 +109,12 @@ void showActionMenu(
dismissOverlay();
},
),
_menuItem(context, 'Clear Content', Icons.clear, () {
_menuItem(
context,
dir == TableDirection.col
? AppFlowyEditorLocalizations.current.colClear
: AppFlowyEditorLocalizations.current.rowClear,
Icons.clear, () {
TableActions.clear(node, position, editorState, dir);
dismissOverlay();
}),

View file

@ -254,7 +254,7 @@ class _TableBlockComponentWidgetState extends State<TableBlockComponentWidget>
}
SelectionMenuItem tableMenuItem = SelectionMenuItem(
name: 'Table',
name: AppFlowyEditorLocalizations.current.table,
icon: (editorState, isSelected, style) => SelectionMenuIconWidget(
icon: Icons.table_view,
isSelected: isSelected,

View file

@ -3,7 +3,7 @@ import 'package:appflowy_editor/src/editor/find_replace_menu/find_menu_service.d
import 'package:flutter/material.dart';
List<CommandShortcutEvent> findAndReplaceCommands({
required FindReplaceLocalizations localizations,
FindReplaceLocalizations? localizations,
required BuildContext context,
FindReplaceStyle? style,
}) =>
@ -57,7 +57,7 @@ class FindReplaceLocalizations {
/// - web
///
CommandShortcutEvent openFindDialog({
required FindReplaceLocalizations localizations,
FindReplaceLocalizations? localizations,
required BuildContext context,
required FindReplaceStyle style,
}) =>
@ -74,7 +74,7 @@ CommandShortcutEvent openFindDialog({
);
CommandShortcutEvent openReplaceDialog({
required FindReplaceLocalizations localizations,
FindReplaceLocalizations? localizations,
required BuildContext context,
required FindReplaceStyle style,
}) =>
@ -95,7 +95,7 @@ FindReplaceService? _findReplaceService;
KeyEventResult _showFindAndReplaceDialog(
BuildContext context,
EditorState editorState, {
required FindReplaceLocalizations localizations,
FindReplaceLocalizations? localizations,
required FindReplaceStyle style,
bool openReplace = false,
}) {

View file

@ -14,14 +14,14 @@ class FindReplaceMenu implements FindReplaceService {
required this.context,
required this.editorState,
required this.replaceFlag,
required this.localizations,
this.localizations,
required this.style,
});
final BuildContext context;
final EditorState editorState;
final bool replaceFlag;
final FindReplaceLocalizations localizations;
final FindReplaceLocalizations? localizations;
final FindReplaceStyle style;
final double topOffset = 52;

View file

@ -10,14 +10,14 @@ class FindMenuWidget extends StatefulWidget {
required this.dismiss,
required this.editorState,
required this.replaceFlag,
required this.localizations,
this.localizations,
required this.style,
});
final VoidCallback dismiss;
final EditorState editorState;
final bool replaceFlag;
final FindReplaceLocalizations localizations;
final FindReplaceLocalizations? localizations;
final FindReplaceStyle style;
@override
@ -88,7 +88,10 @@ class _FindMenuWidgetState extends State<FindMenuWidget> {
(value) => FocusScope.of(context).requestFocus(focusNode),
);
},
decoration: _buildInputDecoration(widget.localizations.find),
decoration: _buildInputDecoration(
widget.localizations?.find ??
AppFlowyEditorLocalizations.current.find,
),
),
),
IconButton(
@ -96,14 +99,16 @@ class _FindMenuWidgetState extends State<FindMenuWidget> {
iconSize: _iconSize,
onPressed: () => searchService.navigateToMatch(moveUp: true),
icon: const Icon(Icons.arrow_upward),
tooltip: widget.localizations.previousMatch,
tooltip: widget.localizations?.previousMatch ??
AppFlowyEditorLocalizations.current.previousMatch,
),
IconButton(
key: const Key('nextMatchButton'),
iconSize: _iconSize,
onPressed: () => searchService.navigateToMatch(),
icon: const Icon(Icons.arrow_downward),
tooltip: widget.localizations.nextMatch,
tooltip: widget.localizations?.nextMatch ??
AppFlowyEditorLocalizations.current.nextMatch,
),
IconButton(
key: const Key('closeButton'),
@ -117,7 +122,8 @@ class _FindMenuWidgetState extends State<FindMenuWidget> {
queriedPattern = '';
},
icon: const Icon(Icons.close),
tooltip: widget.localizations.close,
tooltip: widget.localizations?.close ??
AppFlowyEditorLocalizations.current.closeFind,
),
],
),
@ -140,8 +146,10 @@ class _FindMenuWidgetState extends State<FindMenuWidget> {
.requestFocus(replaceFocusNode),
);
},
decoration:
_buildInputDecoration(widget.localizations.replace),
decoration: _buildInputDecoration(
widget.localizations?.replace ??
AppFlowyEditorLocalizations.current.replace,
),
),
),
IconButton(
@ -149,14 +157,16 @@ class _FindMenuWidgetState extends State<FindMenuWidget> {
onPressed: () => _replaceSelectedWord(),
icon: const Icon(Icons.find_replace),
iconSize: _iconSize,
tooltip: widget.localizations.replace,
tooltip: widget.localizations?.replace ??
AppFlowyEditorLocalizations.current.replace,
),
IconButton(
key: const Key('replaceAllButton'),
onPressed: () => _replaceAllMatches(),
icon: const Icon(Icons.change_circle_outlined),
iconSize: _iconSize,
tooltip: widget.localizations.replaceAll,
tooltip: widget.localizations?.replaceAll ??
AppFlowyEditorLocalizations.current.replaceAll,
),
],
)

View file

@ -50,14 +50,25 @@ class MessageLookup extends MessageLookupByLibrary {
"bulletedList": MessageLookupByLibrary.simpleMessage("Bulleted List"),
"cancel": MessageLookupByLibrary.simpleMessage("Cancel"),
"checkbox": MessageLookupByLibrary.simpleMessage("Checkbox"),
"chooseImage": MessageLookupByLibrary.simpleMessage("Choose an image"),
"clearHighlightColor":
MessageLookupByLibrary.simpleMessage("Clear highlight color"),
"closeFind": MessageLookupByLibrary.simpleMessage("Close"),
"colAddAfter": MessageLookupByLibrary.simpleMessage("Add after"),
"colAddBefore": MessageLookupByLibrary.simpleMessage("Add before"),
"colClear": MessageLookupByLibrary.simpleMessage("Clear Content"),
"colDuplicate": MessageLookupByLibrary.simpleMessage("Duplicate"),
"colRemove": MessageLookupByLibrary.simpleMessage("Remove"),
"color": MessageLookupByLibrary.simpleMessage("Color"),
"copy": MessageLookupByLibrary.simpleMessage("Copy"),
"copyLink": MessageLookupByLibrary.simpleMessage("Copy link"),
"customColor": MessageLookupByLibrary.simpleMessage("Custom color"),
"cut": MessageLookupByLibrary.simpleMessage("Cut"),
"divider": MessageLookupByLibrary.simpleMessage("Divider"),
"done": MessageLookupByLibrary.simpleMessage("Done"),
"editLink": MessageLookupByLibrary.simpleMessage("Edit link"),
"embedCode": MessageLookupByLibrary.simpleMessage("Embed Code"),
"find": MessageLookupByLibrary.simpleMessage("Find"),
"fontColorBlue": MessageLookupByLibrary.simpleMessage("Blue"),
"fontColorBrown": MessageLookupByLibrary.simpleMessage("Brown"),
"fontColorDefault": MessageLookupByLibrary.simpleMessage("Default"),
@ -76,6 +87,9 @@ class MessageLookup extends MessageLookupByLibrary {
"highlightColor":
MessageLookupByLibrary.simpleMessage("Highlight color"),
"image": MessageLookupByLibrary.simpleMessage("Image"),
"imageLoadFailed":
MessageLookupByLibrary.simpleMessage("Could not load the image"),
"incorrectLink": MessageLookupByLibrary.simpleMessage("Incorrect Link"),
"italic": MessageLookupByLibrary.simpleMessage("Italic"),
"lightLightTint1": MessageLookupByLibrary.simpleMessage("Purple"),
"lightLightTint2": MessageLookupByLibrary.simpleMessage("Pink"),
@ -92,19 +106,33 @@ class MessageLookup extends MessageLookupByLibrary {
"linkText": MessageLookupByLibrary.simpleMessage("Text"),
"linkTextHint":
MessageLookupByLibrary.simpleMessage("Please enter text"),
"loading": MessageLookupByLibrary.simpleMessage("Loading"),
"ltr": MessageLookupByLibrary.simpleMessage("LTR"),
"mobileHeading1": MessageLookupByLibrary.simpleMessage("Heading 1"),
"mobileHeading2": MessageLookupByLibrary.simpleMessage("Heading 2"),
"mobileHeading3": MessageLookupByLibrary.simpleMessage("Heading 3"),
"nextMatch": MessageLookupByLibrary.simpleMessage("Next match"),
"numberedList": MessageLookupByLibrary.simpleMessage("Numbered List"),
"opacity": MessageLookupByLibrary.simpleMessage("Opacity"),
"openLink": MessageLookupByLibrary.simpleMessage("Open link"),
"paste": MessageLookupByLibrary.simpleMessage("Paste"),
"previousMatch": MessageLookupByLibrary.simpleMessage("Previous match"),
"quote": MessageLookupByLibrary.simpleMessage("Quote"),
"removeLink": MessageLookupByLibrary.simpleMessage("Remove link"),
"replace": MessageLookupByLibrary.simpleMessage("Replace"),
"replaceAll": MessageLookupByLibrary.simpleMessage("Replace all"),
"resetToDefaultColor":
MessageLookupByLibrary.simpleMessage("Reset to default color"),
"rowAddAfter": MessageLookupByLibrary.simpleMessage("Add after"),
"rowAddBefore": MessageLookupByLibrary.simpleMessage("Add before"),
"rowClear": MessageLookupByLibrary.simpleMessage("Clear Content"),
"rowDuplicate": MessageLookupByLibrary.simpleMessage("Duplicate"),
"rowRemove": MessageLookupByLibrary.simpleMessage("Remove"),
"rtl": MessageLookupByLibrary.simpleMessage("RTL"),
"slashPlaceHolder": MessageLookupByLibrary.simpleMessage(
"Enter a / to insert a block, or start typing"),
"strikethrough": MessageLookupByLibrary.simpleMessage("Strikethrough"),
"table": MessageLookupByLibrary.simpleMessage("Table"),
"text": MessageLookupByLibrary.simpleMessage("Text"),
"textColor": MessageLookupByLibrary.simpleMessage("Text Color"),
"tint1": MessageLookupByLibrary.simpleMessage("Tint 1"),
@ -117,6 +145,9 @@ class MessageLookup extends MessageLookupByLibrary {
"tint8": MessageLookupByLibrary.simpleMessage("Tint 8"),
"tint9": MessageLookupByLibrary.simpleMessage("Tint 9"),
"underline": MessageLookupByLibrary.simpleMessage("Underline"),
"urlHint": MessageLookupByLibrary.simpleMessage("URL")
"upload": MessageLookupByLibrary.simpleMessage("Upload"),
"uploadImage": MessageLookupByLibrary.simpleMessage("Upload Image"),
"urlHint": MessageLookupByLibrary.simpleMessage("URL"),
"urlImage": MessageLookupByLibrary.simpleMessage("URL Image")
};
}

View file

@ -38,14 +38,25 @@ class MessageLookup extends MessageLookupByLibrary {
"bold": MessageLookupByLibrary.simpleMessage("粗体"),
"bulletedList": MessageLookupByLibrary.simpleMessage("无序列表"),
"cancel": MessageLookupByLibrary.simpleMessage("取消"),
"checkbox": MessageLookupByLibrary.simpleMessage("选框"),
"checkbox": MessageLookupByLibrary.simpleMessage("复选框"),
"chooseImage": MessageLookupByLibrary.simpleMessage("选择图片文件"),
"clearHighlightColor": MessageLookupByLibrary.simpleMessage("清除高亮颜色"),
"closeFind": MessageLookupByLibrary.simpleMessage("关闭"),
"colAddAfter": MessageLookupByLibrary.simpleMessage("右侧插入列"),
"colAddBefore": MessageLookupByLibrary.simpleMessage("左侧插入列"),
"colClear": MessageLookupByLibrary.simpleMessage("清空整列"),
"colDuplicate": MessageLookupByLibrary.simpleMessage("复制整列"),
"colRemove": MessageLookupByLibrary.simpleMessage("删除整列"),
"color": MessageLookupByLibrary.simpleMessage("颜色"),
"copy": MessageLookupByLibrary.simpleMessage("复制"),
"copyLink": MessageLookupByLibrary.simpleMessage("复制链接"),
"customColor": MessageLookupByLibrary.simpleMessage("自定义颜色"),
"cut": MessageLookupByLibrary.simpleMessage("剪切"),
"divider": MessageLookupByLibrary.simpleMessage("分割线"),
"done": MessageLookupByLibrary.simpleMessage("完成"),
"editLink": MessageLookupByLibrary.simpleMessage("修改链接"),
"embedCode": MessageLookupByLibrary.simpleMessage("代码块"),
"find": MessageLookupByLibrary.simpleMessage("查找"),
"fontColorBlue": MessageLookupByLibrary.simpleMessage("蓝色"),
"fontColorBrown": MessageLookupByLibrary.simpleMessage("棕色"),
"fontColorDefault": MessageLookupByLibrary.simpleMessage("默认"),
@ -63,6 +74,8 @@ class MessageLookup extends MessageLookupByLibrary {
"highlight": MessageLookupByLibrary.simpleMessage("高亮"),
"highlightColor": MessageLookupByLibrary.simpleMessage("高亮颜色"),
"image": MessageLookupByLibrary.simpleMessage("图片"),
"imageLoadFailed": MessageLookupByLibrary.simpleMessage("无法加载图片"),
"incorrectLink": MessageLookupByLibrary.simpleMessage("链接错误"),
"italic": MessageLookupByLibrary.simpleMessage("斜体"),
"lightLightTint1": MessageLookupByLibrary.simpleMessage("紫色"),
"lightLightTint2": MessageLookupByLibrary.simpleMessage("粉红色"),
@ -77,18 +90,32 @@ class MessageLookup extends MessageLookupByLibrary {
"linkAddressHint": MessageLookupByLibrary.simpleMessage("请输入URL"),
"linkText": MessageLookupByLibrary.simpleMessage("文字"),
"linkTextHint": MessageLookupByLibrary.simpleMessage("请输入文字"),
"loading": MessageLookupByLibrary.simpleMessage("正在加载"),
"ltr": MessageLookupByLibrary.simpleMessage("自左至右"),
"mobileHeading1": MessageLookupByLibrary.simpleMessage("一级标题"),
"mobileHeading2": MessageLookupByLibrary.simpleMessage("二级标题"),
"mobileHeading3": MessageLookupByLibrary.simpleMessage("三级标题"),
"nextMatch": MessageLookupByLibrary.simpleMessage("下一匹配项"),
"numberedList": MessageLookupByLibrary.simpleMessage("有序列表"),
"opacity": MessageLookupByLibrary.simpleMessage("透明度"),
"openLink": MessageLookupByLibrary.simpleMessage("打开链接"),
"paste": MessageLookupByLibrary.simpleMessage("粘贴"),
"previousMatch": MessageLookupByLibrary.simpleMessage("上一匹配项"),
"quote": MessageLookupByLibrary.simpleMessage("引文"),
"removeLink": MessageLookupByLibrary.simpleMessage("移除链接"),
"replace": MessageLookupByLibrary.simpleMessage("替换"),
"replaceAll": MessageLookupByLibrary.simpleMessage("替换全部"),
"resetToDefaultColor": MessageLookupByLibrary.simpleMessage("重设为默认颜色"),
"rowAddAfter": MessageLookupByLibrary.simpleMessage("下方插入行"),
"rowAddBefore": MessageLookupByLibrary.simpleMessage("上方插入行"),
"rowClear": MessageLookupByLibrary.simpleMessage("清空整行"),
"rowDuplicate": MessageLookupByLibrary.simpleMessage("复制整行"),
"rowRemove": MessageLookupByLibrary.simpleMessage("删除整行"),
"rtl": MessageLookupByLibrary.simpleMessage("自右至左"),
"slashPlaceHolder":
MessageLookupByLibrary.simpleMessage("单击 / 以插入内容,或开始输入"),
"strikethrough": MessageLookupByLibrary.simpleMessage("删除线"),
"table": MessageLookupByLibrary.simpleMessage("表格"),
"text": MessageLookupByLibrary.simpleMessage("文本"),
"textColor": MessageLookupByLibrary.simpleMessage("文字颜色"),
"tint1": MessageLookupByLibrary.simpleMessage("色调1"),
@ -101,6 +128,9 @@ class MessageLookup extends MessageLookupByLibrary {
"tint8": MessageLookupByLibrary.simpleMessage("色调8"),
"tint9": MessageLookupByLibrary.simpleMessage("色调9"),
"underline": MessageLookupByLibrary.simpleMessage("下划线"),
"urlHint": MessageLookupByLibrary.simpleMessage("URL")
"upload": MessageLookupByLibrary.simpleMessage("上传"),
"uploadImage": MessageLookupByLibrary.simpleMessage("上传图片"),
"urlHint": MessageLookupByLibrary.simpleMessage("URL"),
"urlImage": MessageLookupByLibrary.simpleMessage("网络图片")
};
}

View file

@ -27,7 +27,7 @@ class MessageLookup extends MessageLookupByLibrary {
"backgroundColor": MessageLookupByLibrary.simpleMessage("背景顏色"),
"backgroundColorBlue": MessageLookupByLibrary.simpleMessage("藍色背景"),
"backgroundColorBrown": MessageLookupByLibrary.simpleMessage("棕色背景"),
"backgroundColorDefault": MessageLookupByLibrary.simpleMessage("默認背景色"),
"backgroundColorDefault": MessageLookupByLibrary.simpleMessage("預設背景色"),
"backgroundColorGray": MessageLookupByLibrary.simpleMessage("灰色背景"),
"backgroundColorGreen": MessageLookupByLibrary.simpleMessage("綠色背景"),
"backgroundColorOrange": MessageLookupByLibrary.simpleMessage("橙色背景"),
@ -39,16 +39,27 @@ class MessageLookup extends MessageLookupByLibrary {
"bulletedList": MessageLookupByLibrary.simpleMessage("無序列表"),
"cancel": MessageLookupByLibrary.simpleMessage("取消"),
"checkbox": MessageLookupByLibrary.simpleMessage("核取方塊"),
"chooseImage": MessageLookupByLibrary.simpleMessage("選取圖像檔案"),
"clearHighlightColor": MessageLookupByLibrary.simpleMessage("清除高亮顏色"),
"closeFind": MessageLookupByLibrary.simpleMessage("關閉"),
"colAddAfter": MessageLookupByLibrary.simpleMessage("右側插入行"),
"colAddBefore": MessageLookupByLibrary.simpleMessage("左側插入行"),
"colClear": MessageLookupByLibrary.simpleMessage("清空整行"),
"colDuplicate": MessageLookupByLibrary.simpleMessage("複製整行"),
"colRemove": MessageLookupByLibrary.simpleMessage("刪除整行"),
"color": MessageLookupByLibrary.simpleMessage("顏色"),
"copy": MessageLookupByLibrary.simpleMessage("複製"),
"copyLink": MessageLookupByLibrary.simpleMessage("複製連結"),
"customColor": MessageLookupByLibrary.simpleMessage("自定義顏色"),
"cut": MessageLookupByLibrary.simpleMessage("剪下"),
"divider": MessageLookupByLibrary.simpleMessage("分割線"),
"done": MessageLookupByLibrary.simpleMessage("完成"),
"editLink": MessageLookupByLibrary.simpleMessage("修改連結"),
"embedCode": MessageLookupByLibrary.simpleMessage("代碼塊"),
"find": MessageLookupByLibrary.simpleMessage("尋找"),
"fontColorBlue": MessageLookupByLibrary.simpleMessage("藍色"),
"fontColorBrown": MessageLookupByLibrary.simpleMessage("棕色"),
"fontColorDefault": MessageLookupByLibrary.simpleMessage("默認"),
"fontColorDefault": MessageLookupByLibrary.simpleMessage("預設"),
"fontColorGray": MessageLookupByLibrary.simpleMessage("灰色"),
"fontColorGreen": MessageLookupByLibrary.simpleMessage("綠色"),
"fontColorOrange": MessageLookupByLibrary.simpleMessage("橙色"),
@ -63,6 +74,8 @@ class MessageLookup extends MessageLookupByLibrary {
"highlight": MessageLookupByLibrary.simpleMessage("高亮"),
"highlightColor": MessageLookupByLibrary.simpleMessage("高亮顏色"),
"image": MessageLookupByLibrary.simpleMessage("圖片"),
"imageLoadFailed": MessageLookupByLibrary.simpleMessage("無法載入圖像"),
"incorrectLink": MessageLookupByLibrary.simpleMessage("連結錯誤"),
"italic": MessageLookupByLibrary.simpleMessage("斜體"),
"lightLightTint1": MessageLookupByLibrary.simpleMessage("紫色"),
"lightLightTint2": MessageLookupByLibrary.simpleMessage("粉紅色"),
@ -77,18 +90,32 @@ class MessageLookup extends MessageLookupByLibrary {
"linkAddressHint": MessageLookupByLibrary.simpleMessage("請輸入URL"),
"linkText": MessageLookupByLibrary.simpleMessage("文字"),
"linkTextHint": MessageLookupByLibrary.simpleMessage("請輸入文字"),
"loading": MessageLookupByLibrary.simpleMessage("正在載入"),
"ltr": MessageLookupByLibrary.simpleMessage("自左至右"),
"mobileHeading1": MessageLookupByLibrary.simpleMessage("一級標題"),
"mobileHeading2": MessageLookupByLibrary.simpleMessage("二級標題"),
"mobileHeading3": MessageLookupByLibrary.simpleMessage("三級標題"),
"nextMatch": MessageLookupByLibrary.simpleMessage("下一相符項"),
"numberedList": MessageLookupByLibrary.simpleMessage("有序列表"),
"opacity": MessageLookupByLibrary.simpleMessage("透明度"),
"openLink": MessageLookupByLibrary.simpleMessage("打開連結"),
"paste": MessageLookupByLibrary.simpleMessage("貼上"),
"previousMatch": MessageLookupByLibrary.simpleMessage("上一相符項"),
"quote": MessageLookupByLibrary.simpleMessage("引文"),
"removeLink": MessageLookupByLibrary.simpleMessage("移除連結"),
"resetToDefaultColor": MessageLookupByLibrary.simpleMessage("重設為默認顏色"),
"replace": MessageLookupByLibrary.simpleMessage("取代"),
"replaceAll": MessageLookupByLibrary.simpleMessage("取代全部"),
"resetToDefaultColor": MessageLookupByLibrary.simpleMessage("重設為預設顏色"),
"rowAddAfter": MessageLookupByLibrary.simpleMessage("下方插入列"),
"rowAddBefore": MessageLookupByLibrary.simpleMessage("上方插入列"),
"rowClear": MessageLookupByLibrary.simpleMessage("清空整列"),
"rowDuplicate": MessageLookupByLibrary.simpleMessage("複製整列"),
"rowRemove": MessageLookupByLibrary.simpleMessage("刪除整列"),
"rtl": MessageLookupByLibrary.simpleMessage("自右至左"),
"slashPlaceHolder":
MessageLookupByLibrary.simpleMessage("輸入 / 以插入内容,或開始鍵入"),
"strikethrough": MessageLookupByLibrary.simpleMessage("刪除線"),
"table": MessageLookupByLibrary.simpleMessage("表格"),
"text": MessageLookupByLibrary.simpleMessage("文本"),
"textColor": MessageLookupByLibrary.simpleMessage("文字顏色"),
"tint1": MessageLookupByLibrary.simpleMessage("色調1"),
@ -101,6 +128,9 @@ class MessageLookup extends MessageLookupByLibrary {
"tint8": MessageLookupByLibrary.simpleMessage("色調8"),
"tint9": MessageLookupByLibrary.simpleMessage("色調9"),
"underline": MessageLookupByLibrary.simpleMessage("下劃線"),
"urlHint": MessageLookupByLibrary.simpleMessage("URL")
"upload": MessageLookupByLibrary.simpleMessage("上載"),
"uploadImage": MessageLookupByLibrary.simpleMessage("上載圖片"),
"urlHint": MessageLookupByLibrary.simpleMessage("URL"),
"urlImage": MessageLookupByLibrary.simpleMessage("網路圖片")
};
}

View file

@ -850,6 +850,296 @@ class AppFlowyEditorLocalizations {
args: [],
);
}
/// `Cut`
String get cut {
return Intl.message(
'Cut',
name: 'cut',
desc: '',
args: [],
);
}
/// `Copy`
String get copy {
return Intl.message(
'Copy',
name: 'copy',
desc: '',
args: [],
);
}
/// `Paste`
String get paste {
return Intl.message(
'Paste',
name: 'paste',
desc: '',
args: [],
);
}
/// `Find`
String get find {
return Intl.message(
'Find',
name: 'find',
desc: '',
args: [],
);
}
/// `Previous match`
String get previousMatch {
return Intl.message(
'Previous match',
name: 'previousMatch',
desc: '',
args: [],
);
}
/// `Next match`
String get nextMatch {
return Intl.message(
'Next match',
name: 'nextMatch',
desc: '',
args: [],
);
}
/// `Close`
String get closeFind {
return Intl.message(
'Close',
name: 'closeFind',
desc: '',
args: [],
);
}
/// `Replace`
String get replace {
return Intl.message(
'Replace',
name: 'replace',
desc: '',
args: [],
);
}
/// `Replace all`
String get replaceAll {
return Intl.message(
'Replace all',
name: 'replaceAll',
desc: '',
args: [],
);
}
/// `Upload Image`
String get uploadImage {
return Intl.message(
'Upload Image',
name: 'uploadImage',
desc: '',
args: [],
);
}
/// `URL Image`
String get urlImage {
return Intl.message(
'URL Image',
name: 'urlImage',
desc: '',
args: [],
);
}
/// `Incorrect Link`
String get incorrectLink {
return Intl.message(
'Incorrect Link',
name: 'incorrectLink',
desc: '',
args: [],
);
}
/// `Upload`
String get upload {
return Intl.message(
'Upload',
name: 'upload',
desc: '',
args: [],
);
}
/// `Choose an image`
String get chooseImage {
return Intl.message(
'Choose an image',
name: 'chooseImage',
desc: '',
args: [],
);
}
/// `Loading`
String get loading {
return Intl.message(
'Loading',
name: 'loading',
desc: '',
args: [],
);
}
/// `Could not load the image`
String get imageLoadFailed {
return Intl.message(
'Could not load the image',
name: 'imageLoadFailed',
desc: '',
args: [],
);
}
/// `Divider`
String get divider {
return Intl.message(
'Divider',
name: 'divider',
desc: '',
args: [],
);
}
/// `Table`
String get table {
return Intl.message(
'Table',
name: 'table',
desc: '',
args: [],
);
}
/// `Add before`
String get colAddBefore {
return Intl.message(
'Add before',
name: 'colAddBefore',
desc: '',
args: [],
);
}
/// `Add before`
String get rowAddBefore {
return Intl.message(
'Add before',
name: 'rowAddBefore',
desc: '',
args: [],
);
}
/// `Add after`
String get colAddAfter {
return Intl.message(
'Add after',
name: 'colAddAfter',
desc: '',
args: [],
);
}
/// `Add after`
String get rowAddAfter {
return Intl.message(
'Add after',
name: 'rowAddAfter',
desc: '',
args: [],
);
}
/// `Remove`
String get colRemove {
return Intl.message(
'Remove',
name: 'colRemove',
desc: '',
args: [],
);
}
/// `Remove`
String get rowRemove {
return Intl.message(
'Remove',
name: 'rowRemove',
desc: '',
args: [],
);
}
/// `Duplicate`
String get colDuplicate {
return Intl.message(
'Duplicate',
name: 'colDuplicate',
desc: '',
args: [],
);
}
/// `Duplicate`
String get rowDuplicate {
return Intl.message(
'Duplicate',
name: 'rowDuplicate',
desc: '',
args: [],
);
}
/// `Clear Content`
String get colClear {
return Intl.message(
'Clear Content',
name: 'colClear',
desc: '',
args: [],
);
}
/// `Clear Content`
String get rowClear {
return Intl.message(
'Clear Content',
name: 'rowClear',
desc: '',
args: [],
);
}
/// `Enter a / to insert a block, or start typing`
String get slashPlaceHolder {
return Intl.message(
'Enter a / to insert a block, or start typing',
name: 'slashPlaceHolder',
desc: '',
args: [],
);
}
}
class AppLocalizationDelegate

View file

@ -1,26 +1,26 @@
import 'package:appflowy_editor/src/service/context_menu/context_menu.dart';
import 'context_menu.dart';
import '../../l10n/l10n.dart';
import '../internal_key_event_handlers/copy_paste_handler.dart';
final standardContextMenuItems = [
[
// cut
ContextMenuItem(
name: 'Cut',
name: AppFlowyEditorLocalizations.current.cut,
onPressed: (editorState) {
handleCut(editorState);
},
),
// copy
ContextMenuItem(
name: 'Copy',
name: AppFlowyEditorLocalizations.current.copy,
onPressed: (editorState) {
handleCopy(editorState);
},
),
// Paste
ContextMenuItem(
name: 'Paste',
name: AppFlowyEditorLocalizations.current.paste,
onPressed: (editorState) {
handlePaste(editorState);
},

View file

@ -7,6 +7,9 @@ import 'package:network_image_mock/network_image_mock.dart';
void main() async {
/// customize the action builder
await AppFlowyEditorLocalizations.load(
const Locale.fromSubtags(languageCode: 'en'),
);
testWidgets('customize the image block\'s menu', (tester) async {
await mockNetworkImagesFor(() async {
const widget = CustomActionBuilder();

View file

@ -12,6 +12,9 @@ void main() async {
// 1. When the text field is focused, the editor's cursor should be disabled.
// 2. When the editor is focused, the text field's cursor should be disabled.
// 3. Tapping a non-first line of the editor should still allow the editor to grab focus.
await AppFlowyEditorLocalizations.load(
const Locale.fromSubtags(languageCode: 'en'),
);
testWidgets('text field + editor', (tester) async {
const widget = CustomAttributeKeyForTextBlock();
await tester.pumpWidget(widget);

View file

@ -10,6 +10,9 @@ void main() async {
/// - bulleted list
/// - todo list
/// - quote
await AppFlowyEditorLocalizations.load(
const Locale.fromSubtags(languageCode: 'en'),
);
testWidgets('custom block icon', (tester) async {
await mockNetworkImagesFor(() async {
const widget = CustomBlockIcon();

Some files were not shown because too many files have changed in this diff Show more