Webboard

Pełna wersja: Jak zrobić plik językowy stylu ze zmiennymi dostępnymi w szablonie?
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
wersja skryptu MyBB: 1.6.12
adres forum: nie dotyczy
na czym polega problem (screen, opis, komunikaty, nazwa stylu/theme/szablonu):

Witam

Przerabiam domyślny styl mybb i chciałem stworzyć plik językowy do stylu w którym umieszczę odpowiednie zmienne. Normalnie w folderze "polish" stylu znajdują się grafiki, ale ja używam tekstu do niektórych buttonów, zamiast grafik chcę dać tam plik języka. Czy możliwe jest aby w szablonie headerinclude dodać odpowiedni plik, a później wczytać zmienne w nim zawarte do pozostałych szablonów? W części przycisków już od razu wykorzystałem zmienne językowe, które są w mybb, ale niektórych nie ma i te brakujące właśnie chcę dodać do pliku lang, w folderze językowym stylu. Na php się zbytnio nie znam i nie wiem, czy to co kombinuję w ogóle jest możliwe. Wiecie czy da się tak zrobić, a jeśli tak, to jak? Proszę o konkretny przykład.
Da się.

1. Tworzysz plik o nazwie (przykładowa) plik.lang.php o treści wzorowanej na:
Kod PHP:
<?php
/**
 * MyBB 1.6.12 Polish Language Pack
 * Copyright © 2008-2011 MyBBoard.pl Team
 * See readme.html for copyright information. | Zapoznaj sie z plikiem czytaj_to.html.
 * Autorzy: bryn, DamYan, gigi, matc, szulcu | Testerzy: hippie
 */

$l['jakistekst'] = "Tutaj podaj tekst, ten co ma się wyświetlić.";
$l['jakistekstinny'] = "Tutaj podaj tekst, ten co ma się wyświetlić. Inny";
?>
2. Wrzucasz go do folderu english / polish.
3. Otwierasz plik, w którym ma być wykorzystany lang (jeśli chodzi o posty to showthread.php) chociaż ja polecam global.php (wtedy będzie wszędzie, gdzie użyjesz.
4. Szukasz:
Kod PHP:
$lang->load("global"); 
pod tym dodajesz:
Kod PHP:
$lang->load("plik"); 
5. Przechodzisz do szablonu, w którym chcesz użyć zmiennej z lang, i dodajesz (wzorowane na przykładowym pliku który stworzyliśmy) {$lang->jakistekst}
Ten jakistekst został wzięty z tego: $l['jakistekst'].
Można się też obyć bez modyfikacji oryginalnych plików - ta praktyka eliminuje problemy przy aktualizacji. Osiągniemy to przez stworzenie pluginu (styl.php w inc/plugins/) który załaduje plik językowy:
Kod PHP:
<?php

$plugins
->add_hook('global_start''styl_lang');

function 
styl_info ()
{
    return array(
        
'name'           => 'Styl - zmienne językowe',
        
'description'    => '',
        
'website'        => '',
        
'author'         => '-',
        
'authorsite'     => '',
        
'version'        => '1.0',
        
'guid'           => '',
        
'compatibility'  => '',
    );
}

function 
styl_activate () {
}

function 
styl_deactivate () {
}

function 
styl_lang () {
    global 
$lang;
    
$lang->load('styl'); // nazwa pliku językowego
}

?>
Hmm... To jest jednak inwazyjna metoda, tzn. muszę coś wstawić do pliku global.php, a ja nie chcę kompletnie ingerować w samo mybb. Inaczej po prostu w szablonie wstawiłbym polskie tłumaczenie, bez żadnych wczytywanych zmiennych i tyle. Nie da się tłumaczenia wczytać inaczej do szablonu?

Koniecznie muszę specjalny plugin pod styl pisać?
(23.02.2014, 00:30)Swordancer napisał(a): [ -> ]Koniecznie muszę specjalny plugin pod styl pisać?

Teoretycznie to nie musisz go pisać, bo Devilshakerz już to zrobił. Podajesz tam nazwę pliku lang.

Jak napisał, jest to najlepszy sposób.
I rozumiem jedyny? Szkoda, bo styl do którego specjalnie trzeba instalować jakiś mikro plugin tylko po to, aby wyświetlał poprawny dla języka tekst w przyciskach raczej nie wchodzi w grę. Chyba będę musiał zrobić jednak graficzne i po prostu wstawić w "polish" obrazki. Rozumiem, że aby dodać niestandardowy użyteczny szablon, to też muszę jakiś plugin pisać, lub w plikach grzebać?
(23.02.2014, 00:46)Swordancer napisał(a): [ -> ]I rozumiem jedyny? Szkoda, bo styl do którego specjalnie trzeba instalować jakiś mikro plugin tylko po to, aby wyświetlał poprawny dla języka tekst w przyciskach raczej nie wchodzi w grę.
Bez modyfikacji plików się nie obejdzie. Taki plugin ma znikomy wpływ na wydajność, więc moim zdaniem to lepsze rozwiązanie od dodawania czegoś do oryginalnych plików.

Możesz też dodać własne zmienne do istniejąctch już plików językowych (choć to też oryginalne pliki).

Cytat:Rozumiem, że aby dodać niestandardowy użyteczny szablon, to też muszę jakiś plugin pisać, lub w plikach grzebać?
Tak; w szablonach można dołączać tylko zmienne - te muszą być najpierw ustawione w plikach .php które te szablony wykorzystują.