mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	* Add i18n framework to mobile app and write simple translation generator * Replace all texts in login_form with i18n keys * Localization of sharing section * Localization of asset viewer section * Use JSON as base translation format * Add check for missing/unused translation keys * Add localizely * Remove i18n directory in favour of localizely * Backup Translation * More translations * Translate home page * Translation of search page * Translate new server version announcement * Reformat code * Fix typo in german translation * Update englisch translations * Change translation keys to match dart filenames * Add /api to translated endpoint_urls * Update localizely.yml * Add languages to ios plist * Remove unused keys * Added script to check outdated key in other translations * Add download key to localizely.yml Co-authored-by: Alex <alex.tran1502@gmail.com>
		
			
				
	
	
		
			63 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'package:auto_route/auto_route.dart';
 | 
						|
import 'package:easy_localization/easy_localization.dart';
 | 
						|
import 'package:flutter/material.dart';
 | 
						|
import 'package:hooks_riverpod/hooks_riverpod.dart';
 | 
						|
import 'package:immich_mobile/modules/home/providers/home_page_state.provider.dart';
 | 
						|
import 'package:immich_mobile/routing/router.dart';
 | 
						|
 | 
						|
class TabControllerPage extends ConsumerWidget {
 | 
						|
  const TabControllerPage({Key? key}) : super(key: key);
 | 
						|
 | 
						|
  @override
 | 
						|
  Widget build(BuildContext context, WidgetRef ref) {
 | 
						|
    var isMultiSelectEnable =
 | 
						|
        ref.watch(homePageStateProvider).isMultiSelectEnable;
 | 
						|
 | 
						|
    return AutoTabsRouter(
 | 
						|
      routes: [
 | 
						|
        const HomeRoute(),
 | 
						|
        SearchRoute(),
 | 
						|
        const SharingRoute(),
 | 
						|
      ],
 | 
						|
      builder: (context, child, animation) {
 | 
						|
        final tabsRouter = AutoTabsRouter.of(context);
 | 
						|
        return WillPopScope(
 | 
						|
          onWillPop: () async {
 | 
						|
            tabsRouter.setActiveIndex(0);
 | 
						|
            return false;
 | 
						|
          },
 | 
						|
          child: Scaffold(
 | 
						|
            body: FadeTransition(
 | 
						|
              opacity: animation,
 | 
						|
              child: child,
 | 
						|
            ),
 | 
						|
            bottomNavigationBar: isMultiSelectEnable
 | 
						|
                ? null
 | 
						|
                : BottomNavigationBar(
 | 
						|
                    selectedLabelStyle: const TextStyle(
 | 
						|
                        fontSize: 15, fontWeight: FontWeight.w600),
 | 
						|
                    unselectedLabelStyle: const TextStyle(
 | 
						|
                        fontSize: 15, fontWeight: FontWeight.w600),
 | 
						|
                    currentIndex: tabsRouter.activeIndex,
 | 
						|
                    onTap: (index) {
 | 
						|
                      tabsRouter.setActiveIndex(index);
 | 
						|
                    },
 | 
						|
                    items: [
 | 
						|
                      BottomNavigationBarItem(
 | 
						|
                          label: 'tab_controller_nav_photos'.tr(),
 | 
						|
                          icon: const Icon(Icons.photo)),
 | 
						|
                      BottomNavigationBarItem(
 | 
						|
                          label: 'tab_controller_nav_search'.tr(),
 | 
						|
                          icon: const Icon(Icons.search)),
 | 
						|
                      BottomNavigationBarItem(
 | 
						|
                          label: 'tab_controller_nav_sharing'.tr(),
 | 
						|
                          icon: const Icon(Icons.group_outlined)),
 | 
						|
                    ],
 | 
						|
                  ),
 | 
						|
          ),
 | 
						|
        );
 | 
						|
      },
 | 
						|
    );
 | 
						|
  }
 | 
						|
}
 |