rynl10n_io library

RynL10n Flutter/Dart SDK — dart:io 어댑터 진입점.

코어(rynl10n.dart)는 HTTP·저장소를 주입받는 순수 Dart라 모든 타깃에서 쓰인다. 이 진입점은 그 구멍을 표준 라이브러리로 메운 기본 구현을 준다 — 모바일·데스크톱·서버용이며, Flutter Web에서는 import하지 않는다(그 경우 package:http 등으로 DeliveryFetch만 채운다).

import 'package:rynl10n/rynl10n.dart';
import 'package:rynl10n/rynl10n_io.dart';

final store = RemoteDeliveryStore(
  baseUrl: 'https://cdn.example.com',   // 배포 플레인(정적) — 관리 API 아님
  project: 'shop',
  fetch: ioDeliveryFetch(),
  cache: FileArtifactCache(cacheDir, project: 'shop'),
);
final client = RynL10nClient(bundle: bakedBundle, store: store, context: ctx);
await store.update(client);            // manifest → 릴리스 선택 → 산출물 → 스왑

Classes

FileArtifactCache
파일 시스템 ArtifactCache.

Functions

ioDeliveryFetch({Duration connectTimeout = const Duration(seconds: 10), Duration readTimeout = const Duration(seconds: 15)}) → DeliveryFetch
HttpClient 기반 DeliveryFetch. 재검증은 ETag로 직접 하므로 HTTP 캐시는 쓰지 않는다.
ioDeviceLocale() → String?
기기의 현재 언어를 BCP 47 태그로. RynL10nClient(locale: ...)에 넘겨 쓴다.
ioPushConnect({Duration connectTimeout = const Duration(seconds: 10)}) → PushConnect
HttpClient 기반 PushConnect — 실시간 푸시 신호(SSE) 연결.
ioTelemetryPost({Duration timeout = const Duration(seconds: 15)}) → TelemetryPost
HttpClient 기반 TelemetryPost — 익명 집계 업로드(9.3). 관리 플레인으로 가는 유일한 쓰기 경로이고, 실패해도 화면의 번역은 영향을 받지 않는다.
loadBakedLockfile(Directory directory) → BakedLockfile?
디렉토리에서 lockfile을 찾아 읽는다. 없으면 null.
loadBakedSnapshot(Directory directory) → Snapshot
디렉토리에서 bake 산출물을 찾아 읽는다(vendored 배치·서버/데스크톱 소비자용).
locateBakedSnapshot(Directory directory) → File?
디렉토리 안의 bake 산출물 위치. 못 찾으면 null.