diff --git a/beike/Plugin/Manager.php b/beike/Plugin/Manager.php index ba213cb9..37caaa2c 100644 --- a/beike/Plugin/Manager.php +++ b/beike/Plugin/Manager.php @@ -123,6 +123,7 @@ class Manager public function getPluginOrFail($code): ?Plugin { $plugin = $this->getPlugin($code); + $plugin->handleLabel(); if (empty($plugin)) { throw new \Exception('无效的插件'); } diff --git a/beike/Plugin/Plugin.php b/beike/Plugin/Plugin.php index fdccfe53..a9ce0710 100644 --- a/beike/Plugin/Plugin.php +++ b/beike/Plugin/Plugin.php @@ -93,6 +93,24 @@ class Plugin implements Arrayable, \ArrayAccess } + /** + * 处理插件后台设置字段多语言 优先级: label > label_key + * 有label字段则直接返回, label_key 则翻译 + */ + public function handleLabel() + { + $this->columns = collect($this->columns)->map(function ($item) { + $labelKey = $item['label_key'] ?? ''; + $label = $item['label'] ?? ''; + if (empty($label) && $labelKey) { + $languageKey = "{$this->dirName}::{$labelKey}"; + $item['label'] = trans($languageKey); + } + return $item; + })->toArray(); + } + + public function getDirname(): string { return $this->dirName; diff --git a/plugins/Stripe/Lang/en/common.php b/plugins/Stripe/Lang/en/common.php index 6296e95a..c63a6b45 100644 --- a/plugins/Stripe/Lang/en/common.php +++ b/plugins/Stripe/Lang/en/common.php @@ -10,6 +10,8 @@ */ return [ + 'publishable_key' => 'Publishable Key', + 'title_info' => 'Card information', 'cardnum' => 'Cardnum', 'expiration_date' => 'Expiration Date', diff --git a/plugins/Stripe/Lang/zh_cn/common.php b/plugins/Stripe/Lang/zh_cn/common.php index c12504f2..85a82b69 100644 --- a/plugins/Stripe/Lang/zh_cn/common.php +++ b/plugins/Stripe/Lang/zh_cn/common.php @@ -10,6 +10,8 @@ */ return [ + 'publishable_key' => '公钥', + 'title_info' => '卡信息', 'cardnum' => '卡号', 'expiration_date' => '截止日期', diff --git a/plugins/Stripe/columns.php b/plugins/Stripe/columns.php index ef4f9256..4e53a617 100644 --- a/plugins/Stripe/columns.php +++ b/plugins/Stripe/columns.php @@ -12,7 +12,7 @@ return [ [ 'name' => 'publishable_key', - 'label' => '公钥', + 'label_key' => 'common.publishable_key', 'type' => 'string', 'required' => true, 'rules' => 'required|size:32',