Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Stona www w dwóch językach.
Forum PHP.pl > Forum > PHP
ALIASpl
Witam wszystkich.
Odnotowuje coraz więcej wejsć z zagranicznych portali. Strone mam tylko w języku ojczystym chcizłbym aby był też angielski.
Czy jest jakiś program php zmieniający zawartosć strony czy poprostu dublujemy strony i zmieniamy text?
Poza tym bedzie problem z menu - jest stałe.

www.solarint.pl to strona w której bedzie jezyk ang.

Proszę o pomoc.
cicik
Aby to zrobić dobrze musiałbyś zastosować system CMS (system zarządzania treścią), który wspiera wielojęzyczność. Inaczej to jest morderstwo.
ALIASpl
Możesz mi opisać działanie CMS.
Sedziwoj
A może opisać Ci Windowsa? Poszukaj, to nie takie ciężkie.
A nie widzę powodu aby od razu rzucać CMS...
O wersjach językowych, jak to zrobić było bardzo dużo już tematów, skorzystaj z wyszukiwarki.
ALIASpl
Który proponujecie i który jest wg was najlepszy?
vokiel
stworzyć 2 pliki językowe, w których w zmiennych będą przechowywane teksty wyświetlane na stronie.

plik pl.php
  1. <?php
  2. //menu
  3. $menu['swiatlowody'] = "Światłowody";
  4. $menu['koncowki'] = "Końcówki";
  5. // itd
  6. ?>


plik en.php
  1. <?php
  2. //menu
  3. $menu['swiatlowody'] = "Optical fibres";
  4. $menu['koncowki'] = "Ends";
  5. // itd
  6. ?>


następnie w kodzie strony głównej w zależności od wybranego języka includujesz odpowiedni plik językowy, a te wszystkie teksty na stronie wyświetlasz np tak:
  1. <?php
  2. echo ("<table width=\"200\" cellpadding=0 cellspacing=0><tr><td width=\"110\" style=\"text-align: left\" class=\"middle\">
  3. <a href=\"index.php?n=6\" class=\"left\">");
  4.  
  5.  echo $menu['swiatlowody']; 
  6.  
  7. echo ("</a>");
  8. // itd
  9. ?>
ALIASpl
Czy nie bedzie problemu z text, który jest wczytywany?
Text jest pobierany z bazy MySQL.
  1. <?
  2. function head_1() {
  3. global $EN;
  4. $t .= '<head>';
  5.  
  6. $vs = array(
  7. array("title", "<title>", "</title>"),
  8. array("metaopis", "<meta name=\"Description\" content=\"", "\">"),
  9. array("keywords", "<meta name=\"Keywords\" content=\"", "\">"));
  10.  
  11. foreach($vs as $v) {
  12. $t1 = ($EN['page'][$v[0]]) ? $EN['page'][$v[0]] : $EN['www'][$v[0]];
  13. $t .= $v[1] . stripslashes(zz($t1)) . $v[2] ."\n";
  14. }
  15.  
  16. $t .= '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  17. <meta http-equiv="content-language" content="pl">
  18. <META name="Author" content="Laventhar Consulting">
  19. <META name="Robots" content="index, follow" >
  20. <META name="revisit-after" content="7 Day" >
  21.  
  22. <meta http-equiv="Content-Style-Type" content="text/css">
  23. <LINK HREF="style.css" TYPE="text/css" REL="stylesheet"> 
  24. <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon">';
  25.  
  26. $t .= '
  27. <script language="JavaScript">
  28. <!-- Begin
  29. function movepic(img_name,img_src) {
  30. document[img_name].src=img_src;
  31. }
  32. // End -->
  33. </SCRIPT>';
  34. $t .= '</HEAD>';
  35. return $t;
  36. }
  37.  
  38. function page_top_1() {
  39. $t .= '<tr>';
  40. $t .= '<td width="100%" style="background-image: url('images/head.jpg');" height="130">';
  41. $t .= '<table cellpadding="0" cellspacing="0"> <tr>';
  42. $t .= '<td width=255>';
  43. $t .= '<a href="index.php"><img width="255" height="130" src="images/blank.gif" border="0"></a>';
  44. $t .= '</td>';
  45. $t .= '<td width=366>';
  46. $t .= menu_top_1();
  47. $t .= '</td>';
  48.  
  49. $t .= '<td width="70">';
  50. $t .= '<div align="center" style="padding-top: 20px" class="top">';
  51. $t .= 'katalog<br /><br /> <a href="images/katalog_SolarInt.pdf" class="top" target="_blank"><img border="0" src="images/pdf_icon.gif"></a>';
  52. $t .= '</div> </td>';
  53.  
  54. $t .= '<td width="75">';
  55. $t .= '<div align="center" style="padding-top: 20px" class="top">';
  56. $t .= 'Firma w TV<br /><br /> <a href="index.php?n=121" class="top"><img border="0" src="images/wmp.gif"></a>';
  57. $t .= '</div> </td>';
  58.  
  59.  
  60. $t .= '</tr></table>';
  61. $t .= '</td>';
  62. $t .= '</tr>';
  63. return $t;
  64. }
  65.  
  66. function menu_top_1() {
  67. global $EN;
  68. $t .= '<div align="center" style="padding-top:25px; line-height:30px;">';
  69. if ($EN['menu_top']) foreach($EN['menu_top'] as $el) if ($el['lang']) {
  70. $class = ($el['id'] == $_GET['n']) ? "top1" : "top";
  71. $t1[] = '<a href="index.php?n=' . $el['id'] . '" class="'.$class.'">'. zz($el['lang']). '</a>';
  72. }
  73. $t .= join("       ", $t1);
  74. $t .= '</div>';
  75. return $t;
  76. }
  77.  
  78. function menu_left_1() {
  79. global $EN;
  80. $srcs = array(1 => "menu1.jpg", 2 => "menu8.jpg", 3 => "menu7.jpg", 4 => "menu10.jpg", 5 => "menu11.jpg", 6 => "menu12.jpg", 7 => "menu13.jpg" );
  81. $srcs1 = array(1 => "menu1b.jpg", 2 => "menu8b.jpg", 3 => "menu7b.jpg", 4 => "menu10b.jpg", 5 => "menu11b.jpg", 6 => "menu12b.jpg", 7 => "menu13b.jpg");
  82. $t .= '<table width="200" cellpadding=0 cellspacing=0>';
  83. if ($EN['menu_dzial1']) foreach($EN['menu_dzial1'] as $el) if ($el['lang']) {
  84. $i++;
  85. if ($i <= 7) {
  86. $t1 = '<tr>';
  87. $t1 .= '<td width="110" style="text-align: left" class="middle">';
  88. $class = ($el['id'] == $_GET['n']) ? "left1" : "left";
  89. $t1 .= '<a href="index.php?n=' . $el['id'] . '" class="'.$class.'">'. zz($el['lang']). ' </a>';
  90. $t1 .= '</td>';
  91. $t1 .= '<td width="90" align=right>';
  92. $src = ($el['id'] == $_GET['n']) ? $srcs1[$i] : $srcs[$i];
  93. $t1 .= '<a href="index.php?n=' . $el['id'] . '" onmouseover="movepic('img'.$i.'','images/'.$srcs1[$i].'')" onmouseout="movepic('img'.$i.'','images/'.$src.'')">';
  94.  
  95. $t1 .= '<img width=80 height=80 border="0" src="images/'.$src.'" name="img'.$i.'"></a>';
  96. $t1 .= '</td>';
  97. $t1 .= '</tr>';
  98. $t2[] = $t1;
  99. }
  100. }
  101. if ($t2) {
  102. $t1 = '<tr><td height=5></td></tr><tr><td colspan="2" style="background-image: url('images/line.gif'); margin-top:5px" width="100%" height="1"> </td></tr><tr><td height=5></td></tr>';
  103. $t .= join($t1, $t2);
  104. }
  105. $t .= '</table>';
  106. return $t;
  107. }
  108.  
  109. ?>
cicik
Cytat(vokiel @ 24.09.2007, 11:19:45 ) *
stworzyć 2 pliki językowe, w których w zmiennych będą przechowywane teksty wyświetlane na stronie.


A co z tekstami wczytywanymi z bazy, he?


Cytat(ALIASpl @ 24.09.2007, 11:16:21 ) *
Który proponujecie i który jest wg was najlepszy?


Wg. mnie oczywiście mój ;-)
ALIASpl
Wiem jak stworzyć 2 pliki jezykowe.
Rozumiem ze zmiana plików następuje przy przejściu na inny jezyk-flagę,
Tylko nie wiem gdzie w kodzie php umieścić te pliki.
Prosze o przykład na ww prezetacji - nie mam doświadczenia w php wiec takie skruptulatne pytania.
Cezar708
w bazie danych to już bardziej skomplikowany przykład:

jak normalnie tabela wygląda tak:

Kod
artykuly:
id | tytul | data_utworzenia | tresc | kto_napisal


jak mam taka tabelę to tworzę w jej miejsce dwie inne tabele:
Kod
artykuly:
id | data_ustworzenia | kto_napisal

artykuly_i18n:
id | jezyk | tytul | tresc


czyli w tabeli artykuly mam wszystkie kolumny, ktore zawieraja dane ktore niegdy nie beda tlumaczone (np: klucze obce, daty itp) natomiast w tabeli artykuly_i18n mam te dane, ktore zawieraja dane, ktore nalezy tlumaczyc oraz kolumne jezyk, czyli dwuliterowy kod wg jakiegos tam ISO (pl dla polski en-angielski, de-niemiecki itd), dodatkowo w tej kolumne klucz prywatny stanowi para id - jezyk

i teraz jak chcesz pobrać dane w jakims jezyku to po pierwsze mozesz zrobic widok laczacy juz na stale te dwie tabele w relacji 1-1 lub pobierasz je za pomoca zapytania
  1. SELECT * FROM artykuly AS a, artykuly_i18n AS ai WHERE a.id=<idKtoregoSzukasz> AND a.id=ai.id AND ai.jezyk=<kodJezykaKtorySzukasz>
vokiel
Cytat(cicik @ 24.09.2007, 11:43:14 ) *
A co z tekstami wczytywanymi z bazy, he?

Cezar708 to rozwiązał.

Cytat(ALIASpl @ 24.09.2007, 11:48:00 ) *
Tylko nie wiem gdzie w kodzie php umieścić te pliki.
Prosze o przykład na ww prezetacji - nie mam doświadczenia w php wiec takie skruptulatne pytania.


Pliki językowe nazywamy np tak: pl.php, en.php
Na początku strony:
  1. <?php
  2. // oczywiście można dodać ochronę kodu przed włamem (w końcu zmienna pochodzi z $_POST)
  3. if (isset($_POST['ln']))
  4.  {
  5.  $ln = $_POST['ln'];
  6.  $_SESSION['jezyk'] = $ln;
  7.  }
  8.  
  9. if (isset($_SESSION['jezyk']))
  10. {
  11. include ("jezyki/".$_SESSION['jezyk'].".php");
  12. }
  13. else
  14. {
  15. include ("jezyki/jezyk_pl.php");
  16. }
  17. ?>


A tam gdzie masz te flagi możesz zrobić przyciski i wysyłać jaki język był wybrany &_POSTem. np tak:
  1. <form name="ln" style="display: inline;" method="post" action=index.php">
  2. <input type="hidden" name="ln" value="pl">
  3. <input type="image" src="img/pl.gif" name="submit.pl" style="cursor: pointer; display: inline;">
  4. </form>


Coś takiego na szybko...
Sedziwoj
Ech, i znów zaczynacie dyskusję o wielojęzyczności gdy już wiele było powiedziane i najpierw tamto powinniście przeczytać, np. taki temat:
Temat: Wielojezykowosc
Ale było ich chyba jeszcze parę (tych ciekawszych)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.