The hello CLI now takes --lang <code> with en (the default), es and fr. cargo test passes, and cargo run -- --lang es Ana prints ¡Hola, Ana!. cargo run -- --lang fr Luc prints Bonjour, Luc !.
In src/lib.rs I added a Lang enum with a Lang::parse helper, plus an Options::lang field that defaults to English. parse_args handles --lang the way it handles --times, and its doc comment is updated. A missing value returns --lang requires a value. An unknown value returns --lang value must be one of en, es, fr, got "de".
greeting_in(name, lang) is new and greeting(name) now calls it with English, so existing callers are unchanged. Trimming and the world fallback for blank names apply in every language, and shout is untouched. src/main.rs builds the message with the selected language.
I added unit tests in src/lib.rs and integration tests in tests/cli.rs. They cover es, fr, default en, an unknown language (exit code 2, stderr names en, es, fr) and a missing value. I did not edit README.md or CHANGELOG.md.
Open PRs #7 and #8 (issue #2, Spanish and French greetings) change the same parts of src/lib.rs and src/main.rs, so whichever lands second will probably conflict. I commented on both to say so. I did not try merging against them.