webForumDet fria alternativet

läsa samma variabel i många filer

PHP

2 svar · 164 visningar · startad av Qonos

Medlem sedan sep. 2000438 inlägg
Frågan#1

godmorgon.

Jag håller på att göra en flerspråkig sida, men har ett problem.

jag har en katalog med de olika "langfilerna" typ

se.php
en.php
dk.php

i dessa filer har jag en variabel som heter t.ex. $language, i denna ligger (nu kommer det *S*) språket på språkets språk :)

Hur gör man för att kolla efter den variabeln i alla dessa filer för att sen kunna använda dom i t.ex. en select?

<select>
   <option value="se">svenska
   <option value="en">english
   <option value="dk">dansk
</select>

tacksam för all hjälp jag kan få...
-- Magnus

Medlem sedan apr. 2002830 inlägg
#2

Känns ju onödigt krångligt tycker jag, kan du inte istället ha en generell språkfil där du anger språken på språkets namn?

Eller missuppfattade jag dig?

Medlem sedan sep. 2000438 inlägg
#3

Hmm nja det känns itne så krångligt faktiskt. Att ha en språkfil håller inte i längden eftersom det är en _massa_ saker som kommer att ligga där.. och nu har vi gjort att du laddar upp en lang fil och så sker allt "automatiskt". Fick lite kod av en kompis som fixa det jag ville

	function GetLanguages()
	{
		$ldir = $_SERVER["DOCUMENT_ROOT"] . substr($_SERVER["PHP_SELF"], 0, strrpos($_SERVER["PHP_SELF"], "/"));
		$lFiles = array(); // en array som ska innehålla alla filenames för filer in language mappen

		
		//lista dir
		if ($dir_handle = opendir(LANGUAGE_DIR))
		{
			while (false !== ($file = readdir($dir_handle)))
			{
				if ($file != "." && $file != "..")
				{
					array_push($lFiles, LANGUAGE_DIR ."$file");
				}
			}
			closedir($dir_handle);
		}
		
		
		//klart..  öppna o parsa filer
		reset($lFiles);
		$langArray = array();
		
		foreach($lFiles as $lf)
		{
			$fp = fopen($lf, "r");
			$content = fread($fp, filesize($lf));
			fclose($fp);
		
		
			$lPos = strpos($content, "\$language");
			if( $lPos !== false)
			{// parsa o fixa fram språknamnet
				$lString = substr($content, $lPos, strpos($content, ";", $lPos) - $lPos); // Nu har vi $language = "blabla";  strängen
				$languageName = substr($lString, strpos($lString, "=") + 1); // ta bort allt innan =  tecknet
				$languageName = trim(str_replace(";", "", $languageName)); // ta bort ; o trimma.  
				$languageName = trim(str_replace("\"", "", $languageName)); // ta bort " o trimma. Nu har vi språknamnet.
		

			
				// denna ska ju räcka---
				$langArray[substr( $lf, strlen($lf) -6, 2 )] = $languageName;
			}
		}

		return $langArray;

	}
265 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)