mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-04-19 23:21:15 -03:00
Based on the discussion in https://github.com/fish-shell/fish-shell/pull/11967 Introduce a `status language` builtin, which has subcommands for controlling and inspecting fish's message localization status. The motivation for this is that using only the established environment variables `LANGUAGE`, `LC_ALL`, `LC_MESSAGES`, and `LANG` can cause problems when fish interprets them differently from GNU gettext. In addition, these are not well-suited for users who want to override their normal localization settings only for fish, since fish would propagate the values of these variables to its child processes. Configuration via these variables still works as before, but now there is the `status language set` command, which allows overriding the localization configuration. If `status language set` is used, the language precedence list will be taken from its remaining arguments. Warnings will be shown for invalid arguments. Once this command was used, the localization related environment variables are ignored. To go back to taking the configuration from the environment variables after `status language set` was executed, users can run `status language unset`. Running `status language` without arguments shows information about the current message localization status, allowing users to better understand how their settings are interpreted by fish. The `status language list-available` command shows which languages are available to choose from, which is used for completions. This commit eliminates dependencies from the `gettext_impl` module to code in fish's main crate, allowing for extraction of this module into its own crate in a future commit. Closes #12106