git -C '/home/opc/rocketa.git' show 00f33e9 -- app/Http/Controllers/Admin/General.phpcommit 00f33e93fbd079c13b8b1064a24a9db53be39806
Author: Satoshi Ujihara <satoshi_ujihara@fivegate.jp>
Date: Wed Oct 15 17:33:39 2025 +0900
翻訳+翻訳文字管理機能
diff --git a/app/Http/Controllers/Admin/General.php b/app/Http/Controllers/Admin/General.php
index 079432e..135ac5d 100644
--- a/app/Http/Controllers/Admin/General.php
+++ b/app/Http/Controllers/Admin/General.php
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Admin;
use App\Http\Requests;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
+use Illuminate\Support\Facades\DB;
use Illuminate\Pagination\LengthAwarePaginator;
use App\Http\Controllers\Controller;
use GuzzleHttp\Client;
@@ -29,6 +30,10 @@ use App\Models\La\AdJoinMediaDatas;
use App\Models\La\AdRewardDatasAutoUpdate;
use App\Models\La\AdRewardGroupDatas;
use App\Models\La\MediaNoticeFailedDatas;
+use App\Models\La\TranslationClients;
+use App\Models\La\TranslationMedias;
+use App\Models\La\Translations;
+
use App\Models\Api\ApiClickRecords;
use App\Models\Api\ApiResultRecords;
@@ -285,8 +290,8 @@ class General extends Controller
if ($request->input('csv') == 1) {
return response($send_data_array['datas'], 200)
- ->header('Content-Type', 'text/csv')
- ->header('Content-Disposition', 'attachment; filename=achieve_csv.csv');
+ ->header('Content-Type', 'text/csv')
+ ->header('Content-Disposition', 'attachment; filename=achieve_csv.csv');
}
// 表示件数の初めと終わりを割り出す
@@ -4609,4 +4614,71 @@ class General extends Controller
return json_encode($site_list);
}
+
+ public function lang(Request $request)
+ {
+ $conditions = [];
+ $conditions['site'] = $request->input('site', "admin");
+ $conditions['locale'] = $request->input('locale', "en");
+ $conditions['word'] = $request->input('word', "");
+ $conditions['count'] = $request->input('count', 20);
+ $paginate_data = [
+ 'stert_prev' => 1,
+ 'end_prev' => 1,
+ ];
+
+ if ($conditions['site'] == "admin") {
+ $query = Translations::query();
+ }
+ else if ($conditions['site'] == "client") {
+ $query = TranslationClients::query();
+ }
+ else if ($conditions['site'] == "partner") {
+ $query = TranslationMedias::query();
+ }
+ else {
+ exit;
+ }
+
+ if ($request->method() === 'POST') {
+ if ($conditions['site'] == "admin") {
+ Translations::where('locale', 'en')->where('key', $request->input('key'))->update(['value' => $request->input('word_en'), 'memo' => $request->input('memo')]);
+ Translations::where('locale', 'kr')->where('key', $request->input('key'))->update(['value' => $request->input('word_kr'), 'memo' => $request->input('memo')]);
+ Translations::where('locale', 'jp')->where('key', $request->input('key'))->update(['value' => $request->input('word_jp'), 'memo' => $request->input('memo')]);
+ }
+ else if ($conditions['site'] == "client") {
+ TranslationClients::where('locale', 'en')->where('key', $request->input('key'))->update(['value' => $request->input('word_en'), 'memo' => $request->input('memo')]);
+ TranslationClients::where('locale', 'kr')->where('key', $request->input('key'))->update(['value' => $request->input('word_kr'), 'memo' => $request->input('memo')]);
+ TranslationClients::where('locale', 'jp')->where('key', $request->input('key'))->update(['value' => $request->input('word_jp'), 'memo' => $request->input('memo')]);
+ }
+ else if ($conditions['site'] == "partner") {
+ TranslationMedias::where('locale', 'en')->where('key', $request->input('key'))->update(['value' => $request->input('word_en'), 'memo' => $request->input('memo')]);
+ TranslationMedias::where('locale', 'kr')->where('key', $request->input('key'))->update(['value' => $request->input('word_kr'), 'memo' => $request->input('memo')]);
+ TranslationMedias::where('locale', 'jp')->where('key', $request->input('key'))->update(['value' => $request->input('word_jp'), 'memo' => $request->input('memo')]);
+ }
+ }
+
+ $query->select(
+ 'key',
+ DB::raw("MAX(CASE WHEN locale = 'en' THEN value END) as en"),
+ DB::raw("MAX(CASE WHEN locale = 'kr' THEN value END) as kr"),
+ DB::raw("MAX(CASE WHEN locale = 'ja' THEN value END) as ja"),
+ DB::raw("MAX(memo) as memo"),
+ )->groupBy('key')->orderBy('key');
+ if($conditions['word'] != "") {
+ $query = DB::query()->fromSub($query, 'sub')->where($conditions['locale'], "LIKE", "%".$conditions['word']."%");
+ }
+
+
+ $word_list = $query->paginate($conditions['count']);
+ $paginate_data = $this->getPrevNumber($request->input('page'), $request->input('count'), $word_list->total());
+
+
+
+
+ return view('admin.general.lang')
+ ->with('conditions', $conditions)
+ ->with('paginate_data', $paginate_data)
+ ->with('word_list', $word_list);
+ }
}