public function rules(): array 	{ 		$current_domain = auth()->user()?->user->getActiveDomain(); 		$main_language = $current_domain?->main_language ?? Language::getDefaultLanguage();  		$validation_rule_builder = [];  		foreach (Language::cases() as $language) { 			$lang = $language->value; 			$required = ($lang === $main_language);  			$validation_rule_builder['title_' . $lang] = [$required ? 'required' : 'nullable', 'string', 'max:100', new OpenAIModeration]; 			$validation_rule_builder['description_' . $lang] = [$required ? 'required' : 'nullable', 'string', new OpenAIModeration]; 		}  		return MediaStorage::mergeValidationRules(array_merge($validation_rule_builder, [ 			'image' => ['image', 'max:' . setting('max_upload_size') / 1024, new SafeWebp], 			'serving_for_en' => ['nullable', 'string', new OpenAIModeration], 			'serving_for_hr' => ['nullable', 'string', new OpenAIModeration], 			'serving_for_de' => ['nullable', 'string', new OpenAIModeration], 			'serving_for_sl' => ['nullable', 'string', new OpenAIModeration], 			'serving_for_sr' => ['nullable', 'string', new OpenAIModeration], 			'preparation_time_en' => ['nullable', 'string', new OpenAIModeration], 			'preparation_time_hr' => ['nullable', 'string', new OpenAIModeration], 			'preparation_time_de' => ['nullable', 'string', new OpenAIModeration], 			'preparation_time_sl' => ['nullable', 'string', new OpenAIModeration], 			'preparation_time_sr' => ['nullable', 'string', new OpenAIModeration], 			'calories' => ['nullable', 'integer', 'min:0'], 			'ingredients_en' => ['nullable', 'string', new OpenAIModeration], 			'ingredients_hr' => ['nullable', 'string', new OpenAIModeration], 			'ingredients_de' => ['nullable', 'string', new OpenAIModeration], 			'ingredients_sl' => ['nullable', 'string', new OpenAIModeration], 			'ingredients_sr' => ['nullable', 'string', new OpenAIModeration], 			'preparation_description_en' => ['nullable', 'string', new OpenAIModeration], 			'preparation_description_hr' => ['nullable', 'string', new OpenAIModeration], 			'preparation_description_de' => ['nullable', 'string', new OpenAIModeration], 			'preparation_description_sl' => ['nullable', 'string', new OpenAIModeration], 			'preparation_description_sr' => ['nullable', 'string', new OpenAIModeration], 			'marinating_en' => ['nullable', 'string', new OpenAIModeration], 			'marinating_hr' => ['nullable', 'string', new OpenAIModeration], 			'marinating_de' => ['nullable', 'string', new OpenAIModeration], 			'marinating_sl' => ['nullable', 'string', new OpenAIModeration], 			'marinating_sr' => ['nullable', 'string', new OpenAIModeration], 			'serving_description_en' => ['nullable', 'string', new OpenAIModeration], 			'serving_description_hr' => ['nullable', 'string', new OpenAIModeration], 			'serving_description_de' => ['nullable', 'string', new OpenAIModeration], 			'serving_description_sl' => ['nullable', 'string', new OpenAIModeration], 			'serving_description_sr' => ['nullable', 'string', new OpenAIModeration], 			'nutritional_values_en' => ['nullable', 'string', new OpenAIModeration], 			'nutritional_values_hr' => ['nullable', 'string', new OpenAIModeration], 			'nutritional_values_de' => ['nullable', 'string', new OpenAIModeration], 			'nutritional_values_sl' => ['nullable', 'string', new OpenAIModeration], 			'nutritional_values_sr' => ['nullable', 'string', new OpenAIModeration], 			'category_id' => ['nullable', 'uuid', 'exists:' . Category::class . ',id'], 			'url' => ['nullable', 'url', 'max:100'], 			'active' => ['boolean'], 		])); 	}