Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Wielojęzyczność
Forum PHP.pl > Forum > Przedszkole
pedro84
Witam!

Zrobiłem, z pewną pomocą, stronę wielojęzyczną, opartą o sesje:

index.php
Kod
<?php
session_start();
require_once("langman.php");
if(!SelectLanguage($_SESSION["lang"]))
    die("Error selecting language!");


?>



langman.php
Kod
<?php
$language = array();

function SelectLanguage($strLang)
{
    global $language;
    
    $inc = "en";
    switch(stripslashes($strLang))
    {
        case "de":
            $inc = "de";
        break;
        
        case "en":
            $inc = "en";
        break;
        
        default:
            $inc = "en";
    }
    

    include_once("languages/" . $inc . ".inc");
    if(isset($lang))
    {
        $language = $lang;
        return true;
    }

    return false;
}
?>



setlang.php
Kod
<?php
session_start();
$strLang = $_GET["lang"];
$_SESSION["lang"] = stripslashes($strLang);
header("Location: index.php");
?>


linki do zminy języków:
Kod
<a href="setlang.php?lang=de">German</a><br />
<a href="setlang.php?lang=en">English</a>


wywołanie poprzez
  1. <?php
  2. echo $language["welcome"];
  3. ?>


Oczywiście oparte na słownikach, problem mam następujący.
Czy da się to jakoś zastosować w innych skryptach? Np. księdze goście etc.

Pozdrawiam
erix
A czemu miałoby się nie dać?

PS. Żeby nie komplikować, to mógłbyś wykorzystać gettext.
pedro84
  1. <?php  
  2.  $language = "nl_NL";
  3.  putenv("LANGUAGE=$language");
  4.  putenv("LANG=$language");
  5.  setlocale(LC_ALL, $language);
  6.  ...
  7. ?>


Znalazłem coś takiego. Wydaje mi się, że to pasowałoby. Mógłby ktoś naprowadzić mnie jak owe coś zastosować;) withstupidsmiley.gif withstupidsmiley.gif
erix
Musisz sobie zrobić langpacka i go skompilować. W Google znajdziesz na pewno, bo sam niedawno szukałem.

Potem odwołujesz się np.:
  1. <?php
  2. echo _('To jest tekst do przetłumaczenia');
  3. ?>


A w pliku masz coś takiego:
Kod
msgid "To jest tekst do przetłumaczenia"
msgstr "To jest przetłumaczony tekst"
pedro84
Podpowiedz tylko jeszcze jakieś słowa kluczowe do googli, bo nie wiem czego szukać winksmiley.jpg
erix
Nie pamiętam, ale najlepszy IMHO programik, to poEdit:
http://www.poedit.org/
pedro84
Cytat
Musisz sobie zrobić langpacka i go skompilować. W Google znajdziesz na pewno, bo sam niedawno szukałem.


O to mi chodziło. Jak szukać informacji jak zrobić tatkiego langa. A czy to muszą być pliki .po? Nie mogą być np, lang-de, lang-eng z rozszerzeniem .php? W pliku tylko definiować edelemnty, np.:
  1. <?php
  2. define("_HELO", "CZESC");
  3. ?>


i potem odwoływać się do tego poprzez, np.:

  1. <?php "._HELO" ?>
erix
Pliki mają wtedy postac "pl_PL.mo" (po kompilacji). Potem wskazujesz katalog z langpackami i ustawiasz odpowiedni locale.

Potem, żeby wywołać odpowiedni string robisz np. tak:
Kod
<?= _('tekst'); ?>

Prościej się już chyba nie da 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.