self::BuiltIn, LanguagePackSourceType::Bundled => self::Bundled, LanguagePackSourceType::Github, LanguagePackSourceType::Url, LanguagePackSourceType::Upload, LanguagePackSourceType::Zip => self::UserInstalled, }; } /** * 문자열 source_type 값으로부터 origin 을 결정합니다 (직렬화 단계 편의 메서드). * * @param string|null $sourceType source_type 컬럼 값 * @return self|null 매칭된 origin (유효하지 않은 값은 null) */ public static function fromSourceTypeValue(?string $sourceType): ?self { if ($sourceType === null || ! LanguagePackSourceType::isValid($sourceType)) { return null; } return self::fromSourceType(LanguagePackSourceType::from($sourceType)); } /** * 모든 origin 값을 문자열 배열로 반환합니다. * * @return array origin 문자열 배열 */ public static function values(): array { return array_column(self::cases(), 'value'); } /** * 다국어 라벨을 반환합니다. * * @return string 라벨 (lang/{locale}/language_packs.php 의 origin 키) */ public function label(): string { return __('language_packs.origin.'.$this->value); } }