Browse Source

refactor(i18n): 使用replaceAll替换trParams进行字符串插值

统一国际化字符串插值方式,从trParams改为replaceAll方法
weicu
lxm 1 year ago
parent
commit
e2f8f1b8f0
  1. 10
      lib/modules/meeting/controllers/meeting_connect_controller.dart
  2. 35
      lib/modules/meeting/controllers/meeting_home_controller.dart
  3. 9
      lib/modules/meeting/views/tabs/overview_tab.dart

10
lib/modules/meeting/controllers/meeting_connect_controller.dart

@ -227,8 +227,11 @@ class MeetingConnectController extends GetxController {
(sum, entry) => sum + (entry.size ?? 0), (sum, entry) => sum + (entry.size ?? 0),
); );
for (var i = 0; i < listDirectory.length; i++) { for (var i = 0; i < listDirectory.length; i++) {
importedFilesStr.value = importedFilesStr.value = 'downloadingFileProgress'
'downloadingFileProgress'.trParams({'total': '${listDirectory.length}', 'current': '${i + 1}'}); // 对应中文:共{total}个文件,正在下载第{current}个文件 .tr
.replaceAll('{total}', '${listDirectory.length}')
.replaceAll('{current}',
'${i + 1}'); // 对应中文:共{total}个文件,正在下载第{current}个文件
int previousSize = i > 0 ? listDirectory[i - 1].size ?? 0 : 0; int previousSize = i > 0 ? listDirectory[i - 1].size ?? 0 : 0;
FTPEntry element = listDirectory[i]; FTPEntry element = listDirectory[i];
await _downloadFile(totalSize, previousSize, element); await _downloadFile(totalSize, previousSize, element);
@ -236,7 +239,8 @@ class MeetingConnectController extends GetxController {
} }
await _disconnect(); await _disconnect();
stateStr.value = 'downloadComplete'.tr; // 对应中文:下载完成 stateStr.value = 'downloadComplete'.tr; // 对应中文:下载完成
importedFilesStr.value = 'downloadCompleteInfo'.trParams({'count': '${listDirectory.length}'}); // 对应中文:下载完成,共{count}个文件,2秒后自动返回 importedFilesStr.value = 'downloadCompleteInfo'.tr.replaceAll('{count}',
'${listDirectory.length}'); // 对应中文:下载完成,共{count}个文件,2秒后自动返回
Future.delayed(const Duration(seconds: 2), () { Future.delayed(const Duration(seconds: 2), () {
_executeUpload(); _executeUpload();
Get.back(); Get.back();

35
lib/modules/meeting/controllers/meeting_home_controller.dart

@ -95,7 +95,7 @@ class MeetingHomeController extends GetxController {
final deviceInfo = DeviceInfoPlugin(); final deviceInfo = DeviceInfoPlugin();
final androidInfo = await deviceInfo.androidInfo; final androidInfo = await deviceInfo.androidInfo;
final sdkVersion = androidInfo.version.sdkInt; final sdkVersion = androidInfo.version.sdkInt;
// Android 11+ (API 30+) 不需要存储权限 // Android 11+ (API 30+) 不需要存储权限
if (sdkVersion >= 30) { if (sdkVersion >= 30) {
Logger.d("Permission", "Android 11+版本,无需请求存储权限"); Logger.d("Permission", "Android 11+版本,无需请求存储权限");
@ -106,13 +106,15 @@ class MeetingHomeController extends GetxController {
// 如果获取版本失败,为了兼容性还是请求权限 // 如果获取版本失败,为了兼容性还是请求权限
} }
} }
PermissionUtil.instance PermissionUtil.instance
.requestPermission( .requestPermission(
permissionType: Permission.storage, permissionType: Permission.storage,
permissionName: "meetingStoragePermission".tr, // 对应中文:存储 permissionName: "meetingStoragePermission".tr, // 对应中文:存储
explanationText: "meetingStoragePermissionExplanation".tr, // 对应中文:我们需要访问存储权限,以便您可以选择并上传音频文件。 explanationText: "meetingStoragePermissionExplanation"
permanentDenialText: "meetingStoragePermissionPermanentDenial".tr, // 对应中文:检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。 .tr, // 对应中文:我们需要访问存储权限,以便您可以选择并上传音频文件。
permanentDenialText: "meetingStoragePermissionPermanentDenial"
.tr, // 对应中文:检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。
) )
.then((granted) { .then((granted) {
if (granted) { if (granted) {
@ -169,7 +171,9 @@ class MeetingHomeController extends GetxController {
EasyLoading.showToast('shareComplete'.tr); // 对应中文:分享完成! EasyLoading.showToast('shareComplete'.tr); // 对应中文:分享完成!
} catch (e) { } catch (e) {
EasyLoading.showToast('shareFailed'.trParams({'error': e.toString()})); // 对应中文:分享失败: {error} EasyLoading.showToast('shareFailed'
.tr
.replaceAll('{error}', e.toString())); // 对应中文:分享失败: {error}
} }
} }
@ -258,12 +262,21 @@ class MeetingHomeController extends GetxController {
addUp++; addUp++;
} }
} catch (e) { } catch (e) {
print('fileProcessingFailed'.trParams({'filePath': fileEntity.path, 'error': e.toString()})); // 对应中文:文件处理失败: {filePath}, 错误: {error} print('fileProcessingFailed'
.tr
.replaceAll('{filePath}', fileEntity.path)
.replaceAll('{error}',
e.toString())); // 对应中文:文件处理失败: {filePath}, 错误: {error}
} }
} }
if (addUp > 0) EasyLoading.showSuccess('importSuccess'.trParams({'count': '$addUp'})); // 对应中文:成功导入本地 {count} 条录音 if (addUp > 0)
EasyLoading.showSuccess('importSuccess'
.tr
.replaceAll('{count}', '$addUp')); // 对应中文:成功导入本地 {count} 条录音
} catch (e) { } catch (e) {
EasyLoading.showError('importError'.trParams({'error': e.toString()})); // 对应中文:导入失败: {error} EasyLoading.showError('importError'
.tr
.replaceAll('{error}', e.toString())); // 对应中文:导入失败: {error}
} finally { } finally {
EasyLoading.dismiss(); EasyLoading.dismiss();
} }
@ -308,7 +321,11 @@ class MeetingHomeController extends GetxController {
} }
} }
} catch (e) { } catch (e) {
Logger.error('importFailed'.trParams({'filePath': filePath, 'error': e.toString()})); // 对应中文:导入文件失败: {filePath}, error: {error} Logger.error('importFailed'
.tr
.replaceAll('{filePath}', filePath)
.replaceAll('{error}',
e.toString())); // 对应中文:导入文件失败: {filePath}, error: {error}
} }
} }
EasyLoading.dismiss(); EasyLoading.dismiss();

9
lib/modules/meeting/views/tabs/overview_tab.dart

@ -71,7 +71,8 @@ class _OverviewTabState extends State<OverviewTab> {
Padding( Padding(
padding: EdgeInsets.symmetric(vertical: 10.w), padding: EdgeInsets.symmetric(vertical: 10.w),
child: Text( child: Text(
'keyEventsAnalyzed'.trParams({'count': '${_dataList.length}'}), // 对应中文:分析出{count}个关键事件。 'keyEventsAnalyzed'.tr.replaceAll('{count}',
'${_dataList.length}'), // 对应中文:分析出{count}个关键事件。
style: TextStyle( style: TextStyle(
color: isDarkMode ? Colors.grey[400] : Colors.grey, color: isDarkMode ? Colors.grey[400] : Colors.grey,
fontSize: 12.sp, fontSize: 12.sp,
@ -106,7 +107,8 @@ class _OverviewTabState extends State<OverviewTab> {
Get.bottomSheet( Get.bottomSheet(
const AIBottomSheet(), const AIBottomSheet(),
isScrollControlled: true, isScrollControlled: true,
backgroundColor: isDarkMode ? Colors.grey[800] : Colors.white, backgroundColor:
isDarkMode ? Colors.grey[800] : Colors.white,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.vertical( borderRadius: BorderRadius.vertical(
top: Radius.circular(12.r), top: Radius.circular(12.r),
@ -125,7 +127,8 @@ class _OverviewTabState extends State<OverviewTab> {
Get.bottomSheet( Get.bottomSheet(
const GenerateBottomSheet(), const GenerateBottomSheet(),
isScrollControlled: true, isScrollControlled: true,
backgroundColor: isDarkMode ? Colors.grey[800] : Colors.grey[100], backgroundColor:
isDarkMode ? Colors.grey[800] : Colors.grey[100],
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.vertical( borderRadius: BorderRadius.vertical(
top: Radius.circular(12.r), top: Radius.circular(12.r),

Loading…
Cancel
Save