|
1 |
| -# Łańcuchy |
| 1 | +# Stringi - ciągi znaków |
2 | 2 |
|
3 |
| -W JavaScript dane tekstowe są przechowywane jako łańcuchy (ciągi znaków). Nie ma oddzielnego typu dla pojedynczego znaku. |
| 3 | +W JavaScript dane tekstowe są przechowywane jako stringi - ciągi znaków, lub też łańcuchy znaków. Nie ma oddzielnego typu dla pojedynczego znaku. |
4 | 4 |
|
5 | 5 | Wewnętrzny format ciągów to zawsze [UTF-16](https://pl.wikipedia.org/wiki/UTF-16), nie jest on powiązany z kodowaniem strony
|
6 | 6 |
|
@@ -598,62 +598,62 @@ alert( '𝒳'.charCodeAt(1).toString(16) ); // dcb3, pomiędzy 0xdc00 i 0xdfff
|
598 | 598 |
|
599 | 599 | Więcej sposobów radzenia sobie z parami zastępczymi znajdziesz w rozdziale <info:iterable>. Istnieją do tego specjalne biblioteki, ale żadna z nich nie jest na tyle znana, aby można było ją tutaj zasugerować.
|
600 | 600 |
|
601 |
| -### Diacritical marks and normalization |
| 601 | +### Znaki diakrytyczne i normalizacja |
602 | 602 |
|
603 |
| -In many languages there are symbols that are composed of the base character with a mark above/under it. |
| 603 | +W wielu językach istnieją symbole, które składają się ze znaku bazowego oraz znaku diakrytycznego. |
604 | 604 |
|
605 |
| -For instance, the letter `a` can be the base character for: `àáâäãåā`. Most common "composite" character have their own code in the UTF-16 table. But not all of them, because there are too many possible combinations. |
| 605 | +Na przykład, litera `a` może być znakiem bazowym dla: `ąàáâäãåā`. Większośc popularnych "kompozycji" znaków posiada swój własny kod w tabeli UTF-16. Ale nie wszystkie, ze względu na dużą liczbę kombinacji. |
606 | 606 |
|
607 |
| -To support arbitrary compositions, UTF-16 allows us to use several unicode characters: the base character followed by one or many "mark" characters that "decorate" it. |
| 607 | +Aby obsługiwać dowolne kompozycje, UTF-16 pozwala nam na użycie kilku znaków Unicode: znaku podstawowego, po którym następuje jeden lub więcej "znaków specjalnych". |
608 | 608 |
|
609 |
| -For instance, if we have `S` followed by the special "dot above" character (code `\u0307`), it is shown as Ṡ. |
| 609 | +Na przykład, jeśli dodamy znak "kropka powyżej" (kod `\u0307`) bezpośrednio po `S`, to będzie on wyświetlany, jako `Ṡ`. |
610 | 610 |
|
611 | 611 | ```js run
|
612 | 612 | alert( 'S\u0307' ); // Ṡ
|
613 | 613 | ```
|
614 | 614 |
|
615 |
| -If we need an additional mark above the letter (or below it) -- no problem, just add the necessary mark character. |
| 615 | +Jeśli potrzebujemy dodatkowego oznaczenia nad literą (lub pod nią) -- nie ma problemu, wystarczy dodać niezbędny znak oznaczenia. |
616 | 616 |
|
617 |
| -For instance, if we append a character "dot below" (code `\u0323`), then we'll have "S with dots above and below": `Ṩ`. |
| 617 | +Na przykład, jeśli dodamy znak "kropka poniżej" (code `\u0323`), otrzymamy "S z kropkami powyżej i poniżej": `Ṩ`. |
618 | 618 |
|
619 |
| -For example: |
| 619 | +Na przykład: |
620 | 620 |
|
621 | 621 | ```js run
|
622 | 622 | alert( 'S\u0307\u0323' ); // Ṩ
|
623 | 623 | ```
|
624 | 624 |
|
625 |
| -This provides great flexibility, but also an interesting problem: two characters may visually look the same, but be represented with different unicode compositions. |
| 625 | +Zapewnia to dużą elastyczność, ale także interesujący problem: dwie postacie mogą wizualnie wyglądać tak samo, ale być reprezentowane za pomocą różnych kompozycji Unicode. |
626 | 626 |
|
627 |
| -For instance: |
| 627 | +Na przykład: |
628 | 628 |
|
629 | 629 | ```js run
|
630 |
| -let s1 = 'S\u0307\u0323'; // Ṩ, S + dot above + dot below |
631 |
| -let s2 = 'S\u0323\u0307'; // Ṩ, S + dot below + dot above |
| 630 | +let s1 = 'S\u0307\u0323'; // Ṩ, S + kropka powyżej + kropka poniżej |
| 631 | +let s2 = 'S\u0323\u0307'; // Ṩ, S + kropka poniżej + kropka powyżej |
632 | 632 |
|
633 | 633 | alert( `s1: ${s1}, s2: ${s2}` );
|
634 | 634 |
|
635 |
| -alert( s1 == s2 ); // false though the characters look identical (?!) |
| 635 | +alert( s1 == s2 ); // false pomimo tego, że znaki wyglądają identycznie (?!) |
636 | 636 | ```
|
637 | 637 |
|
638 |
| -To solve this, there exists a "unicode normalization" algorithm that brings each string to the single "normal" form. |
| 638 | +Aby rozwiązać ten problem, istnieje algorytm "normalizacji Unicode", który sprowadza każdy ciąg do pojedynczej "normalnej" postaci. |
639 | 639 |
|
640 |
| -It is implemented by [str.normalize()](mdn:js/String/normalize). |
| 640 | +Jest zaimplementowany przez metodę [str.normalize()](mdn:js/String/normalize). |
641 | 641 |
|
642 | 642 | ```js run
|
643 | 643 | alert( "S\u0307\u0323".normalize() == "S\u0323\u0307".normalize() ); // true
|
644 | 644 | ```
|
645 | 645 |
|
646 |
| -It's funny that in our situation `normalize()` actually brings together a sequence of 3 characters to one: `\u1e68` (S with two dots). |
| 646 | +To zabawne, że w naszym przypadku `normalize()` łączy sekwencję 3 znaków w jeden: `\u1e68` (S z dwoma kropkami). |
647 | 647 |
|
648 | 648 | ```js run
|
649 | 649 | alert( "S\u0307\u0323".normalize().length ); // 1
|
650 | 650 |
|
651 | 651 | alert( "S\u0307\u0323".normalize() == "\u1e68" ); // true
|
652 | 652 | ```
|
653 | 653 |
|
654 |
| -In reality, this is not always the case. The reason being that the symbol `Ṩ` is "common enough", so UTF-16 creators included it in the main table and gave it the code. |
| 654 | +W rzeczywistości taka sytuacja nie zawsze ma miejsce. Znak `Ṩ` jest "dość powszechny", więc twórcy UTF-16 uwzględnili go w głównej tabeli i przypisali mu kod. |
655 | 655 |
|
656 |
| -If you want to learn more about normalization rules and variants -- they are described in the appendix of the Unicode standard: [Unicode Normalization Forms](http://www.unicode.org/reports/tr15/), but for most practical purposes the information from this section is enough. |
| 656 | +Jeśli chcesz dowiedzieć się więcej o regułach i wariantach normalizacji – są one opisane w załączniku standardu Unicode: [Unicode Normalization Forms](http://www.unicode.org/reports/tr15/). Jednakże do większości praktycznych celów wystarczą informacje z tego rozdziału. |
657 | 657 |
|
658 | 658 | ## Summary
|
659 | 659 |
|
|
0 commit comments