quvyta-cli 0.1.0-alpha.4

A small coding agent in the terminal: chat with a model that reads, searches, edits and runs in one folder, and asks before it changes anything (alpha)
Documentation
//! Every language file carries all of the English text, in the same shape, and in its own words.
//!
//! A key missing from a translation would show English in the middle of another language, a
//! placeholder dropped or misspelt would print `{name}` literally, and a plural form a language's
//! rule chooses but its file lacks would fall back to another form. Having every key is not being
//! translated, though: a file whose values are all English passes those checks, so a second test
//! asks that most values differ from English. Both read the files with the framework's own parser
//! and plural rules, the ones the screen is drawn with.

use qframe::i18n::check;

use crate::locales;

#[test]
fn every_language_has_every_key_with_its_placeholders() {
    assert_eq!(locales().len(), 9, "the ecosystem's nine languages");
    assert_eq!(locales()[0].0, "en.toml", "English is the reference");
    let problems = check::locales(locales());
    assert!(problems.is_empty(), "{}", problems.iter().map(ToString::to_string).collect::<Vec<_>>().join("\n"));
}

/// Names are the same in every language (the program's, the header's), so a share and not every
/// value has to differ.
#[test]
fn every_language_says_things_in_its_own_words() {
    let problems = check::own_words(locales(), 0.9);
    assert!(problems.is_empty(), "{}", problems.iter().map(ToString::to_string).collect::<Vec<_>>().join("\n"));
}