• Stars
    star
    130
  • Rank 268,527 (Top 6 %)
  • Language
  • Created over 3 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Chinese translation of the PHP documentation

PHP 中文手册

Build

本仓库是官方 docbook 的 git 仓库。

请注意原来的位于 git.php.net 的上游仓库已被弃用,目前此仓库为正式仓库,而非镜像

PHP 中文手册翻译指南

在加入翻译小组之前

PHP 文档的翻译工作完全是一项志愿行动,你不会从中得到任何利益。而且要建立起一个适合进行翻译工作的环境也是相当繁琐的,例如申请 git 账号,拥有 Unix/Linux 环境以及 git 工具,订阅相关的邮件列表,翻译完成后还要继续关注英文文档是否有了更新等等。

你能得到的是什么呢?是一种无私奉献并与世界各地的同好们一起工作的乐趣,英文翻译水平的提高(希望这样),对 PHP 更加深入的了解以及在 PHP 文档的中文页面中署上你的大名。

如果你不能满足下面的所有条件,那么你可能不适合加入 PHP 文档的翻译工作:

  1. 愿意进行无私奉献加入这个志愿行动;
  2. 英文程度较好,有较好的汉语书面表达能力;
  3. 对 PHP 本身有相当的了解;
  4. 对 Unix/Linux 有相当了解,能够自行建立起 git 的工作环境;
  5. 在参与翻译工作时(请注意这一点)愿意为此投入较多时间,并且能够迅速完成自己承担的文件的翻译工作。不要因为一时冲动加入了翻译工作之后,所经手的文件完成一部分之后却由于种种原因而不能继续下去。大家都不希望看到一个文件历时数个星期甚至数月都未能完成翻译工作;
  6. 以后能够定期访问并且尽量更新自己所维护的文件。

假如你能够做到以上这几点,那么欢迎你加入 PHP 中文文档翻译小组!

实在难以建立 git 工作环境或者申请不到 git 账号的朋友如果愿意参与,可以参考 无障碍参与方式

有用的链接

无障碍参与方式

#### 在线编辑

官方提供一个最简单的编辑文档方式,任何人都可以用你的 GitHub 或 Facebook 账号登录 edit.php.net,在线查看文档库,在线提交修改内容,你修改的内容需要经过翻译小组审核后,才会正式合并到官方文档中。

注意:文档仓库转到 git 后,在线编辑器尚未支持 git 仓库,现阶段请使用提交 PR 方式来参与。

通过 GitHub 提交 PR

你可以直接按照 GitHub 的工作流程:GitHub Flow,fork 此仓库完成修改后再提交 Pull Request,你提交的 PR 会在通过翻译小组审核后,合并到官方文档中。

如果你不满足于简单的参与,希望对 PHP 文档手册做出更大的贡献,你需要配置对应的环境,并申请自己的 git 账号,请继续往下阅读。

深度参与方式

环境要求

在我们开始之前,我们假设:

  • 你运行的是 macOS/Linux 环境
  • 你已经安装了 php,并且可以通过命令行来运行它
  • 你已经安装了 git 环境

创建一个目录,把我们需要的所有工具和 repos 放在里面,以便开始为文档做贡献:

mkdir ~/php-docs
cd ~/php-docs

获取文档仓库

mkdir phpdoc
cd phpdoc
git clone [email protected]:php/doc-en.git en
git clone [email protected]:php/doc-zh.git zh
git clone [email protected]:php/doc-base.git

了解 DocBook 格式

仓库里的 .xml 文件是文档的原始文件,我们所看到的 html 和官方在线的 php 文档,都是由这些 xml 文件生成的。XML 的格式为 DocBook,这也是在 markdown 成为主流之前最流行的文档规范。

PhD: 官方的手册生成工具

官方提供了一个构建 DocBook 的工具 PhD,通过以下方式获取:

cd ~/php-docs
git clone [email protected]:php/phd.git
cd ./phd

查看使用帮助:

php render.php --help

翻译流程

git 仓库中的每个文件都有一个版本号,它用来指明当前文件的版本号,我们使用版本号来检查一个文件是否与它的英文版本同步:找出翻译是否是最新的。这就是为什么您的翻译中的每个文件都需要一个 EN-Revision 注释,其语法如下。

<!-- EN-Revision: [some number] Maintainer: [username] Status: ready -->

为便于跟踪翻译工作以及保持与英文文档一致,请用以下四行代替原来英文文档的前两行(以下为示例,请依据实际情况修改):

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision: 350481 $ -->
<!-- $Author: Avenger $ -->
<!-- EN-Revision: 324085 Maintainer: verdana Status: ready -->

有时也可以加入这样一行:

<!-- CREDITS: Gregory,dallas -->

各项变量说明如下:

变量 说明
$Revision 中文文档的版本号,自动更新
$Author 最后一次 checkin 的人员的 git 账号,自动更新
EN-Revision 与当前中文文档相对应的英文文档的版本号(当前指的是 Commit ID,后续不再再次说明),非常重要!方便后续文档更新检测
Maintainer 此中文文档的维护者,一定要与 translation.xml 中的 nick 相同,区分大小写!
Status 翻译完成后写 ready,翻译一部分的写 partial
CREDITS 如果你对别人维护的文档做了重大更新或者完成了其中相当大的一部分翻译工作,请在这里添上你的昵称,多个人用逗号隔开

翻译新文件的流程

假设你想翻译 in_array() 函数的文档,但这个函数在中文文档中还不存在,请打开 phpdoc/en/reference/array/in-array.xml 文件,并复制版本号。英文文件的头可能是这样的:

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision: 310394 $ -->

所以我们的版本号是 310394。让我们看看如果假设你的 git 用户名是 Avenger,你的翻译文件头应该是怎样的。

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 310394 Maintainer: Avenger Status: ready -->

规则很简单:如果你的版本号等于你所翻译的英文文件的版本号,那么你的翻译就是最新的。否则,就需要进行同步更新。

同步更新翻译的流程

假设你想更新 password_needs_rehash() 的翻译。有两种简单的方法可以看到哪些文件需要更新,哪些需要修改以与英文版本同步:使用 在线编辑器doc.php.net 工具。下面以第二种方法为例:

点击 Outdated files 链接,可以通过目录或用户名来过滤文件(用户名来自于上述头注释中的 Maintainer 变量)。我们假设该工具将 password-needs-rehash.xml 标记为过时的文件。点击文件名,你会看到 diff -- 两个版本的文件之间的变化列表:你的版本(在你的翻译中的 EN-Revision 中的当前数字)和英文源树中的最新版本。下面的例子应该是 diff 的样子。

--- phpdoc/en/trunk/reference/password/functions/password-needs-rehash.xml    2013/06/21 12:24:55    330609
+++ phpdoc/en/trunk/reference/password/functions/password-needs-rehash.xml    2014/03/24 20:23:27    333093
@@ -12,8 +12,8 @@
   <methodsynopsis>
    <type>boolean</type><methodname>password_needs_rehash</methodname>
    <methodparam><type>string</type><parameter>hash</parameter></methodparam>
-   <methodparam><type>string</type><parameter>algo</parameter></methodparam>
-   <methodparam choice="opt"><type>string</type><parameter>options</parameter></methodparam>
+   <methodparam><type>integer</type><parameter>algo</parameter></methodparam>
+   <methodparam choice="opt"><type>array</type><parameter>options</parameter></methodparam>
   </methodsynopsis>
   <para>
    This function checks to see if the supplied hash implements the algorithm

前两行表示比较过的版本。第一行是取自 EN-Revision 编号,第二行是本文件的当前英文版本。

我们可以直观的看到两个文件之间的区别,文档概要中的参数 optionsalgo 的类型分别从字符串变为了整数和数组。所以我们要在翻译的文档中进行这些对应的修改,以使其成为最新的版本。打开 phpdoc/zh/reference/password/functions/password-needs-rehash.xml 修改这两行,使其与英文版本一致。同步完成这些修改后,需要在标题注释中更新 EN-Revision 编号。

原文件头:

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 330609 Maintainer: someone Status: ready ->。
<!-- $Revision: 123456$ -->

修改后的文件头部应该是这样的:

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 333093 Maintainer: someone Status: ready -->
<!-- $Revision$ -->
<!-- CREDITS: Avenger -->

新的 EN-Revision 编号来自于上面所示的差异,如果你想把自己添加到已经存在的 CREDITS 标签中,用逗号隔开用户名即可:<!-- CREDITS:George,Avenger ->

现在翻译已经是最新的了,我们只需要等待官方文档每天同步更新,即可看到你的最新工作成果。

翻译中需要注意的问题

  1. 文件是 UNIX 的文件格式而不是 DOS 的,也就是文件中的换行标记只有换行符(\n),而没有回车符(\r)。并且在文件中不要使用 (制表符\t)而要使用空格;
  2. 请注意翻译中的标点问题,使用中文标点符号;
  3. 中英文字词之间使用空格分开,与中文标点之间就不要有空格了;
  4. 不要翻译 TRUE,FALSE,Boolean 之类的词。翻译中请注意!
  5. 请翻译的时候注意使用书面用语,翻译完成后检查确认没有错别字和其它错误后再提交!
  6. 请参加翻译的人员加入 [email protected] 邮件列表.具体方法是向 [email protected] 发一封空白电子邮件,然后回信确认。我们在这个邮件列表里面讨论和协调翻译工作。该邮件列表的内容可以通过如下地址访问 https://news-web.php.net/php.doc.zh
  7. 请参加翻译的人员,一定要在提交翻译完成的 XML 文件前运行 php configure.php --with-lang=zh 命令,检查文件是否有语法和拼写错误。

有关在翻译后的中文文件中的空格与换行的说明

在原始的英文 XML 文件中不存在此问题,因为英文单词之间本来就有一个空格,而无论是 XML 文件还是编译后的 HTML 文件对待任何连续的空格,回车以及制表符都当成一个空格看待。但是在中文书写习惯中,汉字之间以及与中文标点符号之间都是没有空格的。因此英文文件中类似这样的段落:

<para>
    This section applies to Windows 95/98/Me and
    Windows NT/2000/XP. Do not expect PHP to work on
    16 bit platforms such as Windows 3.1. Sometimes
    we refer to the supported Windows platforms as Win32.
</para>

在编译后显示出来当然完全正常。可是如果翻译成这样:

<para>
    本节内容适用于 Windows 95/98/Me 以及 Windows NT/2000/XP。
    PHP 不能在 16 位平台例如 Windows 3.1 下运行。有时我们把
    支持 PHP 的 Windows 平台称为 Win32。
</para>

就会在 HTML 页面显示时在“XP。”和“PHP 不能”以及“我们把”和“支持”之间出现一个不希望的空格,破坏了页面的美观。这种情况下当然可以将翻译的结果全部放到同一行中来解决,例如:

<para>
    本节内容适用于 Windows 95/98/Me 以及 Windows NT/2000/XP。PHP 不能在 16 位平台例如 Windows 3.1 下运行。有时我们把支持 PHP 的 Windows 平台称为 Win32。
</para>

但这样给翻译时的阅读又带来了不便。可用的解决方法是在翻译后的文件中保留下来的英文单词前后换行 - 既然中英文字词之间本来就是用空格隔开的并且一个空格和多个空格也没什么区别。那么以上这一段在中文文件中可以写成这样:(要注意,不要在中文标点符号前后换行!)

<para>
    本节内容适用于 Windows 95/98/Me 以及
    Windows NT/2000/XP。PHP 不能在 16 位平台例如
    Windows 3.1 下运行。有时我们把支持
    PHP 的 Windows 平台称为 Win32。
</para>

这样一来显示的时候就没问题了。如果翻译后结果是一大段纯中文的文本,那就没办法了,只能老老实实放在同一行,即使很长很长。

总之原则是在保证显示出来的页面美观无误的情况下兼顾原始 XML 文件的可读性。

More Repositories

1

php-src

The PHP Interpreter
C
36,014
star
2

php-langspec

PHP Language Specification
PHP
2,289
star
3

web-php

The www.php.net site
PHP
778
star
4

doc-en

English PHP documentation
XML
472
star
5

doc-base

Tools for the PHP documentation
PHP
321
star
6

php-rfcs

Experimental repo for GitHub based RFC workflow. For now, please don't submit PRs.
294
star
7

php-gtk-src

The PHP GTK Bindings
C++
201
star
8

pecl-php-operator

Operator overloading for Objects
C
124
star
9

doc-pt_br

Brazilian Portuguese translation of the PHP documentation
XML
98
star
10

pie

The PHP Installer for Extensions
90
star
11

phd

PHD
PHP
68
star
12

web-qa

The PHP QA Website
PHP
68
star
13

pecl-file_formats-yaml

YAML-1.1 parser and emitter
C
67
star
14

doc-ja

Japanese translation of the PHP documentation
HTML
67
star
15

pecl-search_engine-solr

The Apache Solr PHP extension is an extremely fast, light-weight, feature-rich library that allows PHP applications to communicate easily and efficiently with Apache Solr server instances using an object-oriented API.
C
61
star
16

web-bugs

The PHP Bugtracking System
PHP
58
star
17

pecl-php-uploadprogress

An extension to track progress of a file upload
C
53
star
18

pecl-networking-ssh2

Bindings for the libssh2 library
C
49
star
19

php-sdk-binary-tools

Tool kit for building PHP under Windows
M4
47
star
20

presentations

PHP presentations
HTML
45
star
21

doc-ru

Russian translation of the PHP documentation
XML
45
star
22

web-doc-editor

The PHP Documentation Editor
JavaScript
43
star
23

systems

Hooks and Cronjobs for PHP Infrastructure
C
41
star
24

pecl-networking-uuid

UUID extension
C
35
star
25

web-wiki

The PHP Wiki Systems
PHP
35
star
26

doc-fr

French translation of the PHP documentation
HTML
34
star
27

pecl-networking-gearman

PHP wrapper to libgearman
C
32
star
28

web-doc

PHP
32
star
29

web-php-distributions

All released PHP distributions
PHP
28
star
30

php-tasks

Tasks that need doing. This is for php-src maintainers. The end-user bug tracker is at https://bugs.php.net/.
28
star
31

pecl-mail-mailparse

Email message manipulation
C
27
star
32

pecl-system-yaf

PHP Framework in PHP extension
C
26
star
33

pecl-database-mysql

Legacy MySQL extension
PHP
25
star
34

web-pecl

The PECL website
PHP
24
star
35

web-master

The user management system
PHP
23
star
36

web-windows

PHP
22
star
37

doc-de

German translation of the PHP documentation
XML
21
star
38

pecl-languages-v8js

V8 Javascript Engine for PHP
C++
21
star
39

pecl-system-dio

Direct I/O functions
C
21
star
40

pecl-tools-stomp

Stomp Client Extension
C
20
star
41

web-pres2

PHP presentation system
PHP
19
star
42

web-gtk

The PHP GTK site
HTML
18
star
43

doc-es

Spanish translation of the PHP documentation
18
star
44

pecl-database-ibm_db2

Extension for IBM DB2 Universal Database, IBM Cloudscape, and Apache Derby
PHP
18
star
45

pecl-database-mysql_xdevapi

PECL MySQL X DevAPI
C++
17
star
46

pecl-http-pecl_http

Extended HTTP Support
17
star
47

pecl-caching-apc

Alternative PHP Cache
PHP
17
star
48

pecl-system-sync

Synchronization objects
C
16
star
49

pecl-numbers-bitset

C
16
star
50

pecl-event-libevent

Libevent - event notification
C
15
star
51

pecl-php-runkit

PECL Runkit Extension
15
star
52

pecl-database-pdo_ibm

PDO driver for IBM databases
PHP
15
star
53

web-gcov

The PHP GCOV system
PHP
15
star
54

web-shared

Shared code across various .php.net sites
CSS
14
star
55

web-people

The PHP people system
PHP
14
star
56

doc-tr

Turkish translation of the PHP documentation
14
star
57

pecl-php-parsekit

PHP Opcode Analyser
C
14
star
58

pecl-encryption-mcrypt

Interface to the mcrypt library
PHP
14
star
59

web-rmtools

The PHP release management tools
PHP
13
star
60

karma

The Karma Stuff
PHP
12
star
61

pecl-text-xdiff

File differences/patches.
C
12
star
62

pecl-search_engine-sphinx

Client extension for Sphinx - opensource SQL full-text search engine
C
12
star
63

pecl-php-ffi

Foreign Function Interface
C
11
star
64

pecl-caching-memcache

memcached extension
C
10
star
65

web-news

The mailinglist frontend
PHP
10
star
66

doc-it

Italian translation of the PHP documentation
HTML
10
star
67

.github

Github organization configuration
10
star
68

pftt2

A test tool for the PHP ecosystem designed for convenience, thoroughness and speed.
Java
10
star
69

pecl-datetime-timezonedb

Timezone Database to be used with PHP's date and time functions
C
10
star
70

pecl-php-blenc

BLowfish ENCryption for PHP Scripts
C
9
star
71

pecl-authentication-krb5

PECL krb5 extension
C
9
star
72

doc-uk

Ukrainian translation of the PHP documentation
9
star
73

php-svn-helpers

Helper scripts to checkout the php-src repository from github.
Shell
9
star
74

pecl-networking-mqseries

MQseries client library
C
9
star
75

pecl-web_services-oauth

oauth consumer extension
C
8
star
76

pecl-security-selinux

SELinux binding for PHP script language
C
7
star
77

pecl-text-ssdeep

PECL ssdeep Fuzzy Hashing extension
C
7
star
78

pecl-networking-geoip

Map IP address to geographic places
C
7
star
79

pecl-networking-xmlrpc

XML-RPC server and client bindings
C
7
star
80

php-windows-builder

Tooling to build PHP on Windows
PowerShell
7
star
81

pecl-tools-fann

PECL fann - Artificial neural networks
C
6
star
82

pecl-math-trader

Technical Analysis for traders.
C
6
star
83

pecl-database-pdo_user

Userspace driver for PDO
C
6
star
84

playground

Git testing playground
PHP
6
star
85

pecl-database-dbase

dBase database file access functions
PHP
6
star
86

pecl-caching-wincache

Windows Cache Extension for PHP
C
5
star
87

php-fuzzing-sapi

PHP Fuzzing SAPI
C
5
star
88

pecl-file_formats-rar

rar extension
C++
5
star
89

doc-pl

Polish translation of the PHP documentation
HTML
4
star
90

benchmarking-data

4
star
91

pecl-database-pq

PECL pq extension
4
star
92

pecl-xml-xmldiff

XML diff and merge
C++
4
star
93

pecl-text-wddx

WDDX data exchange format
PHP
4
star
94

pecl-php-raphf

PECL raphf extension
4
star
95

pecl-database-pdo_informix

PDO driver for IBM Informix INFORMIX databases
C
4
star
96

pecl-php-memtrack

PHP extension to watch (unusually high) memory consumption in PHP scripts
C
4
star
97

pecl-internationalization-fribidi

Implementation of the Unicode BiDi algorithm
C
4
star
98

pecl-file_formats-lzf

LZF compression
C
3
star
99

pecl-database-interbase

InterBase/FireBird extension
C
3
star
100

pecl-multimedia-xmp

xmp module file
C
3
star