라오스-한국어 번역 앱을 만들었습니다.

라오스-한국어 번역 앱을 만들었습니다.

저는 라오스인 아내가 있는 다문화가정의 가장입니다.

아직 한국어가 서툰 아내를 위해서, 한국에서 살아가는데에 약간의 자신감을 더해주고자 이 앱을 만들게 되었습니다.

안드로이드/아이폰 두가지를 한큐에 끝내고자 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) – 파일 접근 권한 관리

실행 방법

  1. Flutter 환경 확인

    flutter doctor
    
  2. 의존성 설치

    flutter pub get
    
  3. 애플리케이션 실행

    flutter run
    
  4. 플랫폼별 빌드

    # 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 (선택)

  1. 설정 화면(⚙️) → 외부 서비스 → OpenAI 섹션
  2. OpenAI API 키 발급
  3. API 키 입력 및 검증
  4. 원하는 모델 선택 (GPT-4o 권장)
  5. 선택적으로 시스템 프롬프트 커스터마이징

3. 개인화 설정

  • 외관: 다크 모드, 폰트 크기, 강조 색상, 배경 이미지
  • 기능: 기본 언어, 역번역, 자동 복사, 핀치 줌
  • 히스토리: 컨텍스트 공유 활성화 및 개수 설정

번역 흐름

Google 번역 모드

  1. 사용자 메시지 입력
  2. Google Translate API로 번역 요청
  3. 번역 결과를 챗봇 버블로 표시
  4. (선택) 역번역 자동 표시

GPT 번역 모드

  1. 사용자 메시지 입력
  2. 시스템 프롬프트 + 번역 지시문 생성
  3. (선택) 최근 히스토리 N개 포함
  4. OpenAI Chat Completions API 호출
  5. 번역 결과를 챗봇 버블로 표시
  6. (선택) 역번역 자동 표시
  7. 사용량 통계 업데이트

자유 대화 모드

  1. 사용자 메시지 입력 (번역 요청 없이 자유 대화)
  2. 커스텀 시스템 프롬프트 적용
  3. OpenAI Chat Completions API 호출
  4. 응답을 챗봇 버블로 표시
  5. 사용량 통계 업데이트

데이터 보안

암호화

  • 데이터베이스: 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 키가 작동하지 않을 때

  1. OpenAI 플랫폼에서 키가 활성화되어 있는지 확인
  2. 크레딧 잔액이 있는지 확인
  3. 앱에서 "검증" 버튼으로 키 유효성 재확인

번역이 느릴 때

  • GPT-4o mini 모델 사용 (더 빠르고 저렴)
  • 히스토리 컨텍스트 개수 줄이기
  • 네트워크 연결 상태 확인

배경 이미지가 표시되지 않을 때

  • 이미지 파일이 삭제되지 않았는지 확인
  • 다른 배경 프리셋 선택 후 다시 업로드
  • 앱 재시작

데이터 복원이 안 될 때

  • 백업 파일이 손상되지 않았는지 확인
  • 백업 파일 형식이 .bak인지 확인
  • 파일 접근 권한 확인

향후 계획

  • [ ] 음성 입력/출력 지원
  • [ ] 오프라인 번역 모드
  • [ ] 대화 그룹/폴더 관리
  • [ ] 번역 즐겨찾기 기능
  • [ ] 사용자 정의 단어장
  • [ ] 클라우드 동기화 (선택적)

라이선스

MIT License

개발자

개발자: Wody
이메일: uki0327@gmail.com
웹사이트: https://huab-translator.wody.kr


나의 작은 아내, 후아를 위한 번역기
라오스와 한국 사이의 대화를 이어주는 다리 ❤️