Richard Suchenwirth 2000-03-17 -- Want to produce internationalized HTML documents with little effort? Having transliterators from
The Lish family, you can write HTML with embedded foreign language sections (e.g. Arabic) in transliteration like this
<HTML><HEAD></HEAD><BODY>
Germany [ar AlmAnyA]
</BODY></HTML>
and feed the resulting file through
lish2html below. The resulting file looks like
<HTML><HEAD></HEAD><BODY>
Germany ﺎﻴﻧﺎﻤﻟﺍ
</BODY></HTML>
Not exactly readable, but the HTML way to express Unicodes. Given a browser that accepts Unicodes (turned on e.g. Netscape 4.6 with View/Character set/Unicodes (UTF-8)) and has a font that contains the wanted characters, bingo! Arabic on your web page.
This script substitutes what it can, not only [..] calls, but $.. and \u.... as well. When something goes wrong in one source line, that line is sent unchanged to output.
#!/bin/sh
# -*-Tcl-*- Time-stamp: "lish2html: 2000-03-17,14:36:24 (suchenwi@jaguar)" \
exec tclsh8.3 "$0" ${1+"$@"}
# assume the required *lish files are in the same directory as this
# modify to anything fancier if needed
set this [file join [pwd] [info script]]
if ![catch {file readlink $this} res] {set this $res}
lappend auto_path [file dirname $this]
;proc usage {} {
puts "usage: lish2html \[infile \[outfile\]\]
Substitutes *lish phrases to &#nnnn; HTML Unicodes"
}
;proc u2html {s} {
set res ""
foreach u [split $s ""] {
scan $u %c t
if {$t>127} {
append res "&#$t;"
} else {
append res $u
}
}
set res
} ;# RS
#------------------------------------ main routine
set infile stdin
set outfile stdout
set argc [llength $argv]
if {$argc>2} {usage; exit}
if {$argc} {
set inname [lindex $argv 0]
if {![file readable $inname]} {
usage; exit
}
set infile [open $inname r]
if {$argc==2} {
set outfile [open [lindex $argv 1] w]
}
}
while {[gets $infile line]>=0} {
if [catch {u2html [subst $line]} res] {
puts $outfile $line
} else {
puts $outfile $res
}
}
if {$outfile!="stdout"} {close $outfile}