mirror of
https://github.com/immich-app/immich
synced 2025-11-14 17:36:12 +00:00
feat(mobile): use Weblate for i18n (2) (#17620)
* feat(mobile): use Weblate for i18n (2) * remove old translation files * dedup keys * remove migration report * chore * remove localizely.yml
This commit is contained in:
parent
17e720440d
commit
b2c903c000
156 changed files with 25537 additions and 30968 deletions
|
|
@ -90,7 +90,7 @@ class ActivityTextField extends HookConsumerWidget {
|
|||
suffixIconColor: liked ? Colors.red[700] : null,
|
||||
hintText: !isEnabled
|
||||
? 'shared_album_activities_input_disable'.tr()
|
||||
: 'shared_album_activities_input_hint'.tr(),
|
||||
: 'say_something'.tr(),
|
||||
hintStyle: TextStyle(
|
||||
fontWeight: FontWeight.normal,
|
||||
fontSize: 14,
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ class DismissibleActivity extends StatelessWidget {
|
|||
onOk: () {},
|
||||
title: "shared_album_activity_remove_title",
|
||||
content: "shared_album_activity_remove_content",
|
||||
ok: "delete_dialog_ok",
|
||||
ok: "delete",
|
||||
),
|
||||
)
|
||||
: Future.value(false),
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ class AddToAlbumBottomSheet extends HookConsumerWidget {
|
|||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text(
|
||||
'common_add_to_album'.tr(),
|
||||
'add_to_album'.tr(),
|
||||
style: context.textTheme.displayMedium,
|
||||
),
|
||||
TextButton.icon(
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ class AddToAlbumSliverList extends HookConsumerWidget {
|
|||
return Padding(
|
||||
padding: const EdgeInsets.only(bottom: 8),
|
||||
child: ExpansionTile(
|
||||
title: Text('common_shared'.tr()),
|
||||
title: Text('shared'.tr()),
|
||||
tilePadding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||
leading: const Icon(Icons.group),
|
||||
children: [
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ class AlbumThumbnailCard extends ConsumerWidget {
|
|||
String? owner;
|
||||
if (showOwner) {
|
||||
if (album.ownerId == ref.read(currentUserProvider)?.id) {
|
||||
owner = 'album_thumbnail_owned'.tr();
|
||||
owner = 'owned'.tr();
|
||||
} else if (album.ownerName != null) {
|
||||
owner = 'album_thumbnail_shared_by'.tr(args: [album.ownerName!]);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ class AlbumTitleTextField extends ConsumerWidget {
|
|||
borderSide: const BorderSide(color: Colors.transparent),
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
),
|
||||
hintText: 'share_add_title'.tr(),
|
||||
hintText: 'add_a_title'.tr(),
|
||||
hintStyle: context.themeData.inputDecorationTheme.hintStyle?.copyWith(
|
||||
fontSize: 28,
|
||||
fontWeight: FontWeight.bold,
|
||||
|
|
|
|||
|
|
@ -76,13 +76,13 @@ class AlbumViewerAppbar extends HookConsumerWidget
|
|||
barrierDismissible: false, // user must tap button!
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: const Text('album_viewer_appbar_share_delete').tr(),
|
||||
title: const Text('delete_album').tr(),
|
||||
content: const Text('album_viewer_appbar_delete_confirm').tr(),
|
||||
actions: <Widget>[
|
||||
TextButton(
|
||||
onPressed: () => context.pop('Cancel'),
|
||||
child: Text(
|
||||
'action_common_cancel',
|
||||
'cancel',
|
||||
style: TextStyle(
|
||||
color: context.primaryColor,
|
||||
fontWeight: FontWeight.bold,
|
||||
|
|
@ -95,7 +95,7 @@ class AlbumViewerAppbar extends HookConsumerWidget
|
|||
deleteAlbum();
|
||||
},
|
||||
child: Text(
|
||||
'action_common_confirm',
|
||||
'confirm',
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: context.colorScheme.error,
|
||||
|
|
@ -131,7 +131,7 @@ class AlbumViewerAppbar extends HookConsumerWidget
|
|||
? ListTile(
|
||||
leading: const Icon(Icons.delete_forever_rounded),
|
||||
title: const Text(
|
||||
'album_viewer_appbar_share_delete',
|
||||
'delete_album',
|
||||
style: TextStyle(fontWeight: FontWeight.w500),
|
||||
).tr(),
|
||||
onTap: onDeleteAlbumPressed,
|
||||
|
|
@ -203,7 +203,7 @@ class AlbumViewerAppbar extends HookConsumerWidget
|
|||
leading: const Icon(Icons.settings_rounded),
|
||||
onTap: () => context.navigateTo(const AlbumOptionsRoute()),
|
||||
title: const Text(
|
||||
"translated_text_options",
|
||||
"options",
|
||||
style: TextStyle(fontWeight: FontWeight.w500),
|
||||
).tr(),
|
||||
),
|
||||
|
|
@ -220,7 +220,7 @@ class AlbumViewerAppbar extends HookConsumerWidget
|
|||
}
|
||||
},
|
||||
title: const Text(
|
||||
"share_add_photos",
|
||||
"add_photos",
|
||||
style: TextStyle(fontWeight: FontWeight.w500),
|
||||
).tr(),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ class AlbumViewerEditableTitle extends HookConsumerWidget {
|
|||
focusColor: Colors.grey[300],
|
||||
fillColor: context.scaffoldBackgroundColor,
|
||||
filled: titleFocusNode.hasFocus,
|
||||
hintText: 'share_add_title'.tr(),
|
||||
hintText: 'add_a_title'.tr(),
|
||||
hintStyle: context.themeData.inputDecorationTheme.hintStyle?.copyWith(
|
||||
fontSize: 28,
|
||||
),
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ class ControlBottomAppBar extends HookConsumerWidget {
|
|||
iconData: Platform.isAndroid
|
||||
? Icons.share_rounded
|
||||
: Icons.ios_share_rounded,
|
||||
label: "control_bottom_app_bar_share".tr(),
|
||||
label: "share".tr(),
|
||||
onPressed: enabled ? () => onShare(true) : null,
|
||||
),
|
||||
ControlBoxButton(
|
||||
|
|
@ -142,10 +142,7 @@ class ControlBottomAppBar extends HookConsumerWidget {
|
|||
ControlBoxButton(
|
||||
iconData:
|
||||
unarchive ? Icons.unarchive_outlined : Icons.archive_outlined,
|
||||
label: (unarchive
|
||||
? "control_bottom_app_bar_unarchive"
|
||||
: "control_bottom_app_bar_archive")
|
||||
.tr(),
|
||||
label: (unarchive ? "unarchive" : "archive").tr(),
|
||||
onPressed: enabled ? onArchive : null,
|
||||
),
|
||||
if (hasRemote && onFavorite != null)
|
||||
|
|
@ -153,10 +150,7 @@ class ControlBottomAppBar extends HookConsumerWidget {
|
|||
iconData: unfavorite
|
||||
? Icons.favorite_border_rounded
|
||||
: Icons.favorite_rounded,
|
||||
label: (unfavorite
|
||||
? "control_bottom_app_bar_unfavorite"
|
||||
: "control_bottom_app_bar_favorite")
|
||||
.tr(),
|
||||
label: (unfavorite ? "unfavorite" : "favorite").tr(),
|
||||
onPressed: enabled ? onFavorite : null,
|
||||
),
|
||||
if (hasLocal && hasRemote && onDelete != null)
|
||||
|
|
@ -164,7 +158,7 @@ class ControlBottomAppBar extends HookConsumerWidget {
|
|||
constraints: const BoxConstraints(maxWidth: 90),
|
||||
child: ControlBoxButton(
|
||||
iconData: Icons.delete_sweep_outlined,
|
||||
label: "control_bottom_app_bar_delete".tr(),
|
||||
label: "delete".tr(),
|
||||
onPressed: enabled
|
||||
? () => handleRemoteDelete(!trashEnabled, onDelete!)
|
||||
: null,
|
||||
|
|
@ -244,7 +238,7 @@ class ControlBottomAppBar extends HookConsumerWidget {
|
|||
constraints: const BoxConstraints(maxWidth: 90),
|
||||
child: ControlBoxButton(
|
||||
iconData: Icons.filter_none_rounded,
|
||||
label: "control_bottom_app_bar_stack".tr(),
|
||||
label: "stack".tr(),
|
||||
onPressed: enabled ? onStack : null,
|
||||
),
|
||||
),
|
||||
|
|
@ -253,14 +247,14 @@ class ControlBottomAppBar extends HookConsumerWidget {
|
|||
constraints: const BoxConstraints(maxWidth: 90),
|
||||
child: ControlBoxButton(
|
||||
iconData: Icons.remove_circle_outline,
|
||||
label: 'album_viewer_appbar_share_remove'.tr(),
|
||||
label: 'remove_from_album'.tr(),
|
||||
onPressed: enabled ? onRemoveFromAlbum : null,
|
||||
),
|
||||
),
|
||||
if (selectionAssetState.hasLocal)
|
||||
ControlBoxButton(
|
||||
iconData: Icons.backup_outlined,
|
||||
label: "control_bottom_app_bar_upload".tr(),
|
||||
label: "upload".tr(),
|
||||
onPressed: enabled
|
||||
? () => showDialog(
|
||||
context: context,
|
||||
|
|
@ -359,7 +353,7 @@ class _AddToAlbumTitleRow extends StatelessWidget {
|
|||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
const Text(
|
||||
"common_add_to_album",
|
||||
"add_to_album",
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.bold,
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ class DeleteDialog extends ConfirmDialog {
|
|||
: super(
|
||||
title: "delete_dialog_title",
|
||||
content: alert ?? "delete_dialog_alert",
|
||||
cancel: "delete_dialog_cancel",
|
||||
ok: "delete_dialog_ok",
|
||||
cancel: "cancel",
|
||||
ok: "delete",
|
||||
onOk: onDelete,
|
||||
);
|
||||
}
|
||||
|
|
@ -46,7 +46,7 @@ class DeleteLocalOnlyDialog extends StatelessWidget {
|
|||
TextButton(
|
||||
onPressed: () => context.pop(),
|
||||
child: Text(
|
||||
"delete_dialog_cancel",
|
||||
"cancel",
|
||||
style: TextStyle(
|
||||
color: context.primaryColor,
|
||||
fontWeight: FontWeight.bold,
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ class UploadDialog extends ConfirmDialog {
|
|||
: super(
|
||||
title: 'upload_dialog_title',
|
||||
content: 'upload_dialog_info',
|
||||
cancel: 'upload_dialog_cancel',
|
||||
ok: 'upload_dialog_ok',
|
||||
cancel: 'cancel',
|
||||
ok: 'upload',
|
||||
onOk: onUpload,
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -273,16 +273,16 @@ class BottomGalleryBar extends ConsumerWidget {
|
|||
icon: Icon(
|
||||
Platform.isAndroid ? Icons.share_rounded : Icons.ios_share_rounded,
|
||||
),
|
||||
label: 'control_bottom_app_bar_share'.tr(),
|
||||
tooltip: 'control_bottom_app_bar_share'.tr(),
|
||||
label: 'share'.tr(),
|
||||
tooltip: 'share'.tr(),
|
||||
): (_) => shareAsset(),
|
||||
},
|
||||
if (asset.isImage)
|
||||
{
|
||||
BottomNavigationBarItem(
|
||||
icon: const Icon(Icons.tune_outlined),
|
||||
label: 'control_bottom_app_bar_edit'.tr(),
|
||||
tooltip: 'control_bottom_app_bar_edit'.tr(),
|
||||
label: 'edit'.tr(),
|
||||
tooltip: 'edit'.tr(),
|
||||
): (_) => handleEdit(),
|
||||
},
|
||||
if (isOwner)
|
||||
|
|
@ -290,45 +290,45 @@ class BottomGalleryBar extends ConsumerWidget {
|
|||
asset.isArchived
|
||||
? BottomNavigationBarItem(
|
||||
icon: const Icon(Icons.unarchive_rounded),
|
||||
label: 'control_bottom_app_bar_unarchive'.tr(),
|
||||
tooltip: 'control_bottom_app_bar_unarchive'.tr(),
|
||||
label: 'unarchive'.tr(),
|
||||
tooltip: 'unarchive'.tr(),
|
||||
)
|
||||
: BottomNavigationBarItem(
|
||||
icon: const Icon(Icons.archive_outlined),
|
||||
label: 'control_bottom_app_bar_archive'.tr(),
|
||||
tooltip: 'control_bottom_app_bar_archive'.tr(),
|
||||
label: 'archive'.tr(),
|
||||
tooltip: 'archive'.tr(),
|
||||
): (_) => handleArchive(),
|
||||
},
|
||||
if (isOwner && asset.stackCount > 0)
|
||||
{
|
||||
BottomNavigationBarItem(
|
||||
icon: const Icon(Icons.burst_mode_outlined),
|
||||
label: 'control_bottom_app_bar_stack'.tr(),
|
||||
tooltip: 'control_bottom_app_bar_stack'.tr(),
|
||||
label: 'stack'.tr(),
|
||||
tooltip: 'stack'.tr(),
|
||||
): (_) => showStackActionItems(),
|
||||
},
|
||||
if (isOwner && !isInAlbum)
|
||||
{
|
||||
BottomNavigationBarItem(
|
||||
icon: const Icon(Icons.delete_outline),
|
||||
label: 'control_bottom_app_bar_delete'.tr(),
|
||||
tooltip: 'control_bottom_app_bar_delete'.tr(),
|
||||
label: 'delete'.tr(),
|
||||
tooltip: 'delete'.tr(),
|
||||
): (_) => handleDelete(),
|
||||
},
|
||||
if (!isOwner)
|
||||
{
|
||||
BottomNavigationBarItem(
|
||||
icon: const Icon(Icons.download_outlined),
|
||||
label: 'control_bottom_app_bar_download'.tr(),
|
||||
tooltip: 'control_bottom_app_bar_download'.tr(),
|
||||
label: 'download'.tr(),
|
||||
tooltip: 'download'.tr(),
|
||||
): (_) => handleDownload(),
|
||||
},
|
||||
if (isInAlbum)
|
||||
{
|
||||
BottomNavigationBarItem(
|
||||
icon: const Icon(Icons.remove_circle_outline),
|
||||
label: 'album_viewer_appbar_share_remove'.tr(),
|
||||
tooltip: 'album_viewer_appbar_share_remove'.tr(),
|
||||
label: 'remove_from_album'.tr(),
|
||||
tooltip: 'remove_from_album'.tr(),
|
||||
): (_) => handleRemoveFromAlbum(),
|
||||
},
|
||||
];
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ class AssetLocation extends HookConsumerWidget {
|
|||
contentPadding: const EdgeInsets.all(0),
|
||||
leading: const Icon(Icons.location_on),
|
||||
title: Text(
|
||||
"exif_bottom_sheet_location_add",
|
||||
"add_a_location",
|
||||
style: context.textTheme.bodyMedium?.copyWith(
|
||||
fontWeight: FontWeight.w600,
|
||||
color: context.primaryColor,
|
||||
|
|
|
|||
|
|
@ -185,7 +185,7 @@ class AlbumInfoCard extends HookConsumerWidget {
|
|||
padding: const EdgeInsets.only(top: 2.0),
|
||||
child: Text(
|
||||
album.assetCount.toString() +
|
||||
(album.isAll ? " (${'backup_all'.tr()})" : ""),
|
||||
(album.isAll ? " (${'all'.tr()})" : ""),
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
color: Colors.grey[600],
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ class ImmichAppBarDialog extends HookConsumerWidget {
|
|||
buildSettingButton() {
|
||||
return buildActionButton(
|
||||
Icons.settings_outlined,
|
||||
"profile_drawer_settings",
|
||||
"settings",
|
||||
() => context.pushRoute(const SettingsRoute()),
|
||||
);
|
||||
}
|
||||
|
|
@ -112,7 +112,7 @@ class ImmichAppBarDialog extends HookConsumerWidget {
|
|||
buildSignOutButton() {
|
||||
return buildActionButton(
|
||||
Icons.logout_rounded,
|
||||
"profile_drawer_sign_out",
|
||||
"sign_out",
|
||||
() async {
|
||||
if (isLoggingOut.value) {
|
||||
return;
|
||||
|
|
@ -124,7 +124,7 @@ class ImmichAppBarDialog extends HookConsumerWidget {
|
|||
return ConfirmDialog(
|
||||
title: "app_bar_signout_dialog_title",
|
||||
content: "app_bar_signout_dialog_content",
|
||||
ok: "app_bar_signout_dialog_ok",
|
||||
ok: "yes",
|
||||
onOk: () async {
|
||||
isLoggingOut.value = true;
|
||||
await ref
|
||||
|
|
@ -229,7 +229,7 @@ class ImmichAppBarDialog extends HookConsumerWidget {
|
|||
);
|
||||
},
|
||||
child: Text(
|
||||
"profile_drawer_documentation",
|
||||
"documentation",
|
||||
style: context.textTheme.bodySmall,
|
||||
).tr(),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@ class AppBarServerInfo extends HookConsumerWidget {
|
|||
child: Padding(
|
||||
padding: const EdgeInsets.only(left: 10.0),
|
||||
child: Text(
|
||||
"server_info_box_server_version".tr(),
|
||||
"server_version".tr(),
|
||||
style: TextStyle(
|
||||
fontSize: titleFontSize,
|
||||
color: context.textTheme.labelSmall?.color,
|
||||
|
|
@ -218,7 +218,7 @@ class AppBarServerInfo extends HookConsumerWidget {
|
|||
),
|
||||
),
|
||||
Text(
|
||||
"server_info_box_latest_release".tr(),
|
||||
"latest_version".tr(),
|
||||
style: TextStyle(
|
||||
fontSize: titleFontSize,
|
||||
color: context.textTheme.labelSmall?.color,
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ class ConfirmDialog extends StatelessWidget {
|
|||
required this.onOk,
|
||||
required this.title,
|
||||
required this.content,
|
||||
this.cancel = "delete_dialog_cancel",
|
||||
this.cancel = "cancel",
|
||||
this.ok = "backup_controller_page_background_battery_info_ok",
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ class _DateTimePicker extends HookWidget {
|
|||
TextButton(
|
||||
onPressed: () => context.pop(),
|
||||
child: Text(
|
||||
"action_common_cancel",
|
||||
"cancel",
|
||||
style: context.textTheme.bodyMedium?.copyWith(
|
||||
fontWeight: FontWeight.w600,
|
||||
color: context.colorScheme.error,
|
||||
|
|
@ -162,7 +162,7 @@ class _DateTimePicker extends HookWidget {
|
|||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
const Text(
|
||||
"edit_date_time_dialog_date_time",
|
||||
"date_and_time",
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w600,
|
||||
|
|
@ -197,8 +197,8 @@ class _DateTimePicker extends HookWidget {
|
|||
Icons.arrow_drop_down,
|
||||
color: context.primaryColor,
|
||||
),
|
||||
hintText: "edit_date_time_dialog_timezone".tr(),
|
||||
label: const Text('edit_date_time_dialog_timezone').tr(),
|
||||
hintText: "timezone".tr(),
|
||||
label: const Text('timezone').tr(),
|
||||
textStyle: context.textTheme.bodyMedium,
|
||||
onSelected: (value) => tzOffset.value = value,
|
||||
initialSelection: tzOffset.value,
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ class DropdownSearchMenu<T> extends HookWidget {
|
|||
focusNode: focusNode,
|
||||
controller: textEditingController,
|
||||
decoration: inputDecoration.copyWith(
|
||||
hintText: "edit_date_time_dialog_search_timezone".tr(),
|
||||
hintText: "search_timezone".tr(),
|
||||
),
|
||||
maxLines: 1,
|
||||
style: context.textTheme.bodyMedium,
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ class _LocationPicker extends HookWidget {
|
|||
TextButton(
|
||||
onPressed: () => context.pop(),
|
||||
child: Text(
|
||||
"action_common_cancel",
|
||||
"cancel",
|
||||
style: context.textTheme.bodyMedium?.copyWith(
|
||||
fontWeight: FontWeight.w600,
|
||||
color: context.colorScheme.error,
|
||||
|
|
@ -203,7 +203,7 @@ class _ManualPicker extends HookWidget {
|
|||
const SizedBox(height: 12),
|
||||
_ManualPickerInput(
|
||||
initialValue: latlng.latitude.toStringAsFixed(4),
|
||||
decorationText: "location_picker_latitude",
|
||||
decorationText: "latitude",
|
||||
hintText: "location_picker_latitude_hint",
|
||||
errorText: "location_picker_latitude_error",
|
||||
focusNode: latitiudeFocusNode,
|
||||
|
|
@ -213,7 +213,7 @@ class _ManualPicker extends HookWidget {
|
|||
const SizedBox(height: 24),
|
||||
_ManualPickerInput(
|
||||
initialValue: latlng.longitude.toStringAsFixed(4),
|
||||
decorationText: "location_picker_longitude",
|
||||
decorationText: "longitude",
|
||||
hintText: "location_picker_longitude_hint",
|
||||
errorText: "location_picker_longitude_error",
|
||||
focusNode: longitudeFocusNode,
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ class ChangePasswordForm extends HookConsumerWidget {
|
|||
alignment: WrapAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'common_change_password'.tr(),
|
||||
'change_password'.tr(),
|
||||
style: TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
|
|
@ -110,7 +110,7 @@ class ChangePasswordForm extends HookConsumerWidget {
|
|||
TextButton.icon(
|
||||
icon: const Icon(Icons.arrow_back),
|
||||
onPressed: () => AutoRouter.of(context).back(),
|
||||
label: const Text('action_common_back').tr(),
|
||||
label: const Text('back').tr(),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
|
@ -193,7 +193,7 @@ class ChangePasswordButton extends ConsumerWidget {
|
|||
),
|
||||
onPressed: onPressed,
|
||||
child: Text(
|
||||
'common_change_password'.tr(),
|
||||
'change_password'.tr(),
|
||||
style: const TextStyle(fontSize: 14, fontWeight: FontWeight.bold),
|
||||
),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ class EmailInput extends StatelessWidget {
|
|||
autofocus: true,
|
||||
controller: controller,
|
||||
decoration: InputDecoration(
|
||||
labelText: 'login_form_label_email'.tr(),
|
||||
labelText: 'email'.tr(),
|
||||
border: const OutlineInputBorder(),
|
||||
hintText: 'login_form_email_hint'.tr(),
|
||||
hintStyle: const TextStyle(
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ class LoginButton extends ConsumerWidget {
|
|||
onPressed: onPressed,
|
||||
icon: const Icon(Icons.login_rounded),
|
||||
label: const Text(
|
||||
"login_form_button_text",
|
||||
"login",
|
||||
style: TextStyle(fontSize: 14, fontWeight: FontWeight.bold),
|
||||
).tr(),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -323,7 +323,7 @@ class LoginForm extends HookConsumerWidget {
|
|||
isLoadingServer.value ? null : getServerAuthSettings,
|
||||
icon: const Icon(Icons.arrow_forward_rounded),
|
||||
label: const Text(
|
||||
'login_form_next_button',
|
||||
'next',
|
||||
style: TextStyle(fontSize: 14, fontWeight: FontWeight.bold),
|
||||
).tr(),
|
||||
),
|
||||
|
|
@ -430,7 +430,7 @@ class LoginForm extends HookConsumerWidget {
|
|||
TextButton.icon(
|
||||
icon: const Icon(Icons.arrow_back),
|
||||
onPressed: () => serverEndpoint.value = null,
|
||||
label: const Text('login_form_back_button_text').tr(),
|
||||
label: const Text('back').tr(),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ class PasswordInput extends HookConsumerWidget {
|
|||
obscureText: !isPasswordVisible.value,
|
||||
controller: controller,
|
||||
decoration: InputDecoration(
|
||||
labelText: 'login_form_label_password'.tr(),
|
||||
labelText: 'password'.tr(),
|
||||
border: const OutlineInputBorder(),
|
||||
hintText: 'login_form_password_hint'.tr(),
|
||||
hintStyle: const TextStyle(
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ class MapTimeDropDown extends StatelessWidget {
|
|||
Padding(
|
||||
padding: const EdgeInsets.only(bottom: 20),
|
||||
child: Text(
|
||||
"map_settings_only_relative_range".tr(),
|
||||
"date_range".tr(),
|
||||
style: const TextStyle(fontWeight: FontWeight.bold),
|
||||
),
|
||||
),
|
||||
|
|
@ -35,7 +35,7 @@ class MapTimeDropDown extends StatelessWidget {
|
|||
dropdownMenuEntries: [
|
||||
DropdownMenuEntry(
|
||||
value: 0,
|
||||
label: "map_settings_date_range_option_all".tr(),
|
||||
label: "all".tr(),
|
||||
),
|
||||
DropdownMenuEntry(
|
||||
value: 1,
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ class PersonNameEditForm extends HookConsumerWidget {
|
|||
|
||||
return AlertDialog(
|
||||
title: const Text(
|
||||
"search_page_person_add_name_dialog_title",
|
||||
"add_a_name",
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
).tr(),
|
||||
content: SingleChildScrollView(
|
||||
|
|
@ -37,7 +37,7 @@ class PersonNameEditForm extends HookConsumerWidget {
|
|||
controller: controller,
|
||||
autofocus: true,
|
||||
decoration: InputDecoration(
|
||||
hintText: 'search_page_person_add_name_dialog_hint'.tr(),
|
||||
hintText: 'name'.tr(),
|
||||
border: const OutlineInputBorder(),
|
||||
errorText: isError.value ? 'Error occured' : null,
|
||||
),
|
||||
|
|
@ -49,7 +49,7 @@ class PersonNameEditForm extends HookConsumerWidget {
|
|||
PersonNameEditFormResult(false, ''),
|
||||
),
|
||||
child: Text(
|
||||
"search_page_person_add_name_dialog_cancel",
|
||||
"cancel",
|
||||
style: TextStyle(
|
||||
color: Colors.red[300],
|
||||
fontWeight: FontWeight.bold,
|
||||
|
|
@ -68,7 +68,7 @@ class PersonNameEditForm extends HookConsumerWidget {
|
|||
}
|
||||
},
|
||||
child: Text(
|
||||
"search_page_person_add_name_dialog_save",
|
||||
"save",
|
||||
style: TextStyle(
|
||||
color: context.primaryColor,
|
||||
fontWeight: FontWeight.bold,
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ class CameraPicker extends HookConsumerWidget {
|
|||
.toList(),
|
||||
_ => [],
|
||||
},
|
||||
label: const Text('search_filter_camera_make').tr(),
|
||||
label: const Text('make').tr(),
|
||||
controller: makeTextController,
|
||||
leadingIcon: const Icon(Icons.photo_camera_rounded),
|
||||
onSelected: (value) {
|
||||
|
|
@ -76,7 +76,7 @@ class CameraPicker extends HookConsumerWidget {
|
|||
.toList(),
|
||||
_ => [],
|
||||
},
|
||||
label: const Text('search_filter_camera_model').tr(),
|
||||
label: const Text('model').tr(),
|
||||
controller: modelTextController,
|
||||
leadingIcon: const Icon(Icons.camera),
|
||||
onSelected: (value) {
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ class DisplayOptionPicker extends HookWidget {
|
|||
},
|
||||
),
|
||||
CheckboxListTile(
|
||||
title: const Text('search_filter_display_option_favorite').tr(),
|
||||
title: const Text('favorite').tr(),
|
||||
value: options.value[DisplayOption.favorite],
|
||||
onChanged: (value) {
|
||||
options.value = {
|
||||
|
|
@ -53,7 +53,7 @@ class DisplayOptionPicker extends HookWidget {
|
|||
},
|
||||
),
|
||||
CheckboxListTile(
|
||||
title: const Text('search_filter_display_option_archive').tr(),
|
||||
title: const Text('archive').tr(),
|
||||
value: options.value[DisplayOption.archive],
|
||||
onChanged: (value) {
|
||||
options.value = {
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ class FilterBottomSheetScaffold extends StatelessWidget {
|
|||
onClear();
|
||||
context.pop();
|
||||
},
|
||||
child: const Text('action_common_clear').tr(),
|
||||
child: const Text('clear').tr(),
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
ElevatedButton(
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ class LocationPicker extends HookConsumerWidget {
|
|||
.toList(),
|
||||
_ => [],
|
||||
},
|
||||
label: const Text('search_filter_location_country').tr(),
|
||||
label: const Text('country').tr(),
|
||||
controller: countryTextController,
|
||||
onSelected: (value) {
|
||||
if (value.toString() == selectedCountry.value) {
|
||||
|
|
@ -95,7 +95,7 @@ class LocationPicker extends HookConsumerWidget {
|
|||
.toList(),
|
||||
_ => [],
|
||||
},
|
||||
label: const Text('search_filter_location_state').tr(),
|
||||
label: const Text('state').tr(),
|
||||
controller: stateTextController,
|
||||
onSelected: (value) {
|
||||
if (value.toString() == selectedState.value) {
|
||||
|
|
@ -126,7 +126,7 @@ class LocationPicker extends HookConsumerWidget {
|
|||
.toList(),
|
||||
_ => [],
|
||||
},
|
||||
label: const Text('search_filter_location_city').tr(),
|
||||
label: const Text('city').tr(),
|
||||
controller: cityTextController,
|
||||
onSelected: (value) {
|
||||
selectedCity.value = value.toString();
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@ class MediaTypePicker extends HookWidget {
|
|||
shrinkWrap: true,
|
||||
children: [
|
||||
RadioListTile(
|
||||
key: const Key("search_filter_media_type_all"),
|
||||
title: const Text("search_filter_media_type_all").tr(),
|
||||
key: const Key("all"),
|
||||
title: const Text("all").tr(),
|
||||
value: AssetType.other,
|
||||
onChanged: (value) {
|
||||
selectedMediaType.value = value!;
|
||||
|
|
@ -27,8 +27,8 @@ class MediaTypePicker extends HookWidget {
|
|||
groupValue: selectedMediaType.value,
|
||||
),
|
||||
RadioListTile(
|
||||
key: const Key("search_filter_media_type_image"),
|
||||
title: const Text("search_filter_media_type_image").tr(),
|
||||
key: const Key("image"),
|
||||
title: const Text("image").tr(),
|
||||
value: AssetType.image,
|
||||
onChanged: (value) {
|
||||
selectedMediaType.value = value!;
|
||||
|
|
@ -37,8 +37,8 @@ class MediaTypePicker extends HookWidget {
|
|||
groupValue: selectedMediaType.value,
|
||||
),
|
||||
RadioListTile(
|
||||
key: const Key("search_filter_media_type_video"),
|
||||
title: const Text("search_filter_media_type_video").tr(),
|
||||
key: const Key("video"),
|
||||
title: const Text("video").tr(),
|
||||
value: AssetType.video,
|
||||
onChanged: (value) {
|
||||
selectedMediaType.value = value!;
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ class PeoplePicker extends HookConsumerWidget {
|
|||
onChanged: (value) => searchQuery.value = value,
|
||||
onTapOutside: (_) => formFocus.unfocus(),
|
||||
filled: true,
|
||||
hintText: 'search_filter_people_hint'.tr(),
|
||||
hintText: 'filter_people'.tr(),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ class GroupSettings extends HookConsumerWidget {
|
|||
value: GroupAssetsBy.day,
|
||||
),
|
||||
SettingsRadioGroup(
|
||||
title: 'asset_list_layout_settings_group_by_month'.tr(),
|
||||
title: 'month'.tr(),
|
||||
value: GroupAssetsBy.month,
|
||||
),
|
||||
SettingsRadioGroup(
|
||||
|
|
|
|||
|
|
@ -21,11 +21,11 @@ class VideoViewerSettings extends HookConsumerWidget {
|
|||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SettingsSubTitle(title: "setting_video_viewer_title".tr()),
|
||||
SettingsSubTitle(title: "videos".tr()),
|
||||
SettingsSwitchListTile(
|
||||
valueNotifier: useLoopVideo,
|
||||
title: "setting_video_viewer_looping_title".tr(),
|
||||
subtitle: "setting_video_viewer_looping_subtitle".tr(),
|
||||
subtitle: "loop_videos_description".tr(),
|
||||
onChanged: (_) => ref.invalidate(appSettingsServiceProvider),
|
||||
),
|
||||
SettingsSwitchListTile(
|
||||
|
|
|
|||
|
|
@ -43,12 +43,12 @@ class NotificationSetting extends HookConsumerWidget {
|
|||
content: const Text('notification_permission_dialog_content').tr(),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: const Text('notification_permission_dialog_cancel').tr(),
|
||||
child: const Text('cancel').tr(),
|
||||
onPressed: () => ctx.pop(),
|
||||
),
|
||||
TextButton(
|
||||
onPressed: () => openAppNotificationSettings(ctx),
|
||||
child: const Text('notification_permission_dialog_settings').tr(),
|
||||
child: const Text('settings').tr(),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ class ThemeSetting extends HookConsumerWidget {
|
|||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SettingsSubTitle(title: "theme_setting_theme_title".tr()),
|
||||
SettingsSubTitle(title: "theme".tr()),
|
||||
SettingsSwitchListTile(
|
||||
valueNotifier: isSystemTheme,
|
||||
title: 'theme_setting_system_theme_switch'.tr(),
|
||||
|
|
@ -90,7 +90,7 @@ class ThemeSetting extends HookConsumerWidget {
|
|||
if (currentTheme.value != ThemeMode.system)
|
||||
SettingsSwitchListTile(
|
||||
valueNotifier: isDarkTheme,
|
||||
title: 'theme_setting_dark_mode_switch'.tr(),
|
||||
title: 'map_settings_dark_mode'.tr(),
|
||||
onChanged: onThemeChange,
|
||||
),
|
||||
const PrimaryColorSetting(),
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ class _SslClientCertSettingsState extends State<SslClientCertSettings> {
|
|||
onPressed: widget.isLoggedIn || !isCertExist
|
||||
? null
|
||||
: () => removeCert(context),
|
||||
child: Text("client_cert_remove".tr()),
|
||||
child: Text("remove".tr()),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ class SharedLinkItem extends ConsumerWidget {
|
|||
if (sharedLink.expiresAt != null) {
|
||||
if (isExpired()) {
|
||||
return Text(
|
||||
"shared_link_expired",
|
||||
"expired",
|
||||
style: TextStyle(color: Colors.red[300]),
|
||||
).tr();
|
||||
}
|
||||
|
|
@ -114,7 +114,7 @@ class SharedLinkItem extends ConsumerWidget {
|
|||
builder: (BuildContext context) {
|
||||
return ConfirmDialog(
|
||||
title: "delete_shared_link_dialog_title",
|
||||
content: "delete_shared_link_dialog_content",
|
||||
content: "confirm_delete_shared_link",
|
||||
onOk: () => ref
|
||||
.read(sharedLinksStateProvider.notifier)
|
||||
.deleteLink(sharedLink.id),
|
||||
|
|
@ -178,10 +178,8 @@ class SharedLinkItem extends ConsumerWidget {
|
|||
Widget buildBottomInfo() {
|
||||
return Row(
|
||||
children: [
|
||||
if (sharedLink.allowUpload)
|
||||
buildInfoChip("shared_link_info_chip_upload".tr()),
|
||||
if (sharedLink.allowDownload)
|
||||
buildInfoChip("shared_link_info_chip_download".tr()),
|
||||
if (sharedLink.allowUpload) buildInfoChip("upload".tr()),
|
||||
if (sharedLink.allowDownload) buildInfoChip("download".tr()),
|
||||
if (sharedLink.showMetadata)
|
||||
buildInfoChip("shared_link_info_chip_metadata".tr()),
|
||||
],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue