/// Mark a string for translation.
/// Currently a passthrough; will use gettext when locale support is wired up.
pub fn i18n(msgid: &str) -> String {
    msgid.to_string()
}

/// Translate a string with singular/plural forms.
pub fn ni18n(singular: &str, plural: &str, n: u32) -> String {
    if n == 1 {
        singular.to_string()
    } else {
        plural.to_string()
    }
}

/// Translate a string and replace named placeholders.
pub fn i18n_f(msgid: &str, args: &[(&str, &str)]) -> String {
    let mut result = msgid.to_string();
    for (key, value) in args {
        result = result.replace(key, value);
    }
    result
}

/// Translate a string with singular/plural forms and named placeholders.
pub fn ni18n_f(singular: &str, plural: &str, n: u32, args: &[(&str, &str)]) -> String {
    let base = if n == 1 { singular } else { plural };
    let mut result = base.to_string();
    for (key, value) in args {
        result = result.replace(key, value);
    }
    result
}
