라오스-한국어 번역 앱을 만들었습니다.
저는 라오스인 아내가 있는 다문화가정의 가장입니다.
아직 한국어가 서툰 아내를 위해서, 한국에서 살아가는데에 약간의 자신감을 더해주고자 이 앱을 만들게 되었습니다.
안드로이드/아이폰 두가지를 한큐에 끝내고자 Flutter를 이용하여 개발하였고, 우선 Android 는 개발자 등록 후 앱 등록까지 어려울 것 같지 않으나, iPhone 쪽은 개발자 등록비가 너무 비싸서 아직 고민중입니다.
현재 기본적인 기능 및 편의기능을 추가하여 출시할 준비는 되었으나, 처음 해보는 앱 출품이니 만큼 신중하게 하나하나 검토중에 있습니다.
아래는 제 개인 비공개 Repository에서 관리하고 있는 README.md 내용을 그대로 옮긴 전문입니다.
Huab Translator 가 무사히 Play Store 에 등록될 수 있도록 모두 응원 부탁드립니다.
Huab Translator
Version: V0.1-20251025
라오어 ↔ 한국어 번역을 위한 Flutter 애플리케이션입니다. Google Translate와 OpenAI를 활용하여 메신저 형태의 직관적인 대화 UI를 제공하며, 사용자 지정 가능한 테마와 번역 환경 설정을 포함합니다.
주요 기능
번역 기능
- 3가지 번역 모드:
- Google 번역: 무료로 제공되는 Google Translate API 사용
- GPT 번역: OpenAI GPT 모델을 활용한 고품질 번역 (API 키 필요)
- 자유 대화: GPT 모델과의 자유로운 대화 (API 키 필요)
- 역번역 기능: 번역 결과를 다시 원문으로 번역하여 정확도 확인
- 메신저 스타일 UI: 대화 버블 형태로 번역 결과를 표시
- 터치 액션:
- 짧게 터치: 내용 복사
- 길게 터치: 복사/공유/삭제 메뉴 표시
- 핀치 줌: 두 손가락으로 채팅창 폰트 크기 조절 (0.7x ~ 1.5x)
번역 히스토리
- 최근 50개의 번역 기록 자동 로드
- 상단에서 당겨서 더 오래된 기록 추가 로드 (Pull to Refresh)
- 각 메시지에 타임스탬프 표시
- 날짜별 헤더로 구분된 대화 흐름
- SQLite 데이터베이스에 영구 저장
외부 서비스 설정
- Google API:
- 월간 사용량 게이지 표시
- 사용 한도 및 비용 정보 제공
- OpenAI API:
- API 키 검증 및 암호화 저장
- 모델 선택 (GPT-4o, GPT-4o mini, o1-preview, o1-mini)
- Reasoning 옵션 설정 (o1 시리즈 전용)
- 커스텀 시스템 프롬프트 설정
- 히스토리 컨텍스트 공유 (최근 번역 N개 포함)
- 월간 사용 리포트:
- Google/OpenAI 사용량 통계
- 모델별 사용 횟수 및 예상 비용
- 날짜별 사용 내역
외관 설정
- 다크 모드: 라이트/다크 테마 전환
- 기본 폰트 크기: 5단계 조절 (매우 작게 ~ 매우 크게)
- 강조 색상: 16가지 파스텔톤 컬러 팔레트
- 배경 이미지:
- 5가지 기본 제공 배경 프리셋
- 갤러리에서 직접 업로드
- 밝기 조절 슬라이더 (0.0 ~ 2.0)
- 업로드 이미지 탭하여 복원 기능
기능 설정
- 기본 언어: 한국어/라오어/영어 (UI 언어 변경)
- 역번역 활성화: 번역 결과 하단에 역번역 자동 표시
- 자동 복사: 번역 결과를 클립보드에 자동 복사
- 핀치 줌 활성화/비활성화: 채팅창 폰트 크기 제스처 조절
데이터 관리
- 데이터 내보내기:
- JSON 형식으로 파일 저장
- 파일명:
huab_translator.YYYY.MM.DD.bak - 다운로드 폴더에 자동 저장
- 데이터 복원:
- 백업 파일 선택하여 복원
- 메시지 개수 및 백업 날짜 정보 표시
- 번역 히스토리 삭제: 모든 대화 기록 삭제
- 월간 사용 기록 삭제: 사용량 통계 초기화
- 모든 설정 초기화: 앱을 초기 상태로 리셋
About & 법률
- 개인정보 처리방침: 웹 링크로 연결
- 이용약관: 웹 링크로 연결
- 개발자 문의: 이메일 링크
- 앱 소개: 확장/축소 가능한 앱 설명
프로젝트 구조
lib/
├── constants/ # 배경 프리셋, 색상 팔레트 등 상수
├── data/ # SQLite (암호화) 래퍼 및 리포지토리
│ ├── app_database.dart
│ ├── history_repository.dart
│ └── settings_repository.dart
├── l10n/ # 다국어 지원 (한국어, 라오어, 영어)
│ └── app_strings.dart
├── models/ # 데이터 모델
│ ├── app_settings.dart
│ └── chat_message.dart
├── providers/ # ChangeNotifier 기반 상태 관리
│ ├── chat_provider.dart
│ └── settings_provider.dart
├── screens/ # 화면 UI
│ ├── chat_screen.dart
│ └── settings_screen.dart
├── services/ # 외부 API 연동
│ └── openai_service.dart
├── utils/ # 유틸리티
│ └── encryption_helper.dart
└── widgets/ # 재사용 가능한 위젯
└── chat_message_bubble.dart
기술 스택
상태 관리
provider(v6.1.2) – ChangeNotifier 기반 상태 관리
데이터 저장
sqflite_sqlcipher(v3.1.1) – 암호화된 SQLite 데이터베이스flutter_secure_storage(v9.2.2) – 민감 정보 보안 저장crypto(v3.0.3) – 암호화 유틸리티
네트워크
http(v1.2.1) – OpenAI API, Google Translate API 호출
UI/UX
image_picker(v1.1.1) – 배경 이미지 선택share_plus(v12.0.1) – 텍스트 공유 기능url_launcher(v6.3.0) – 외부 링크 열기
파일 시스템
path_provider(v2.1.3) – 앱 데이터 디렉터리 접근file_picker(v8.1.4) – 백업 파일 선택permission_handler(v11.3.1) – 파일 접근 권한 관리
실행 방법
-
Flutter 환경 확인
flutter doctor -
의존성 설치
flutter pub get -
애플리케이션 실행
flutter run -
플랫폼별 빌드
# Android APK flutter build apk --release # iOS (Mac에서만) flutter build ios --release # macOS flutter build macos --release # Windows flutter build windows --release
초기 설정
1. Google Translate (무료)
- API 키 불필요
- 앱 설치 후 바로 사용 가능
- 월 50만 자까지 무료 (추정)
2. OpenAI API (선택)
- 설정 화면(⚙️) → 외부 서비스 → OpenAI 섹션
- OpenAI API 키 발급
- API 키 입력 및 검증
- 원하는 모델 선택 (GPT-4o 권장)
- 선택적으로 시스템 프롬프트 커스터마이징
3. 개인화 설정
- 외관: 다크 모드, 폰트 크기, 강조 색상, 배경 이미지
- 기능: 기본 언어, 역번역, 자동 복사, 핀치 줌
- 히스토리: 컨텍스트 공유 활성화 및 개수 설정
번역 흐름
Google 번역 모드
- 사용자 메시지 입력
- Google Translate API로 번역 요청
- 번역 결과를 챗봇 버블로 표시
- (선택) 역번역 자동 표시
GPT 번역 모드
- 사용자 메시지 입력
- 시스템 프롬프트 + 번역 지시문 생성
- (선택) 최근 히스토리 N개 포함
- OpenAI Chat Completions API 호출
- 번역 결과를 챗봇 버블로 표시
- (선택) 역번역 자동 표시
- 사용량 통계 업데이트
자유 대화 모드
- 사용자 메시지 입력 (번역 요청 없이 자유 대화)
- 커스텀 시스템 프롬프트 적용
- OpenAI Chat Completions API 호출
- 응답을 챗봇 버블로 표시
- 사용량 통계 업데이트
데이터 보안
암호화
- 데이터베이스: SQLCipher를 사용한 전체 DB 암호화
- API 키: Flutter Secure Storage로 안전하게 저장
- 백업 파일: 민감 정보는 제외하고 번역 히스토리만 포함
개인정보 보호
- 모든 데이터는 로컬 기기에만 저장
- 서드파티 서버로 데이터 전송 없음 (OpenAI/Google API 제외)
- 백업 파일은 사용자가 직접 관리
플랫폼별 참고사항
Android
- 최소 SDK: API 21 (Android 5.0)
- 파일 접근 권한:
AndroidManifest.xml에 자동 설정됨 - APK 크기: 약 40-50MB
iOS
- 최소 버전: iOS 12.0
- 사진 라이브러리 접근:
Info.plist에 설명 추가됨 - 파일 접근: Document Browser 지원
macOS
- 최소 버전: macOS 10.14
- 샌드박스 권한 설정 필요
Windows
- 최소 버전: Windows 10
- Visual C++ Redistributable 필요
문제 해결
API 키가 작동하지 않을 때
- OpenAI 플랫폼에서 키가 활성화되어 있는지 확인
- 크레딧 잔액이 있는지 확인
- 앱에서 "검증" 버튼으로 키 유효성 재확인
번역이 느릴 때
- GPT-4o mini 모델 사용 (더 빠르고 저렴)
- 히스토리 컨텍스트 개수 줄이기
- 네트워크 연결 상태 확인
배경 이미지가 표시되지 않을 때
- 이미지 파일이 삭제되지 않았는지 확인
- 다른 배경 프리셋 선택 후 다시 업로드
- 앱 재시작
데이터 복원이 안 될 때
- 백업 파일이 손상되지 않았는지 확인
- 백업 파일 형식이
.bak인지 확인 - 파일 접근 권한 확인
향후 계획
- [ ] 음성 입력/출력 지원
- [ ] 오프라인 번역 모드
- [ ] 대화 그룹/폴더 관리
- [ ] 번역 즐겨찾기 기능
- [ ] 사용자 정의 단어장
- [ ] 클라우드 동기화 (선택적)
라이선스
MIT License
개발자
개발자: Wody
이메일: uki0327@gmail.com
웹사이트: https://huab-translator.wody.kr
나의 작은 아내, 후아를 위한 번역기
라오스와 한국 사이의 대화를 이어주는 다리 ❤️