mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-05-07 23:41:15 -03:00
The overwhelming majority of localizable messages comes from
completions:
$ ls share/completions/ | wc -l
$ 1048
OTOH functions also contribute a small amount, mostly via their
descriptions (so usually just one per file).
$ ls share/functions/ | wc -l
$ 237
Most of these are private and almost never shown to the user, so it's
not worth bothering translators with them. So:
- Skip private (see the parent commit) and deprecated functions.
- Skip wrapper functions like grep (where the translation seems to
be provided by apropos), and even the English description is not
helpful.
- Assume that most real systems have "seq", "realpath" etc.,
so it's no use providing our own translations for our fallbacks.
- Mark fish's own functions as tier1, and some barely-used functiosn
and completions as tier3, so we can order them that way in
po/*.po. Most translators should only look at tier1 and tier2.
In future we could disable localization for tier3.
See the explanation at the bottom of
tests/checks/message-localization-tier-is-declared.fish
Part of #11833
(cherry picked from commit d835c5252a)
77 lines
2.4 KiB
Fish
77 lines
2.4 KiB
Fish
# localization: skip(uses-apropos)
|
|
|
|
if not command -qs man
|
|
# see #5329 and discussion at https://github.com/fish-shell/fish-shell/commit/13e025bdb01cc4dd08463ec497a0a3495873702f
|
|
exit
|
|
end
|
|
|
|
function man
|
|
# Work around the "builtin" manpage that everything symlinks to,
|
|
# by prepending our fish datadir to man. This also ensures that man gives fish's
|
|
# man pages priority, without having to put fish's bin directories first in $PATH.
|
|
|
|
# Preserve the existing MANPATH, and default to the system path (the empty string).
|
|
set -l manpath
|
|
if set -q MANPATH
|
|
set manpath $MANPATH
|
|
else if set -l p (command man -p 2>/dev/null)
|
|
# NetBSD's man uses "-p" to print the path.
|
|
# FreeBSD's man also has a "-p" option, but that requires an argument.
|
|
# Other mans (men?) don't seem to have it.
|
|
#
|
|
# Unfortunately NetBSD prints things like "/usr/share/man/man1",
|
|
# while not allowing them as $MANPATH components.
|
|
# What it needs is just "/usr/share/man".
|
|
#
|
|
# So we strip the last component.
|
|
# This leaves a few wrong directories, but that should be harmless.
|
|
set manpath (string replace -r '[^/]+$' '' $p)
|
|
else
|
|
set manpath ''
|
|
end
|
|
# Notice the shadowing local exported copy of the variable.
|
|
set -lx MANPATH $manpath
|
|
|
|
# Prepend fish's man directory if available.
|
|
if set -q __fish_data_dir[1]
|
|
set -l fish_manpath $__fish_data_dir/man
|
|
if test -d $fish_manpath
|
|
set MANPATH $fish_manpath $MANPATH
|
|
end
|
|
end
|
|
|
|
if test (count $argv) -eq 1
|
|
# Some of these don't have their own page,
|
|
# and adding one would be awkward given that the filename
|
|
# isn't guaranteed to be allowed.
|
|
# So we override them with the good name.
|
|
switch $argv
|
|
case !
|
|
set $argv not
|
|
case .
|
|
set $argv source
|
|
case :
|
|
set $argv true
|
|
case '['
|
|
set $argv test
|
|
end
|
|
end
|
|
|
|
set -l tmpdir
|
|
if not set -q argv[2] && status list-files "man/man1/$argv[1].1" &>/dev/null
|
|
set tmpdir (__fish_mktemp_relative -d fish-man)
|
|
or return
|
|
status get-file "man/man1/$argv[1].1" >$tmpdir/$argv.1
|
|
set argv $tmpdir/$argv.1
|
|
end
|
|
|
|
command man $argv
|
|
set -l saved_status $status
|
|
|
|
if set -q tmpdir[1]
|
|
command rm -r $tmpdir
|
|
end
|
|
|
|
return $saved_status
|
|
end
|