Contributing to the documentation is simple. The files are hosted on http://github.com/cakephp/docs. Feel free to fork the repo, add your changes/improvements/translations and give back by issuing a pull request. You can even edit the docs online with github, without ever downloading the files.
Email the docs team (docs at cakephp dot org) or hop on IRC (#cakephp on freenode) to discuss any translation efforts you would like to participate in.
Translator tips:
The new CakePHP documentation is written with ReST formatted text. ReST (Re Structured Text) is a plain text markup syntax similar to markdown, or textile. To maintain consistency it is recommended that when adding to the CakePHP documentation you follow the guidelines here on how to format and structure your text.
Lines of text should be wrapped at 80 columns. The only exception should be long urls, and code snippets.
Section headers are created by underlining the title with punctuation characters at least the length of the text.
Headings should not be nested more than 5 levels deep. Headings should be preceded and followed by a blank line.
Paragraphs are simply blocks of text, with all the lines at the same level of indentation. Paragraphs should be separated by more than one empty line.
If asterisks or backquotes appear in running text and could be confused with inline markup delimiters, they have to be escaped with a backslash.
Inline markup has a few restrictions:
List markup is very similar to markdown. Unordered lists are indicated by starting a line with a single asterisk and a space. Numbered lists can be created with either numerals, or # for auto numbering:
* This is a bullet
* So is this. But this line
has two lines.
1. First line
2. Second line
#. Automatic numbering
#. Will save you some time.
Indented lists can also be created, by indenting sections and separating them with an empty line:
* First line
* Second line
* Going deeper
* Whoah
* Back to the first level.
Definition lists can be created by doing the following:
term
definition
CakePHP
An MVC framework for PHP
Terms cannot be more than one line, but definitions can be multi-line and all lines should be indented consistently.
There are several kinds of links, each with their own uses.
Links to external documents can be with the following:
`External Link <http://example.com>`_
The above would generate a link pointing to http://example.com
Other pages in the documentation can be linked to using the :doc: role. You can link to the specified document using either an absolute or relative path reference. You should omit the .rst extension. For example, if the reference :doc:`form` appears in the document core-helpers/html, then the link references core-helpers/form. If the reference was :doc:`/core-helpers`, it would always reference /core-helpers regardless of where it was used.
You can cross reference any arbitrary title in any document using the :ref: role. Link label targets must be unique across the entire documentation. When creating labels for class methods, it’s best to use class-method as the format for your link label.
The most common use of labels is above a title. Example:
.. _label-name:
Section heading
---------------
More content here.
Elsewhere you could reference the above section using :ref:`label-name`. The link’s text would be the title that the link preceded. You can also provide custom link text using :ref:`Link text <label-name>`.
The CakePHP documentation uses the phpdomain to provide custom directives for describing PHP objects and constructs. Using these directives and roles is required to give proper indexing and cross referencing features.
Each directive populates the index, and or the namespace index.
This directive declares a new PHP global variable.
Defines a new global function outside of a class.
This directive declares a new PHP constant, you can also use it nested inside a class directive to create class constants.
This directive declares a new Exception in the current namespace. The signature can include constructor arguments.
Describes a class. Methods, attributes, and constants belonging to the class should be inside this directive’s body:
.. php:class:: MyClass
Class description
.. php:method:: method($argument)
Method description
Attributes, methods and constants don’t need to be nested. They can also just follow the class declaration:
.. php:class:: MyClass
Text about the class
.. php:method:: methodName()
Text about the method
See also
Describe a class method, its arguments, return value, and exceptions:
.. php:method:: instanceMethod($one, $two)
:param string $one: The first parameter.
:param string $two: The second parameter.
:returns: An array of stuff.
:throws: InvalidArgumentException
This is an instance method.
Describe a static method, its arguments, return value and exceptions, see php:method for options.
Describe an property/attribute on a class.
The following roles refer to php objects and links are generated if a matching directive is found:
Reference a PHP function.
Reference a global variable whose name has $ prefix.
Reference either a global constant, or a class constant. Class constants should be preceded by the owning class:
DateTime has an :php:const:`DateTime::ATOM` constant.
Reference a class by name:
:php:class:`ClassName`
Reference a method of a class. This role supports both kinds of methods:
:php:meth:`DateTime::setDate`
:php:meth:`Classname::staticMethod`
Reference a property on an object:
:php:attr:`ClassName::$propertyName`
Reference an exception.
Literal code blocks are created by ending a paragraph with ::. The literal block must be indented, and like all paragraphs be separated by single lines:
This is a paragraph::
while ($i--) {
doStuff()
}
This is regular text again.
Literal text is not modified or formatted, save that one level of indentation is removed.
There are often times when you want to inform the reader of an important tip, special note or a potential hazard. Admonitions in sphinx are used for just that. There are three kinds of admonitions.
All admonitions are made the same:
.. note::
Indented and preceded and followed by a blank line. Just like a paragraph.
This text is not part of the note.
Tip
This is a helpful tid-bit you probably forgot.
Note
You should pay attention here.
Warning
It could be dangerous.