add android translate

This commit is contained in:
csf
2022-03-23 15:28:21 +08:00
parent 1daaa3a4cd
commit cc75ffbeeb
6 changed files with 82 additions and 82 deletions

View File

@@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_hbb/common.dart';
import 'package:flutter_hbb/models/chat_model.dart';
import 'package:provider/provider.dart';
import '../models/model.dart';
import 'home_page.dart';
OverlayEntry? iconOverlayEntry;
@@ -13,7 +14,7 @@ ChatPage chatPage = ChatPage();
class ChatPage extends StatelessWidget implements PageShape {
@override
final title = "Chat";
final title = translate("Chat");
@override
final icon = Icon(Icons.chat);
@@ -209,7 +210,7 @@ class _ChatWindowOverlayState extends State<ChatWindowOverlay> {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Padding(padding: EdgeInsets.symmetric(horizontal: 15),child: Text(
"Chat",
translate("Chat"),
style: TextStyle(
color: Colors.white,
fontFamily: 'WorkSans',

View File

@@ -139,12 +139,12 @@ class _FileManagerPageState extends State<FileManagerPage> {
itemBuilder: (context) {
return [
PopupMenuItem(
child: Text("删除"),
child: Text(translate("Delete")),
value: "delete",
),
PopupMenuItem(
child: Text("详细信息"),
value: "delete",
child: Text(translate("Properties")),
value: "properties",
enabled: false,
)
];
@@ -255,14 +255,13 @@ class _FileManagerPageState extends State<FileManagerPage> {
)),
Row(
children: [
// IconButton(onPressed: () {}, icon: Icon(Icons.sort)),
PopupMenuButton<SortBy>(
icon: Icon(Icons.sort),
itemBuilder: (context) {
return SortBy.values
.map((e) => PopupMenuItem(
child: Text(
e.toString().split(".").last.toUpperCase()),
translate(e.toString().split(".").last)),
value: e,
))
.toList();
@@ -277,7 +276,7 @@ class _FileManagerPageState extends State<FileManagerPage> {
children: [
Icon(Icons.refresh),
SizedBox(width: 5),
Text("刷新")
Text(translate("Refresh File"))
],
),
value: "refresh",
@@ -287,7 +286,7 @@ class _FileManagerPageState extends State<FileManagerPage> {
children: [
Icon(Icons.check),
SizedBox(width: 5),
Text("多选")
Text(translate("CheckBox"))
],
),
value: "select",
@@ -309,7 +308,7 @@ class _FileManagerPageState extends State<FileManagerPage> {
? Icons.check_box_outlined
: Icons.check_box_outline_blank),
SizedBox(width: 5),
Text(translate("Toggle Hidden"))
Text(translate("Show Hidden Files"))
],
),
value: "hidden",
@@ -340,6 +339,10 @@ class _FileManagerPageState extends State<FileManagerPage> {
),
actions: [
TextButton(
style: flatButtonStyle,
onPressed: () => close(false),
child: Text(translate("Cancel"))),
ElevatedButton(
style: flatButtonStyle,
onPressed: () {
if (name.value.text.isNotEmpty) {
@@ -350,11 +353,7 @@ class _FileManagerPageState extends State<FileManagerPage> {
close();
}
},
child: Text(translate("OK"))),
TextButton(
style: flatButtonStyle,
onPressed: () => close(false),
child: Text(translate("Cancel")))
child: Text(translate("OK")))
]));
} else if (v == "hidden") {
model.toggleShowHidden();
@@ -381,8 +380,9 @@ class _FileManagerPageState extends State<FileManagerPage> {
children: [
Padding(
padding: EdgeInsets.all(2),
// TODO
child: Text(
"总计: ${model.currentDir.entries.length}个项目",
"${translate("Count")}: ${model.currentDir.entries.length}${translate("items")}",
style: TextStyle(color: MyTheme.darkGray),
),
)
@@ -394,17 +394,17 @@ class _FileManagerPageState extends State<FileManagerPage> {
Widget? bottomSheet() {
final state = model.jobState;
final isOtherPage = _selectedItems.isOtherPage(model.isLocal);
final selectedItemsLength = "${_selectedItems.length} 个项目";
final selectedItemsLength = "${_selectedItems.length} ${translate("items")}"; // TODO t
final local = _selectedItems.isLocal == null
? ""
: " [${_selectedItems.isLocal! ? '本地' : '远程'}]";
: " [${_selectedItems.isLocal! ? translate("Local") : translate("Remote")}]";
if (model.selectMode) {
if (_selectedItems.length == 0 || !isOtherPage) {
// 选择模式 当前选择页面
return BottomSheetBody(
leading: Icon(Icons.check),
title: "已选择",
title: translate("Selected"),
text: selectedItemsLength + local,
onCanceled: () => model.toggleSelectMode(),
actions: [
@@ -421,7 +421,7 @@ class _FileManagerPageState extends State<FileManagerPage> {
// 选择模式 复制目标页面
return BottomSheetBody(
leading: Icon(Icons.input),
title: "粘贴到这里?",
title: translate("Paste here?"),
text: selectedItemsLength + local,
onCanceled: () => model.toggleSelectMode(),
actions: [
@@ -440,21 +440,21 @@ class _FileManagerPageState extends State<FileManagerPage> {
case JobState.inProgress:
return BottomSheetBody(
leading: CircularProgressIndicator(),
title: "正在发送文件...",
text: "速度: ${readableFileSize(model.jobProgress.speed)}/s",
title: translate("Waiting"),
text: "${translate("Speed")}: ${readableFileSize(model.jobProgress.speed)}/s",
onCanceled: null,
);
case JobState.done:
return BottomSheetBody(
leading: Icon(Icons.check),
title: "操作成功!",
title: "${translate("Successful")}!",
text: "",
onCanceled: () => model.jobReset(),
);
case JobState.error:
return BottomSheetBody(
leading: Icon(Icons.error),
title: "错误!",
title: "${translate("Error")}!",
text: "",
onCanceled: () => model.jobReset(),
);

View File

@@ -1,4 +1,3 @@
import 'package:device_info/device_info.dart';
import 'package:flutter/material.dart';
import 'package:flutter_hbb/models/model.dart';
import 'package:provider/provider.dart';
@@ -11,7 +10,7 @@ import '../models/model.dart';
class ServerPage extends StatelessWidget implements PageShape {
@override
final title = "Share Screen";
final title = translate("Share Screen");
@override
final icon = Icon(Icons.mobile_screen_share);
@@ -27,7 +26,7 @@ class ServerPage extends StatelessWidget implements PageShape {
enabled: false,
),
PopupMenuItem(
child: Text("Set your own password"),
child: Text(translate("Set your own password")),
value: "changePW",
enabled: false,
)
@@ -127,7 +126,7 @@ class _ServerInfoState extends State<ServerInfo> {
color: Colors.redAccent, size: 24),
SizedBox(width: 10),
Text(
"屏幕共享尚未开启",
translate("Service is not running"),
style: TextStyle(
fontFamily: 'WorkSans',
fontWeight: FontWeight.bold,
@@ -140,7 +139,7 @@ class _ServerInfoState extends State<ServerInfo> {
SizedBox(height: 5),
Center(
child: Text(
"点击[启动服务]或打开Screen Capture 开启共享手机屏幕",
translate("android_start_service_tip"),
style: TextStyle(fontSize: 12, color: MyTheme.darkGray),
))
],
@@ -170,19 +169,19 @@ class _PermissionCheckerState extends State<PermissionChecker> {
serverModel.toggleInput),
PermissionRow(translate("File Transfer"), serverModel.fileOk,
serverModel.toggleFile),
hasAudioPermission?PermissionRow(translate("Audio Capture"), serverModel.inputOk,
serverModel.toggleAudio):Text("* 当前安卓版本不支持音频捕获",style: TextStyle(color: MyTheme.darkGray),),
hasAudioPermission?PermissionRow(translate("Audio Capture"), serverModel.audioOk,
serverModel.toggleAudio):Text("* ${translate("android_version_audio_tip")}",style: TextStyle(color: MyTheme.darkGray),),
SizedBox(height: 8),
serverModel.mediaOk
? ElevatedButton.icon(
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all(Colors.red)),
icon: Icon(Icons.stop),
onPressed: serverModel.stopService,
onPressed: serverModel.toggleService,
label: Text(translate("Stop service")))
: ElevatedButton.icon(
icon: Icon(Icons.play_arrow),
onPressed: serverModel.startService,
onPressed: serverModel.toggleService,
label: Text(translate("Start Service"))),
],
));
@@ -323,12 +322,6 @@ Widget clientInfo(Client client) {
])
],
),
// !client.isFileTransfer?Row(
// children: [
// client.audio?Icon(Icons.volume_up):SizedBox.shrink(),
// client.keyboard?Icon(Icons.mouse):SizedBox.shrink(),
// ],
// ):SizedBox.shrink()
]);
}

View File

@@ -7,7 +7,7 @@ import 'home_page.dart';
class SettingsPage extends StatelessWidget implements PageShape {
@override
final title = "Settings";
final title = translate("Settings");
@override
final icon = Icon(Icons.settings);