mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig-portal.git
synced 2025-12-11 06:46:47 +00:00
add languages
This commit is contained in:
@@ -12,16 +12,13 @@ class LanguageController extends Controller
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
||||||
* @return \Illuminate\Http\Response
|
* @return \Illuminate\Http\JsonResponse
|
||||||
*/
|
*/
|
||||||
public function index(Request $request)
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
return Language::query()
|
$array = Language::query()
|
||||||
->select('id', 'name', 'language')
|
->select('id', 'name', 'language')
|
||||||
->orderBy('name')
|
->orderBy('name')
|
||||||
->with([
|
|
||||||
'translations:value,language_id',
|
|
||||||
])
|
|
||||||
->when(
|
->when(
|
||||||
$request->search,
|
$request->search,
|
||||||
fn(Builder $query) => $query
|
fn(Builder $query) => $query
|
||||||
@@ -34,18 +31,26 @@ class LanguageController extends Controller
|
|||||||
fn(Builder $query) => $query->limit(10)
|
fn(Builder $query) => $query->limit(10)
|
||||||
)
|
)
|
||||||
->get()
|
->get()
|
||||||
->map(function (Language $language) {
|
->map(function ($language) {
|
||||||
$translated = $language->translations->whereNotNull('value')
|
$language->translatedCount = Translation::query()
|
||||||
|
->where('language_id', $language['id'])
|
||||||
|
->whereNotNull('value')
|
||||||
->where('value', '<>', '')
|
->where('value', '<>', '')
|
||||||
->count();
|
->count();
|
||||||
$toTranslate = Translation::query()
|
$language->toTranslate = Translation::query()
|
||||||
->where('language_id', $language->id)
|
->where('language_id', $language['id'])
|
||||||
->count();
|
->count();
|
||||||
$language->name = $language->name ? trans($language->name) : $language->language;
|
|
||||||
$language->description = $language->language === 'en' ? '100% translated' : round($translated / $toTranslate * 100).'% translated';
|
|
||||||
|
|
||||||
return $language;
|
return $language;
|
||||||
});
|
})
|
||||||
|
->toArray();
|
||||||
|
foreach ($array as &$item) {
|
||||||
|
$item['translated'] = __($item['name']);
|
||||||
|
$item['description'] = $item['language'] === 'en'
|
||||||
|
? __('100% translated')
|
||||||
|
: round($item['translatedCount'] / $item['toTranslate'] * 100).__('% translated');
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json($array);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user