@@ -9,8 +9,8 @@ mod normalize;
99mod path_glob;
1010mod stats;
1111mod sync;
12- mod translate;
1312mod transformers;
13+ mod translate;
1414mod validation;
1515mod view;
1616
@@ -259,9 +259,9 @@ enum Commands {
259259
260260 /// Translate source entries into a target language using Mentra-backed providers.
261261 Translate {
262- /// Source localization file
262+ /// Source localization file. Required unless configured in `langcodec.toml`.
263263 #[ arg( short = 's' , long) ]
264- source : String ,
264+ source : Option < String > ,
265265
266266 /// Optional target localization file. If omitted, translates in-place within multi-language files.
267267 #[ arg( short = 't' , long) ]
@@ -275,9 +275,9 @@ enum Commands {
275275 #[ arg( long) ]
276276 source_lang : Option < String > ,
277277
278- /// Target language code.
279- #[ arg( long) ]
280- target_lang : Option < String > ,
278+ /// Target language code(s). Comma-separated values are supported for multi-language outputs .
279+ #[ arg( long, value_name = "LANG" , value_delimiter = ',' ) ]
280+ target_lang : Vec < String > ,
281281
282282 /// Filter target entries by status before translating (default: new,stale)
283283 #[ arg( long) ]
@@ -710,7 +710,10 @@ fn main() {
710710 config,
711711 dry_run,
712712 } => {
713- let mut context = ValidationContext :: new ( ) . with_input_file ( source. clone ( ) ) ;
713+ let mut context = ValidationContext :: new ( ) ;
714+ if let Some ( source_path) = & source {
715+ context = context. with_input_file ( source_path. clone ( ) ) ;
716+ }
714717 if let Some ( target_path) = & target
715718 && std:: path:: Path :: new ( target_path) . exists ( )
716719 {
@@ -728,19 +731,19 @@ fn main() {
728731 eprintln ! ( "❌ Validation failed: {}" , e) ;
729732 std:: process:: exit ( 1 ) ;
730733 }
731- if let Some ( lang_code) = & target_lang
732- && let Err ( e) = validate_language_code ( lang_code)
733- {
734- eprintln ! ( "❌ Validation failed: {}" , e ) ;
735- std :: process :: exit ( 1 ) ;
734+ for lang_code in & target_lang {
735+ if let Err ( e) = validate_language_code ( lang_code) {
736+ eprintln ! ( "❌ Validation failed: {}" , e ) ;
737+ std :: process :: exit ( 1 ) ;
738+ }
736739 }
737740
738741 if let Err ( e) = run_translate_command ( TranslateOptions {
739742 source,
740743 target,
741744 output,
742745 source_lang,
743- target_lang,
746+ target_langs : target_lang,
744747 status,
745748 provider,
746749 model,
0 commit comments