Sisukaart © 2016 www.panwagen.ee
( külastajaid 3, roboteid 2 )

Rif-i Mitmekeelsus toimetaja 4.2 uus

 

(tested with PHP8 & Typesetter 5.3)

Põhitekstide ja pluginate tekstide kasutaja poolt tõlkimine.

Google tõlke abiline

Suur kogus lippe. 

Keele valiku vidin ( koos paljude adminni pool valitavate küljendusvõimalustega).

Adminni keele valik (adminni keelt ja lehekülje keelt saab valida eraldi)

ja palju muud ...


Peaks töötama versioonides: Typesetter 5.0.3 ja Typesetter 5.1.0 (testitud Chrome ja Firefox veebisirvijatega)

Põhjalikumaid abitekste ei ole hetkel külge liidetud, kuid asi peaks olema suhteliselt intuitiivne.

Lisatud on kaks keelt, inglise ja eesti keel.

Plugin koos lippudega on veidi rohkem kui 4mb (pakituna)

Plugin on mitmekeelne, ning tekste saab tõlkida sinu valitud keelde kui on installitud plugin "Mitmekeelsus toimetaja".

Inglise keel vajab korrektuuri. Kui muudad tõlke faile või lisad mõne teise keele tõlke faili, palun saada mulle link nende tõlkefailideni siit 

Võimalused

Keelte kasutuselevõtu adminni leht (link->Keeled):

Vali keeled, mida soovid leheküljel kasutada.

Keelte nimekiri on sorditav ja näitab koodi, lippe, nimesid jne..
Saab valida adminni keeli ja/või avaliku lehekülje keeli eraldi.

540 keelt koos lippudega (25x15 px failinimed keele koodi järgi).
280 suuremat lisalippu, nimetatud riigi nime järgi ja sorditud pildisuuruste järgi kataloogidesse (16x16, 24x24, 32x32, 48x48, 64x64, 128x128)
Avaliku lehekülje keelt mäletatakse sessioonis.
Adminni keelt mäletatakse kasutaja failis.

Lehekülje keelevaliku vidina sätted (link->Vidina Sätted):
  • Näita keele nime;
  • Näita väikesi lippe
  • Näita suuri lippe
  • Näita väikesi lippe ja keele nimesid
  • Näita suuri lippe ja keele nimesid
  • Näita riigi koode
  • Näita keele koode
  • Näita horisontaalselt
  • Küljenda paremale
  • Suured tähed
  • Rasvane tekst
  • Teksti suurus (+/- 2px list)
  • Lipp raamitud
  • Lipp ringina
  • Lipp ovaalina
  • Lipule tekst alla
  • Suurte lippude suurused (16, 24, 32, 48, 64, 128)
  • Näita keelte nimekirja hüpikaknas (küljendatuna vasakule või paremale)
  • Näita vidina pealkirja
  • Näita valitud keelt ka nimekirjas (vaikimisi ei näidata valitud keelt nimekirjas)
  • Peida tõlkimata leheküljed menüüs (NB! Põhikeelsetel lehtedel on kõik menüülingid nähtaval. Spetsiaalseid lehti ja Väliseid linke ei peideta)
  • Kasuta küpsiseid (veebilehitseja jätab keele meelde)
  • Näita keelevalikut ka siis, kui tõlkelehekülg puudub UUS
  • Näita keelevalikut menüü ees UUS
  • Lisatud CSS UUS

PS! Vidinal on küljes otselingid administreerimiseks (hiirega peale minnes näitab linke .... sulge linkide aknake, et valida keelt).

MITMEKEELSUSE TOIMETAJA (link->Toimeta) :
  • Menüüde tabelites näidatakse lehekülgede silti/url-i ja menüüd, mille alla see on paigutatud. Kui klikid sinna, avaneb Muuda Nime/Andmeid hüpikaken.
  • Menüüde tabelites näidatakse ka Väliseid menüü linke ja Spetsiaalseid lehti nende sildi/url-i muutmiseks valitud keelte jaoks.
  • Eraldi alajaotus lehtede jaoks, mis ei asu üheski menüüs aga on tõlgitud (ainult tavalised lehed on nähtaval).
  • Tabelis "Keeled" link->Põhiline keel. Ehita menüüd ja Täiendava Sisu failid ümber, kui põhikeelt on muudetud (Kõik valitud põhikeele tõlkelehed lähevad menüüsse ja vana menüü lehed lingitakse tõlkelehtedeks. Täiendava sisu failid nimetatakse ümber. Pole tugevalt testitud!!)
  • Tabelis "Tõlgitud lehtede statistika" link->Tõlkimata leheküljed. Siit saab tõlkida lehekülgi, mis ei asu üheski menüüs. Spetsiaalseid lehti nimekirjas ei näidata.

 

Tõlke valikute hüpikaken:
  • Keele valik näitab ainult keeli, mis on valitud antud leheküljel kasutamiseks.
  • Pole võimalik valida lehekülgi, mis on kasutuses menüüdes.
  • Näitab menüüsid, kus leht on kasutuses ja põhikeelt.
  • Näitab lippe, lehe silti/url ja pealkirja pärast seda koos lingiga hüpikaknasse "Muuda Nime/Andmeid".
  • Võimalik kopeerida valitud lehekülg nimekirjast ja kirjutada talle silt/url ja pealkiri, et luua uus lehekülg. Kui lehed on eri keeltes aga sa tahad neile ühesugust pealkirja anda, siis muuda silti/url. (näiteks: pealkiri- "John", silt/url "John-et")
  • Võimalus eemaldada lehekülg tõlke nimekirjast ja ühtlasi see ka kustutada (kui lehekülg on pandud mõnda menüüsse, siis ei võimaldata seda kustutada).
  • Spetsiaalne lehekülg omab tekstitõlke linke all ribas, kui tõlgitavad tekstid on kättesaadavad.
  • Spetsiaalsete lehtede silt/url, pealkiri ja uus "Lisa URL-ile" (addToURL) on samuti tõlgitavad.
  • Välised menüülingid ja nende URL on samuti tõlgitavad.

 

KASUTAJA TÕLGETE TOIMETAJA (adminni leht)

Kasutaja tõlked lubavad tõlkida põhitekste ja pluginate tekste ükskõk millisesse keelde, mis on leheküljel kasutuses.
Võimalikud on samuti mõned tekstide otsingu ja filtreerimise võimalused.

Kõiki gpEasy/Typesetter-i tekste käsitletakse adminni tekstidena. Sa võid võtta märgistuse maha, et neid käsitletaks avalike lehekülgede tekstidena (seal on juba mõned vaikimisi seatud avalike lehekülgede tekstid nagu kontakti vormi tekstid, sisselogimise tekstid jms.).

Kui mingi plugin omab lehekülje tõlketekste siis need on tõlgitavad.

Kui mingil pluginal on "Mitmekeelsus toimetaja" valmidus ja see sisaldab adminni tõlgete faili, siis need on samuti tõlgitavad.

Kui mingi plugin ei oma ühtegi tõlgitavat teksti, Siia on ainukesed tõlkevõimalused alljärgnevad:

  • Nimi
  • Kirjeldus
  • Adminni lingi pealkiri (kui plugin omab seda)
  • Spetsiaalse lingi pealkiri (kui plugin omab seda)
  • Vidina pealkiri (kui plugin omab seda)
  • Sektsiooni tüübi pealkiri (kui plugin omab seda)

 

PS! gpEasy/Typesetter-i originaalne lehekülje tekstilt avanev kiirtõlke hüpikaken on asendatud "Mitmekeelsus toimetaja" aknaga, et salvestada mitmekeelseid tekste.

Lisatud erivõimalused:

LEHE HALDUR - MENÜÜDE TOIMETAJA:

Sealt saab lisada mitut Spetsiaalset lehte menüüdesse oma sildi/url, pealkirja ja uue "lisa url-ile"(addToURL) parameetriga. (muuda "Nime/Andmeid" dialoogi hüpikaknas).
NB! Tegin selle "Simple Blog" plugina jaoks. See võimaldab lisada mitut blogi kategooria lehte menüüsse. See on esialgu eksperimentaalne. Võipolla töötab too mõne teise pluginaga ka (töötab ainult kui "lisa url-ile (addToURL) väli on täidetud).
Uue lehekülje menüüsse lisamise dialoog omab nüüd uut alajaotust Spetsiaalsete lehtekülgede lisamiseks.

"Lisa Tõlge" link on lisatud ja näitab ka lippe (klikkide avaneb tõlke dialoogi hüpikaken)
Erinevad värvid Spetsiaalsete lehtede ja Väliste linkide eristamiseks .
Tõlkelehekülgede nähtavus ja kustutamine on sünkroniseeritud põhi keele lehekülgedega.

LEHEKÜLJE SEKTSIOONID:

Värvid ja grupeerimine sisalduva faili (include) dialooogi aknas.
Lisatud on valikud sisalduva faili (include) dialooogi aknas, et määrata sektsioone, mida soovime lisada. Tegin selle galeriide jaoks, mis ei sisalda olulisi tõlget vajavaid tekste. Kui muudame galeriid põhikeele leheküljel siis pole vaja tõlke leheküljel seda eraldi teha. Lisame lihtsalt põhikeele lehekülje faili teise keele leheküljele ja märgistame ainult galerii sektsiooni. Seda saab kasutada ka muudel juhtudel, kus on vaja näidata samu sektsioone mitmel leheküljel ja toimetada neid ühelt leheküljelt.
NB! Kui installid selle plugi ja tahad kasutada seda võimalust, pead uuesti salvestama oma leheküljed, et lisada nendes sisalduvatele sektsioonidele unikaalne ID ( Sisalduva faili ja Sektsioonimähkija sektsioonidele ei lisata unikaalset ID-d ja neid ei ole valikus).
Seal on lisatud parameeter ka Spetsiaalsete lehtede faili lisamiseks. See aga ei tööta veel (tuleviku töö).

Kui annad sektsioonile eraldi nime "private" siis see sektsioon on leheküljel nähtav ainult adminnidele. (Vahel soovivad teised lehe toimetajad mõningast abi, või on endale vaja väike meelespea lehe algusesse kribida)

Planeerimisel:

  • Varukoopia, importimine, exportimine ... Kõigi tekstitõlgete jaoks.
  • Kasutaja tõlgete allalaadimine (kui keegi on loonud mõne tõlke)
  • Lisa mõni kolmas keel tekstid võrdlemiseks, kui lood tõlkeid.
  • Lehekülje tõlgete hüpikaknas "Lehe Seaded", lisada võimalus - asenda tõlgitud lehe sisu valitud lehe sisuga nimekirjast (nagu umbes kopeerimise puhul).
  • Viia lõpuni mitme Spetsiaalse lehe lisamine menüüsse (praegu töötab ainult kui "lisa url-ile (addToURL) väli on täidetud).
  • Viia lõpuni Sisalduva faili sektsiooni dialoogis valik "Lisa parameetrid Spetsiaalse lehe jaoks".
  • Teha dialoogi aken "Lisa url-ile" (AddToURL) välja jaoks, sama ka Sisalduva faili sektsiooni dialoogis "Lisa parameetrid Spetsiaalse lehe jaoks" (pluginate arendajatele).
  • Lisada Sisalduva faili (include) sektsiooni dialoogi võimalus, et kopeerida kõik, või valitud sektsioonid eesolevale lehele.
  • Võib olla teha mõni lisavalik ka teistele Sisalduva faili (include) lisamistele (Täiendav Sisu and Vidinad).
  • Teha mitmekeelse sisestuse võimalus teksti väljadele, kus neid vaja võiks minna. (võimalik, et väike hüpik aken, kui klikkida väljal. Näiteks galeriide sektsioonis, pildi pealkirja väljalt, sisestada pealkiri kohe mitmes keeles).
  • Lisada väike adminnide jutukast, et näha kes on sisse loginud ja delekeerida toimetmise õigus.

 

LAADI ALLA

Kui võimalik, palun toeta :-)

rif-Multi_Language.zip

Kui laadisite või installisite selle plugina Typesetteri repositooriumist ja kui teil läheb vaja riigilippe suuruses 64x64 ja 128x128 siis võid need omale alla laadida . Paki lahti ja lisa need kataloogid ftp kaudu rif-Multi_Language lippude kataloogi.

rif-Multi_LanguageAdditionalFlags.zip

  

Installimine

Laadi alla. Kopeeri zip failis olev kataloog Typesetteri "addon" kataloogi oma serveris (ftp kaudu).  Installi "Mitmekeelsus toimetaja" pluginate halduses.

Kui originaalne "multilang" plugin on eelnevalt installitud siis tuleb teade "uninstall it first!".
Olemasolevad andmed peaksid varundatama ja imporditatama, kui kõik hästi läheb :-).


Käivita install uuesti.

  • Kui lisad mingi uue plugina, mis kasutab [WhichPage] Hook-i, siis selle hook-i nimekiri uuendatakse (mitmekeelsus plugin pannakse viimaseks).
  • Kui lisad mingi uue plugina, mis kasutab [GetMenuArray] Hook-i, siis selle hook-i nimekiri uuendatakse (mitmekeelsus plugin pannakse esimeseks).
  • Kui lisad mingi uue plugina, mis kasutab [SectionTypes] Hook-i, siis selle hook-i nimekiri uuendatakse (mitmekeelsus plugin pannakse viimasekst).

Vidinat saab lisada lehekülgede alusmallile - gpOutput::Get('Gadget','Language_Select'); (nagu originaal plugina puhul)


Tahad tõkida Täiendavat sisu lehekülgedel? Selleks vajame väikest muudatust gpEasy/Typesetter-i põhifailides.
See on automaatne protsess aga kui midagi peaks valesti minema saad teha seda käsitsi.

  • GpEasy ver 4 failis include/tool/gpOutput.php
  • Typesetter ver 5 failis include/tool/Output.php
Funktsioonis GetExtra( ...
asenda rida $name = str_replace(' ','_',$name); 
sellega
$name = str_replace(' ', '_', gpPlugin::Filter('ExtraContentFile', array($name)));

PS! See on uus Hook. Nüüd omab iga erinev keele lehekülg erinevat faili (näiteks. eesti lehtedele nimega 'Contact.-et', kui eesti keel pole valitud põhikeeleks )

NB! Kui uuendad gpEasy/Typesetter cms-i, siis uuendatakse ka plugina installi (Meil on vaja eelolev rida uuesti sisse kirjutada. Ei ole põhjalikult testitud).
Kui gpEasy/Typesetter-is tehakse koodi muudatusi tuleviku versioonides, siis see võib olla ei pruugi töötada. Sama kehtib mõningate HTML vormingus muudatuste puhul, mõningad adminni tõlked ei pruugi toimida.

Pluginate kirjutajatele

Rif-i mitmekeelsus toimetaja valmidusega plugina adminni tekstide tõlke klassi näide.
Tõlked toimivad ka ilma rif-i mitmekeelsus toimetajat installimata (kui muudad keelt Typesetteri konfiguratsioonist).

Laadi alla plugina näidis ExampleMultilagAddon.zip

////////// WRITE THIS CLASS AND FUNTIONS - make php file and put it to plugin folder (ex. TextAdmin.php):

class YourUniqueClassname_languages{
    
    ########## admin texts translation works without rif-multilang plugin ###########
    static function Translates($path){        
        global $config, $langmessage, $addonPathCode, $gpAdmin, $addon_current_id;         
        
        #### If you want to use translated admin texts on your visitor pages then close the following two lines
        if( common::loggedIn() )
            return: $path;
        ##

        if(!isset($langmessage[$addon_current_id])){
                
            $langsdir = $addonPathCode."/languages/";//do not change it
            $langmessage[$addon_current_id] = array();    
            $adminlang = $config["language"];
            
            ########## check if adminlang is set (If rif-multilang plugin is installed) ##############
            $users    = gpFiles::Get('_site/users');
            if(!empty($users[$gpAdmin['username']]['adminlang'])){
                $adminlang = $users[$gpAdmin['username']]['adminlang'];            
            }
                
            ########## rif-multilang plugin (change adminlang link) ###########
            if(isset($_GET['adminlang']))
                $adminlang = $_GET['adminlang'];
            
            ########## nclude default language file ############
            $langmessage[$addon_current_id] = self::PluginLangmessages($langsdir."en.main.inc");
                
            ############ overwrite default langfile  ###########
            if(file_exists($addonPathCode."/languages/".$adminlang.".main.inc")){                    
                $addlangmessages = self::PluginLangmessages($langsdir.$adminlang.".main.inc");
                $langmessage[$addon_current_id] = self::ThreeDimArray($addlangmessages, $langmessage[$addon_current_id]);
            }
        }
        
        return $path;
    }
    
    ############# plugin langmessage file include #########
    static function PluginLangmessages($Path){
        global $addon_current_id;
        
        $langmessage = array();
        include($Path);
        
        ########### Check langmessage pluginid key if exists #########
        if(isset($langmessage[$addon_current_id]) && is_array($langmessage[$addon_current_id]))
            $langmessage = $langmessage[$addon_current_id];
        
        return $langmessage;
    }
    
    static function ThreeDimArray($addlangmessages, $langmessages){
        
        foreach($addlangmessages as $key => $val){
            if(!is_array($val))
                continue;
        
            if(!isset($langmessages[$key]))
                $langmessages[$key] = array();
            $addlangmessages[$key] = $addlangmessages[$key]+$langmessages[$key];
            
            foreach($val as $_key => $_val){
                if(!is_array($_val))
                    continue;
                if(!isset($langmessages[$key][$_key]))
                    $langmessages[$key][$_key] = array();
                $addlangmessages[$key][$_key] = $addlangmessages[$key][$_key]+$langmessages[$key][$_key];                
            }
        
        }
        return $addlangmessages+$langmessages;
    }

nüüd lisa need read oma addon.ini faili:

[WhichPage]
script = 'TextAdmin.php';
method = 'YourUniqueClassname_languages::Translate'; 
Tõlke failid:

Asuvad plugina kattaloogis eraldi kohvris, languages/en.main.inc (see on vaikimisi põhikeel ja peab asuma seal), keelekood.main.inc, jne. (Palun ära muuda kataloogi nime ja failinimed peavad olema lancode.main.inc)
Failide character encoding peab olema utf-8 without bom.


Tõlkefaili sisu:

<?php
$langmessage = array(
    'Text' => 'TextTextText',
    'Your text 2' => 'TextTextText',      //etc.

 ########## NB! addissional adminlinks translation. If multilang plugin installed, we traslate this texts by javascript.
    "--ADMIN_LINKS--" => array(
        "--Plugin_Name--" => "your plugin label (ini file Addon_Name)",
        "--Plugin_About--" => "your plugin About text (ini file About)",
        "--MoreInfoLink--" => "http://yoursite.com",    
    //  "Admin_Link:Name_name (you find it on ini file [Admin_Link:Name_name])" => "translate label text",
    //  "Special_Link:name_name (you find it on ini file [Special_Link:Name_name] )" => "translate label text",
    //  "Gadget:Name_name (you find it on ini file [Gadget:Name_name] )" => "translate label text",
                    
    ####### NB! If You have Section content plugin (you maybe want translate its label)        
    //  "SectionType:your_type" => "Your Type Label",
        
               ######... add Section types hook to ini file: ###### 
               # //    [SectionTypes]
               # //    script = 'Script.php'
               # //    method = 'Class::SectionTypes'
               #
               ######... and make function, add type 'label' and traslate it    
               # // static function SectionTypes($section_types){
               # //        global $langmessage, $addon_current_id;
               #
               # //        $typelabel = "Default label";
               # //        if(isset($langmessage[$addon_current_id]["--ADMIN_LINKS--"]['SectionType:your_type'))
               #  //            $typelabel = $langmessage[$addon_current_id]["--ADMIN_LINKS--"]['SectionType:your_type'];
               #
               #  //        $section_types['section type'] = array('label' => $typelabel, 'color'=>'default color code is optional');
               #
               # //        return $section_types;
               # // }
    
    ),    
);

adminni tekst tuuakse skripti vahele:

    global $langmessage, $addon_current_id;
    echo $langmessage[$addon_current_id][text key];

või loo näiteks selline funksioon:

function LangMessages($key){
        global $langmessage, $addon_current_id;
         
        if(!isset($langmessage[$addon_current_id][$key]))
            return $key;
        
        return $langmessage[$addon_current_id][$key];
    }

    echo LangMessages("your admin text");
AVALIKE LEHEKÜLGEDE TÕLKE NÄIDE

Sa pead looma faili Text.php oma plugina kataloogi
ja looma sisu nagu see siin:

<?php
defined('is_running') or die('Not an entry point...');
$texts = array();
$texts[] = 'your text';
$texts[] = 'your other text and so on';

lisa see rida oma Addon.ini faili:

editable_text = 'Text.php'

neid tekste saab nähtavale tuua nii:

gpOutput::SelectText('your text value'); //##### only text display ####
gpOutput::GetAddonText('your text value %s', $html); //#### width translation link ($html replaces some text in translation string eg. $html = common::Link('some page','%s');) ####
Globaalsed muutujad

PHP:

    global $ml_object;
    if(isset($ml_object->lang)){
    //### without  message(), it show variables in message box
        $ml_object->lang; //### Primary language code
        $ml_object->language; //### Primary language (array) ['language name'], ['language name in english'], ['country name'], ['country code']

        message($ml_object->ml_lang); //### Selected language code
        message($ml_object->sel_language); //### Selected language array ['language name'], ['language name in english'], ['country name'], ['country code']

        message($ml_object->langs); //### All used langs (array) langcode => ['language name'], ['language name in english'], ['country name'], ['country code']
        
        //### Flags directory pathes
        $ml_object->flags .'/'.$ml_object->ml_lang.'.png'; //### small flags by language code            
        $ml_object->flagsCN .'/64/'.$ml_object->language['country name'].'.png'; //### bigger flags by Country Name - sizes 128 64 48 32 24 16 (not all langs have Country name)
        
        //### Other configs
        message($ml_object->config); //### all configs
        message($ml_object->titles); //###
        message($ml_object->lists); //### pages by index => langcode => info        
        message($ml_object->settings); //### Gadget settings
   }

JAVASCRIPT:

    //### All used languages
        var rifmultilang_languages = {"en":{"language name":"English","language name in english":"English","country name":"United Kingdom(Great Britain)","country code":"co.uk"},"et":{"language name":"Eesti","language name in english":"Estonian","country name":"Estonia","country code":"ee"}};
    //### Primary language code
        var rifmultilang_defaultlang = 'et';
    //### Selected language code
        var rifmultilang_selectedlang = 'en';
    //### Small flags dir (flags by language code)
        var rifmultilang_flags = '/addons/rif-Multi_Language/flags/iso639';
    //## Bigger flags dir (flags by country name)
        var rifmultilang_flagsCN = '/addons/rif-Multi_Language/flags/CountryName';

PS! Kui muudad oma plugina ID-d ja/või nime oma addon.ini. failis, siis pole tegemist enam sama pluginaga rif-i mitmekeelsus toimetaja jaoks.

PS! Kõik saadavad keeled (on paigutatud nüüd array-se)  

'langs' => array ('et' => array ('language name' => 'Eesti', 'language name in english' => 'Estonian', 'country name' => 'Estonia','country code' => 'ee', 'en' => array( ... etc.)

Mite kõik keeled ei oma riigi nime, koodi jms.. Kui soovid lisada mõnda keelt, vaata Languages.php faili. Lipud asuvad flags kataloogis (vaikimisi väikeste lippude failinimed on nimetatud keelekoodi järgi ja suured riigilipud inglisekeelse riiginime järgi.