tomk79 / px2-i18n
Installs: 17
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Language:JavaScript
Requires
- php: >=7.3.0
- google/cloud-translate: ^1.10
- tomk79/langbank: ~0.2
Requires (Dev)
- phpunit/phpunit: ~9.5
- pickles2/px-fw-2.x: ~2.1
- pickles2/px2-clover: ~0.2.0
- pickles2/px2-dec: ^2.0
- pickles2/px2-multitheme: ^2.0
- pickles2/px2-path-resolver: ^2.0
- pickles2/px2-publish-ex: ^2.0
- pickles2/px2-px2dthelper: ^2.0
- pickles2/px2-remove-attr: ^2.0
- pickles2/px2-sitemapexcel: ^2.0
- pickles2/px2style: ~3.1.0
- tomk79/broccoli-module-interact: ^0.1
- tomk79/broccoli-module-lp: ^0.1
- tomk79/broccoli-module-medias: ^0.1
- tomk79/broccoli-module-std-document: ^0.2
- tomk79/px2-scss: ^0.1.0
- tomk79/px2-serve: ~0.1.0
- vlucas/phpdotenv: ~5.4.0
This package is auto-updated.
Last update: 2024-10-11 12:25:44 UTC
README
Pickles 2 で制作するウェブサイトを、多言語に対応させるプラグインです。
導入手順 - Setup
1. composer.json に tomk79/px2-i18n を追加
require
の項目に、tomk79/px2-i18n
を追加します。
$ composer require tomk79/px2-i18n;
2. config.php に、設定を追加
設定ファイル config.php
(通常は ./px-files/config.php
) を編集します。
対応する言語の設定
/** デフォルトの言語 */ $conf->default_lang = 'ja'; /** 対応する言語 */ $conf->accept_langs = array('en', 'zh-CN', 'zh-TW', 'ko');
サイトマップの多言語化
$conf->funcs->before_sitemap
の最後に tomk79\pickles2\px2I18n\loader::site()
を追加します。
/** * funcs: Before sitemap * * サイトマップ読み込みの前に実行するプラグインを設定します。 */ $conf->funcs->before_sitemap = array( /* 中略 */ // カスタムサイトマップオブジェクトを生成して登録する tomk79\pickles2\px2I18n\loader::site(), // LangBank を `$px->lb` に登録する tomk79\pickles2\px2I18n\loader::langbank( [ "path_csv" => "/realpath/to/language.csv", ] ), );
Broccoliテキスト入力フィールドの多言語化
/** カスタムフィールドを登録 */ $conf->plugins->px2dt->guieditor->custom_fields = array( 'text'=>array( 'backend'=>array( 'class' => 'tomk79\\pickles2\\px2I18n\\fields\\text', 'require' => 'path/to/vendor/tomk79/px2-i18n/fields/i18n_text/backend/text.js', ), 'frontend'=>array( 'dir' => 'path/to/vendor/tomk79/px2-i18n/fields/i18n_text/frontend/', 'file' => array( 'text.css', 'text.js' ), 'function' => 'window.BroccoliFieldPx2I18nText' ), ), 'html_attr_text'=>array( 'backend'=>array( 'class' => 'tomk79\\pickles2\\px2I18n\\fields\\html_attr_text', 'require' => 'path/to/vendor/tomk79/px2-i18n/fields/i18n_html_attr_text/backend/html_attr_text.js', ), 'frontend'=>array( 'dir' => 'path/to/vendor/tomk79/px2-i18n/fields/i18n_html_attr_text/frontend/', 'file' => array( 'html_attr_text.css', 'html_attr_text.js' ), 'function' => 'window.BroccoliFieldPx2I18nHtmlAttrText' ), ), 'multitext'=>array( 'backend'=>array( 'class' => 'tomk79\\pickles2\\px2I18n\\fields\\multitext', 'require' => 'path/to/vendor/tomk79/px2-i18n/fields/i18n_multitext/backend/multitext.js', ), 'frontend'=>array( 'dir' => 'path/to/vendor/tomk79/px2-i18n/fields/i18n_multitext/frontend/', 'file' => array( 'multitext.css', 'multitext.js', ), 'function' => 'window.BroccoliFieldPx2I18nMultitext' ), ), 'summernote'=>array( 'backend'=>array( 'class' => 'tomk79\\pickles2\\px2I18n\\fields\\summernote', 'require' => 'path/to/vendor/tomk79/px2-i18n/fields/i18n_summernote/backend/summernote.js', ), 'frontend'=>array( 'dir' => 'path/to/vendor/tomk79/px2-i18n/fields/i18n_summernote/frontend/', 'file' => array( 'summernote.css', 'summernote.js', "summernote/summernote.min.css", "summernote/summernote.min.js", ), 'function' => 'window.BroccoliFieldPx2I18nSummernote' ), ), ); /** Broccoliフィールドの初期設定 */ $mlSettings = array( 'defaultLang' => $conf->default_lang, 'subLangs' => $conf->accept_langs, ); $conf->plugins->px2dt->guieditor->field_config = array( // text フィールドを設定 'text' => $mlSettings, // html_attr_text フィールドを設定 'html_attr_text' => $mlSettings, // multitext フィールドを設定 'multitext' => $mlSettings, // summernote フィールドを設定 'summernote' => $mlSettings, );
Google Translation の認証情報を環境変数に宣言
// Google Cloud の認証情報のパスを、環境変数として宣言する putenv( 'GOOGLE_APPLICATION_CREDENTIALS=/path/to/google-cloud-credentials.json' );
多言語化されたページのパブリッシュ設定
各言語への対応を、デバイス別の出力設定として定義していきます。
$devices = array(); foreach( $conf->accept_langs as $langCode ){ array_push( $devices, array( 'user_agent'=>'Mozilla/',$langCode, 'params' => array( 'LANG' => $langCode, ), 'path_publish_dir'=>'../dist/', 'path_rewrite_rule'=>'/'.$langCode.'{$dirname}/{$filename}.{$ext}', 'paths_target'=>array( '/*', ), 'paths_ignore'=>array( // '/common/*', ), // リンクの書き換え方向 // `origin2origin`、`origin2rewrited`、`rewrited2origin`、`rewrited2rewrited` のいずれかで指定します。 // `origin` は変換前のパス、 `rewrited` は変換後のパスを意味します。 // 変換前のパスから変換後のパスへのリンクとして書き換える場合は `origin2rewrited` のように指定します。 'rewrite_direction'=>'rewrited2rewrited', ) ); } /** * funcs: Before content * * サイトマップ読み込みの後、コンテンツ実行の前に実行するプラグインを設定します。 */ $conf->funcs->before_content = array( // PX=api 'picklesFramework2\commands\api::register' , // PX=publish (px2-publish-ex) 'tomk79\pickles2\publishEx\publish::register('.json_encode(array( 'devices'=>$devices, )).')' , // PX=px2dthelper 'tomk79\pickles2\px2dthelper\main::register' , );
更新履歴 - Change log
tomk79/px2-i18n v0.1.0 (2023年2月11日)
- サポートするPHPのバージョンを
>=7.3.0
に変更。 - 編集画面を多言語対応(英語、中文、韓国語)した。
- より直接的な表現でプラグイン設定できるようになった。
langbank
のロード機能を追加した。
tomk79/px2-i18n v0.0.1 (2021年7月18日)
- 初版リリース。
ライセンス - License
MIT License
作者 - Author
- Tomoya Koyanagi tomk79@gmail.com
- website: https://www.pxt.jp/
- Twitter: @tomk79 https://twitter.com/tomk79/