File: language.php

package info (click to toggle)
opendb 0.81p18-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 4,716 kB
  • ctags: 6,787
  • sloc: php: 50,213; sql: 3,098; sh: 272; makefile: 54; xml: 48
file content (136 lines) | stat: -rw-r--r-- 3,659 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<?php
/* 	OpenDb - Open Media Lending Database
	Copyright (C) 2001,2002 by Jason Pell

	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.
*/


// Functions for use with language functionality

/**
	All we need to do is check if there is a 
	matching lang/$language.inc.php script.
	
	When user level languages are added, there
	will be a new languages table added as well,
	but until then, we do not have to bother
	with that.
*/
function is_legal_language($language)
{
	if(!starts_with($language, "local.") && @file_exists("./lang/".$language.".inc.php"))
		return true;
	else
		return false;
}

/**
	Generate a list of user languages
*/
function get_language_r()
{
	$handle=opendir('lang');
	while ($lang = readdir($handle))
    {
		// Ensure valid language name.  
		if ( strlen($lang)<=(20+strlen('.inc.php')) && !preg_match("/^\./",$lang) && !starts_with($lang, "local.") && preg_match("/(.*).inc.php$/",$lang,$regs))
		{
			$language[] = $regs[1];
		}
	}
	closedir($handle);
    
    if(is_array($language) && count($language)>0)
		return $language;
	else // empty array as last resort.
		return array();
}

/**
	I am not sure that str_replace is currrently working properly,
	where find and replace are both arrays, so we are forcing it
	here.

	@param $arg1
	@param $arg2
	@param $arg3

	Where $arg1 && $arg2 are both arrays, we assume the old functionality,
	where we specify a list of variables to find and a matching list of
	values to replace.  $arg3 is the $LANG_VARS;

	Otherwise the new functionality allows for $arg1 to be the array,
	and its keys to be the search variables.  The matching values are
	what is being replaced.  $arg2 is the $LANG_VARS.
*/ 
function replace_lang_vars($arg1, $arg2, $arg3=NULL)
{
	// Original functionality.
	if(is_array($arg1) && is_array($arg2))
	{
		// This test in case the language variable is not defined.
		if(strlen($arg3)>0)
		{
			for ($j=0; $j<count($arg1); $j++)
			{
				if(strlen($arg1[$j])>0)
				{
					if(strlen($arg2[$j])>0)
						$arg3 = str_replace("{".$arg1[$j]."}", $arg2[$j], $arg3);
					else
						$arg3 = str_replace("{".$arg1[$j]."}", "", $arg3);
				}
			}
		}
		// else
		return $arg3;
	}
	else // New functionality - the first argument keys will be used as the find arguments!
	{
		// This test in case the language variable is not defined.
		if(strlen($arg2)>0)
		{
			while(list($key,$value) = @each($arg1))
			{
				if(strlen($value)>0)
					$arg2 = str_replace("{".$key."}", $value, $arg2);
				else
					$arg2 = str_replace("{".$key."}", "", $arg2);
			}
		}
		//else
		return $arg2;
	}
}

/**
	Replace a single value.
*/
function replace_lang_var($find, $replace, $langvar)
{
	return str_replace("{".$find."}", $replace, $langvar);
}

/**
	Any \n will be expanded to actual newlines using this function.  For some
	reason strings surrounded by single quotes do not expand the \n, but they
	are treated as actual '\n' two character sequences.
*/
function expand_langvar_newlines($langvar)
{
	return str_replace("\\n", "\n", $langvar);
}
?>