<html>
<head>
    <title>Apache OpenOffice támogatás</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
    <style>
    @import url(/support/print.css);
    </style>
</head>
<body>
<h1 class="welcometitle">Üdvözöljük az Apache OpenOffice támogatás oldalán!</h1>

<p>
A hivatkozásokra kattintva az alábbi részekre juthat el:
<ul>
    <li>
        <a href="#rtfm">Termék dokumentáció</a>
    </li>
    <li>
        <a href="#community-support">Közösségi támogatás</a>
    </li>
     <li>
        <a href="#professional-services">Professzionális szolgáltatások</a>
    </li>
    <li>
        <a href="#books">Könyvek az OpenOffice programról</a>
    </li>
   <li>
        <a href="#online-resources">Egyéb online források</a>
    </li>
</ul>
</p>

<a name="rtfm" id="rtfm"></a> 
<span class="supporthead">OpenOffice dokumentáció</span>
<div class="support">
    <ul>
        <li>
            <span class='title'>
            <a href="http://wiki.services.openoffice.org/wiki/Documentation" target="_blank">OpenOffice Wiki: dokumentációs terület</a>
            </span>
            <br />
            FAQ/GYIK (Gyakran Ismételt Kérdések), felhasználói útmutatók, Hogyan kell tippek, példák, telepítési információk, stb.
            Új felhasználók önfejlesztésének első lépéseként nagyon ajánlott.
        </li>

        <li>
            <span class='title'>
            <a href="http://qa.openoffice.org/issue_handling/pre_submission.html" target="_blank">Kiadás követő (hibajelentés, hibakeresés)</a>
            </span>
            <br />
            A legjobb hely arra, hogy ellenőrízze, hogy az Ön által észlelt hiba ismert-e már.
            Bárkinek lehetősége van a hibakeresésre, de új hiba jelentéséhez regisztrálni kell.
        </li>
    </ul>
    

    <a name="community-support" id="community-support"></a> 
    <span class="supporthead">OpenOffice közösségi támogatás</span>
    <div class="support">
        <ul>
            <li>
                <span class='title'>
                <a href="http://user.services.openoffice.org/" target="_blank">Apache OpenOffice Közösségi Fórum</a>
                </span>
                <br/>
                Az OpenOffice felhasználók elsődleges fóruma - rendkívül hasznos és ajánlott.
                Ingyenes támogatás a közösségben lévő önkéntesektől.
            </li>
            <li>
                <span class='title'>
                Felhasználói levelelező lista
                </span>
                &nbsp;(<a href="mailto:users-subscribe@openoffice.apache.org?subject=subscribe%20users">Feliratkozás</a> 
                / <a href="https://openoffice.apache.org/mailing-lists.html#users-mailing-list" target="_blank">Archívum</a>)
                <br>
                Egy másik közösségi támogatási lehetőség nyilvános levelező listán keresztül.
                Fel kell iratkoznia a listára, ha látni szeretné az Ön által feltett kérdéskre a közösség által adott válaszokat.
            </li>
            <li>
                <span class='title'>
                <a href="http://openoffice.apache.org/native-lang.html" target="_blank">Apache OpenOffice anyanyelvi levelező listák</a>
                </span>
                <br />
                Levelező listák számos különböző nyelven.
            </li>

    </div>

 
   <a name="professional-services" id="professional-services"></a> 
    <span class='supporthead'>Professzionális szolgáltatások</span>
    <div class="support">
        <p>A <a href="/bizdev/consultants.html" target="_blank">konzultánsok oldalán</a> található listában magánszemélyek és cégek kínálnak az OpenOffice programmal kapcsolatos professzionális szolgáltatásokat.</p>
 </div>

    <a name="books" id="books"></a> 
    <span class='supporthead'>Könyvek az OpenOffice programról</span>
    <div class="support">
        <p>A <a href="/support/books.html" target="_blank">könyvek oldalán</a> OpenOffice témakörben írt számos könyv felsorolását találja, általános és szakosodott felhasználásra egyaránt.</p>

   <a name="online-resources" id="online-resources"></a> 
    <span class='supporthead'>Egyéb online források</span>
    <div class="support">
        <p>A következő weboldalak nem az Apache OpenOffice projekt gondozása alatt állnak, de témájuk és tartalmuk miatt a felhasználók érdeklődésére tarthatnak számot.</p>
        <ul>
            <li>
                <span class='title'>
                <a rel="nofollow" href="http://www.oooforum.org/" target="_blank">A (nemhivatalos) OpenOffice fórum</a>
                </span>
                <br />
                Nemhivatalos fórum az OpenOffice programmal kapcsolatos minden kérdés megvitatására.  
            </li>
            <li>
                <span class='title'>
                <a rel="nofollow" href="http://www.tutorialsforopenoffice.org/" target="_blank">Gyakorlófeladatok OpenOffice programra</a>
                </span>
                <br />
                Gyakorlófeladatok bárkinek, aki tanulja vagy tanítja az OpenOffice programot.
            </li>
            <li>
                <span class='title'>
                <a rel="nofollow" href="http://openofficeschool.org/" target="_blank">OpenOfficeSchool.org</a>
                </span>
                <br />
                (OpenOfficeIskola) Ingyenes Calc leckék.
            </li>
            <li>
                <span class='title'>
                <a rel="nofollow" href="http://www.8daysaweek.co.uk/openofficeorg.htm" target="_blank">8daysaweek</a>
                </span>
                <br />
                (8napegyhét) Általános segítség OpenOffice felhasználóknak. 
            </li>
            <li>
                <span class='title'>
                <a rel="nofollow" href="http://www.pitonyak.org/oo.php" target="_blank">Macro útmutató</a>
                </span>
                <br />
                Ingyenes OpenOffice macro útmutató. 
            </li>

        </ul>
    </div>

</body>
</html>
