RS writes that " i18n stands for that word with 'i' in front, 'n' at the end, and 18 letters in between - internationalization, adapting software to non-English language environments." Also, he provides an algorithmlet to produce such abbreviations:
proc n2n s { return [string index $s 0][string length [string range $s 1 end-1]][string index $s end] }
% n2n internationalization i18n % n2n localization l10n
AMG: I'd avoid generating the substring only to take its length:
proc n2n {s} { return [string index $s 0][expr {[string length $s] - 2}][string index $s end] }