l10n: move wutil/gettext to localization module

Localization deserves its own module. As a first step, this module is
created here. This will be followed up by significant refactoring in
preparation for supporting Fluent alongside gettext.

`localization/mod.rs` is used instead of `localization.rs` because it is
planned to split this module into submodules.

Part of #12190
This commit is contained in:
Daniel Rainer
2025-12-19 02:32:30 +01:00
committed by Johannes Altmanninger
parent 26873d4ad2
commit dcd07d754d
17 changed files with 32 additions and 29 deletions

View File

@@ -385,7 +385,7 @@ fn throwing_main() -> i32 {
set_libc_locales(/*log_ok=*/ false)
};
fish::wutil::gettext::initialize_gettext();
fish::localization::initialize_gettext();
// Enable debug categories set in FISH_DEBUG.
// This is in *addition* to the ones given via --debug.

View File

@@ -4,7 +4,7 @@
use crate::io::IoStreams;
use crate::parser::Parser;
use crate::proc::{Job, add_disowned_job};
use crate::{builtins::shared::HelpOnlyCmdOpts, wutil::wgettext_fmt};
use crate::{builtins::shared::HelpOnlyCmdOpts, localization::wgettext_fmt};
use fish_wchar::wstr;
use libc::SIGCONT;

View File

@@ -894,7 +894,7 @@ fn throwing_main() -> i32 {
unsafe {
set_libc_locales(/*log_ok=*/ false)
};
crate::wutil::gettext::initialize_gettext();
crate::localization::initialize_gettext();
env_init(None, true, false);
// Only set these here so you can't set them via the builtin.

View File

@@ -279,7 +279,7 @@ fn throwing_main() -> i32 {
set_interactive_session(true);
topic_monitor_init();
threads::init();
crate::wutil::gettext::initialize_gettext();
crate::localization::initialize_gettext();
env_init(None, true, false);
reader_init(false);
if let Some(features_var) = EnvStack::globals().get(L!("fish_features")) {

View File

@@ -7,7 +7,8 @@
pub fn gettext(_parser: &Parser, streams: &mut IoStreams, argv: &mut [&wstr]) -> BuiltinResult {
for arg in &argv[1..] {
streams.out.append(
crate::wutil::LocalizableString::from_external_source((*arg).to_owned()).localize(),
crate::localization::LocalizableString::from_external_source((*arg).to_owned())
.localize(),
);
}
Ok(SUCCESS)

View File

@@ -4,11 +4,11 @@
use crate::common::{EscapeFlags, EscapeStringStyle, escape_string, timef};
use crate::io::IoStreams;
use crate::job_group::{JobId, MaybeJobId};
use crate::localization::{wgettext, wgettext_fmt};
use crate::parser::Parser;
use crate::proc::{Job, clock_ticks_to_seconds, have_proc_stat, proc_get_jiffies};
use crate::wgetopt::{ArgType, WGetopter, WOption, wopt};
use crate::wutil::wgettext;
use crate::wutil::{fish_wcstoi, wgettext_fmt};
use crate::wutil::fish_wcstoi;
use fish_wchar::{L, WExt, WString, wstr};
use std::num::NonZeroU32;

View File

@@ -496,12 +496,12 @@ pub fn status(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr]) -> B
return Err(STATUS_CMD_ERROR);
} else {
if args.is_empty() {
streams.out.append(crate::wutil::gettext::status_language());
streams.out.append(crate::localization::status_language());
return Ok(SUCCESS);
}
match args[0].to_string().as_str() {
"list-available" => {
streams.out.append(crate::wutil::gettext::list_available_languages());
streams.out.append(crate::localization::list_available_languages());
return Ok(SUCCESS);
},
"set" => {
@@ -509,7 +509,7 @@ pub fn status(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr]) -> B
.iter()
.map(|lang| lang.to_string())
.collect::<Vec<_>>();
let lints = crate::wutil::gettext::update_from_status_language_builtin(&langs);
let lints = crate::localization::update_from_status_language_builtin(&langs);
let formatted_lints = lints.display_all();
if !formatted_lints.is_empty() {
streams.err.append(&formatted_lints);
@@ -517,7 +517,7 @@ pub fn status(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr]) -> B
return Ok(SUCCESS);
}
"unset" => {
crate::wutil::gettext::unset_from_status_language_builtin(parser.vars());
crate::localization::unset_from_status_language_builtin(parser.vars());
return Ok(SUCCESS);
}
invalid => {

View File

@@ -222,7 +222,11 @@ fn from(_: crate::wutil::wcstoi::Error) -> Self {
macro_rules! invalid_args {
($msg:expr, $name:expr, $arg:expr) => {
StringError::InvalidArgs(crate::wutil::wgettext_fmt!($msg, $name, $arg.unwrap()))
StringError::InvalidArgs(crate::localization::wgettext_fmt!(
$msg,
$name,
$arg.unwrap()
))
};
}
use invalid_args;

View File

@@ -48,10 +48,10 @@
ast::unescape_keyword,
autoload::AutoloadResult,
common::charptr2wcstring,
localization::{LocalizableString, localizable_string},
reader::{get_quote, is_backslashed},
util::wcsfilecmp,
wcstringutil::{string_suffixes_string_case_insensitive, strip_executable_suffix},
wutil::{LocalizableString, localizable_string},
};
use bitflags::bitflags;
use fish_wchar::WExt;

View File

@@ -13,6 +13,7 @@
use crate::flog::flog;
use crate::global_safety::RelaxedAtomicBool;
use crate::input::{FISH_BIND_MODE_VAR, init_input};
use crate::localization::wgettext;
use crate::nix::{geteuid, getpid};
use crate::null_terminated_array::OwningNullTerminatedArray;
use crate::path::{
@@ -24,7 +25,7 @@
use crate::termsize;
use crate::universal_notifier::default_notifier;
use crate::wcstringutil::join_strings;
use crate::wutil::{fish_wcstol, wgetcwd, wgettext};
use crate::wutil::{fish_wcstol, wgetcwd};
use libc::{c_int, uid_t};
use once_cell::sync::{Lazy, OnceCell};

View File

@@ -537,7 +537,7 @@ fn init_locale(vars: &EnvStack) {
invalidate_numeric_locale();
#[cfg(feature = "localize-messages")]
crate::wutil::gettext::update_from_env(vars);
crate::localization::update_from_env(vars);
}
pub fn use_posix_spawn() -> bool {

View File

@@ -52,6 +52,7 @@
fs::fsync,
history::file::{HistoryFile, RawHistoryFile, append_history_item_to_buffer},
io::IoStreams,
localization::wgettext_fmt,
operation_context::{EXPANSION_LIMIT_BACKGROUND, OperationContext},
parse_constants::{ParseTreeFlags, StatementDecoration},
parse_util::{parse_util_detect_errors, parse_util_unescape_wildcards},
@@ -61,7 +62,7 @@
util::find_subslice,
wcstringutil::subsequence_in_string,
wildcard::{ANY_STRING, wildcard_match},
wutil::{FileId, INVALID_FILE_ID, file_id_for_file, wgettext_fmt, wrealpath, wstat, wunlink},
wutil::{FileId, INVALID_FILE_ID, file_id_for_file, wrealpath, wstat, wunlink},
};
#[derive(Clone, Copy, Debug, PartialEq, Eq)]

View File

@@ -40,6 +40,7 @@
pub mod key;
pub mod kill;
pub mod locale;
pub mod localization;
pub mod nix;
pub mod null_terminated_array;
pub mod operation_context;

View File

@@ -307,7 +307,7 @@ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
#[cfg(feature = "gettext-extract")]
macro_rules! localizable_string {
($string:literal) => {
$crate::wutil::gettext::LocalizableString::Static(widestring::utf32str!(
$crate::localization::LocalizableString::Static(widestring::utf32str!(
fish_gettext_extraction::gettext_extract!($string)
))
};
@@ -316,7 +316,7 @@ macro_rules! localizable_string {
#[cfg(not(feature = "gettext-extract"))]
macro_rules! localizable_string {
($string:literal) => {
$crate::wutil::gettext::LocalizableString::Static(widestring::utf32str!($string))
$crate::localization::LocalizableString::Static(widestring::utf32str!($string))
};
}
pub use localizable_string;
@@ -334,7 +334,7 @@ macro_rules! localizable_consts {
) => {
$(
$(#[$attr])*
$vis const $name: $crate::wutil::gettext::LocalizableString =
$vis const $name: $crate::localization::LocalizableString =
localizable_string!($string);
)*
};
@@ -385,8 +385,7 @@ macro_rules! wgettext_fmt {
#[cfg(test)]
mod tests {
use super::LocalizableString;
use crate::prelude::*;
use super::*;
use crate::tests::prelude::*;
#[test]

View File

@@ -1,5 +1,5 @@
pub use crate::wutil::{
LocalizableString, eprintf, localizable_consts, localizable_string, sprintf, wgettext,
wgettext_fmt,
pub use crate::localization::{
LocalizableString, localizable_consts, localizable_string, wgettext, wgettext_fmt,
};
pub use crate::wutil::{eprintf, sprintf};
pub use fish_wchar::prelude::*;

View File

@@ -32,7 +32,7 @@
use crate::{
prelude::*,
wutil::{Error as wcstodError, wcstod::wcstod_underscores, wgettext},
wutil::{Error as wcstodError, wcstod::wcstod_underscores},
};
#[derive(Clone, Copy)]

View File

@@ -1,7 +1,6 @@
pub mod dir_iter;
pub mod errors;
pub mod fileid;
pub mod gettext;
mod hex_float;
#[macro_use]
pub mod printf;
@@ -15,9 +14,6 @@
use crate::wcstringutil::{join_strings, wcs2bytes_callback};
use errno::errno;
use fish_wchar::{L, WExt, WString, wstr};
pub use gettext::{
LocalizableString, localizable_consts, localizable_string, wgettext, wgettext_fmt,
};
use std::ffi::{CStr, OsStr};
use std::fs::{self, canonicalize};
use std::io::{self, Write};