Allow modules to provide a translation for a search filter.

This commit is contained in:
Pavel Mironchik 2021-02-08 14:12:12 +06:00
parent d7988a2c84
commit ef2684222f

View File

@ -33,26 +33,26 @@ class SearchString extends Component
{ {
if (empty($this->filters)) { if (empty($this->filters)) {
$search_string = config('search-string'); $search_string = config('search-string');
$this->filters = []; $this->filters = [];
if (!empty($search_string[$this->model])) { if (!empty($search_string[$this->model])) {
$columns = $search_string[$this->model]['columns']; $columns = $search_string[$this->model]['columns'];
foreach ($columns as $column => $options) { foreach ($columns as $column => $options) {
// This column skip for filter // This column skip for filter
if (!empty($options['searchable'])) { if (!empty($options['searchable'])) {
continue; continue;
} }
if (!is_array($options)) { if (!is_array($options)) {
$column = $options; $column = $options;
} }
if (!$this->isFilter($column, $options)) { if (!$this->isFilter($column, $options)) {
continue; continue;
} }
$this->filters[] = [ $this->filters[] = [
'key' => $this->getFilterKey($column, $options), 'key' => $this->getFilterKey($column, $options),
'value' => $this->getFilterName($column, $options), 'value' => $this->getFilterName($column, $options),
@ -101,19 +101,29 @@ class SearchString extends Component
$plural = Str::plural($column, 2); $plural = Str::plural($column, 2);
if (trans_choice('general.' . $plural, 1) !== 'general.' . $plural) { if (strpos($this->model, 'Modules') !== false) {
return trans_choice('general.' . $plural, 1); $module_class = explode('\\', $this->model);
} elseif (trans_choice('search_string.columns.' . $plural, 1) !== 'search_string.columns.' . $plural) {
return trans_choice('search_string.columns.' . $plural, 1); $prefix = Str::slug($module_class[1], '-') . '::';
$translation_keys[] = $prefix . 'general.';
$translation_keys[] = $prefix . 'search_string.columns.';
} }
$name = trans('general.' . $column); $translation_keys[] = 'general.';
$translation_keys[] = 'search_string.columns.';
if ($name == 'general.' . $column) { foreach ($translation_keys as $translation_key) {
$name = trans('search_string.columns.' . $column); if (trans_choice($translation_key . $plural, 1) !== $translation_key . $plural) {
return trans_choice($translation_key . $plural, 1);
}
if (trans($translation_key . $column) !== $translation_key . $column) {
return trans($translation_key . $column);
}
} }
return $name; return $column;
} }
protected function getFilterType($options) protected function getFilterType($options)