use eztrans_rs::EzTransEngine;
use std::io::{self, Write};
use std::path::PathBuf;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let base_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("eztrans_dll");
let dll_path = base_path.join("J2KEngine.dll");
let dat_path = base_path.join("Dat");
println!("=== EzTrans 대화형 번역기 ===\n");
println!("EzTrans 엔진 로드 중: {}", dll_path.display());
let engine = EzTransEngine::new(&dll_path)?;
println!("엔진 로드 완료!");
if engine.initialize_ex.is_some() {
println!("EHND 모드로 초기화 중...");
println!("Dat 경로: {}", dat_path.display());
engine.initialize_ex("CSUSER123455", dat_path.to_str().unwrap())?;
} else {
println!("기본 모드로 초기화 중...");
engine.initialize()?;
}
println!("초기화 완료!\n");
println!("사용법:");
println!(" - 번역할 일본어 텍스트를 입력하세요");
println!(" - 'quit' 또는 'exit'를 입력하면 종료합니다");
println!(" - 빈 줄을 입력하면 건너뜁니다\n");
loop {
print!("번역할 텍스트 > ");
io::stdout().flush()?;
let mut input = String::new();
io::stdin().read_line(&mut input)?;
let input = input.trim();
if input.eq_ignore_ascii_case("quit") || input.eq_ignore_ascii_case("exit") {
println!("\n프로그램을 종료합니다.");
break;
}
if input.is_empty() {
continue;
}
match engine.default_translate(input) {
Ok(translated) => {
println!("원문: {}", input);
println!("번역: {}\n", translated);
}
Err(e) => {
eprintln!("번역 오류: {}\n", e);
}
}
}
Ok(())
}