<?php 
// authors should fill in these assignments:
$directory = 'articles/inline-bidi-markup/'; // the directory path below /International up to but not including the file name: must end in a slash! 
$filename = 'Overview'; // the file name WITHOUT extensions
$topicIndex[] = 'direction'; // anchor of appropriate place in /International/articlelist
$techIndex[] = 'authoring-html#direction'; // path after /International/techniques/ to the appropriate place in a techniques page
$techIndex[] = 'authoring-xml#direction'; // path after /International/techniques/ to the appropriate place in a techniques page
$techIndex[] = 'authoring-svg#direction'; // path after /International/techniques/ to the appropriate place in a techniques page
$techIndex[] = 'developing-schemas#direction'; // path after /International/techniques/ to the appropriate place in a techniques page
$authors = 'Richard Ishida, W3C'; // author(s) and affiliations
$modifiers = ''; // people making substantive changes, and their affiliation
$searchString = 'article-inline-bidi-markup'; // blog search string - usually the filename without extensions
$firstPubDate = '2003-09-29'; // date of the first publication of the document (after review)
$lastSubstUpdate = '2009-05-08  19:48';  // date of last substantive changes to this document
$pathtophp = '../../php'; // authors should check that the following points to /International/php - must be relative path

// authors AND translators should fill in these assignments:
$clang = 'en'; // the language extension for articles in this language (use 'en' for English)
$isTranslation = 'no';  // set to 'yes' if this is a translation !
$copyrightYear = '2003-2009'; // this year, but may also be a range, eg. 2002-2006
$thisVersion = '2009-05-08  19:48'; // date of latest edits to this document/translation

// translators should fill in these assignments:
$translators = 'xxxNAME, ORG'; // translator(s) and their affiliation - a elements allowed, but use double quotes for attributes
$enVersion = 'xxxYYYY-MM-DD';  // date of the English original on which the translation is based (see last substantive change date at bottom of file)

$additionalLinks = <<<eot
eot;
include($pathtophp.'/bp2/structure.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="<?php echo $clang;?>" xml:lang="<?php echo $clang;?>" xmlns="http://www.w3.org/1999/xhtml">
<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>W3C I18n article: Co należy wiedzieć o algorytmie bidi i znacznikach</title>
		<meta name="keywords"
		content="i18n internationalisation internationalization localisation localization translation bidi bidirectional arabic hebrew unicode markup dir tag bdo tag rtl ltr rlm lrm" />
		<meta name="description"
		content="Provides background on the Unicode bidirectional algorithm and inline markup to help you implement Arabic, Hebrew and other right-to-left languages in markup." />
<?php echo $headincludes;?>
<!--link rel="stylesheet" href="/International/style/article-standards.css" /-->
<style type="text/css" media="all">
#logical-visual td { text-align: left; padding-left: 3px;  }
</style>
</head>

	<body bgcolor="white">
		<span id="version-info" style="display: none;"><!-- #BeginDate format:IS1m -->2010-01-11  9:25<!-- #EndDate --></span> <?php echo $topOfPage; ?>

		<h1>Co należy wiedzieć o algorytmie bidi i znacznikach</h1>
		<div id="navigation"> 
			<p><?php echo $onthispage?><a href="#definitions" title="Definitions" accesskey="n">Definicje</a>&nbsp;-
				<a href="#visual" title="Visual versus logical order in Hebrew.">Wizualny kontra logiczny</a>&nbsp;-
				<a href="#how" title="Basic features of the bidirectional algorithm.">Jak działa algorytm</a>&nbsp;-
				<a href="#where" title="Instances where the bidi algorithm needs the help of markup.">Gdzie algorytm potrzebuje pomocy</a>&nbsp;-
				<a href="#override" title="How to override the bidi algorithm.">Obejście algorytmu</a>&nbsp;- <?php echo $readingLink?></p>
		</div>
		<div class="section"><a id="contentstart" name="contentstart" tabindex="1"></a> 
			<div id="audience"> 
				<p><?php echo $intendedAudience?> twórcy treści pracujący ze skryptami, koderzy XHTML/HTML (używający edytorów, lub skryptowania), twórcy skryptów (PHP, JSP, etc.), twórcy schematów (DTDs, XML Schema, RelaxNG, itd.), i każdy kto ma problemy ze znacznikami mieszanych tekstów arabskich i łacińskich.. </p>
			</div>
			<p>Przewodnik na początku opisuje podstawowe zasady działania dwukierunkowego algorytmu Unicode. Potem opisane są bardziej powszechne scenariusze, w których algorytm bidi wymaga dodania odpowiednich znaczników, lub kodów kontrolnych.</p>
			<p>Mimo, iż staramy się tu uniezależnić od znaczników, większość przykładów opiera się na XHTML, ponieważ jest on łatwo rozpoznawany. Aby uzyskać porady odnośnie konkretnego języka znaczników zobacz boczny pasek.</p>
		</div>
		<div class="section"> 

			<h2><a id="definition" name="definition" tabindex="1">Definicje</a></h2>
			<p><span class="newterm">Dwukierunowy tekst </span> jest powszechny w skryptach pisanych od prawej strony do lewej, jak np. w arabskim, hebrajskim, lub syryjskim. W skryptach tych używane są także inne języki.</p>
			<p>Każdy wkomponowany tekst ze skryptu od lewej do prawej i wszystkie liczby pisane i czytane są od <em>llewej do prawej</em> w tekście ogólnie napisanym od prawej do lewej. (Oczywiście, angielski tekst na tej stronie zawiera także tekst dwukierunkowy zawierający arabskie i hebrajskie przykłady.)</p>
			<p>Termin <span class="newterm">bidi</span> jest użwany w znaczeniu 'dwukierunkowy'. Będziemy także używać <span class="newterm">RTL</span> jako 'z prawej do lewej' i <span class="newterm">LTR</span> jako 'z lewej do prawej'.</p>
		</div>
		<div class="section"> 

			<h2><a id="visual" name="visual">Kolejność wizualna kontra logiczna</a></h2>
			<p><span class="newterm">Wizualna kolejność</span> tekstu była powszechnym sposobem reprezentowania hebrajskiego w HTML przez użytkowników, którzy nie korzystali z algorytmu bidi Unicode. Z przyzwyczajenia jest ona jeszcze do pewnego stopnia używana. Znaki, które tworzył tekst były zgromadzone w kodzie źródłowym w tej samej kolejności w jakiej widzi się je na ekranie czytając od lewej do prawej.</p>
			<p>Na przykład, zastosujmy hebrajski tekst z wymieszaną kierunkowością. Strzałki w poniższym tekscie pokazują kierunek czytania.</p>
			<div class="sidenoteGroup">
				<blockquote title="Hebrew: 'Internationalization Activity, W3C'" lang="he" xml:lang="he"> <a href='samples/html.php?markup=&lt;p dir=&quot;rtl&quot; title=&quot;Hebrew for Internationalization Activity, W3C&quot; lang=&quot;he&quot; xml:lang=&quot;he&quot;&gt;פעילות הבינאום, W3C&lt;/p&gt;' target="text"><img src="images/hebrew-i18n-activity.gif" alt="Hebrew for 'Internationalization Activity, W3C'" /></a> </blockquote>
				<div class="sidenote">
					<p>Przykłady w tym dokumencie pokazywane są jako obrazki aby uniknąć problemów z poprwanym wyświetlaniem bidi.</p>
					<p>Kliknij w obrazek aby zobaczyć właściwy tekst.</p>
					<p>Z podobnych powodów arabski i hebrajski tekst nie pojawia się również w próbce kodu, ale także ponieważ <a href="http://www.w3.org/TR/i18n-html-tech-bidi/#d2e283">edytory mogą różnie wyświetlać tekst</a>. Aby zobaczyć kompletny kod kliknij [live code] i zobacz źródło wyświetlnoej strony.</p>
				</div>
			</div>
			<p>Gdyby spojrzeć na te znaki z pamięci, jeden po drugim, można by zobaczyć taki układ dla logicznego i wizualnego układu kolejności znaków.</p>

			<table id="logical-visual" style="page-break-before: always;">
				<tr>
					<th colspan="2">Kolejność logiczna</th>
					<th colspan="2">Kolejność wizualna</th>
				</tr>
				<tr>
					<td>05E4 </td>
					<td>פ HEBRAJSKA LITERA PE</td>
					<td>0057</td>
					<td>W WIELKA ŁACIŃSKA LITERA W</td>
				</tr>
				<tr>
					<td>05E2 </td>
					<td>ע HEBRAJSKA LITERA AYIN</td>
					<td>0033</td>
					<td>3 CYFRA TRZY</td>
				</tr>
				<tr>
					<td>05D9</td>
					<td> י HEBRAJSKA LITERA YOD</td>
					<td>0043</td>
					<td>C WIELKA ŁACIŃSKA LITERA C</td>
				</tr>
				<tr>
					<td>05DC </td>
					<td>ל HEBRAJSKA LITERA LAMED</td>
					<td>0020</td>
					<td>&nbsp; SPACJA</td>
				</tr>
				<tr>
					<td>05D5</td>
					<td>ו HEBRAJSKA LITERA VAV</td>
					<td>002C</td>
					<td>, PRZECINEK</td>
				</tr>
				<tr>
					<td>05EA</td>
					<td>ת HEBRAJSKA LITERA TAV</td>
					<td>05DD</td>
					<td>ם OSTATNIA HEBRAJSKA LITERA MEM</td>
				</tr>
				<tr>
					<td>0020</td>
					<td>&nbsp; SPACJA</td>
					<td>05D5</td>
					<td>ו HEBRAJSKA LITERA VAV</td>
				</tr>
				<tr>
					<td>05D4</td>
					<td>ה HEBRAJSKA LITERA HE</td>
					<td>05D0</td>
					<td>א HEBRAJSKA LITERA ALEF</td>
				</tr>
				<tr>
					<td>05D1</td>
					<td>ב HEBRAJSKA LITERA BET</td>
					<td>05E0</td>
					<td>נ HEBRAJSKA LITERA NUN</td>
				</tr>
				<tr>
					<td>05D9</td>
					<td>י HEBRAJSKA LITERA YOD</td>
					<td>05D9</td>
					<td>י HEBRAJSKA LITERA YOD</td>
				</tr>
				<tr>
					<td>05E0</td>
					<td>נ HEBRAJSKA LITERA NUN</td>
					<td>05D1</td>
					<td>ב HEBRAJSKA LITERA BET</td>
				</tr>
				<tr>
					<td>05D0</td>
					<td>א HEBRAJSKA LITERA ALEF</td>
					<td>05D4</td>
					<td>ה HEBRAJSKA LITERA HE</td>
				</tr>
				<tr>
					<td>05D5</td>
					<td>ו HEBRAJSKA LITERA VAV</td>
					<td>0020</td>
					<td>&nbsp; SPACJA</td>
				</tr>
				<tr>
					<td>05DD</td>
					<td>ם OSTATNIA HEBRAJSKA LITERA MEM</td>
					<td>05EA</td>
					<td>ת HEBRAJSKA LITERA TAV</td>
				</tr>
				<tr>
					<td>002C</td>
					<td>, PRZECINEK</td>
					<td>05D5</td>
					<td>ו HEBRAJSKA LITERA VAV</td>
				</tr>
				<tr>
					<td>0020</td>
					<td>&nbsp; SPACJA</td>
					<td>05DC</td>
					<td>ל HEBRAJSKA LITERA LAMED</td>
				</tr>
				<tr>
					<td>0057</td>
					<td>W LATIN CAPITAL LETTER W</td>
					<td>05D9</td>
					<td>י HEBRAJSKA LITERA YOD</td>
				</tr>
				<tr>
					<td>0033</td>
					<td>3 CYFRA TRZY</td>
					<td>05E2</td>
					<td>ע HEBRAJSKA LITERA AYIN</td>
				</tr>
				<tr>
					<td>0043</td>
					<td>C WIELKA ŁACIŃSKA LITERA C</td>
					<td>05E4</td>
					<td>פ HEBRAJSKA LITERA PE</td>
				</tr>
			</table>
			 
		  <!--<blockquote lang="he" xml:lang="he"> 
			 <pre>W3C, פעילות הבינאום</pre></blockquote>-->
			<p>Powyższa kolejność odzwierciedla także kolejność pisania, więc Hebrajski tekst byłby pisany od końca.</p>
			<p>Wizualna kolejność prawie nie występuje w arabskim. Ponieważ arabskie litery łączą się z sobą, istnieje silniejsza motywacja po stronie arabskich użytkowników aby korzystać z kolejności logicznej.</p>
			<p> Wizualna kolejność tekstu wymaga wyłączenia funkcji zawijania wierszy i i włączenie funkcji akapit z prawej, szczególnie w tabelach. Potem tekst musi być tak zakodowany, aby zapobiec uruchomieniu algorytmu bidi Unicode w późniejszych podglądach. Oto przykład w HTML:</p>
			<blockquote> 
				<pre>&lt;table width="50%"&gt;&lt;tr&gt;&lt;td align="right" nowrap&gt;
<bdo dir="ltr">,INRIA-מ הפוריאב החראה יתוריש תא הפילחמ W3C&lt;br&gt;</bdo>
<bdo dir="ltr">W3C-ל רשפאמ יונישה .ERCIM-ל ,תפרצב תמקממ&lt;br&gt;</bdo>
<bdo dir="ltr">הרימש ךות ,הפוריא יבחרב רקחמה ירשק תא קימעהל&lt;br&gt;</bdo>
<bdo dir="ltr">ידסייממ דחא ,INRIA םע קזחה ירוטסיהה רשקה לע&lt;br&gt;</bdo>
<bdo dir="ltr">.2003 ראוניל 1 ב עצבתי יונישה .ERCIM</bdo>
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</pre>

			</blockquote>
			<p>(Właściwie jest to całkiem proste użycie. Można też na przykład znaleźć takie rzeczy jak paragrafy z akapitem z prawej przy użyciu znaczka
				<code>&lt;nobr&gt;..&lt;/nobr&gt;</code> w każdej linii. Jeśli Twoje okno jest zbyt wąskie początek każdej linii znika z prawej strony przeglądarki.)</p>
			<div class="sidenoteGroup"> 
				<p>Wynikiem tego jest bardzo delikatny kod, który trudno utrzymać. Na przykład, poza trudnością zapisu tekstu hebrajskiego, jeśli chce się dodać kilka słów w drugiej linii paragrafu, trzeba dopasować koniec każdego wiersza. Trzeba też dodać i utrzymać oddzielne rozpiętości linków i znaczniki emfazy dla każdej części tekstu, która wyszła na następną linię.</p>
				<div class="sidenote">Kolejność wizualna może też spowodować problemy wyższego rzędu. Na przykład, kolejność kolumn w tabeli musi być ręcznie zmieniana w przypadku tłumaczenia na inny język. Jeśli zmieni się też geometria strony, zmienione muszą być także końce wiersza. I tak dalej.</div>
			</div>
			<p><span class="newterm">Kolejność logiczna</span> to o wiele lepsze podejście. W tym podejściu tekst jest przechowywany w pamięci w kolejności, w której jest pisany (i wymawiany). Dwukierunkowy algorytm Unicode sam przestawia kolejność aby poprawnie wyświetlać tekst.</p>
			<p>Sprawia to, że tworzenie długich paragrafów ciągłego tekstu jest banalnie proste, bo tekst jest automatycznie zawijany. Łatwiejsze staje się też używanie czytników ekranu.</p>
			<p>Algorytm bidi działa na tekście o logicznej kolejności. Jeśli wolisz kolejność wizualną (graficzną) to możesz na tym już poprzestać, chociaż mógłbyś znacznie ułatwić sobie życie stosując kolejność logiczną.</p>
		</div>
		<div class="section"> 

			<h2><a id="how" name="how" tabindex="1">Jak działa algorytm</a></h2>
			<p>W obecnym dokumencie przedstawiamy podstawowe, ważne wiadomości dotyczące algorytmu. Nawet jeśli tekst ten wydaje się nudny, czytaj dalej, bo bez zrozumienia podstaw możesz się później pogubić ze znacznikami.</p>
			<div class="section2">
				<h3><a href="#context" name="context" id="context2">Podstawowy kierunek (kontekst kierunkowy)</a></h3>
				<p>Rezultat algorytmu dwukierunkowego zależy od <span class="newterm">podstawowego kierunku</span> paragrafu, lub strony, na której jest używany. Podstawowy kierunek określa kontekst kierunkowy, do którego odnosi się algorytm bidi w różnych miejscach aby zdecydować jak poradzić sobie z tekstem.</p>
				<p>W XHTML podstawowy kierunek jest albo ustawiany ręcznie przez najbliższy element używający atrybutu <span class="kw">dir</span>, albo, w przypadku braku takiego atrybutu,  jest dziedziczony po domyślnym ustawieniu kiedrunku tekstu w dokumencie, czyli od lewej do prawej.</p>
				<p>Aby ustawić domyślny kierunek całego dokumentu XHTML na z prawej do lewej dodaj <code>dir=&quot;rtl&quot;</code> do tagu<span class="kw">html</span>. Będzie to oznaczało, że wszystkie elementy dokumentu odziedziczą kierunek od lewej do prawej, chyba że zostanie użyty artybut<span class="kw">dir</span> na elemencie w celu zmiany kierunku w obrębie tego elementu.</p>
			</div>
			<div class="section2"> 

				<h3><a href="#typing" name="typing" id="typing">Znaki i kierunek pisania</a></h3>
				<p>Wiemy już, że ciąg łacińskich znaków jest wyświetlany jeden po drugim od lewej do prawej (możemy to zaobserwować w poniższym akapicie). Z drugiej strony, algorytm bidi wyświetli ciąg arabskich i hebrajskich znaków jeden po drugim od prawej do lewej.</p>
				<blockquote><a href='samples/html.php?markup=&lt;p&gt;Egypt&lt;/p&gt;&lt;p&gt;مصر&lt;/p&gt;' target="text"><img src="images/directional-typing.gif" alt="Examples of directionally typed words." /></a></blockquote>
				<p>Jest to niezależne od obecnego podstawowego kierunku pisania i działa ponieważ w Unicode każdy znak ma przypisaną kierunkowość. Większość liter jest <span class="newterm">pisanych </span>LTR. Litery pisane w tekstach od prawej do lewej mają określony kierunek RTL.</p>
			</div>
			<div class="section2">
				<h3><a href="#directionalruns" name="directionalruns" id="directionalruns">Ciągi kierunkowe</a></h3>
				<p>Kiedy w jednym wersie miesza się tekst o różnych kierunkach algorytm bidi wyświetla każdy ciąg sąsiadujących znaków tak samo jak wyświetlił by oddzielny <span class="newterm">ciąg znaków</span>. </p>
				<p>Tak więc w poniższym przykładzie są trzy ciągi kierunkowe:</p>
				<blockquote><a href='samples/html.php?markup=<p>bahrain <span lang="ar" xml:lang="ar" title="Means egypt">مصر</span> kuwait</p>' target="text"><img src="images/ltr-directional-runs.gif" alt="Left-to-right ordered directional runs: bahrain مصر kuwait." /></a></blockquote>
				<p>Można spojrzeć na to również tak, że zmiana kierunku określa granicę ciągu kierunkowego.</p>
					<p>Zauważ, że nie potrzeba żadnych znaczników czy specjalnego stylu aby to działało.</p>
					<p>Jeszcze jedna ważna informacja: kierunek, w którym ciąg kierunkowy zostanie wyświetlony na stronie <em>zależy od obecnego podstawowego kierunku</em>.</p>
				<p>W powyższym przykładzie, który ma ogólny kontekst (kierunek podstawowy) LTR raczej powinno się przeczytać najpierw 'bahrain', potem '<span title="Means: 'egypt'" lang="ar" xml:lang="ar">مصر</span>', a potem 'kuwait'. </p>
					<p>Jeśli zmianisz kontekst kierunkowy powyższego przykładu określając element <span class="kw">html</span> lub blok jako RTL zobaczysz to:</p>
				<blockquote><a href='samples/html.php?markup=<p dir="rtl">bahrain <span lang="ar" xml:lang="ar" title="Means egypt">مصر</span> kuwait</p>' target="text"><img src="images/rtl-directional-runs.gif" alt="Right-to-left ordered directional runs: bahrain مصر kuwait." /></a></blockquote>
				<p>Znaki w obu wersach przechowywane są w pamięci w dokładnie taki sam sposób, ale kolejność wyświetlania ciągów jest odwrócona.</p>
			</div>
			<div class="section2"> 

				<h3><a href="#neutrals" name="neutrals" id="neutrals">Znaki neutralne</a></h3>
				<p>Spacje i znaki interpunkcyjne nie mają form LTR I RTL w Unicode, bo mogą być używane w każdym typie skryptu. Dlatego są klasyfikowane jako <span class="newterm">neutralne</span>.</p>
				<p>I tu zaczyna się robić interesująco. Kiedy algorytm bidi napotka znaki z neutralnymi cechami (takie jak spacje i znaki interpunkcyjne) ustala jak je potraktować na podstawie otaczających je znaków.</p>
				<p>Neutralny znak znajdujący się pomiędzy dwoma znakami pisanymi w tym samym kierunku przyjmie ten sam kierunek. Więc neutralny znak pomiędzy dwoma znakami RTL będzie traktowany jako znak RTL i będzie miał efekt <em>przedłużenia serii o tym samym kierunku pisania</em>. Dlatego trzy arabskie słowa (oddzielone neutralnymi znakami) w tym zdaniu czytane są od prawej do lewej jako jedna seria kierunkowa. (Strzałki pokazują kierunek czytania.)</p>
				<blockquote><a href='samples/html.php?markup=<p>The title is <span lang="ar" xml:lang="ar">مفتاح معايير الويب</span> in Arabic.</p>' target="text"><img src="images/neutrals-basic.gif" alt="Arabic words in an English sentence: The title is مفتاح معايير الويب in Arabic." /></a></blockquote>
				<p>Zauważ, ze dalej niepotrzebne są znaczniki i poprawki stylistyczne. I nadal są tu trzy serie kierunkowe.</p>
				<p>Interesujące zachowanie pojawia się wtedy gdy neutralny znak znajduje się pomiędzy dwoma znakami o <em>różnych</em>
					kierunkach. W takim wypadku neutralny znak będzie traktowany jakby miał kierunek taki sam jak ogólny kierunek paragrafu lub kontekstu. Ma to efekt tworzenia granicy pomiędzy <em>seriami kierunkowymi</em>.					</p>
				<p>Nawet jeśli jest kilka neutralnych znaków pomiędzy dwoma typami znaków, będą one traktowane w taki sam sposób.</p>
				<p>Wszystkie implikacje tych zmian staną się jasne gdy będziemy je omawiali przykładach w następnej sekcji.</p>
			</div>
			<div class="section2">
				<h3><a href="#numbers" name="numbers" id="numbers">Cyfry</a></h3>
				<p>Cyfry w skryptach RTL są w kolejności od lewej do prawej w obrębie serii pisanej od prawej do lewej, ale algorytm bidi radzi sobie z nimi trochę inaczej niż ze słowami. Mówi się, że cyfry mają <span class="newterm">słabą kierunkowość</span>. Poniższe dwa przykłady ilustrują tę różnicę.</p>
				<blockquote><a href='samples/html.php?markup=<p>one two ثلاثة 1234 خمسة </p><p>one two ثلاثة ١٢٣٤ خمسة </p>' target="text"><img src="images/digits.gif" alt="one two ثلاثة 1234 خمسة  AND  one two ثلاثة ١٢٣٤ خمسة" /></a></blockquote>
<p>Pierwszy przykład używa Europejskich cyfr "1234", a drugi wyraża te same cyfry używając arabsko-Indyjskich cyfr ١٢٣٤. W obu przypadkach cyfry czytane są od lewej do prawej.</p>
				<p>Ponieważ cyfry mają słabą kierunkowość, cyfry postrzegane są jako część Aabskiego tekstu, więc dwa arabskie słowa, które otaczają cyfry traktowane są jako część tego samego ciągu kierunkowego mimo iż sekwencja cyfr pokazywana jest od lewej do prawej na ekranie.</p>
				<p>Zauważ także, że tak jak cyfry, niektóre inne znaki jak na przykład symbole walut będą traktowane raczej jako numer a nie znak neutralny.</p>
			</div>
		</div>
		<div class="section"> 

			<h2><a id="where" name="where">Gdzie algorytm potrzebuje pomocy</a></h2>
			<p>W większości sytuacji algorytm bidi poradzi sobie z tekstem bez żadnych specjalnych znaczników, czy innej pomocy dzięki ogólnemu kierunkowi dokumentu. Jednak trzeba mieć wyjątkowe szczęście, żeby zawsze się to udawało.</p>
			<div class="section2"> 

				<h3><a href="#misplaced" name="misplaced" id="misplaced">Przemieszczone znaki neutralne</a></h3>
				<p>Neutralne znaki pomiędzy dwoma ciągami kierunkowymi mogą czasem zostać źle zinterpretowane. Napiszmy znak interpunkcyjny na końcu arabskiej frazy w ostatnim przykładzie. Zgodnie z ustawieniami domyślnymi otrzymamy taką serię:</p>
				<blockquote><a href='samples/html.php?markup=<p>The title is "مفتاح معايير الويب!" in Arabic.</p>' target="text"><img src="images/exclamation-wrong.gif" alt="An exclamation mark appearing to the right of Arabic text." /></a></blockquote>
				<p>Cudzysłów jest na porządku, ale wykrzyknik jest na złym miejscu. Powinien być na końcu arabskiego tekstu, czyli z lewej, tak jak tu:</p>
				<blockquote><a href='samples/html.php?markup=<p>The title is "<span dir="rtl">مفتاح معايير الويب!</span>" in Arabic.</p>' target="text"><img src="images/exclamation-right.gif" alt="An exclamation mark appearing to the left of Arabic text." /></a></blockquote>
				<p>Biorąc pod uwagę działanie algorytmu bidi wiemy czemu tak się stało. Ponieważ wykrzyknik był pomiędzy ostatnim znakiem RTL 'ب' (z lewej) i literą LTR “p”(wyrazu „po”) jego kierunek został ustalony na podstawie ogólnego kontekstu paragrafu (tutaj LTR). Zauważ, że nie ma różnicy, że są tam dwa znaki interpunkcyjne i spacja – wszystkie są neutralne, więc są jednakowo traktowane. </p>
				<p>Ponieważ wykrzyknik jest uznany za LTR zostaje dołączony do serii kierunkowej , w który wliczony jest tekst “po arabsku”.</p>
				<p>Jak więc umieścić znaki interpunkcyjne we właściwym miejscu? </p>
				<p><span class="leadin">W takiej sytuacji </span> rzeważnie otoczyłbyś arabski cytat znacznikami – aby oznaczyć go jako cytat, lub by podać informację o języku. W tym wypadku jest na to proste lekarstwo. Zastosuj atrybut na Tagu aby zmienić kierunek tekstu na RTL.</p>
				<p>Oto przykład jak to może wyglądać w XHTML.</p>
				<div class="sidenoteGroup">
					<blockquote><code>&lt;p&gt;Tytuł to"&lt;span dir="rtl" lang=&quot;ar&quot; xml:lang="ar"&gt; ... !&lt;/tspan&gt;" w arabskim.&lt;/p&gt;</code></blockquote>
					<div class="sidenote">[<a href='samples/html.php?markup=<p>The title is "<span dir="rtl" lang="ar" xml:lang="ar">مفتاح معايير الويب!</span>" in Arabic.</p>' target="text">live code</a>]

						<p>Edytor, którego używasz może nie wyświetlić wykrzyknika we właściwym miejscu w kodzie źródłowym, ale wszystko powinno dobrzy wyglądać w przeglądarce.</p>
					</div>
				</div>
				<p>Zauważ, że znacznik span znajduje się <em>wewnątrz</em> cudzysłowu – to część otaczającego go polskiego tekstu.</p>
				<p><span class="leadin">Jest też inna możliwość:</span> można wpisać niewidoczny znak typu RTL po wykrzykniku. Wtedy wykrzyknik zostanie zinterpretowany jako RTL i włączony do arabskiego kierunku tekstu.</p>
				<p>Tak się składa, że istnieje taki znak – znak Unicode U+200F, zwany Z-PRAWEJ-DO-LEWEJ (RLM). Jest też podobny znak, U+200E, zwany Z-LEWEJ-DO-PRAWEJ (LRM).</p>
				<p>Ponieważ znak ten jest niewidoczny, może będziesz wolał wpisać znak odniesienia numerycznego(<code>&amp;#x200F;</code>) lub jeśli jest to możliwe, inny znak <code>&amp;rlm;</code> w XHTML). </p>
				<p>W poniższym przykładzie znak <code>&amp;rlm;</code> został dodany po wykrzykniku I rezultat wygląda dobrze:</p>
				<div class="sidenoteGroup">
					<blockquote><code>&lt;p&gt;The title is "... !&amp;#x200F;" in
						Arabic.&lt;/p&gt;</code></blockquote>
					<div class="sidenote">[<a href='samples/html.php?markup=<p>The title is "مفتاح معايير الويب!%26%23x200F;" in Arabic.</p>' target="text">live code</a>]
					</div>
				</div>
				<p>Jeśli znacznik już jest wpisany wokół cudzysłowu najlepszym rozwiązaniem będzie użycie<span class="kw">dir</span>, a nie znaku control. W przeciwnym wypadku łatwiej może być użyć znaku control.</p>
			</div>
			<div class="section2"> 

				<h3><a href="#identity" name="identity" id="identity">Znaki neutralne z kryzysem osobowości</a></h3>
				<p>Znaki neutralne pomiędzy identycznymi ciągami kierunkowymi czasem mogą zostać źle zinterpretowane. W naszym kolejnym przykładzie kolejność jest nieprawidłowa, ponieważ pierwsze dwa arabskie słowa powinny być odwrócone, a przecinek będący częścią angielskiego tekstu powinien pojawić się po pierwszym wyrazie.</p>
				<blockquote><a href='samples/html.php?markup=<p>The names of these states in Arabic are مصر, البحرين and الكويت respectively.</p>' target="text"><img src="images/comma-wrong.gif" alt="Bahrain appears to the left of Egypt." /></a></blockquote>
				<p>Chcieliśmy otrzymać:</p>
				<blockquote><a href='samples/html.php?markup=<p>The names of these states in Arabic are مصر,&lrm; البحرين and الكويت respectively.</p>' target="text"><img src="images/comma-right.gif" alt="Egypt appears to the left of Bahrain." /></a></blockquote>
				<p>Dzieje się tak dlatego, że w tekście pisanym od prawej do lewej (RTL) po obu stronach neutralnego znaku algorytm postrzega ten znak jako część tekstu arabskiego. W rzeczywistości jest to część angielskiego tekstu i przecinek powinien oddzielać dwa teksty kierunkowe po arabsku.</p>
				<p>Podczas gdy w poprzedniej sekcji neutralny znak myślał, że jest częścią ogólnego kontekstu, a nie był, w tej sekcji znak neutralny myśli, że jest częścią serii kierunkowej kiedy tak naprawdę jest częścią ogólnego kontekstu! Nikt nie mówił, że życie jest proste…</p>
				<p>Wstawianie znaczników wokół przecinka przypomina trochę rozbijanie skorupki jajka przy użyciu młotka w tym przypadku.</p>
				<p>Dobrym rozwiązaniem w takiej sytuacji jest użycie kolejnego niewidocznego znaku Unicode, tym razem znaku LTR obok przecinka. W takim wypadku neutralny znak interpunkcyjny znajdzie się pomiędzy znakami RTL i LTR, co zmusi go do przyjęcia ogólnego kierunku kontekstu, czyli LTR. Wtedy dwa arabskie słowa odbierane są jako dwie różne serie kierunkowe, o kierunku LTR zgodnie z dominującym kierunkiem tekstu w paragrafie.</p>
				<div class="sidenoteGroup">
					<blockquote><code>&lt;p&gt;Nazwy tych stanów w Arabskim to ...,&amp;#x200E; ... i ... odpowiednio.&lt;/p&gt;</code></blockquote>
					<div class="sidenote">[<a href='samples/html.php?markup=<p>The names of these states in Arabic are مصر,&lrm; البحرين and الكويت respectively.</p>' target="text">live code</a>] </div>
				</div>
				<p>Może będziesz wolał wybrać NCR (<code>&amp;#x200E;</code>) lub inny znak (taki jak <code>&amp;lrm;</code>) jeśli jest to możliwe.</p>
			</div>
			<div class="section2"> 

				<h3><a href="#again" name="again" id="again">Znowu razem</a></h3>
				<p>Przykłady używane do tej pory bazowały na języku polskim i orientacji LTR. Te same zasady dotyczą tekstów pisanych RTL w językach takich jak hebrajski czy arabski. Spójrzmy na jeszcze jeden przykład.</p>
				<p>Niestety pozostawiony samemu sobie algorytm bidi nie zrobi nic dobrego z poniższym tekstem w akapicie napisanym od prawej do lewej. (Czerwone cyfry to część diagramu, a nie tekst i są tam umieszczone w celu numeracji nawiasów).</p>
				<blockquote><a href='samples/html.php?markup=&lt;p dir=&quot;rtl&quot;&gt;W3C (World Wide Web Consortium) מעביר את שירותי הארחה באירופה ל - ERCIM.&lt;/p&gt;' target="text"><img src="images/www-wrong.gif" alt="Parentheses and Latin text incorrectly ordered." /></a></blockquote>
				<p></p>
				<p>Oto co chcemy zobaczyć. </p>
				<blockquote><a href='samples/html.php?markup=<p dir="rtl">W3C&rlm; (World Wide Web Consortium) מעביר את שירותי הארחה באירופה ל - ERCIM.</p>' target="text"><img src="images/www-right.gif" alt="Parentheses and Latin text correctly ordered" /></a></blockquote>
				<p>Wygląda to na bardzo trudne do rozwiązania, ale rozwiązanie tego problemu jest trywialne. Wystarczy wstawić RLM po „W3C” i to tyle. Naprawdę bardzo proste.</p>
<p>Jeśli to nie przekonuje, spójrzmy na wyjaśnienie. </p>
				<p>Wcześniej nawias oznaczony &quot;1&quot; znajdował się pomiędzy dwoma znakami pisanymi od lewej do prawej , więc także obrał ten kierunek.  Sprawia to, że 'W3C (World Wide Web Consortium&quot;  jest odbierany jako ciag znaków w tym samym kierunku.</p>
				<p>Wstawienie RLM po 'W3C' zmiania kierunek nawiasu. Teraz jest on pomiędzy znakami o wyraźnym kierunku LTR i RTL, więc przyjmuje kierunek podstawowy, czyli kierunek RTL całego akapitu. Ma to sens jeśli będziesz odbierał nawiaj jako część zdania hebrajskiego. Kolejny nawias również jest pisany RTL ponieważ pojawia się pomiędzy Łacińskim i hebrajskim znakiem.</p>
				<p>Oznacza to, że teraz mamy do czynienia z trzema kierunkami pisania na początku tekstu. Ustawione są w następującej kolejności: 'W3C', nawias RTL, i tekst &quot;World Wide Web Consortium&quot;. Ponieważ kierunek dla całego akapitu to od prawej do lewej to, co wpisaliśmy wyświetlane jest od prawej do lewej - czyli tak jak chcieliśmy.</p>
				
				<p>(Zmiana hieroglifu z prawej strony nawiasu następuje automatycznie. Hieroglif użyty dla „odwróconych znaków” zmienia się zgodnie z kierunkiem tekstu. To ciągle ten sam znak..)</p>
			</div>
			<div class="section2">
				<h3><a href="#again" name="again" id="again2">Znaki odwrócone</a></h3>
				<p>Może zauważyłeś, że jeden z nawiasów we wcześniejszym przykładzie zmienił także swój kształt. Stało się tak automatycznie ponieważ nawias to jeden ze znaków odwróconych w Unicode.</p>
				<p><span class="newterm">Odwrócone znaki</span> to przeważnie pary znaków, takich jak nawias okrągły, czy kwadratowy itp, których kształt jest zależny od tego czy są częścią kontekstu LTR czy RTL. Nie musisz zmieniać znaku, aby zmienił się jego kształt.</p>
				<p>Końce nawiasu otwierającego zawsze są skierowane zgodnie z kierunkiem tekstu. Na poniższym obrazku Nawias w czerwonym okręgu jest skierowany w prawo w górnej lini ponieważ jest traktowany jako otwarcie nawiasu w tekście Łacińskim. W niższej wersji tekstu ten sam znak (zaznaczony na czerwono) jest traktowany jako otwarcie nawiasu w hebrajskim tekscie (pełna nazwa występuje po akronimie przy czytaniu) i dlatego skierowany jest w drugą stronę.</p>
				<blockquote><img src="images/mirrored.gif" alt="Mirrored characters." /></blockquote>
<p>Oznacza to, że niezależnie od tego czy tekst jest w arabskim/hebrajskim czy łacińskim musisz użyć tego samego znaku - LEWEGO NAWIASU na początku tekstu, który ma być w nawiasie. Innymi słowy traktuj znaki odwrócone  tak jakby każdy wyraz <span class="kw">w lewo </span> oznaczał '<span class="qterm">otwarcie</span>', a <span class="kw">w prawo</span> oznaczał '<span class="qterm">zamknięcie</span>'. </p>
			</div>
			<div class="section2"> 

				<h3><a href="#nesting" name="nesting" id="nesting">Grupowanie serii kierunkowych</a></h3>
				<p>Algorytm bidi i znaczniki kierunków działają całkiem nieźle kiedy jest tylko jeden poziom mieszanego tekstu. Kiedy nastąpi sytuacja, w której są dwa, lub więcej zgrupowanych poziomów różnokierunkowych tekstów, będziemy potrzebować innego rozwiązania. Poniższy obrazek pokazuje Łacińskie zdanie zawierające hebrajski cytet, który zawiera i hebrajski i łaciński tekst.</p>
				<blockquote><a href='samples/html.php?markup=<p>The title says "פעילות הבינאום, W3C" in Hebrew.</p>' target="text"><img src="images/nesting-wrong.png" alt="Incorrectly ordered text, because no embedding." /></a></blockquote>
				<p> Kolejność hebrajskich słów jest poprawna, ale tekst “W3C” powiniej pojawić się z lewej strony cudzysłowu, a przecinek pomiędzy hebrajskim tekstem i “W3C”. Innymi słowy powinno to wyglądać tak:</p>
				<blockquote><a href='samples/html.php?markup=<p>The title says "<span dir="rtl">פעילות הבינאום, W3C</span>" in Hebrew. </p>' target="text"><img src="images/nesting-right.png" alt="Correctly ordered text via embedding." /></a></blockquote>
				<p>Ten problem pojawia się, bo kierunki tekstu ustalane są na podstawie kontekstu LTR paragrafu. Jednak wewnątrz hebrajskiego cytatu domyślnym kierunkiem tekstu powinien być RTL.</p>
				<p>Aby rozwiązać ten problem musimy utworzyć nowy<span class="newterm">poziom osadzania</span>. W XHTML oznaczałoby to otoczenie cytatu znacznikami i przypisanie im kierunkowości RTL używając atrybutu <code>dir</code>.</p>
				<div class="sidenoteGroup">
					<blockquote><code>&lt;p&gt;Tytuł to&quot;&lt;span dir=&quot;rtl&quot;&gt;<span dir="rtl">...</span>&lt;/span&gt;&quot; w hebrajskim &lt;/p&gt;</code></blockquote>
					<div class="sidenote">[<a href='samples/html.php?markup=<p>The title says "<span dir="rtl">פעילות הבינאום, W3C</span>" in Hebrew.</p>' target="text">live code</a>]</div>
				</div>
				<p>W językach znaczników innych niż XHTML/HTML można znaleźć podobne atrybuty, do których można zastosować różne style aby uzyskać podobny efekt. Jeśli nie ma takiego atrybutu można ręcznie dostosować znaczniki, ale pewnie lepiej byłoby zwrócić się do dewelopera znaczników aby je dostarczył.</p>
				<p>Można też użyć znaków kontrolnych Unicode aby otrzymać ten sam rezultat, ale ponieważ tworzą one obszary z niewidocznymi granicami <a href="http://www.w3.org/International/questions/qa-bidi-controls.html">odradza się ich używania</a>.</p>
			</div>
		</div>
		<div class="section"> 

			<h2><a id="override" name="override">Obejście algorytmu</a></h2>
			<p>Może się zdarzyć, że nie będziesz chciał aby algorytm bidi zmieniał kolejność tekstu. W takim wypadku potrzebne są dodatkowe znaczniki aby otoczyć tekst, który algorytm ma pominąć.</p>
			<p>W XHTML 1.0 można to osiągnąć używając elementu <span class="kw">bdo</span>. W XHTML 2 prawdopodobnie będzie wprowadzany jako wartość
				<span class="kw">rlo</span> lub <span class="kw">lro</span> w artybucie <span class="kw">dir</span>, umożliwiając wprowadzenie go w dowolny element. Znaki kontrolne Unicode także są dostępne, ale ponieważ tworzą obszary z niewidocznymi granicami  <a href="http://www.w3.org/International/questions/qa-bidi-controls.html">odradza się ich stosowania</a>.</p>
			<p>Przykłady, które pokazują znaki w takiej kolejności w jakiej znajdują się one w pamięci używają znacznika <span class="kw">bdo</span> aby osiągnąć ten efekt. Na przykład, obrazek pokazuje hebrajski tekst odtworzony w pamięci.</p>
			<blockquote><a href='samples/html.php?markup=<p>In the phrase, "<span dir="rtl">פעילות הבינאום, W3C</span>", the order of characters in memory is:</p><p><bdo dir="ltr">פעילות הבינאום, W3C</bdo></p>' target="text"><img src="images/override.png" alt="Shows Hebrew text in the order stored in memory." /></a></blockquote>
			<p>Dla poniższej lini użylibyśmy poniższego znacznika w XHTML 1.0:</p>
			<div class="sidenoteGroup">
				<blockquote><code>&lt;p&gt;&lt;bdo dir=&quot;ltr&quot;&gt;<span dir="rtl">...</span>&lt;/bdo&gt;&lt;/p&gt;</code></blockquote>
				<div class="sidenote">[<a href='samples/html.php?markup=<p><bdo dir="ltr">פעילות הבינאום, W3C</bdo></p>' target="text">live code</a>]</div>
			</div>
	</div>
<?php echo $survey;?>
		<div class="section noprint"> 

			<h2><?php echo $readingHead?></h2>
			<ul id="full-links">
				<li> 
					<p><a href="/TR/i18n-html-tech-bidi/">Techniki bidi w HTML  </a> (in devt) <span
						class="uri">http://www.w3.org/http://www.w3.org/TR/i18n-html-tech-bidi/</span></p>
				</li>
				<li> 
					<p><a href="http://www.unicode.org/reports/tr9/">Dwukierunkowy algorytm Unicode</a> <span
						class="uri">http://www.unicode.org/reports/tr9/</span></p>
				</li>
				<li> 
					<p><a href="http://people.w3.org/rishida/scripts/tutorial/" title="A tutorial on writing systems characteristics">Przewodniki nie używające łacińskiego alfabetu</a> <span class="uri">http://people.w3.org/rishida/scripts/tutorial/</span></p>
				</li>
			</ul>
		</div>
<?php echo $bottomOfPage; ?>

	</body>
</html>
