<html>
<head>
    <title>Apache OpenOffice Support</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
    <style>
    @import url(/support/print.css);
    </style>
</head>
<body>
<h1 class="welcometitle">Sveiki! Čia „Apache OpenOffice“ pagalba</h1>

<p>
Sveiki apsilankę „Apache OpenOffice“ pagalbos svetainėje! Rinkitės jus dominančią temą:
<ul>
    <li>
        <a href="#community-support">Bendruomenės pagalba</a>
    </li>
    <li>
        <a href="#rtfm">Įrangos žinynas</a>
    </li>
     <li>
        <a href="#professional-services">Profesionalios paslaugos</a>
    </li>
    <li>
        <a href="#books">Knygos apie „Apache OpenOffice“</a>.
    </li>
   <li>
        <a href="#online-resources">Kiti žiniatinklio ištekliai</a>
    </li>
</ul>
</p>


    <a name="community-support" id="community-support"></a> 
    <span class="supporthead">„Apache OpenOffice“ bendruomenės pagalba </span>
    <div class="support">
        <ul>
            <li>
                <span class='title'>
                <a href="http://forum.openoffice.org/">„Apache OpenOffice“ bendruomenės forumas</a>
                </span>
                <br/>
                Pagrindinis „Apache OpenOffice“ naudotojų forumas. Itin naudinga ir rekomenduojama. Bendruomenės savanorių nemokamai teikiama pagalba.
            </li>
            <li>
                <span class='title'>
                <a href="http://openoffice.apache.org/mailing-lists.html#users-mailing-list-public">Naudotojų susirašinėjimo grupė</a>
                </span>
                &nbsp;(<a href="mailto:users-subscribe@openoffice.apache.org?subject=subscribe%20users">Užsisakyti</a> 
                / <a href="https://openoffice.apache.org/mailing-lists.html#users-mailing-list-public">Archyvai</a>)
                <br>
                Dar vienas bendruomeninės pagalbos kanalas, dalyvaujant viešojo susirašinėjimo grupėje. Norint matyti atsakymus į pateiktus klausimus, būtina užsisakyti. 
            </li>
            <li>
                <span class='title'>
                <a href="http://openoffice.apache.org/native-lang.html">„Apache OpenOffice“ susirašinėjimo grupės gimtosiomis kalbomis</a>
                </span>
                <br />
                Susirašinėjimo grupės keliomis gimtosiomis kalbomis.
            </li>
             <li>
            <span class='title'>
            <a href="http://qa.openoffice.org/issue_handling/pre_submission.html">Nesklandumų registras (pranešimai apie riktus)</a>
            </span>
            <br />
            Gera vieta įsitikinti, ar riktas jau žinomas. Ieškoti riktų gali visi, tačiau pranešti apie naują nesklandumą gali tik prisijungę naudotojai. <br /><em>Prierašas:</em> Įprastinės pagalbos geriau kreiptis forumuose arba susirašinėjimo grupėse. 
        </li>
		</ul>

    </div>
    
<a name="rtfm" id="rtfm"></a> 
<span class="supporthead">„Apache OpenOffice“ žinynas</span>
<div class="support">
    <ul>
        <li>
            <span class='title'>
            <a href="http://wiki.openoffice.org/wiki/Documentation">„Apache OpenOffice“ vikipedija: žinyno puslapis</a>
            </span>
            <br />
            DUK, naudojimo vadovėliai, patarimai, pamokėlės, diegimas ir t.t. Ypač rekomenduojama 
            savarankiškai pagalbos ieškantiems naujiems naudotojams.
        </li>
    </ul>
  </div>

 
   <a name="professional-services" id="professional-services"></a> 
    <span class='supporthead'>Profesionalios paslaugos</span>
    <div class="support">
        <p>On our <a href="/bizdev/consultants.html">Konsultantų puslapyje</a> vardijami fiziniai ir juridiniai asmenys, teikiantys su „Apache OpenOffice“ susijusias profesionalias paslaugas.</p>
 </div>

    <a name="books" id="books"></a> 
    <span class='supporthead'>Knygos apie „Apache OpenOffice“</span>
    <div class="support">
        <p>On our <a href="books.html">Knygų puslapyje</a> vardijama šūsnis knygų, parašytų įvairiomis „Apache OpenOffice“ temomis – tiek bendrajam, tiek ypatingajam išprusimui.</p>

   <a name="online-resources" id="online-resources"></a> 
    <span class='supporthead'>Žiniatinklio ištekliai</span>
    <div class="support">
        <p>Čia vardijamų tinklalapių „Apache OpenOffice“ projektas neprižiūri, tačiau juose skelbiama dalykų, kurie naudotojus galėtų sudominti.</p>
        <ul>
            <li>
                <span class='title'>
                <a rel="nofollow" href="http://www.oooforum.org/">(Netarnybinis) „Apache OpenOffice“ forumas – <em>šiuo metu veikia nepatikimai</em></a>
                </span>
                <br />
                Bendravimas visais „Apache OpenOffice“ klausimais 
            </li>
            <li>
                <span class='title'>
                <a rel="nofollow" href="http://www.tutorialsforopenoffice.org/">„Apache OpenOffice“ pamokėlės</a>
                </span>
                <br />
                Pamokėlės ir tiems, kurie mokosi, ir tiems, kurie moko dirbti su „Apache OpenOffice“
            </li>
            <li>
                <span class='title'>
                <a rel="nofollow" href="http://openofficeschool.org/">„Apache OpenOffice“ mokyklėlė</a>
                </span>
                <br />
                Nemokamos skaičiuoklės pamokos
            </li>
            <li>
                <span class='title'>
                <a rel="nofollow" href="http://www.8daysaweek.co.uk/openofficeorg.htm">„8 dienos per savaitę“</a>
                </span>
                <br />
                Bendroji pagalba „Apache OpenOffice“ naudotojams 
            </li>
            <li>
                <span class='title'>
                <a rel="nofollow" href="http://www.pitonyak.org/oo.php">Makrokomandų vadovėlis</a>
                </span>
                <br />
                „Apache OpenOffice“ makrokomandoms skirtas nemokamas vadovėlis 
            </li>

        </ul>
    </div>

</body>
</html>
