1588 * <p>Grandfathered tags with canonical replacements are as follows: |
1588 * <p>Grandfathered tags with canonical replacements are as follows: |
1589 * |
1589 * |
1590 * <table class="striped"> |
1590 * <table class="striped"> |
1591 * <caption style="display:none">Grandfathered tags with canonical replacements</caption> |
1591 * <caption style="display:none">Grandfathered tags with canonical replacements</caption> |
1592 * <thead style="text-align:center"> |
1592 * <thead style="text-align:center"> |
1593 * <tr><th style="padding: 0 2px">grandfathered tag</th><th style="padding: 0 2px">modern replacement</th></tr> |
1593 * <tr><th scope="col" style="padding: 0 2px">grandfathered tag</th><th scope="col" style="padding: 0 2px">modern replacement</th></tr> |
1594 * </thead> |
1594 * </thead> |
1595 * <tbody style="text-align:center"> |
1595 * <tbody style="text-align:center"> |
1596 * <tr><td>art-lojban</td><td>jbo</td></tr> |
1596 * <tr><th scope="row">art-lojban</th><td>jbo</td></tr> |
1597 * <tr><td>i-ami</td><td>ami</td></tr> |
1597 * <tr><th scope="row">i-ami</th><td>ami</td></tr> |
1598 * <tr><td>i-bnn</td><td>bnn</td></tr> |
1598 * <tr><th scope="row">i-bnn</th><td>bnn</td></tr> |
1599 * <tr><td>i-hak</td><td>hak</td></tr> |
1599 * <tr><th scope="row">i-hak</th><td>hak</td></tr> |
1600 * <tr><td>i-klingon</td><td>tlh</td></tr> |
1600 * <tr><th scope="row">i-klingon</th><td>tlh</td></tr> |
1601 * <tr><td>i-lux</td><td>lb</td></tr> |
1601 * <tr><th scope="row">i-lux</th><td>lb</td></tr> |
1602 * <tr><td>i-navajo</td><td>nv</td></tr> |
1602 * <tr><th scope="row">i-navajo</th><td>nv</td></tr> |
1603 * <tr><td>i-pwn</td><td>pwn</td></tr> |
1603 * <tr><th scope="row">i-pwn</th><td>pwn</td></tr> |
1604 * <tr><td>i-tao</td><td>tao</td></tr> |
1604 * <tr><th scope="row">i-tao</th><td>tao</td></tr> |
1605 * <tr><td>i-tay</td><td>tay</td></tr> |
1605 * <tr><th scope="row">i-tay</th><td>tay</td></tr> |
1606 * <tr><td>i-tsu</td><td>tsu</td></tr> |
1606 * <tr><th scope="row">i-tsu</th><td>tsu</td></tr> |
1607 * <tr><td>no-bok</td><td>nb</td></tr> |
1607 * <tr><th scope="row">no-bok</th><td>nb</td></tr> |
1608 * <tr><td>no-nyn</td><td>nn</td></tr> |
1608 * <tr><th scope="row">no-nyn</th><td>nn</td></tr> |
1609 * <tr><td>sgn-BE-FR</td><td>sfb</td></tr> |
1609 * <tr><th scope="row">sgn-BE-FR</th><td>sfb</td></tr> |
1610 * <tr><td>sgn-BE-NL</td><td>vgt</td></tr> |
1610 * <tr><th scope="row">sgn-BE-NL</th><td>vgt</td></tr> |
1611 * <tr><td>sgn-CH-DE</td><td>sgg</td></tr> |
1611 * <tr><th scope="row">sgn-CH-DE</th><td>sgg</td></tr> |
1612 * <tr><td>zh-guoyu</td><td>cmn</td></tr> |
1612 * <tr><th scope="row">zh-guoyu</th><td>cmn</td></tr> |
1613 * <tr><td>zh-hakka</td><td>hak</td></tr> |
1613 * <tr><th scope="row">zh-hakka</th><td>hak</td></tr> |
1614 * <tr><td>zh-min-nan</td><td>nan</td></tr> |
1614 * <tr><th scope="row">zh-min-nan</th><td>nan</td></tr> |
1615 * <tr><td>zh-xiang</td><td>hsn</td></tr> |
1615 * <tr><th scope="row">zh-xiang</th><td>hsn</td></tr> |
1616 * </tbody> |
1616 * </tbody> |
1617 * </table> |
1617 * </table> |
1618 * |
1618 * |
1619 * <p>Grandfathered tags with no modern replacement will be |
1619 * <p>Grandfathered tags with no modern replacement will be |
1620 * converted as follows: |
1620 * converted as follows: |
1621 * |
1621 * |
1622 * <table class="striped"> |
1622 * <table class="striped"> |
1623 * <caption style="display:none">Grandfathered tags with no modern replacement</caption> |
1623 * <caption style="display:none">Grandfathered tags with no modern replacement</caption> |
1624 * <thead style="text-align:center"> |
1624 * <thead style="text-align:center"> |
1625 * <tr><th style="padding: 0 2px">grandfathered tag</th><th style="padding: 0 2px">converts to</th></tr> |
1625 * <tr><th scope="col" style="padding: 0 2px">grandfathered tag</th><th scope="col" style="padding: 0 2px">converts to</th></tr> |
1626 * </thead> |
1626 * </thead> |
1627 * <tbody style="text-align:center"> |
1627 * <tbody style="text-align:center"> |
1628 * <tr><td>cel-gaulish</td><td>xtg-x-cel-gaulish</td></tr> |
1628 * <tr><th scope="row">cel-gaulish</th><td>xtg-x-cel-gaulish</td></tr> |
1629 * <tr><td>en-GB-oed</td><td>en-GB-x-oed</td></tr> |
1629 * <tr><th scope="row">en-GB-oed</th><td>en-GB-x-oed</td></tr> |
1630 * <tr><td>i-default</td><td>en-x-i-default</td></tr> |
1630 * <tr><th scope="row">i-default</th><td>en-x-i-default</td></tr> |
1631 * <tr><td>i-enochian</td><td>und-x-i-enochian</td></tr> |
1631 * <tr><th scope="row">i-enochian</th><td>und-x-i-enochian</td></tr> |
1632 * <tr><td>i-mingo</td><td>see-x-i-mingo</td></tr> |
1632 * <tr><th scope="row">i-mingo</th><td>see-x-i-mingo</td></tr> |
1633 * <tr><td>zh-min</td><td>nan-x-zh-min</td></tr> |
1633 * <tr><th scope="row">zh-min</th><td>nan-x-zh-min</td></tr> |
1634 * </tbody> |
1634 * </tbody> |
1635 * </table> |
1635 * </table> |
1636 * |
1636 * |
1637 * <p>For a list of all grandfathered tags, see the |
1637 * <p>For a list of all grandfathered tags, see the |
1638 * IANA Language Subtag Registry (search for "Type: grandfathered"). |
1638 * IANA Language Subtag Registry (search for "Type: grandfathered"). |
2776 * |
2776 * |
2777 * <table class="striped"> |
2777 * <table class="striped"> |
2778 * <caption>Filtering method behavior</caption> |
2778 * <caption>Filtering method behavior</caption> |
2779 * <thead> |
2779 * <thead> |
2780 * <tr> |
2780 * <tr> |
2781 * <th>Filtering Mode</th> |
2781 * <th scope="col">Filtering Mode</th> |
2782 * <th>Language Priority List: {@code "de-DE"}</th> |
2782 * <th scope="col">Language Priority List: {@code "de-DE"}</th> |
2783 * <th>Language Priority List: {@code "de-*-DE"}</th> |
2783 * <th scope="col">Language Priority List: {@code "de-*-DE"}</th> |
2784 * </tr> |
2784 * </tr> |
2785 * </thead> |
2785 * </thead> |
2786 * <tbody> |
2786 * <tbody> |
2787 * <tr> |
2787 * <tr> |
2788 * <td style="vertical-align:top"> |
2788 * <th scope="row" style="vertical-align:top"> |
2789 * {@link FilteringMode#AUTOSELECT_FILTERING AUTOSELECT_FILTERING} |
2789 * {@link FilteringMode#AUTOSELECT_FILTERING AUTOSELECT_FILTERING} |
2790 * </td> |
2790 * </th> |
2791 * <td style="vertical-align:top"> |
2791 * <td style="vertical-align:top"> |
2792 * Performs <em>basic</em> filtering and returns {@code "de-DE"} and |
2792 * Performs <em>basic</em> filtering and returns {@code "de-DE"} and |
2793 * {@code "de-DE-1996"}. |
2793 * {@code "de-DE-1996"}. |
2794 * </td> |
2794 * </td> |
2795 * <td style="vertical-align:top"> |
2795 * <td style="vertical-align:top"> |
2797 * {@code "de-Deva-DE"}, {@code "de-DE-1996"}, {@code "de-Latn-DE"}, and |
2797 * {@code "de-Deva-DE"}, {@code "de-DE-1996"}, {@code "de-Latn-DE"}, and |
2798 * {@code "de-Latn-DE-1996"}. |
2798 * {@code "de-Latn-DE-1996"}. |
2799 * </td> |
2799 * </td> |
2800 * </tr> |
2800 * </tr> |
2801 * <tr> |
2801 * <tr> |
2802 * <td style="vertical-align:top"> |
2802 * <th scope="row" style="vertical-align:top"> |
2803 * {@link FilteringMode#EXTENDED_FILTERING EXTENDED_FILTERING} |
2803 * {@link FilteringMode#EXTENDED_FILTERING EXTENDED_FILTERING} |
2804 * </td> |
2804 * </th> |
2805 * <td style="vertical-align:top"> |
2805 * <td style="vertical-align:top"> |
2806 * Performs <em>extended</em> filtering and returns {@code "de-DE"}, |
2806 * Performs <em>extended</em> filtering and returns {@code "de-DE"}, |
2807 * {@code "de-Deva-DE"}, {@code "de-DE-1996"}, {@code "de-Latn-DE"}, and |
2807 * {@code "de-Deva-DE"}, {@code "de-DE-1996"}, {@code "de-Latn-DE"}, and |
2808 * {@code "de-Latn-DE-1996"}. |
2808 * {@code "de-Latn-DE-1996"}. |
2809 * </td> |
2809 * </td> |
2810 * <td style="vertical-align:top">Same as above.</td> |
2810 * <td style="vertical-align:top">Same as above.</td> |
2811 * </tr> |
2811 * </tr> |
2812 * <tr> |
2812 * <tr> |
2813 * <td style="vertical-align:top"> |
2813 * <th scope="row" style="vertical-align:top"> |
2814 * {@link FilteringMode#IGNORE_EXTENDED_RANGES IGNORE_EXTENDED_RANGES} |
2814 * {@link FilteringMode#IGNORE_EXTENDED_RANGES IGNORE_EXTENDED_RANGES} |
2815 * </td> |
2815 * </th> |
2816 * <td style="vertical-align:top"> |
2816 * <td style="vertical-align:top"> |
2817 * Performs <em>basic</em> filtering and returns {@code "de-DE"} and |
2817 * Performs <em>basic</em> filtering and returns {@code "de-DE"} and |
2818 * {@code "de-DE-1996"}. |
2818 * {@code "de-DE-1996"}. |
2819 * </td> |
2819 * </td> |
2820 * <td style="vertical-align:top"> |
2820 * <td style="vertical-align:top"> |
2821 * Performs <em>basic</em> filtering and returns {@code null} because |
2821 * Performs <em>basic</em> filtering and returns {@code null} because |
2822 * nothing matches. |
2822 * nothing matches. |
2823 * </td> |
2823 * </td> |
2824 * </tr> |
2824 * </tr> |
2825 * <tr> |
2825 * <tr> |
2826 * <td style="vertical-align:top"> |
2826 * <th scope="row" style="vertical-align:top"> |
2827 * {@link FilteringMode#MAP_EXTENDED_RANGES MAP_EXTENDED_RANGES} |
2827 * {@link FilteringMode#MAP_EXTENDED_RANGES MAP_EXTENDED_RANGES} |
2828 * </td> |
2828 * </th> |
2829 * <td style="vertical-align:top">Same as above.</td> |
2829 * <td style="vertical-align:top">Same as above.</td> |
2830 * <td style="vertical-align:top"> |
2830 * <td style="vertical-align:top"> |
2831 * Performs <em>basic</em> filtering and returns {@code "de-DE"} and |
2831 * Performs <em>basic</em> filtering and returns {@code "de-DE"} and |
2832 * {@code "de-DE-1996"} because {@code "de-*-DE"} is mapped to |
2832 * {@code "de-DE-1996"} because {@code "de-*-DE"} is mapped to |
2833 * {@code "de-DE"}. |
2833 * {@code "de-DE"}. |
2834 * </td> |
2834 * </td> |
2835 * </tr> |
2835 * </tr> |
2836 * <tr> |
2836 * <tr> |
2837 * <td style="vertical-align:top"> |
2837 * <th scope="row" style="vertical-align:top"> |
2838 * {@link FilteringMode#REJECT_EXTENDED_RANGES REJECT_EXTENDED_RANGES} |
2838 * {@link FilteringMode#REJECT_EXTENDED_RANGES REJECT_EXTENDED_RANGES} |
2839 * </td> |
2839 * </th> |
2840 * <td style="vertical-align:top">Same as above.</td> |
2840 * <td style="vertical-align:top">Same as above.</td> |
2841 * <td style="vertical-align:top"> |
2841 * <td style="vertical-align:top"> |
2842 * Throws {@link IllegalArgumentException} because {@code "de-*-DE"} is |
2842 * Throws {@link IllegalArgumentException} because {@code "de-*-DE"} is |
2843 * not a valid basic language range. |
2843 * not a valid basic language range. |
2844 * </td> |
2844 * </td> |