tomk79/px2-i18n 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

tomk79/px2-i18n

Composer 安装命令:

composer require tomk79/px2-i18n

包简介

关键字:

README 文档

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

tomk79/px2-i18n 适用场景与选型建议

tomk79/px2-i18n 是一款 基于 JavaScript 开发的 Composer 扩展包,目前已累计 19 次下载、GitHub Stars 达 0, 最近一次更新时间为 2021 年 07 月 12 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「pickles2」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 tomk79/px2-i18n 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 tomk79/px2-i18n 我们能提供哪些服务?
定制开发 / 二次开发

基于 tomk79/px2-i18n 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 19
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: JavaScript

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-07-12