/* * SPL - The SPL Programming Language * Copyright (C) 2006 Clifford Wolf * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * example65.spl: simple example for the localization operator (_) */ // SKIP_IF_NO_REGEX function _(format, domain, @args) { format =~ e/[A-Za-z]/g ({ var char = $0; if (char =~ /[a-z]/) return chr(ord(char)+ord('A')-ord('a')); else return chr(ord(char)+ord('a')-ord('A')); }); format =~ e/\{([0-9]*)\}/g ($1 ~== "" ? "{" : args[$1]); if (defined domain) format = "$domain: $format"; return "[$format]"; } debug _"Hello World! The answer is ${21 * 2}."; debug _<:> : This is a localized template. : The sum of ${5} and ${3} is ${5+3}. : ; debug _<:> : It is possible to ${_"cascade"} localization texts: : ${_"This is ${_"a"} simple ${_"test"}."} : Isn't that ${_"wonderful"}? ; debug <:> : --begin-- : It is also possible to localize only parts of teplates. : The sum of ${5} and ${3} is ${5+3}. : --end-- ; debug _foobar_"Note that the '{' charachter is escaped using '{}'.";