tr A-Z a-z in locales other than C
Jilles Tjoelker
jilles at stack.nl
Tue Jun 7 23:00:44 UTC 2011
On Wed, Jun 08, 2011 at 09:56:39AM +1200, Atom Smasher wrote:
> the man page makes it clear...
> Translate the contents of file1 to upper-case.
> tr "[:lower:]" "[:upper:]" < file1
> (This should be preferred over the traditional UNIX idiom of ``tr a-z
> A-Z'', since it works correctly in all locales.)
> for any other uses, either build the port with locale specified as "C" as
> mentioned, or patch the port so:
> tr '[a-z]' '[A-Z]'
> becomes:
> env LC_ALL=C tr '[a-z]' '[A-Z]'
> the only change that would be appropriate to the tr utility would be a
> command-line option to select a locale... something like:
> tr -l C '[a-z]' '[A-Z]'
> i don't think anyone would object to that, but it would still require
> patching some ports under some locales...
That new option would provide zero benefit. If things are going to be
patched anyway then patch them to be standards compliant.
> maybe another option would be modifying tr to recognize other [new]
> environment variables... TR_LANG, TR_LC_ALL, TR_LC_CTYPE and
> TR_LC_COLLATE. done that way, things could be set in /etc/make.conf (or
> sys.mk), not need any patching, and not interfere with other uses of
> locale.
That would be rather ugly.
If tr a-z A-Z is supposed to be deceiving in some locales, then let it
remain so unconditionally.
--
Jilles Tjoelker
More information about the freebsd-i18n
mailing list