Skip to content

Commit c587ef7

Browse files
demouthhenderkes
authored andcommitted
docs: add Japanese translation for documentation (php#1740)
* docs(ja): add Japanese documentation translation * docs(ja): fix invalid link fragments and improve section heading
1 parent 73a249f commit c587ef7

19 files changed

Lines changed: 2884 additions & 0 deletions

docs/ja/CONTRIBUTING.md

Lines changed: 219 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,219 @@
1+
# コントリビューション
2+
3+
## PHPのコンパイル
4+
5+
### Dockerを使用する場合(Linux)
6+
7+
開発用Dockerイメージをビルドします:
8+
9+
```console
10+
docker build -t frankenphp-dev -f dev.Dockerfile .
11+
docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -p 8080:8080 -p 443:443 -p 443:443/udp -v $PWD:/go/src/app -it frankenphp-dev
12+
```
13+
14+
このイメージには通常の開発ツール(Go、GDB、Valgrind、Neovimなど)が含まれており、PHP設定ファイルは以下の場所に配置されます。
15+
16+
- php.ini: `/etc/frankenphp/php.ini` 開発用のプリセットが適用されたphp.iniファイルがデフォルトで提供されます。
17+
- 追加の設定ファイル: `/etc/frankenphp/php.d/*.ini`
18+
- PHP拡張モジュール: `/usr/lib/frankenphp/modules/`
19+
20+
お使いのDockerのバージョンが23.0未満の場合、dockerignore[パターンの問題](https://github.com/moby/moby/pull/42676)によりビルドに失敗する可能性があります。以下のように`.dockerignore`にディレクトリを追加してください。
21+
22+
```patch
23+
!testdata/*.php
24+
!testdata/*.txt
25+
+!caddy
26+
+!internal
27+
```
28+
29+
### Dockerを使用しない場合(LinuxおよびmacOS)
30+
31+
[ソースからのコンパイル手順](https://frankenphp.dev/docs/compile/)に従い、`--debug`設定フラグを渡してください。
32+
33+
## テストスイートの実行
34+
35+
```console
36+
go test -tags watcher -race -v ./...
37+
```
38+
39+
## Caddyモジュール
40+
41+
FrankenPHPのCaddyモジュール付きでCaddyをビルドします:
42+
43+
```console
44+
cd caddy/frankenphp/
45+
go build -tags watcher,brotli,nobadger,nomysql,nopgx
46+
cd ../../
47+
```
48+
49+
FrankenPHPのCaddyモジュール付きでCaddyを実行します:
50+
51+
```console
52+
cd testdata/
53+
../caddy/frankenphp/frankenphp run
54+
```
55+
56+
サーバーは`127.0.0.1:80`で待ち受けています:
57+
58+
> [!NOTE]
59+
> Dockerを使用している場合は、コンテナのポート80をバインドするか、コンテナ内で実行する必要があります。
60+
61+
```console
62+
curl -vk http://127.0.0.1/phpinfo.php
63+
```
64+
65+
## 最小構成のテストサーバー
66+
67+
最小構成のテストサーバーをビルドします:
68+
69+
```console
70+
cd internal/testserver/
71+
go build
72+
cd ../../
73+
```
74+
75+
テストサーバーを実行します:
76+
77+
```console
78+
cd testdata/
79+
../internal/testserver/testserver
80+
```
81+
82+
サーバーは`127.0.0.1:8080`で待ち受けています:
83+
84+
```console
85+
curl -v http://127.0.0.1:8080/phpinfo.php
86+
```
87+
88+
## Dockerイメージをローカルでビルドする
89+
90+
bakeプランを出力します:
91+
92+
```console
93+
docker buildx bake -f docker-bake.hcl --print
94+
```
95+
96+
amd64用のFrankenPHPイメージをローカルでビルドします:
97+
98+
```console
99+
docker buildx bake -f docker-bake.hcl --pull --load --set "*.platform=linux/amd64"
100+
```
101+
102+
arm64用のFrankenPHPイメージをローカルでビルドします:
103+
104+
```console
105+
docker buildx bake -f docker-bake.hcl --pull --load --set "*.platform=linux/arm64"
106+
```
107+
108+
arm64とamd64用のFrankenPHPイメージをスクラッチからビルドしてDocker Hubにプッシュします:
109+
110+
```console
111+
docker buildx bake -f docker-bake.hcl --pull --no-cache --push
112+
```
113+
114+
## 静的ビルドでのセグメンテーション違反のデバッグ
115+
116+
1. GitHubからFrankenPHPバイナリのデバッグ版をダウンロードするか、デバッグシンボルを含む独自の静的ビルドを作成します:
117+
118+
```console
119+
docker buildx bake \
120+
--load \
121+
--set static-builder.args.DEBUG_SYMBOLS=1 \
122+
--set "static-builder.platform=linux/amd64" \
123+
static-builder
124+
docker cp $(docker create --name static-builder-musl dunglas/frankenphp:static-builder-musl):/go/src/app/dist/frankenphp-linux-$(uname -m) frankenphp
125+
```
126+
127+
2. 現在使用している`frankenphp`を、デバッグ版のFrankenPHP実行ファイルに置き換えます
128+
3. 通常通りFrankenPHPを起動します(あるいは、GDBで直接FrankenPHPを開始することもできます:`gdb --args frankenphp run`
129+
4. GDBでプロセスにアタッチします:
130+
131+
```console
132+
gdb -p `pidof frankenphp`
133+
```
134+
135+
5. 必要に応じて、GDBシェルで`continue`と入力します
136+
6. FrankenPHPをクラッシュさせます
137+
7. GDBシェルで`bt`と入力します
138+
8. 出力結果をコピーします
139+
140+
## GitHub Actionsでのセグメンテーション違反のデバッグ
141+
142+
1. `.github/workflows/tests.yml`を開きます
143+
2. PHPデバッグシンボルを有効にします
144+
145+
```patch
146+
- uses: shivammathur/setup-php@v2
147+
# ...
148+
env:
149+
phpts: ts
150+
+ debug: true
151+
```
152+
153+
3. `tmate`を有効にしてコンテナに接続できるようにします
154+
155+
```patch
156+
- name: Set CGO flags
157+
run: echo "CGO_CFLAGS=$(php-config --includes)" >> "$GITHUB_ENV"
158+
+ - run: |
159+
+ sudo apt install gdb
160+
+ mkdir -p /home/runner/.config/gdb/
161+
+ printf "set auto-load safe-path /\nhandle SIG34 nostop noprint pass" > /home/runner/.config/gdb/gdbinit
162+
+ - uses: mxschmitt/action-tmate@v3
163+
```
164+
165+
4. コンテナに接続します
166+
5. `frankenphp.go`を開きます
167+
6. `cgosymbolizer`を有効にします
168+
169+
```patch
170+
- //_ "github.com/ianlancetaylor/cgosymbolizer"
171+
+ _ "github.com/ianlancetaylor/cgosymbolizer"
172+
```
173+
174+
7. モジュールを取得します:`go get`
175+
8. コンテナ内で、GDBなどを使用できます:
176+
177+
```console
178+
go test -tags watcher -c -ldflags=-w
179+
gdb --args frankenphp.test -test.run ^MyTest$
180+
```
181+
182+
9. バグが修正されたら、これらの変更をすべて元に戻します
183+
184+
## その他の開発リソース
185+
186+
- [uWSGIでのPHP埋め込み](https://github.com/unbit/uwsgi/blob/master/plugins/php/php_plugin.c)
187+
- [NGINX UnitでのPHP埋め込み](https://github.com/nginx/unit/blob/master/src/nxt_php_sapi.c)
188+
- [Go言語でのPHP埋め込み (go-php)](https://github.com/deuill/go-php)
189+
- [Go言語でのPHP埋め込み (GoEmPHP)](https://github.com/mikespook/goemphp)
190+
- [C++でのPHP埋め込み](https://gist.github.com/paresy/3cbd4c6a469511ac7479aa0e7c42fea7)
191+
- [Sara Golemon 著『Extending and Embedding PHP』](https://books.google.fr/books?id=zMbGvK17_tYC&pg=PA254&lpg=PA254#v=onepage&q&f=false)
192+
- [TSRMLS_CCとは何か?](http://blog.golemon.com/2006/06/what-heck-is-tsrmlscc-anyway.html)
193+
- [SDL バインディング](https://pkg.go.dev/github.com/veandco/go-sdl2@v0.4.21/sdl#Main)
194+
195+
## Docker関連リソース
196+
197+
- [Bakeファイル定義](https://docs.docker.com/build/customize/bake/file-definition/)
198+
- [docker buildx build](https://docs.docker.com/engine/reference/commandline/buildx_build/)
199+
200+
## 便利なコマンド
201+
202+
```console
203+
apk add strace util-linux gdb
204+
strace -e 'trace=!futex,epoll_ctl,epoll_pwait,tgkill,rt_sigreturn' -p 1
205+
```
206+
207+
## ドキュメントの翻訳
208+
209+
新しい言語でドキュメントとサイトを翻訳するには、
210+
以下の手順で行ってください。
211+
212+
1. このリポジトリの`docs/`ディレクトリに、言語の2文字ISOコードを名前にした新しいディレクトリを作成します
213+
2. `docs/`ディレクトリのルートにある全ての`.md`ファイルを新しいディレクトリにコピーします(翻訳のソースとして常に英語版を使用してください。英語版が最新版だからです)
214+
3. ルートディレクトリから`README.md``CONTRIBUTING.md`ファイルを新しいディレクトリにコピーします
215+
4. ファイルの内容を翻訳しますが、ファイル名は変更せず、`> [!`で始まる文字列も翻訳しないでください(これはGitHub用の特別なマークアップです)
216+
5. 翻訳でプルリクエストを作成します
217+
6. [サイトリポジトリ](https://github.com/dunglas/frankenphp-website/tree/main)で、`content/``data/``i18n/`ディレクトリの翻訳ファイルをコピーして翻訳します
218+
7. 作成されたYAMLファイルの値を翻訳します
219+
8. サイトリポジトリでプルリクエストを開きます

docs/ja/README.md

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
# FrankenPHP: PHPのためのモダンなアプリケーションサーバー
2+
3+
<h1 align="center"><a href="https://frankenphp.dev"><img src="frankenphp.png" alt="FrankenPHP" width="600"></a></h1>
4+
5+
FrankenPHPは、[Caddy](https://caddyserver.com/) Webサーバーをベースに構築された、PHPのためのモダンなアプリケーションサーバーです。
6+
7+
FrankenPHPは、[_Early Hints_](https://frankenphp.dev/docs/early-hints/)[ワーカーモード](https://frankenphp.dev/docs/worker/)[リアルタイム機能](https://frankenphp.dev/docs/mercure/)、自動HTTPS、HTTP/2、HTTP/3などの驚異的な機能により、あなたのPHPアプリに強力な力を与えます。
8+
9+
FrankenPHPはあらゆるPHPアプリと連携し、ワーカーモードの公式統合によってLaravelやSymfonyプロジェクトをこれまで以上に高速化します。
10+
11+
また、FrankenPHPはスタンドアロンのGoライブラリとしても利用可能で、`net/http`を使って任意のアプリにPHPを埋め込むことができます。
12+
13+
[**詳しくは** _frankenphp.dev_](https://frankenphp.dev)と、このスライド資料もご参照ください:
14+
15+
<a href="https://dunglas.dev/2022/10/frankenphp-the-modern-php-app-server-written-in-go/"><img src="https://dunglas.dev/wp-content/uploads/2022/10/frankenphp.png" alt="Slides" width="600"></a>
16+
17+
## はじめに
18+
19+
### スタンドアロンバイナリ
20+
21+
LinuxとmacOS向けに、[PHP 8.4](https://www.php.net/releases/8.4/en.php)と人気のPHP拡張モジュールを含む静的な
22+
FrankenPHPバイナリを提供しています。
23+
24+
Windowsをお使いの場合は、[WSL](https://learn.microsoft.com/windows/wsl/)を使用してFrankenPHPを実行してください。
25+
26+
[FrankenPHPをダウンロード](https://github.com/php/frankenphp/releases)するか、以下のコマンドを
27+
ターミナルにコピーして実行すると、環境に合ったバージョンが自動的にインストールされます:
28+
29+
```console
30+
curl https://frankenphp.dev/install.sh | sh
31+
mv frankenphp /usr/local/bin/
32+
```
33+
34+
現在のディレクトリのコンテンツを配信するには、以下を実行してください:
35+
36+
```console
37+
frankenphp php-server
38+
```
39+
40+
コマンドラインスクリプトも実行できます:
41+
42+
```console
43+
frankenphp php-cli /path/to/your/script.php
44+
```
45+
46+
### Docker
47+
48+
また、[Dockerイメージ](https://frankenphp.dev/docs/docker/)も利用可能です:
49+
50+
```console
51+
docker run -v .:/app/public \
52+
-p 80:80 -p 443:443 -p 443:443/udp \
53+
dunglas/frankenphp
54+
```
55+
56+
ブラウザで`https://localhost`にアクセスして、FrankenPHPをお楽しみください!
57+
58+
> [!TIP]
59+
>
60+
> `https://127.0.0.1`ではなく、`https://localhost`を使用して、自己署名証明書を受け入れてください。
61+
> 使用するドメインを変更したい場合は、[`SERVER_NAME` 環境変数](docs/config.md#environment-variables)を設定してください。
62+
63+
### Homebrew
64+
65+
FrankenPHPはmacOSおよびLinux向けに[Homebrew](https://brew.sh)パッケージとしても利用可能です。
66+
67+
インストール方法:
68+
69+
```console
70+
brew install dunglas/frankenphp/frankenphp
71+
```
72+
73+
現在のディレクトリのコンテンツを配信するには、以下を実行してください:
74+
75+
```console
76+
frankenphp php-server
77+
```
78+
79+
## ドキュメント
80+
81+
- [クラシックモード](https://frankenphp.dev/docs/classic/)
82+
- [ワーカーモード](https://frankenphp.dev/docs/worker/)
83+
- [Early Hintsサポート(103 HTTPステータスコード)](https://frankenphp.dev/docs/early-hints/)
84+
- [リアルタイム](https://frankenphp.dev/docs/mercure/)
85+
- [大きな静的ファイルの効率的な提供](https://frankenphp.dev/docs/x-sendfile/)
86+
- [設定](https://frankenphp.dev/docs/config/)
87+
- [Dockerイメージ](https://frankenphp.dev/docs/docker/)
88+
- [本番環境でのデプロイ](https://frankenphp.dev/docs/production/)
89+
- [パフォーマンス最適化](https://frankenphp.dev/docs/performance/)
90+
- [**スタンドアロン**、自己実行可能なPHPアプリの作成](https://frankenphp.dev/docs/embed/)
91+
- [静的バイナリの作成](https://frankenphp.dev/docs/static/)
92+
- [ソースからのコンパイル](https://frankenphp.dev/docs/compile/)
93+
- [FrankenPHPの監視](https://frankenphp.dev/docs/metrics/)
94+
- [Laravel統合](https://frankenphp.dev/docs/laravel/)
95+
- [既知の問題](https://frankenphp.dev/docs/known-issues/)
96+
- [デモアプリ(Symfony)とベンチマーク](https://github.com/dunglas/frankenphp-demo)
97+
- [Goライブラリドキュメント](https://pkg.go.dev/github.com/dunglas/frankenphp)
98+
- [コントリビューションとデバッグ](https://frankenphp.dev/docs/contributing/)
99+
100+
## 例とスケルトン
101+
102+
- [Symfony](https://github.com/dunglas/symfony-docker)
103+
- [API Platform](https://api-platform.com/docs/symfony)
104+
- [Laravel](https://frankenphp.dev/docs/laravel/)
105+
- [Sulu](https://sulu.io/blog/running-sulu-with-frankenphp)
106+
- [WordPress](https://github.com/StephenMiracle/frankenwp)
107+
- [Drupal](https://github.com/dunglas/frankenphp-drupal)
108+
- [Joomla](https://github.com/alexandreelise/frankenphp-joomla)
109+
- [TYPO3](https://github.com/ochorocho/franken-typo3)
110+
- [Magento2](https://github.com/ekino/frankenphp-magento2)

docs/ja/classic.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# クラシックモードの使用
2+
3+
追加の設定を行わなくても、FrankenPHPはクラシックモードで動作します。このモードでは、FrankenPHPは従来のPHPサーバーのように機能し、PHPファイルを直接提供します。これにより、PHP-FPMやmod_phpを使ったApacheの置き換えとしてシームレスに利用できます。
4+
5+
Caddyと同様に、FrankenPHPは無制限の接続を受け付け、[固定数のスレッド](config.md#caddyfile-config)でそれらを処理します。受け入れられキューに入れられる接続の数は、利用可能なシステムリソースによってのみ制限されます。
6+
PHPスレッドプールは、起動時に初期化された固定数のスレッドで動作し、これはPHP-FPMの静的モードに相当します。また、PHP-FPMの動的モードと同様に、[実行時にスレッドを自動的にスケール](performance.md#max_threads)させることも可能です。
7+
8+
キューに入った接続は、PHPスレッドが空くまで無期限に待機します。これを避けるために、FrankenPHP のグローバル設定内の `max_wait_time` [設定](config.md#caddyfile-config)を使って、リクエストが空きスレッドを待てる最大時間を制限し、それを超えるとリクエストが拒否されるようにできます。
9+
加えて、[Caddy側で適切な書き込みタイムアウト](https://caddyserver.com/docs/caddyfile/options#timeouts)を設定することも可能です。
10+
11+
各Caddyインスタンスは、1つのFrankenPHPスレッドプールのみを起動し、すべての`php_server`ブロック間でこのプールを共有します。

0 commit comments

Comments
 (0)