Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zalozenia do strony wielojezycznej
Forum PHP.pl > Forum > PHP
stal-sw
Witam.
Chce sobie opracowac stronke w 3 wersjach jezykowych.
Jednak nie bardzo wiem jak sie do tego zabrac.

1. Wiem tylko ze np. wszelkiego typu TYTULY przechowywalbym w 3 plikach.
jezykPL.inc
jezykENG.inc
jezykGER.inc
Przykladowa zawratosc pliku:
[php:1:4429516084]<?php
$lang['newsy'] = "Witamy w dziale aktualnosci.";
$lang['lplikow'] = "Liczba plikow:";
?>[/php:1:4429516084] lub uzywac DEFINE....
I tak by wygladal kazdy z tych plikow tylko oczywiscie teksty byly by w roznych jezykach.
Tylko nie wiem bardzo jak wywolywac w jakism pliku te $lang['newsy'] questionmark.gif

2. Inny problem to przechowywanie danych w bazie:
Czy dobrym pomyslem bedzie jak np. mam pola: id, tytul - to dla 3 wer. jezykowcyh zrobic pola: id, tytulPL, tytulENG, tytulGER questionmark.gif?

Jesli tak to jak sie pozniej odwolywac MAJAC 1 plik jakiegos skryptu - ktrory ma pracowac dla 3 wersji i w zaleznosci od wybrania wersji ma:
wybrac odpwiedni plik i odpwiednie dane z tabeli questionmark.gif

Jak wybierac wersje ? Tworzyc sesje questionmark.gif?

Prosze o swoje sugestie na temat strony z wieloma wersjami jezykowymi.
I moze ktos ma linka do jakiegos ciekawego artykulu labo jakiegos proste SKRYPTU zbudowanego dla kilku werji jezykowych.
cichy
AD 1.
W zależności w jaki sposób budujesz serwis.
jesli na szablonach to odpowiednio:[xml:1:bccee8935d]
<title>{JAKAS_ZMIENNA}</title>
[/xml:1:bccee8935d]
i w php
przypisanie do zmiennej
[php:1:bccee8935d]<?php
przypisz('JAKAS_ZMIENNA', $lang['tytul']); // *
* - (funkcja przypizs nie istnieje i została wykozystana przykładowo)
?>[/php:1:bccee8935d]
Lub tworzysz coś na podstawie funkcji (np funkcja tworząca nagłówek
[php:1:bccee8935d]<?php
function naglowek()
{
global $lang;
echo '<title>'.$lang['tytul'].'</title>';
}
?>[/php:1:bccee8935d]
AD 2.
Moja wizja tego jest taka by trzymać w bazie pola np:
title_pl, tekst_pl , title_eng , text_eng , title_de , text_de
i oprzeć wzsystko na sesjach.
i jesli sesja nie istnieje to przypisujesz jej wartosc:
[php:1:bccee8935d]<?php
$_SESSION['jezyk'] = 'pl';
// i jesli ktos zmieni jezyk to ty zmieniasz wpis na odpowiednie 'eng' lub 'de'
?>[/php:1:bccee8935d]

i później tylko odpowiednio wybierasz dane z bazy
[php:1:bccee8935d]<?php
"Select title_".$_SESSION['jezyk']." , text_".$_SESSION['jezyk']." WHERE jakies ID"

?>[/php:1:bccee8935d]
Przynajmniej ja to tak kiedyś rozwiazywałem jak sie uczyłem pisać tworząc przykładowe skrypty.
marcin96
odnosnie problemu 2

Nie lepiej zrobic po prostu pola:
title, text, lang

...i teraz w zaleznosci od wersji jezykowych wyswietlaja sie odpowiednie artykluly, czy co tam?

Czyli
[php:1:5c62120a77]<?php

$query = "SELECT `title`, `text` FROM `articles` WHERE `lang` = '". $_SESSION['current_lang']."'";

?>[/php:1:5c62120a77]

Dzieki temu nie zawsze musza byc identyczne artykuly we wszystkich wersjach jezykowych oraz w przyszlosci bardzo latwo i sprawnie mozna dodac kolejne wersje jezykowe serwisu, hm? :>)
rzseattle
http://forum.php.pl/viewtopic.php?t=8175
hi-Res
Ja tworzac kiedys strone 4 jezykach wykombinowalem taki system...

Zaczalem od stworzenia tablic w pliku cfg.php
[php:1:09a21d5761]<?php
$langs = array (
"pl" => "Polski",
"en" => "English",
"de" => "Deutch",
"fr" => "Français"
);
?>[/php:1:09a21d5761]

Pozniej napisalem taki formularz, napisalem go az 4 razy gdzie zmienna lang miala wartosc w pierwszym 1 w drugim 2 itd..
[php:1:09a21d5761]<?php
<form method=POST action=index.php>
<input type=image src="img/flag_pl.gif" onMouseOver="this.src='img/flag_ov_pl.gif'" onMouseOut="this.src='img/flag_pl.gif'">
<input type=hidden name=lang value=1>
</form>
?>[/php:1:09a21d5761]

Jeszcze pozniej w pliku index.php zamiscilem taki skrypt
[php:1:09a21d5761]<?php
$lang = $_POST['lang'];
$set = $_SESSION['lang'];

if (!(isset($_SESSION['lang']))) $set = pl;
if ($lang == 1) $set = pl;
if ($lang == 2) $set = en;
if ($lang == 3) $set = de;
if ($lang == 4) $set = fr;

$_SESSION['lang'] = $set;
?>[/php:1:09a21d5761]

W includzie dolaczylem plik cfg z tablicami.
A zmienne ktore zawieraly jakis tekst wygladaly tak
[php:1:09a21d5761]<?php
$info[$set]
?>[/php:1:09a21d5761]

No i tak to sobie dziala do dzis, zmienna z formularza zapisuje sie w sesji a kazda zmienna bedaca jakims tekstem pobiera wartosc zmiennej $set z sesji.
Proste i wygodne rozwiazanie, tak mysle smile.gif
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.