(+) Application Layer - l10n

๊ธฐ์กด์— ์‚ฌ์šฉํ–ˆ๋˜ ํŒจํ‚ค์ง€์—์„œ ์ด๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์—ˆ๋‹ค. ๋” ๋งŽ์ด ์“ฐ์ด๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๊ณ  ์‚ฌ์šฉ์ด ๋” ํŽธ๋ฆฌํ•˜๋‹ค.

usage

๊ฑฐ์˜ ๊ณต์‹ ๋„ํ๋จผํŠธ์— ์ •๋ฆฌ๋˜์–ด ์žˆ๋Š” ๋‚ด์šฉ๊ณผ ๋˜‘๊ฐ™์•„์„œ ๋ณ„๋‹ฌ๋ฆฌ ์ •๋ฆฌํ• ๊ฒŒ ์—†๊ธด ํ•˜๋‹ค. ๋„ํ๋จผํŠธ์—์„œ ์ง€์‹œํ•˜๋Š”๋Œ€๋กœ ๋˜‘๊ฐ™์ด ํ•˜๋ฉด ๋˜๊ธด ํ•˜๋Š”๋ฐ ์ฃผ์˜ํ•  ์ ์€ EasyLocalization ์œ„์ ฏ์€ MaterialApp ๊ณผ ๋™์ผ ๊ณ„์ธต(์•„๋ž˜ ์ฝ”๋“œ์—์„œ ๋ณด๋ฉด Application ๋‚ด) ์— ์„ค์ •ํ•˜๋‹ˆ๊นŒ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค.

๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์ด runApp ๋‚ด์— ์œ„์น˜์‹œ์ผฐ๋‹ค. ๋„ํ๋จผํŠธ์— ๋‚˜์˜จ๋Œ€๋กœ await EasyLocalization.ensureInitialized(); ์ฒ˜๋ฆฌ๋Š” ๋ฐ˜๋“œ์‹œ ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

void run() async {
  WidgetsFlutterBinding.ensureInitialized();
  await EasyLocalization.ensureInitialized();
  await Injector.prepareDependencies();
  runApp(
    EasyLocalization(
      supportedLocales: const [
        LocaleManager.koLocale,
        LocaleManager.enLocale,
      ],
      path: 'assets/translations',
      fallbackLocale: LocaleManager.koLocale,
      child: Application(),
    ),
  );
}

LocalManager ๋ผ๊ณ  ํ•ด๋‘” ๊ฒƒ์€ ๋ณ„ ๊ฒƒ์ด ์—†๋‹ค. ์•„๋ž˜์™€ ๊ฐ™๋‹ค. Locale ์ƒ์„ฑ์‹œ ๋„ฃ์€ ์–ธ์–ด์— ๋Œ€ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’๊ณผ ํŒŒ์ผ๋ช….json ์—์„œ ํŒŒ์ผ๋ช…์ด ์ผ์น˜ํ•ด์•ผํ•œ๋‹ค.

class LocaleManager {
  static const Locale enLocale = Locale('en');
  static const Locale koLocale = Locale('ko');
}

๊ทธ ์™ธ์— ์•„๋ž˜์™€ ๊ฐ™์ด json ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•˜๊ณ , ํŒŒ์ผ ๋‚ด์— ์•„๋ฌด๊ฒƒ๋„ ์—†์œผ๋ฉด launch ์‹œ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค. ํŒŒ์ผ์ด ์—†๊ฑฐ๋‚˜ ํŒŒ์ผ ๋‚ด์šฉ์ด empty ๋ผ๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ๋œฌ๋‹ค. ๋‹น์žฅ ๋ญ”๊ฐ€ ์“ธ ์ผ์ด ์—†์–ด๋„ ๋‚ด์šฉ์„ ์ฑ„์›Œ๋‘ฌ์•ผํ•œ๋‹ค.

๋‹ค์–‘ํ•œ ์‚ฌ์šฉ๋ฒ•์€ ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์ž. ๋”ฐ๋กœ ์—ฐ์Šตํ•œ ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๋Š” ์—ฌ๊ธฐ์— ์žˆ๋‹ค.

Last updated