| 
	
 | 
 Posted by Frits van Leeuwen on 10/12/06 07:30 
wow, big answare... thanks. 
No the most of the text does not change many times. 
I try to build a website. Before I did it with Front Page, but now I need 
PHP I think. But I have so little experience with PHP, so I need Help. Now i 
have a PHP page. But 3 times a text where I think 1 time is enough. I like 
to change it. But I do not know how. 
I know, I can do it with a DB, before I need 1 good looking page. 
My first start was the language chooice. Now I like the posebilety to change 
my texts ones. (not 3 times) 
I think I can link the page to a text. But when I know how to create and use 
a DB I like to use the DB. 
I can not use MYSQL. 
 
My English is not so well, I'm sorry for it. So I need time read and 
understand your help. 
 
 
"Steve" <no.one@example.com> schreef in bericht 
news:SPeXg.3238$%l1.3162@newsfe07.lga... 
> sorry for the text-wrapping... 
> 
> i'll try. you may have better luck with the hundreds of resources on the 
web 
> though. 
> 
> what kind of content will you have? does it change much? 
> 
> anyway, for starters your code should define constants for either sections 
> of text that are static or phrases (like in error messages). that way when 
> programming, you refer to the constant which elimenates language (except 
for 
> php) altogether. ex.: 
> 
> define('ERROR_INVALID_DATA_TEXT',  45); 
> define('EMAIL',                    53); 
> 
> if (!isEmail($email)){ echo translate($language, 
> array(ERROR_INVALID_DATA_TEXT, EMAIL)); } 
> 
> 45 and 53 would refer to the db id of the item in a translation table. 
> translate(...) is a function you'd create that simply to query the db and 
> return the appropriate text. 
> 
> if you have php 5, you can make this much more friendly. 
> 
> ======== 
> 
> 
> class errors 
> { 
>   static const $invalidData = 45; 
> } 
> 
> class phrases 
> { 
>   // constants here to define individual phrases 
> } 
> 
> class words 
> { 
>   static const $email       = 53; 
> } 
> 
> class language 
> { 
>   private $_currentLanguage; 
>   static function setLanguage($language){ $this->_currentLanguage = 
> $language; } 
>   static function translate($id, $concat = null) 
>   { 
>     if (!is_array($id)){ $id = array($id); } 
>     $text = array(); 
>     foreach ($id as $toText) 
>     { 
>       // get text from db from id supplied 
>       $text[$id] = record['VALUE']; // ficticious record object from db 
>     } 
>     if (!$concat){ return $text; } 
>     return implode($concat, $text); 
>   } 
> } 
> 
> ====== 
> 
> if (!isEmail($email)){ echo language.translate(array(errors::$invalidData, 
> words::$email), true); } 
> 
> anyway, an OO approach allows you segement and refer to language id's in a 
> grouped and ordered fashion rather than trying to achieve the same thing 
> with VERY LONG define names...plus, they can be static so that you don't 
> have to explicitly create an instance of each of them. 
> 
> again, try and keep everything segmented - from code, html, and language. 
it 
> then becomes more manageable. the first thing i'd create is a front-end 
for 
> the db translation table so that you can integrate the defined table 
> constants and change them automatically as you update your table... 
> 
> let's say you define things in code as i have done...error text, phrases, 
> and individual words. i chose these because the a word in one language by 
> itself may look totally different when it is in a phrase. and a phrase 
that 
> is imphatic may be worded *entirely* differently that the tone of a 
warning 
> or error. the other thing to consider is gender...which most languages 
have 
> (i didn't account for it in the translate(...) function example, but you 
get 
> the gist). here's what my translation table would look like: 
> 
> create table language 
> { 
>   id      int null auto_increment primary          , 
>   varName varchar(255) not null                    , 
>   lang    int not null                             , // assume your 
> supported langs. in other linked table 
>   type    enum('error', 'phrase', 'word' not null  , // mysql assumed and 
> not sure of syntax 
>   gender  int not null                             , // assume genders in 
> other linked table 
>   value   text 
> } 
> on primary; 
> 
> i think from that, you can figure out the query for the translate(...) 
> function. as for auto-updating the errors, phrases, words...make each a 
> require_once page. after an entry in this table is updated from your 
> maintenance web page, have php query the db and output the data to file so 
> that the output is actually php language itself for each varName and id 
> returned from the query. for you as a programmer, you'll need to make sure 
> that an email is automatically generated so that the change is 
> announced...especially if you work on a team of developers. 
> 
> anyway, that's the bulk of it as briefly and precisely as i can get here. 
> i18n is a huge topic of discussion. it is covered by many, many, MANY 
> approaches...this is just a basic way to cover the bases. 
> 
> hope that gets you started. 
> 
> 
> 
> "Frits van Leeuwen" <fleeuwen@wanadoo.nlx> wrote in message 
> news:452d6cfb$0$13688$dbd4b001@news.wanadoo.nl... 
> | You are right. That's why I asking for help. 
> | So, can you help me step by step to fix a DB for my text? 
> | 
> | "Steve" <no.one@example.com> schreef in bericht 
> | news:10dXg.196$di5.75@newsfe06.lga... 
> | > your architecture is all wrong. separate the language from the html as 
> | > much 
> | > as possible. either store a page's content in a db or in it's own file 
> for 
> | > each language you intend to support...or keep each language in its own 
> | > directory and redirect to that directory as a virtual server. you 
cannot 
> | > hope to be able to maintain one page of code showing all language 
> versions 
> | > between switch statements. 
> | > 
> | > look for 'programming i18n' on google to shorten the learning curve. 
> | > 
> | > hope that helps. 
> | > 
> | > 
> | > "Frits van Leeuwen" <fleeuwen@wanadoo.nlx> wrote in message 
> | > news:452d5699$0$45649$dbd4f001@news.wanadoo.nl... 
> | > | Hello, 
> | > | I have index.php and language.php 
> | > | At index.php are buttons for choose language. 
> | > | In language I set a cookie and go back to index.php. (I'm happy, 
it's 
> | > | working) 
> | > | 
> | > | But index.php has too match text I think. 
> | > | In the following code, I show you "**** English text ****" and 
> | > "****Dutch 
> | > | text ****" thise are all the same texts. The difrence is the 
language. 
> | > But 
> | > | when you look to the code, You will see 3 times Enlis text and 3 
times 
> | > Dutch 
> | > | text. I think it has to be one time for both of them. 
> | > | 
> | > | This is index.php 
> | > | 
> | > | <?php 
> | > | if (isset($_COOKIE["LeeuwendeelTaal"])) 
> | > | { 
> | > | switch ($_COOKIE["LeeuwendeelTaal"]) 
> | > | { 
> | > | case "EN": // ENGLISH 
> | > | ?> 
> | > | <html> 
> | > | <head> 
> | > | <title>Begin Leeuwendeel.info</title> 
> | > | </head> 
> | > | <body link="#0000FF" vlink="#800080" alink="#00FFFF" text="#FF0000" 
> | > | bgcolor="#FFFFE1"> 
> | > | <div align="center"> 
> | > | <table border="1" width="100%" id="table1" style="border-width: 0px" 
> | > | height="530"> 
> | > | <tr> 
> | > |  <td style="border-style: none; border-width: medium"> 
> | > |    **** English text **** 
> | > |  </td> 
> | > |  <td rowspan="1" style="border-style: none; border-width: medium"> 
> | > |   <p align="right"><img border="0" 
src="images/underconstruction.gif" 
> | > | width="480" height="379"></p> 
> | > |  </td> 
> | > |  <td style="border-style: none; border-width: medium"> 
> | > |   <!--vlag NL--> 
> | > |   <p align="right"><a href="/language.php?ln=NL"><img border="0" 
> | > | src="knoppen/vlagNL.jpg" width="33" height="20" alt="Klik hier, 
> wanneer 
> | > u 
> | > de 
> | > | site in het Nederlands wilt lezen."></a></p> 
> | > |   <!--vlag EN--> 
> | > |   <p align="right"><a href="/language.php?ln=EN"><img border="2" 
> | > | src="knoppen/vlagEN.jpg" width="33" height="20" alt="Click here, 
when 
> | > you 
> | > | like to read the website in English."></a></p> 
> | > |  </td> 
> | > | </tr> 
> | > | </table> 
> | > | </div> 
> | > | <p align="center"><font size="1">Last change: 
> | > | 
> | > | <?php 
> | > |  break; // einde ENGLISH 
> | > | 
> | > | case "NL": // NEDERLANDS 
> | > | ?> 
> | > | <html> 
> | > | <head> 
> | > | <title>Begin Leeuwendeel.info</title> 
> | > | </head> 
> | > | <body link="#0000FF" vlink="#800080" alink="#00FFFF" text="#FF0000" 
> | > | bgcolor="#FFFFE1"> 
> | > | <div align="center"> 
> | > | <table border="1" width="100%" id="table1" style="border-width: 0px" 
> | > | height="530"> 
> | > | <tr> 
> | > |  <td style="border-style: none; border-width: medium"> 
> | > |    **** Dutch text ****  </td> 
> | > |  <td rowspan="1" style="border-style: none; border-width: medium"> 
> | > |   <p align="right"><img border="0" 
src="images/underconstruction.gif" 
> | > | width="480" height="379"></p> 
> | > |  </td> 
> | > |  <td style="border-style: none; border-width: medium"> 
> | > |   <!--vlag NL--> 
> | > |   <p align="right"><a href="/language.php?ln=NL"><img border="2" 
> | > | src="knoppen/vlagNL.jpg" width="33" height="20" alt="Klik hier, 
> wanneer 
> | > u 
> | > de 
> | > | site in het Nederlands wilt lezen."></a></p> 
> | > |   <!--vlag EN--> 
> | > |   <p align="right"><a href="/language.php?ln=EN"><img border="0" 
> | > | src="knoppen/vlagEN.jpg" width="33" height="20" alt="Click here, 
when 
> | > you 
> | > | like to read the website in English."></a></p> 
> | > |  </td> 
> | > | </tr> 
> | > | </table> 
> | > | </div> 
> | > | <p align="center"><font size="1">Laatste wijziging: 
> | > | 
> | > | <?php 
> | > |  break; 
> | > | 
> | > | default: 
> | > | ?> 
> | > | <html> 
> | > | <head> 
> | > | <title>Begin Leeuwendeel.info</title> 
> | > | </head> 
> | > | <body link="#0000FF" vlink="#800080" alink="#00FFFF" text="#FF0000" 
> | > | bgcolor="#FFFFE1"> 
> | > | <div align="center"> 
> | > | <table border="1" width="100%" id="table1" style="border-width: 0px" 
> | > | height="530"> 
> | > | <tr> 
> | > |  <td style="border-style: none; border-width: medium"> 
> | > |    **** Dutch text **** 
> | > |  </td> 
> | > |  <td rowspan="1" style="border-style: none; border-width: medium"> 
> | > |   <p align="center"><img border="0" 
src="images/underconstruction.gif" 
> | > | width="480" height="379"></p> 
> | > |  </td> 
> | > |  <td style="border-style: none; border-width: medium"> 
> | > |    **** English text **** 
> | > |  </td> 
> | > | </tr> 
> | > | <tr> 
> | > |  <td style="border-style: none; border-width: medium"> 
> | > |   <p align="center"><a href="/language.php?ln=NL"><img border="0" 
> | > | src="knoppen/vlagNL.jpg" width="165" height="100" alt="Klik hier, 
> | > wanneer 
> | > u 
> | > | de site in het Nederlands wilt lezen."></a> 
> | > |  </td> 
> | > |  <td style="border-style: none; border-width: medium"> 
> | > |  </td> 
> | > |  <td style="border-style: none; border-width: medium"> 
> | > |   <p align="center"><a href="/language.php?ln=EN"><img border="0" 
> | > | src="knoppen/vlagEN.jpg" width="165" height="100" alt="Click here, 
> when 
> | > you 
> | > | like to read the website in English."></a> 
> | > |  </td> 
> | > | </tr> 
> | > | </table> 
> | > | </div> 
> | > | <p align="center"><font size="1">Laatste wijziging / Last change: 
> | > | 
> | > | <?php 
> | > |  break; // einde geen keuze 
> | > | 
> | > | } 
> | > | } 
> | > | 
> | > | else 
> | > | { 
> | > | setcookie("LeeuwendeelTaal"); 
> | > | ?> 
> | > | <html> 
> | > | <head> 
> | > | <title>Begin Leeuwendeel.info</title> 
> | > | </head> 
> | > | <body link="#0000FF" vlink="#800080" alink="#00FFFF" text="#FF0000" 
> | > | bgcolor="#FFFFE1"> 
> | > | <div align="center"> 
> | > | <table border="1" width="100%" id="table1" style="border-width: 0px" 
> | > | height="530"> 
> | > | <tr> 
> | > |  <td style="border-style: none; border-width: medium"> 
> | > |    **** Dutch text **** 
> | > |  </td> 
> | > |  <td rowspan="1" style="border-style: none; border-width: medium"> 
> | > |   <p align="center"><img border="0" 
src="images/underconstruction.gif" 
> | > | width="480" height="379"></p> 
> | > |  </td> 
> | > |  <td style="border-style: none; border-width: medium"> 
> | > |    **** English text **** 
> | > |  </td> 
> | > | </tr> 
> | > | <tr> 
> | > |  <td style="border-style: none; border-width: medium"> 
> | > |   <p align="center"><a href="/language.php?ln=NL"><img border="0" 
> | > | src="knoppen/vlagNL.jpg" width="165" height="100" alt="Klik hier, 
> | > wanneer 
> | > u 
> | > | de site in het Nederlands wilt lezen."></a> 
> | > |  </td> 
> | > |  <td style="border-style: none; border-width: medium"> 
> | > |  </td> 
> | > |  <td style="border-style: none; border-width: medium"> 
> | > |   <p align="center"><a href="/language.php?ln=EN"><img border="0" 
> | > | src="knoppen/vlagEN.jpg" width="165" height="100" alt="Click here, 
> when 
> | > you 
> | > | like to read the website in English."></a> 
> | > |  </td> 
> | > | </tr> 
> | > | </table> 
> | > | </div> 
> | > | <p align="center"><font size="1">Laatste wijziging / Last change: 
> | > | <?php 
> | > | } 
> | > | ?> 
> | > | 
> | > | <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d-%m-%Y" 
> | > | startspan -->11-10-2006<!--webbot bot="Timestamp" i-checksum="12558" 
> | > | endspan --></font></p> 
> | > | </body> 
> | > | </html> 
> | > | 
> | > 
> 
| -------------------------------------------------------------------------- 
------ 
> | > | Mijn Postvak In wordt beschermd door SPAMfighter 
> | > | 4017 spam-mails zijn er tot op heden geblokkeerd. 
> | > | Download de gratis SPAMfighter vandaag nog! 
> | > | 
> | > | 
> | > 
> | > 
> | 
> 
| -------------------------------------------------------------------------- 
------ 
> | Mijn Postvak In wordt beschermd door SPAMfighter 
> | 4017 spam-mails zijn er tot op heden geblokkeerd. 
> | Download de gratis SPAMfighter vandaag nog! 
> | 
> | 
> 
>
 
  
Navigation:
[Reply to this message] 
 |