1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080
|
<?xml version="1.0" encoding="iso-8859-1"?>
<chapter xml:id="chapter-files" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>File Overview</title>
<para>
There are many files used to produce the several output
formats, and to store the many text and information needed
to generate the files. These are the most important ones,
you should know about:
<variablelist>
<varlistentry>
<term><filename>manual.xml</filename></term>
<listitem>
<simpara>
The main file for the documentation. It is supposed
to be only a "glue" between the other parts, containing
only part titles and entity references to chapters.
It is generated from <filename>manual.xml.in</filename>
when you run configure.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>entities/file-entities.ent</filename></term>
<listitem>
<simpara>
Contains entity definitions for all files. Entities for the
XML files are generated by configure, so
<emphasis>you should not edit this file</emphasis>.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>entities/global.ent</filename></term>
<listitem>
<simpara>
Global internal text entities for all the XML
files. This is where all the external links,
email addresses, and "macros" are stored.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>dsssl/*</filename></term>
<listitem>
<simpara>
DSSSL style sheets we use to generate the available
formats of the manual.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>xsl/*</filename></term>
<listitem>
<simpara>
XSL style sheets to generate HTML, phpweb,
HTMLHelp and print output from the manual XML sources.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>your_language/language-defs.ent</filename></term>
<listitem>
<simpara>
Contains local entities used by this language.
Some common ones are the main part titles, but
you should also put entities used only by this
language's files here.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>your_language/language-snippets.ent</filename></term>
<listitem>
<simpara>
Longer often used XML snippets translated to this
language. Including common warnings, notes, etc.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>your_language/translation.xml</filename></term>
<listitem>
<simpara>
This file is used to store all central translation info,
like a small intro text for translators, the persons
list, and the files under translation / modification.
This file is not present in the English tree.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>your_language/some_directory</filename></term>
<listitem>
<simpara>
The PHP Manual XML source is organized into directories.
The biggest part is the extension reference, which is
stored in the <filename>reference</filename> directory
of your language.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
</chapter>
<chapter xml:id="chapter-conventions" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Conventions</title>
<para>
When you work on <literal>phpdoc</literal> XML files,
you should stick to these conventions, to ease the team
work in the module.
</para>
<para>
<orderedlist>
<listitem><simpara>
Please read and follow the
<link xlink:href="&url.nomenclature;">Nomenclature and Style Guide</link>.
</simpara></listitem>
<listitem><simpara>
Insert ID attributes in all major section tags such
as part, chapter, sect1 etc. The HTML stylesheet will
name the HTML files after these IDs.
</simpara></listitem>
<listitem><simpara>
Function reference IDs look like this (case should
be consistent with the rest of the function naming
standards, i.e. lowercase): <literal>function.mysql-connect</literal>.
Please note that since underscores cannot be used
in IDs, they should be replaced by minus signs (-).
</simpara></listitem>
<listitem><simpara>
Unlike function reference IDs method reference IDs are
case-sensitive. Special operators <literal>::</literal>,
<literal>-></literal> and underscores are replaced by the same
minus signs (-). For example <literal>function.DOMCharacterData-deleteData</literal>
is an ID for <literal>DOMCharacterData->deleteData</literal> and
<literal>function.ArrayObject-constructor</literal>
is for <literal>ArrayObject::__constructor</literal>
method accordingly. Note an exception when operators <literal>::</literal>
and <literal>-></literal> followed by two underscores are replaced with
one minus sign (-).
</simpara></listitem>
<listitem><simpara>
Function reference section IDs
(<literal><reference xml:id="..."></literal>) look
like this: 'ref.category', for example: 'ref.ftp'.
</simpara></listitem>
<listitem><simpara>
Add PHP example code programlistings always
with a role attribute set to "php". Never add any
other programlisting or PHP output with such
a role. It is reserved for PHP source code only.
This role is used to detect PHP code and highlight it.
</simpara></listitem>
<listitem><simpara>
The contents of examples with programlistings
start on column 0 in the XML code. Indenting,
bracketing and naming conventions in examples should
adhere to the PEAR coding standards.
</simpara></listitem>
<listitem><simpara>
All examples use the <literal><?php ... ?></literal>
form instead of <literal><? ... ?></literal>. Use
<literal><![CDATA[ ... ]]></literal>
for examples, since it eliminates the need to change
<literal><</literal> to <literal>&lt;</literal>, etc.
Examples look much better, and easily manageable.
</simpara></listitem>
<listitem><simpara>
Deprecated aliases and syntax should not be used in examples.
</simpara></listitem>
<listitem>
<simpara>
Use the <note> when a function is not available in some special
cases, or when the parameter list of a function has changed, but not for
every little thing like mentioning that the function also can accept
'foo' instead of 'bar' as value to a parameter. Use notes with care.
</simpara>
<para>
Make sure note elements are always children of the main element in a
file, unless the note belongs to a specific item in the text, such as an
example:
<programlisting>
<![CDATA[
<para>
<example>
<title />
<programlisting/>
<para>
The output is:
</para>
<screen />
<note>
<simpara>
This example only works on Unices.
</simpara>
</note>
</example>
</para>
]]>
</programlisting>
</para>
<simpara>
If there is something dangerous to document such as the
<function>chroot</function>, or when something can be seen as a
weirdness in the language such as weird auto-conversion of types, use the
<caution> element.
</simpara>
<simpara>
The <tip> can be used in cases where you might want to document a
performance issue.
</simpara>
</listitem>
<listitem>
<para>
For comments in example, use <literal>//</literal> for single line
comments (preferable above the lines of code the comment comments on),
and use <literal>/* .. */</literal> for multiline comments:
<programlisting role="xml">
<![CDATA[
<programlisting role="php">
// This line execute foo
foo();
/* The next few lines also execute foo, but in a
* weird way */
$var = 'foo';
$var();
</programlisting>
]]>
</programlisting>
</para>
</listitem>
<listitem><para>
If an example uses arguments specific to a newer version of
PHP, it is helpful to note this in the example:
<programlisting role="php">
foo("bar", "baz"); // second argument was added in PHP 4.0.3
</programlisting>
New arguments are denoted in the main text of the
entry using the form:
<programlisting role="xml">
<![CDATA[
<note>
<simpara>
The second parameter was added in PHP 4.0.3.
</simpara>
</note>
]]>
</programlisting>
</para></listitem>
<listitem><simpara>
The language constants true, false and null
should be written as <literal>&true;</literal>,
<literal>&false;</literal> and
<literal>&null;</literal>. There are other
shortcuts, such as <literal>&php.ini;</literal>.
These are stored in <filename>global.ent</filename>.
</simpara></listitem>
<listitem><simpara>
All English XML files should have a <literal><!--
$Revision$ --></literal> comment as the second line
after the <literal><?xml</literal> tag.
This comment is not necessary for non-English files.
</simpara></listitem>
<listitem><simpara>
Whitespace changes in the English tree should be
prevented as much as possible: it is more important
to keep a good change-history of real changes, because
of the translations. If a whitespace change is
<emphasis>really</emphasis> needed, do it at least
in a separate commit, with a clear comment such as
'WS fix' or 'Whitespace fix'.
</simpara></listitem>
<listitem><simpara>
Never use tabs, not even in example program
listings. XML should be indented with one
space character for each level of indentation;
example code uses four spaces.
</simpara></listitem>
<listitem><simpara>
Always use LF (Line Feed) for the only newline
character in files, this is the Unix standard.
Never use CR LF (Windows) or CR (Mac) even, when
editing Windows specific files (such as
*.bat). It eases the editing works.
</simpara></listitem>
<listitem>
<simpara>
In the docs, the types are denoted as:
<literal>boolean</literal> (<literal>bool</literal>
in prototypes), <literal>integer</literal>
(<literal>int</literal> in prototypes),
<literal>float</literal> (<emphasis>not
double!</emphasis>), <literal>array</literal>,
<literal>object</literal> (<emphasis>not class!</emphasis>),
<literal>resource</literal> and <literal>null</literal>
(all lowercase). For objects different from <literal>stdClass</literal>,
use the class name instead of <literal>object</literal>.
</simpara>
<simpara>
In prototypes, you can also use <literal>mixed</literal>
(various types), or <literal>number</literal> (either
integer or float). A callback is denoted as
<literal>callback</literal>.
</simpara>
<simpara>
Do not use <literal>mixed</literal>, if the return
value is of a certain (not boolean) type, and FALSE
only on error. Provide the primary return type as
the return type of the function, and write down in
the explanation, that it returns FALSE on error.
Use <literal>&return.success;</literal> if the
function returns TRUE on success, and FALSE on
failure.
</simpara>
<simpara>
If a function requires no arguments, use
<literal><void/></literal> instead of
<literal><parameter>void</parameter></literal>,
since the former is the correct DocBook XML tag.
</simpara>
<simpara>
If a function has an undefined return-value, use
the word <literal>void</literal>.
</simpara>
</listitem>
<listitem><simpara>
In a prototype, if there are multiple - really
distinct - possibilities, simply make it two!
See <literal>en/reference/math/functions/min.xml</literal>
for an example.
</simpara></listitem>
<listitem><simpara>
Aliases: in refpurpose, put:
<literal>Alias of <function>realfunc</function></literal>.
<emphasis>Do not specify a function prototype synopsis, and
nothing but simply the text:</emphasis>
<literal>This function is an alias of
<function>realfunc</function></literal>.
This way, people can go to realfunc
straight from the <literal>ref.foo</literal> page.
</simpara></listitem>
<listitem><para>
Document examples always with the following structure:
<programlisting role="xml">
<para>
<example>
<title />
<programlisting>
<![CDATA[
<?php
echo "foo\n";
?>
]]>
</programlisting>
<para>
The output is:
</para>
<screen>
<![CDATA[
foo
]]>
</screen>
</example>
</para>
</programlisting>
</para></listitem>
</orderedlist>
</para>
</chapter>
<chapter xml:id="chapter-what-to-document" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>What to Document?</title>
<para>
<orderedlist>
<listitem>
<simpara>
Only major functions should be documented; functions which are
deprecated variants may be mentioned, but should not be
documented as separate functions. They instead should be
referenced in the parent function as an alias. Functions which
have completely different names, however, should be documented as
separate entries, for ease of reference. The
<filename>aliases.xml</filename> appendix
is the place to store aliases not documented elsewhere.
</simpara>
<simpara>
For example <literal>mysql_db_name</literal> and
<literal>mysql_dbname</literal> will be documented as the same
function, with the latter being listed as an alias of the
former, while <literal>show_source</literal> and
<literal>highlight_file</literal> will be documented as two
different functions (one as an alias), as the names are
completely different, and one name is not likely to be found
if looking for the name of the other.
</simpara>
</listitem>
<listitem>
<simpara>
Function names should be created, and documented, in lowercase
format with an underscore separating the name components. Names
without underscores are often only kept for backward
compatibility. Document the function named with underscores
separating components, and mention the old one as an alias.
</simpara>
<note>
<para>
It is up to the PHP developers to give names to functions.
A PHP documentation writer only uses the name provided to
document the function. If you think that a function name is
not appropriate, open a discussion on the
<link xlink:href="&email.internals;">&email.internals;</link> list, by
sending a mail to that address.
</para>
</note>
<simpara>
Good: <literal>mcrypt_enc_self_test</literal>,
<literal>mysql_list_fields</literal>
</simpara>
<simpara>
OK: <literal>mcrypt_module_get_algo_supported_key_sizes</literal>
(could be <literal>mcrypt_mod_get_algo_sup_key_sizes</literal>?),
<literal>get_html_translation_table</literal>
(could be <literal>html_get_trans_table</literal>?)
</simpara>
<simpara>
Bad: <literal>hw_GetObjectByQueryCollObj</literal>,
<literal>pg_setclientencoding</literal>
</simpara>
</listitem>
<listitem>
<simpara>
Functions which are kept only for backwards compatibility should
be listed under their current parent names, and not documented as
separate functions. Backwards compatible functions and
documentation for them should be maintained as long as the code
can be reasonably kept as part of the PHP codebase. Also see
the appendix <filename>aliases.xml</filename>.
</simpara>
</listitem>
<listitem>
<simpara>
Short but complete code examples are much more desirable
than long ones. If a function is extremely complex, a suitable
place to put a longer example is in the chapter introduction.
This example can hold code for other functions in the same chapter.
</simpara>
</listitem>
<listitem>
<simpara>
Brevity is appreciated. Long-winded descriptions of each and
every function are not appropriate for the reference sections.
Using the errata comments as guidelines, it's easier to tell when
more documentation is needed, as well as the inverse, when too
much documentation in one section has increased confusion.
<footnote><simpara>No one complained about too much documentation
in any section until now, so be brave to add longer explanations,
and more than one example per function. :)</simpara></footnote>
</simpara>
</listitem>
</orderedlist>
</para>
</chapter>
<chapter xml:id="chapter-skeletons" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Documentation Skeletons</title>
<para>
Below are some "skeletons" to copy and paste from when adding
documentation. All of these files should end with a line ending ("\n"). If
a section does not exist (like a ChangeLog), simply don't include that
refsect1 inside the documentation.
</para>
<note>
<para>
The documentation skeletons below are new, from around August of 2004.
</para>
</note>
<para>
<example>
<title>A function skeleton (<filename>func-name.xml</filename>)</title>
<programlisting role="xml">
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xml:id="function.func-name" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>func_name</refname>
<refpurpose>The func_name purpose</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<!-- Example: All functions have this -->
<type>thereturned type</type><methodname>func_name</methodname>
<!-- Example: Required parameter -->
<methodparam><type>int</type><parameter>firstparameter</parameter></methodparam>
<!-- Example: Optional parameter -->
<methodparam choice="opt"><type>string</type><parameter>secondparameter</parameter></methodparam>
<!-- Example: Passed by reference -->
<methodparam><type>bool</type><parameter role="reference">thirdparameter</parameter></methodparam>
<!-- Example: If no methodparams exist (void), use this -->
<void />
</methodsynopsis>
<para>
The functions description goes here.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>firstparameter</parameter></term>
<listitem>
<para>
Its description
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>secondparameter</parameter></term>
<listitem>
<para>
Its description
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
What this function returns, first on success, then failure. If simply
true on success and false on failure, just use &return.success; here.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
When does this function issue E_* level errors, or throw exceptions?
</para>
</refsect1>
<refsect1 role="unicode">
&reftitle.unicode;
<para>
Unicode information (introduced in PHP 6) goes here.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>Write the PHP version here (Ex. PHP 5.2.0)</entry>
<entry>
Describe the change
</entry>
</row>
<row>
<entry>...</entry>
<entry>
...
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>functionname</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
if ($anexample === true) {
echo 'Use the PEAR Coding standards';
}
if ($thereisoutput === 'and it is multiple lines') {
echo 'Use a screen like we did below';
}
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
Use the PEAR Coding standards
Use a screen like we did below
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<para>
Any notes that don't fit anywhere else should go here.
90% of the time, notes, warnings or cautions are better placed in the
parameters section. Consider that before using this section!
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>somefunc</function></member>
<member><function>another_func</function></member>
<member>The <link linkend="something">something appendix</link></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
</programlisting>
</example>
</para>
<para>
<example>
<title>A <filename>reference.xml</filename> skeleton</title>
<programlisting role="xml">
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- Purpose: xx -->
<!-- Membership: xx -->
<!-- State: xx -->
<reference xml:id="ref.extname" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Extname &Functions;</title>
<titleabbrev>Extname</titleabbrev>
<partintro>
<section xml:id="extname.intro">
&reftitle.intro;
<para>
</para>
</section>
<section xml:id="extname.requirements">
&reftitle.required;
<para>
</para>
</section>
&reference.extname.configure;
&reference.extname.ini;
<section xml:id="extname.resources">
&reftitle.resources;
&no.resource;
</section>
&reference.extname.constants;
</partintro>
&reference.extname.functions;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
</programlisting>
</example>
</para>
<para>
There are several PECL related entities inside of
<filename>language-snippets.ent</filename>. Be sure to include information
on where Windows users can find the DLL.
<example>
<title>A <filename>configure.xml</filename> skeleton</title>
<programlisting role="xml">
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<section xml:id="extname.installation" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
&reftitle.install;
<para>
To enable extname support, configure PHP with
<option role="configure">theconfigoption</option>
</para>
<para>
Windows users ...
</para>
</section>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
</programlisting>
</example>
</para>
<para>
<example>
<title>A <filename>constants.xml</filename> skeleton</title>
<programlisting role="xml">
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<section xml:id="extname.constants" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
&reftitle.constants;
&extension.constants;
<para>
<variablelist>
<varlistentry>
<term>
<constant>CONSTANT_NAME</constant>
(<type>itstype</type>)
</term>
<listitem>
<simpara>
</simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
</programlisting>
</example>
</para>
<para>
<example>
<title>A <filename>ini.xml</filename> skeleton</title>
<programlisting role="xml">
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<section xml:id="extname.configuration" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
&reftitle.runtime;
&extension.runtime;
<para>
<table>
<title>Extname &ConfigureOptions;</title>
<tgroup cols="4">
<thead>
<row>
<entry>&Name;</entry>
<entry>&Default;</entry>
<entry>&Changeable;</entry>
<entry>Changelog</entry>
</row>
</thead>
<tbody>
<row>
<entry>theini_option</entry>
<entry>itsvalue</entry>
<entry>its PHP_INI_* value</entry>
<entry>leave this blank. it will be filled automatically</entry>
</row>
</tbody>
</tgroup>
</table>
&php_ini_constants;
</para>
&ini.descriptions.title;
<para>
<variablelist>
<varlistentry xml:id="ini.extname.theini-option">
<term>
<parameter>theini_option</parameter>
<type>thetype</type>
</term>
<listitem>
<para>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
</programlisting>
</example>
</para>
</chapter>
<chapter xml:id="chapter-translation" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Information for Translators</title>
<para>
There are many active translations out there of the PHP
documentation. Some languages are being maintained by
a group of translators (eg. the German), some are one person
projects (eg. the Japanese). There are quite a few things for
translators to know, though these are simple.
</para>
<sect1 xml:id="translation-starting">
<title>Starting a New Translation</title>
<para>
Starting a new language translation comes down to
the following simple steps:
<itemizedlist>
<listitem>
<simpara>
Consult the <link linkend="chapter-maillist">phpdoc mailing
list</link> to see if the translation is already in progress.
If it is, read <link linkend="translation-joining">our tips
for that case</link>, disregard the following and coordinate
with the other translators on the translation mailing list.
</simpara>
</listitem>
<listitem>
<simpara>
Let the php doc mailing list (&email.phpdoc;) know that you are
interested in starting a new translation.
</simpara>
</listitem>
<listitem>
<simpara>
Once approved, <link linkend="svn-account">ask for a SVN account</link>.
Mention that you would like to start a new translation and be sure to
include the name of the translation in this request.
</simpara>
</listitem>
<listitem>
<simpara>
The PHP documentation group will then ask
<link xlink:href="mailto:&email.systems.php;">&email.systems.php;</link>
to create a new translation. This involves setting up a new mailing
list (<literal>doc-LANGCODE@lists.php.net</literal>), a newsgroup
(<literal>php.doc.LANGCODE</literal>), and a SVN module
(<literal>phpdoc-LANGCODE</literal>). At this point the LANGCODE
should also be added to the <literal>docweb</literal> system.
</simpara>
</listitem>
<listitem>
<simpara>
Check out the modules named <filename>phpdoc</filename>
and <literal>phpdoc-LANGCODE</literal> (using the
<literal>phpdoc-LANGCODE-dir</literal> alias) as
described in the <link linkend="chapter-svn">SVN chapter</link>
of this HOWTO.
</simpara>
</listitem>
<listitem>
<simpara>
Copy <filename>en/language-defs.ent</filename> and
<filename>en/language-snippets.ent</filename> to the
new directory (visible as <literal>phpdoc/LANGCODE</literal>
in your file system) and translate the contents of them.
</simpara>
</listitem>
<listitem>
<simpara>
Copy over files from the English tree and start to
work on them, (do not check in untranslated files)
and rerun configure each time you add a file.
See the section about
<link linkend="translation-revtrack">revision
tracking</link> for help about
how can you ease your work of tracking the English
version and your language's version.
</simpara>
</listitem>
<listitem>
<simpara>
After the translation makes a good start, its LANGCODE is added
to the other PHP SVN modules like <literal>phpweb</literal>,
<literal>livedocs</literal>, and to this
<link linkend="chapter-maillist">howto</link>. After doing so
the new translation will be online!
</simpara>
</listitem>
</itemizedlist>
</para>
<para>
Some important issues to consider when building
a new translation:
<itemizedlist>
<listitem>
<simpara>
Can you set up and translate the whole manual
yourself? If not, can you set up a team to
work on the language (recommended!)?
</simpara>
</listitem>
<listitem>
<simpara>
Have you made sure that your language or glyph
(lettering, font, or characters) is supported
by the DocBook stylesheets? Please ask on the
<link linkend="chapter-maillist">mailing list</link>
if you don't know.
</simpara>
</listitem>
</itemizedlist>
</para>
</sect1>
<sect1 xml:id="translation-joining">
<title>Joining a Translation</title>
<para>
If you see that a manual for your language is set
up, and you would like to join the group, please
ask on the appropriate <link linkend="chapter-maillist">mailing
list</link> about who is responsible for managing that
translation.
</para>
<para>
If you are new to the PHP project, and you have no
SVN account, please introduce yourself to the existing
translation team and send in patches of your translations,
so that they get to know you, and can endorse you later,
when you <link linkend="svn-account">request a SVN account</link>
to more seriously work on the translation. Note that
there are some translations where just a few people have
SVN accounts, and they are responsible for committing
other's works.
</para>
</sect1>
<sect1 xml:id="translation-practical">
<title>Practical Advice for Translators</title>
<para>
Here is some advice we collected for translators:
<itemizedlist>
<listitem>
<simpara>
Only commit translated files in your language's directory.
The build process is responsible for adding English
files in place of the files you have not committed.
</simpara>
</listitem>
<listitem>
<simpara>
Do not commit translated files into the English tree.
Double check your files before committing, to be sure
that you are committing to the right place.
</simpara>
</listitem>
<listitem>
<simpara>
Use a system to coordinate with the translators
in your language. Currently we have two systems
used in parallel, the Translators files and the
Revision comments. See the section about
<link linkend="translation-revtrack">revision
tracking</link> to learn more about this subject.
</simpara>
</listitem>
<listitem>
<simpara>
While translating, you will find errors in the
English manual. If you are sure about an error,
that should be corrected, please correct the
found errors yourself. If you are not sure,
whether you found an error or not, please ask
on the phpdoc <link linkend="chapter-maillist">mailing
list</link>.
</simpara>
</listitem>
<listitem>
<simpara>
We have the global entities used all over
the manuals in <filename>global.ent</filename>.
If you would like to define entities only used
in your language, an ideal place for these
is <filename>your_language/language-defs.ent</filename>.
See <filename>hu/language-defs.ent</filename> for
an example.
</simpara>
</listitem>
<listitem>
<simpara>
Do not translate entity names, such as &true;
or &return.success;. These are there to be
replaced by their relevant text. Translating them
only cause errors. Similarly do not translate any
tags (eg. <computeroutput>) to your language.
The contents of comments (eg. the bottom of every
file) are also not to be translated.
</simpara>
</listitem>
<listitem>
<simpara>
Always make sure, that the modifications you
made to your language's files, are correct.
You may introduce illegal characters. Please
always do a <link linkend="chapter-validating">make
test</link> before committing. Introducing an
error in your language's manual can stop the
automatic updates online until you correct the
error.
</simpara>
</listitem>
<listitem>
<simpara>
If a documentation build process sends an error
report to the translation mailing list, examine
the problems, and try to fix them before the next
build. If you have 'cross reference to paragraphs
not supported' errors, you probably have old
translated files around. Since paragraphs are
generated by the build system for the missing ids
not yet in those old files, these errors are
inevitable. Either update your translation, or
remove the offending files, thus allowing the
English originals to take precedence.
</simpara>
</listitem>
</itemizedlist>
</para>
</sect1>
<sect1 xml:id="translation-revtrack">
<title>Revision Tracking</title>
<para>
Working on the translations is not just translating
an English file and committing the results. Much of
the work is needed to update the already translated
ones, to get in sync with the content of the English
files. To follow the modifications in the English
tree, you should subscribe to the phpdoc
<link linkend="chapter-maillist">mailing list</link>,
or read the archives. If you never update your files,
the translations can get useless. You should also subscribe
to your language's mailing list (if it's not English),
to get SVN commit messages and participate in language
specific discussions.
</para>
<para>
Updating a foreign language file can get difficult,
as you may not know when and who translated that file,
so you may not know where you should look for the
updates needed. We have two (plus one) system for tracking
the revisions and modification dates of the files in
<literal>phpdoc</literal>.
There is also a simple script to check parameters count/type/opt/reference
in translated <literal><methodsynopsis></literal> -
<filename>scripts/check-trans-params.php</filename>.
</para>
<sect2 xml:id="translation-revcheck-translators">
<title>The Translators Files</title>
<para>
Some translations are using a <filename>Translators</filename>
file in the root of their translation's tree for revision tracking.
This file can contain the names, email addresses, and SVN
user names of the contributors of this translation,
and the list of files translated.
</para>
<para>
Along with the XML file names, associations between
translators and files, revision numbers, and status
information can also be stored. One sample Translators
file, for the imaginary xx language can look like this:
<programlisting>
=============================================================================
SVN User Name Contact email address
=============================================================================
joedoe Joe Doe joe@hotmail.com
jane Jane Smith jsmith@yahoo.com
...
=============================================================================
Filename Translator Revision
=============================================================================
bookinfo.xml jane 1.16
language-defs.ent jane 1.7
language-snippets.ent joedoe 1.8
preface.xml
------- appendices ----------------------------------------------------------
aliases.xml joedoe working
debugger.xml
escaping.xml
history.xml jane 1.2
...
</programlisting>
In this example you can see the listing of translators, and
the first few lines of the list of files. Here you can store
the assignment of the file, the revision number (what English
file this translation was based on), and if there is no revision
number yet, a status (eg. working).
</para>
<para>
When it is time to update a file (eg. the English bookinfo.xml jumped
to 1.20 as time passed), you can ask for a diff between 1.16 and
1.20, and you'll see what modifications you need to port to
the translated file. You can ask for diffs by using the diff
SVN command, or using the web interface at <link xlink:href="&url.php.svn;">
&url.php.svn;</link>. The web interface can generate really
visual diffs, so you can easily spot what needs to be deleted,
added, or modified, and where.
</para>
<para>
If you choose this method, do not forget to update the revision
numbers stored in the <filename>Translators</filename> as
you update files in your language's tree.
</para>
<note>
<para>
This system is hard to maintain with the current <filename>phpdoc</filename>
layout, as tracking the revisions of more then 4000 files in one text file
can be very hard. Consider using the revision comment method described below,
where you only need to work on one file if you make updates in your language.
</para>
</note>
</sect2>
<sect2 xml:id="translation-revcheck-comments">
<title>The Revision Comments</title>
<para>
There is another way of tracking versions instead of
using the method described above. You can decide yourself,
if this is the better method for you or not. Some
languages use the Revision comments and <filename>Translators</filename>
files in parallel, some use only one of these. It is better to
decide, and not to use two systems, as things can get
very messy this way.
</para>
<para>
Instead of storing all responsibilities in a central file,
the revision comment system stores them in the files they
provide information about. Consider the <link
linkend="translation-revcheck-translators">Translators</link>
example above. Now we spread the revision and association
information in the files mentioned there. Let's see what
would be in the header of the <filename>bookinfo.xml</filename>
file in this case:
<programlisting>
<!-- EN-Revision: 1.16 Maintainer: jane Status: ready -->
</programlisting>
</para>
<para>
You can see we lose no information here, but we can also
add some other status information in the case it is needed
(eg. "partial" for incomplete translations). This revision
comment system is basically about storing the information in
the XML files, and not in a central place. This is extremely
convenient now, as there are more than 4000 files in the
English tree.
</para>
<para>
Currently, all three fields (English revision, Maintainer, Status)
are needed. Maintainer is intended to be a SVN user name, or some
nickname without a space, status can be anything without a space.
Note, that this header is not updated by SVN (in contrast with
<literal>$Revision</literal>, which is updated automatically).
This is only updated when you edit the contents of the comment
yourself.
</para>
<para>
You may see this as a good thing, but using these comments,
you lose the quick look on the whole list of your
files. No, you do not lose this, but get much more! If
you would like to build a list similar to the
<filename>Translators</filename> file given above, you
can go to the scripts directory and run:
<programlisting>
./revcheck.php xx > revcheck.html
</programlisting>
Here <literal>xx</literal> is the imaginary language code.
After running this script you'll get a
<filename>revcheck.html</filename> in the same directory.
You can find revision comparisons and links to diffs
for all the files in this language. You can also
add a further restriction parameter, the maintainer name,
so the script will only list the files corresponding to
the given maintainer. This HTML file gives you much more
than the <filename>Translators</filename> file. See it
yourself for an example with the Italian translation (code:
it). You can also easily run this with <literal>make
revcheck</literal> in the phpdoc root directory, in
case you issued a
<literal>./configure --with-lang=xx</literal> before.
</para>
<para>
As this system gets popular in many translation groups,
the automatic build process also generates a
<filename>revcheck.html.gz</filename> at the beginning
of the build process for that language. It is available
online in the languages manual directory.
See the Italian translation's file online:
<link xlink:href="&url.revcheck.it;">&url.revcheck.it;</link>.
</para>
<para>
There are some extensions introduced for this script,
as need arised to port all contents of the
<filename>Translators</filename> files to be available
in this generated HTML page. This is why the
<filename>translation.xml</filename> files are
introduced. Here comes a simple
<filename>translation.xml</filename> file
for the imaginary xx language (contents ported from
the <filename>Translators</filename> example above):
<programlisting>
<![CDATA[
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE translation SYSTEM "../dtds/translation.dtd">
<translation>
<intro>
This is some introductory text for the xx language translators
about who is the manager of the translation, and where to find
more information. This paragraph is printed on the top of the
generated revcheck.html page.
</intro>
<chmindex>
This file was generated: <datetime/><br/>
Go to <a href="http://www.php.net/download-docs">http://www.php.net/download-docs</a>
to get the actual version.
</chmindex>
<translators>
<person name="Joe Doe" email="joe@hotmail.com" nick="joedoe" svn="yes" editor="yes"/>
<person name="Jane Smith" email="jsmith@yahoo.com" nick="jane" svn="yes"/>
<person name="Joe Forever" email="joe@forever.net" nick="joefo" svn="no"/>
</translators>
<work-in-progress>
<file name="appendices/aliases.xml" person="joedoe" type="working"/>
<file name="functions/dbx.xml" person="joefo" type="working"/>
</work-in-progress>
</translation>
]]>
</programlisting>
As you can see, this file can store exactly the same content,
as a <filename>Translators</filename> file. What is new in this
file, is that you can add users without a SVN account, and can
assign ready documents or work-in-progress files to them. The
biggest advantage of using this add-on is that all this information
is used to generate dynamic tables of translators and files in
the <filename>revcheck.html</filename> file. All translators
are linked to from the individual files they are assigned
to, and there is a nice table showing the state of files for
all the translators. Assigning ready files may be needed if
a time consuming update is in progress on that file.
</para>
<para>
There are two CHM format related elements in this XML file. The
first is the <chmindex> element, where you can specify your
text to display on the CHM index page, with a link to the actual
versions. The editor parameter of a <person> is also used
in the grouping of translators on the CHM index page. These
are optional, but are vital for every translation where the
readers use the CHM format (all translations ;). Note that these
are not used for current CHM manual generation, but will be
important for the "next generation" CHMs, which are currently
under heavy testing and development.
</para>
<para>
There are two optional parameters you can add to a <file>,
if you would like to record it: the <literal>date</literal>
and <literal>revision</literal>. Date is assumed to be the date
when the work was started, revision is the checked out revision
of the English file used to start the work (denoted as
CO-Revision in the generated table). There is currently no
fixed format for the <literal>date</literal> parameter.
</para>
<para>
Another add-on to this system is just to give credit to all people
who worked on one file, and not just the current maintainer. To achieve
this goal, we added the credit comments. One credit comment in
eg. <filename>history.xml</filename> may look like this (in case
Joe Doe translated the file initially, but Jane followed him to
be the maintainer):
<programlisting>
<!-- CREDITS: joedoe -->
</programlisting>
The credits comment can contain a comma-separated list. These
comments only affect the display of the translators table in
<filename>revcheck.html.gz</filename>.
</para>
<para>
Revision comments can be used also to print a diff between the current
English file and the file used for the translation. Script
<filename>scripts/diff_en_rev.php</filename> was created for this
purpose.
</para>
</sect2>
</sect1>
</chapter>
<chapter xml:id="chapter-maillist" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Mailing Lists, Newsgroups and SVN Modules</title>
<para>
The PHP documentation is actively worked on each day, and the quality of work
is enhanced by both peer review (reviewing each others commits) and communication.
There are several mailing lists used to meet these goals including:
<itemizedlist>
<listitem>
<simpara>
<email>&email.phpdoc;</email> is used for general communication
regarding the PHP documentation. This list is used when making
decisions that affect the manual.
</simpara>
</listitem>
<listitem>
<simpara>
<email>&email.doc.vcs;</email> receives each commit made to both the English
tree of the documentation, and build system. Following this list is important
for peer review and all are encouraged to subscribe.
</simpara>
</listitem>
<listitem>
<simpara>
<email>&email.doc.bugs;</email> receives all documentation related bug activity
from &url.php.bugs;. This also includes bugs for the build system and translations.
</simpara>
</listitem>
</itemizedlist>
</para>
<para>
You may subscribe to a mailing list by sending a blank email that
utilizes the appropriate <literal>subscribe</literal> command. For
example, to subscribe to the main list, write a blank mail to
<link xlink:href="&url.docsubscribe;">&url.docsubscribe;</link>.
Similarly you may unsubscribe by sending a blank mail to
<link xlink:href="&url.docunsubscribe;">&url.docunsubscribe;</link>.
There is a web interface for these tasks at <link
xlink:href="&url.maillists;">&url.maillists;</link>.
</para>
<para>
There are also separate mailing lists for translation groups,
where native language discussions may go on and where language
specific SVN commits are posted to. These mailing lists are
named in the form of <literal>doc-LANGCODE</literal> where
LANGCODE is the same language code used in the SVN module name.
You can subscribe to / unsubscribe from these mailing lists
the same way as above explained, substituting
<literal>phpdoc</literal> in the email addresses with your list
name. A sample list name is <literal>doc-zh</literal> for the
Simplified Chinese list.
</para>
<para>
Currently these translation lists receive messages from the following
senders:
<itemizedlist>
<listitem>
<simpara>
Members of the list: discussion threads about anything
related to the given translation.
</simpara>
</listitem>
<listitem>
<simpara>
The SVN server: diffs for commits made to the translation to
their corresponding module's XML files.
</simpara>
</listitem>
<listitem>
<simpara>
Other senders: posting to the list is not restricted,
so people not on the list can also post messages. This
way we can receive reports and suggestions by plain mail
on the list.
</simpara>
</listitem>
</itemizedlist>
As there are many posters to the lists including some automatic
postings (bugs, svn commits) you should only subscribe to those
lists in which you are interested in. We recommend that if you
only work on the English version, you subscribe to the three main
lists (phpdoc, doc-cvs, doc-bugs) and redirect them to whichever
folder you see fit using filters within your email client.
If you are also a member of a translation group, then you should
additionally subscribe to the translation's mailing list.
Reading the main mailing lists mails enables you to know what is
going on in the English tree, what needs to be updated, and what
changed in the build system.
</para>
<para>
You should be able to handle the traffic of the mailing lists
you are subscribed to, but just in case you need to go for a long
summer break, and you need to unsubscribe, there are other methods
to read the messages after you come back:
<itemizedlist>
<listitem>
<simpara>
Read the messages on the web, in the archives at
<link xlink:href="&url.listarchive;">&url.listarchive;</link>
(this only works for the main phpdoc list!).
</simpara>
</listitem>
<listitem>
<simpara>
Download the messages with a news reader at
<link xlink:href="&url.listnews;">&url.listnews;</link>.
</simpara>
</listitem>
<listitem>
<simpara>
Read the messages on the web, with the news interface at
<link xlink:href="&url.listnewshttp;">&url.listnewshttp;</link>.
</simpara>
</listitem>
</itemizedlist>
</para>
<para>
The commit messages coming from the SVN server, that are larger
then 8kb, are put into attachments. You can always see the
commit message and file list in the body, but the diff is in an
attachment.
</para>
<para>
The Windows HTMLHelp Edition of the manual has a separate mailing
list for CHM related discussions and announcements. You can subscribe
to this mailing list at <link
xlink:href="&url.maillists;">&url.maillists;</link> using the
web interface.
</para>
<para>
There is also a mailing list named <literal>php-notes</literal>.
You can access it the same way as the <literal>phpdoc</literal>
list (just substitute <literal>phpdoc</literal> with
<literal>php-notes</literal>). This list is the place where
all the manual notes are posted. You may consider subscribing
to this mailing list if you would like to help manage the notes.
See the next section for more information on note editing guidelines.
</para>
<para>
There is also a list named <literal>doc-license</literal>, which is
set up for those who would like to get involved in the process of
deciding who can do what with the PHP manual. The common rule is that,
in addition to the rules set forth in the license, we try to get people
publishing modified versions of the manual to contribute some improvements
into the manual, fix errors they find, etc. You can subscribe to this
list as described at <xref linkend="chapter-maillist"/>.
</para>
<para>
Finally, the doc.php.net site is forming on the <literal>doc-web</literal>
mailing list. This site is supposed to be the meeting point for documentation
authors of any of the projects developed on PHP.net.
</para>
<para>
The following table documents the relations between the different SVN modules,
websites, mailing lists and newsgroups. Note that not all documentation sources
are built to be available online.
<table>
<title>SVN Modules, Mailing lists and Newsgroups</title>
<tgroup cols="5">
<thead>
<row>
<entry>Project Name</entry>
<entry>SVN Locations</entry>
<entry>Mailing List</entry>
<entry>Newsgroup</entry>
<entry>On the web</entry>
</row>
</thead>
<tbody>
<row>
<entry>General Communication</entry>
<entry>N/A</entry>
<entry><link xlink:href="mailto:&email.phpdoc;">phpdoc</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc">php.doc</link></entry>
<entry><link xlink:href="&url.php.manual;en/">manual/en</link></entry>
</row>
<row>
<entry>Documentation Bugs</entry>
<entry>N/A</entry>
<entry><link xlink:href="mailto:&email.doc.bugs;">doc-bugs</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.bugs">php.doc.bugs</link></entry>
<entry><link xlink:href="&url.php.bugs.doc;">Open Doc Bugs</link></entry>
</row>
<!-- FIXME: we still use doc-cvs for doc-svn... deal with this -->
<row>
<entry>SVN Repository</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/">phpdoc</link> and
<link xlink:href="&url.php.svn;phd/">phd</link>
</entry>
<entry><link xlink:href="mailto:&email.doc.vcs;">doc-cvs</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.vcs">php.doc.cvs</link></entry>
<entry>N/A</entry>
</row>
<row>
<entry>PHP Documentation Licensing</entry>
<entry>N/A</entry>
<entry><link xlink:href="mailto:doc-license&email.lists;">doc-license</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.license">php.doc.license</link></entry>
<entry>N/A</entry>
</row>
<row>
<entry>Extended CHM PHP Documentation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/htmlhelp/">phpdoc/htmlhelp</link>
</entry>
<entry><link xlink:href="mailto:doc-chm&email.lists;">doc-chm</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.chm">php.doc.chm</link></entry>
<entry><link xlink:href="&url.php.docs-echm;">&url.php.docs-echm;</link></entry>
</row>
<row>
<entry>PHP Documentation Website</entry>
<entry>
<link xlink:href="&url.php.svn;docweb/">docweb</link>,
<link xlink:href="&url.php.svn;funclist/">funclist</link>
</entry>
<entry><link xlink:href="mailto:doc-web&email.lists;">doc-web</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.web">php.doc.web</link></entry>
<entry><link xlink:href="&url.php.docweb;">&url.php.docweb;</link></entry>
</row>
<row>
<entry>Documentation User Notes</entry>
<entry>N/A</entry>
<entry><link xlink:href="mailto:php-notes&email.lists;">php-notes</link></entry>
<entry><link xlink:href="&url.newsserver;php.notes">php.notes</link></entry>
<entry>N/A</entry>
</row>
<row>
<entry>Arabic translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/ar/">phpdoc-ar</link>
</entry>
<entry><link xlink:href="mailto:doc-ar&email.lists;">doc-ar</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.ar">php.doc.ar</link></entry>
<entry><link xlink:href="&url.php.manual;ar/">manual/ar</link></entry>
</row>
<row>
<entry>Bulgarian translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/bg/">phpdoc-bg</link>
</entry>
<entry><link xlink:href="mailto:doc-bg&email.lists;">doc-bg</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.bg">php.doc.bg</link></entry>
<entry><link xlink:href="&url.php.manual;bg/">manual/bg</link></entry>
</row>
<row>
<entry>Catalan translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/ca/">phpdoc-ca</link>
</entry>
<entry><link xlink:href="mailto:doc-ca&email.lists;">doc-ca</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.ca">php.doc.ca</link></entry>
<entry><link xlink:href="&url.php.manual;ca/">manual/ca</link></entry>
</row>
<row>
<entry>Czech translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/cs/">phpdoc-cs</link>
</entry>
<entry><link xlink:href="mailto:doc-cs&email.lists;">doc-cs</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.cs">php.doc.cs</link></entry>
<entry><link xlink:href="&url.php.manual;cs/">manual/cs</link></entry>
</row>
<row>
<entry>Danish translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/da/">phpdoc-da</link>
</entry>
<entry><link xlink:href="mailto:doc-da&email.lists;">doc-da</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.da">php.doc.da</link></entry>
<entry><link xlink:href="&url.php.manual;da/">manual/da</link></entry>
</row>
<row>
<entry>German translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/de/">phpdoc-de</link>
</entry>
<entry><link xlink:href="mailto:doc-de&email.lists;">doc-de</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.de">php.doc.de</link></entry>
<entry><link xlink:href="&url.php.manual;de/">manual/de</link></entry>
</row>
<row>
<entry>Greek translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/el/">phpdoc-el</link>
</entry>
<entry><link xlink:href="mailto:doc-el&email.lists;">doc-el</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.el">php.doc.el</link></entry>
<entry><link xlink:href="&url.php.manual;el/">manual/el</link></entry>
</row>
<row>
<entry>Spanish translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/es/">phpdoc-es</link>
</entry>
<entry><link xlink:href="mailto:doc-es&email.lists;">doc-es</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.es">php.doc.es</link></entry>
<entry><link xlink:href="&url.php.manual;es/">manual/es</link></entry>
</row>
<row>
<entry>Persian (Farsi) translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/fa/">phpdoc-fa</link>
</entry>
<entry><link xlink:href="mailto:doc-fa&email.lists;">doc-fa</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.fa">php.doc.fa</link></entry>
<entry><link xlink:href="&url.php.manual;fa/">manual/fa</link></entry>
</row>
<row>
<entry>Finnish translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/fi/">phpdoc-fi</link>
</entry>
<entry><link xlink:href="mailto:doc-fi&email.lists;">doc-fi</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.fi">php.doc.fi</link></entry>
<entry><link xlink:href="&url.php.manual;fi/">manual/fi</link></entry>
</row>
<row>
<entry>French translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/fr/">phpdoc-fr</link>
</entry>
<entry><link xlink:href="mailto:doc-fr&email.lists;">doc-fr</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.fr">php.doc.fr</link></entry>
<entry><link xlink:href="&url.php.manual;fr/">manual/fr</link></entry>
</row>
<row>
<entry>Hebrew translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/he/">phpdoc-he</link>
</entry>
<entry><link xlink:href="mailto:doc-he&email.lists;">doc-he</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.he">php.doc.he</link></entry>
<entry><link xlink:href="&url.php.manual;he/">manual/he</link></entry>
</row>
<row>
<entry>Chinese (Hong Kong Cantonese) translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/hk/">phpdoc-hk</link>
</entry>
<entry><link xlink:href="mailto:doc-hk&email.lists;">doc-hk</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.hk">php.doc.hk</link></entry>
<entry><link xlink:href="&url.php.manual;hk/">manual/hk</link></entry>
</row>
<row>
<entry>Hungarian translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/hu/">phpdoc-hu</link>
</entry>
<entry><link xlink:href="mailto:doc-hu&email.lists;">doc-hu</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.hu">php.doc.hu</link></entry>
<entry><link xlink:href="&url.php.manual;hu/">manual/hu</link></entry>
</row>
<row>
<entry>Indonesian translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/id/">phpdoc-id</link>
</entry>
<entry><link xlink:href="mailto:doc-id&email.lists;">doc-id</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.id">php.doc.id</link></entry>
<entry><link xlink:href="&url.php.manual;id/">manual/id</link></entry>
</row>
<row>
<entry>Italian translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/it/">phpdoc-it</link>
</entry>
<entry><link xlink:href="mailto:doc-it&email.lists;">doc-it</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.it">php.doc.it</link></entry>
<entry><link xlink:href="&url.php.manual;it/">manual/it</link></entry>
</row>
<row>
<entry>Japanese translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/ja/">phpdoc-ja</link>
</entry>
<entry><link xlink:href="mailto:doc-ja&email.lists;">doc-ja</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.ja">php.doc.ja</link></entry>
<entry><link xlink:href="&url.php.manual;ja/">manual/ja</link></entry>
</row>
<row>
<entry>Korean translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/kr/">phpdoc-kr</link>
</entry>
<entry><link xlink:href="mailto:doc-kr&email.lists;">doc-kr</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.kr">php.doc.kr</link></entry>
<entry><link xlink:href="&url.php.manual;kr/">manual/kr</link></entry>
</row>
<row>
<entry>Lithuanian translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/lt/">phpdoc-lt</link>
</entry>
<entry><link xlink:href="mailto:doc-lt&email.lists;">doc-lt</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.lt">php.doc.lt</link></entry>
<entry><link xlink:href="&url.php.manual;lt/">manual/lt</link></entry>
</row>
<row>
<entry>Dutch translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/nl/">phpdoc-nl</link>
</entry>
<entry><link xlink:href="mailto:doc-nl&email.lists;">doc-nl</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.nl">php.doc.nl</link></entry>
<entry><link xlink:href="&url.php.manual;nl/">manual/nl</link></entry>
</row>
<row>
<entry>Norwegian translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/no/">phpdoc-no</link>
</entry>
<entry><link xlink:href="mailto:doc-no&email.lists;">doc-no</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.no">php.doc.no</link></entry>
<entry><link xlink:href="&url.php.manual;no/">manual/no</link></entry>
</row>
<row>
<entry>Polish translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/pl/">phpdoc-pl</link>
</entry>
<entry><link xlink:href="mailto:doc-pl&email.lists;">doc-pl</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.pl">php.doc.pl</link></entry>
<entry><link xlink:href="&url.php.manual;pl/">manual/pl</link></entry>
</row>
<row>
<entry>Portuguese translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/pt/">phpdoc-pt</link>
</entry>
<entry><link xlink:href="mailto:doc-pt&email.lists;">doc-pt</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.pt">php.doc.pt</link></entry>
<entry><link xlink:href="&url.php.manual;pt/">manual/pt</link></entry>
</row>
<row>
<entry>Brazilian Portuguese translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/pt_BR/">phpdoc-pt_BR</link>
</entry>
<entry><link xlink:href="mailto:doc-pt-br&email.lists;">doc-pt-br</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.pt-br">php.doc.pt-br</link></entry>
<entry><link xlink:href="&url.php.manual;pt_BR/">manual/pt_BR</link></entry>
</row>
<row>
<entry>Romanian translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/ro/">phpdoc-ro</link>
</entry>
<entry><link xlink:href="mailto:doc-ro&email.lists;">doc-ro</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.ro">php.doc.ro</link></entry>
<entry><link xlink:href="&url.php.manual;ro/">manual/ro</link></entry>
</row>
<row>
<entry>Russian translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/ru/">phpdoc-ru</link>
</entry>
<entry><link xlink:href="mailto:doc-ru&email.lists;">doc-ru</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.ru">php.doc.ru</link></entry>
<entry><link xlink:href="&url.php.manual;ru/">manual/ru</link></entry>
</row>
<row>
<entry>Slovak translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/sk/">phpdoc-sk</link>
</entry>
<entry><link xlink:href="mailto:doc-sk&email.lists;">doc-sk</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.sk">php.doc.sk</link></entry>
<entry><link xlink:href="&url.php.manual;sk/">manual/sk</link></entry>
</row>
<row>
<entry>Slovenian translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/sl/">phpdoc-sl</link>
</entry>
<entry><link xlink:href="mailto:doc-sl&email.lists;">doc-sl</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.sl">php.doc.sl</link></entry>
<entry><link xlink:href="&url.php.manual;sl/">manual/sl</link></entry>
</row>
<row>
<entry>Swedish translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/sv/">phpdoc-sv</link>
</entry>
<entry><link xlink:href="mailto:doc-sv&email.lists;">doc-sv</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.sv">php.doc.sv</link></entry>
<entry><link xlink:href="&url.php.manual;sv/">manual/sv</link></entry>
</row>
<row>
<entry>Turkish translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/tr/">phpdoc-tr</link>
</entry>
<entry><link xlink:href="mailto:doc-tr&email.lists;">doc-tr</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.tr">php.doc.tr</link></entry>
<entry><link xlink:href="&url.php.manual;tr/">manual/tr</link></entry>
</row>
<row>
<entry>Chinese (Traditional) translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/tw/">phpdoc-tw</link>
</entry>
<entry><link xlink:href="mailto:doc-tw&email.lists;">doc-tw</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.tw">php.doc.tw</link></entry>
<entry><link xlink:href="&url.php.manual;tw/">manual/tw</link></entry>
</row>
<row>
<entry>Chinese (Simplified) translation</entry>
<entry>
<link xlink:href="&url.php.svn;phpdoc/zh/">phpdoc-zh</link>
</entry>
<entry><link xlink:href="mailto:doc-zh&email.lists;">doc-zh</link></entry>
<entry><link xlink:href="&url.newsserver;php.doc.zh">php.doc.zh</link></entry>
<entry><link xlink:href="&url.php.manual;zh/">manual/zh</link></entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</chapter>
<chapter xml:id="chapter-user-notes" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>User Note Editing Guidelines</title>
<para>
These are some guidelines to follow when editing user notes in the manual.
</para>
<para>
To begin editing user notes in the manual, you must have SVN commit access
to the manual, and you must either:
<itemizedlist>
<listitem>
<para>
Subscribe to the <literal>php-notes</literal> mailing list or newsgroup
as described at <xref linkend="chapter-maillist"/>. As a user submits a
new user note, it will appear as a message on the mailing list with
links in the footer of the email that enable you to delete, edit, or
reject that particular note.
</para>
</listitem>
<listitem>
<para>
Log on to the server at
<link xlink:href='&url.notes.admin;'>&url.notes.admin;</link> using your
SVN user ID and password. The user notes administration interface
enables you to search for user notes that match particular strings
and edit or change the status of particular notes directly through the
Web interface.
</para>
</listitem>
</itemizedlist>
</para>
<para>
The thing that seems to confuse the most people is the difference between
'rejecting' and 'deleting' a note. Basically, they both remove the note
from the manual, but 'rejecting' sends the user an email about the rejection
with links to support links and other information. Here are some guidelines
of when to use each. This section is mostly an edited version of Jesus M.
Castagnetto's email, with a few additions and re-phrases. The code for
managing user notes can be seen here: <link xlink:href="&url.user-notes;">
&url.user-notes;</link>. You can also view the exact text of the rejection
email there.
<itemizedlist>
<listitem>
<simpara>
If the note is asking for help (support request, 'Does this work...?',
etc.) or if the person is reporting a bug, 'reject' the note. The email
will show them the proper place to report such issues.
</simpara>
</listitem>
<listitem>
<simpara>
If the note contains useful information appropriate for the manual proper,
you may incorporate the information into the manual and then 'delete' the
note.
</simpara>
</listitem>
<listitem>
<simpara>
If the note is in the wrong place, incorrect, a giant block of silly,
unnecessary code, poorly written, an answer to another person's question,
or just overall confusing, 'delete' it. If it was an answer to a question,
hunt down that note and 'reject' it.
</simpara>
</listitem>
<listitem>
<simpara>
If the note is in a language other than English, 'delete' the note.
</simpara>
</listitem>
<listitem>
<simpara>
If the note submitter's email address is obviously bogus, don't 'reject' the
note, just 'delete' it. Rejecting the note just gives the mail server
more work trying to send an email to a non-existent address, which doesn't
help anything.
</simpara>
</listitem>
</itemizedlist>
</para>
<para>
If for some reason you need to add to a note, first ask yourself if it's worth it.
Make sure you're not answering a user's question; if you are, then the note
doesn't belong there (see above). If you're clarifying a point, see if it is
appropriate to add the clarification to the manual proper; if it is, add it
and 'delete' the note (see above). If you still feel that adding your
addition to the note will be the best option, then go ahead and add it.
Usually, editors add their note in a "Editor's Note" block at the top. Unless
you are correcting a minor error, make it obvious that you edited the note.
</para>
<para>
If you have some free time and commit access to phpdoc, try going through some
of the manual pages and adding some of the better notes into the documentation
proper. Be sure to 'delete' these notes after they're implemented.
</para>
<para>
If you are in doubt about what to do with a note, you may ask for help on the
php-notes mailing list (or phpdoc, if what you're doing involves the
documentation proper).
</para>
</chapter>
&howto.scripts;
<chapter xml:id="chapter-misc" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Miscellaneous Notes</title>
<para>
Misc. notes that don't need a full section. (stuff like
http://www.zend.com/phpfunc/, etc.)
</para>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"howto.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
|