public ConditionTemplate metadatasHasAnalyzedValue(String value, List<Metadata> metadatas) {

    List<String> availableLanguages =
        modelLayerFactory.getCollectionsListManager().getCollectionLanguages(collection);
    LanguageDetectionManager languageDetectionManager =
        modelLayerFactory.getLanguageDetectionManager();

    String language =
        availableLanguages.size() == 1
            ? availableLanguages.get(0)
            : languageDetectionManager.tryDetectLanguage(value);
    List<Metadata> searchedMetadatas = new ArrayList<>();
    for (Metadata metadata : metadatas) {
      if (!availableLanguages.contains(language) || language == null) {
        for (String availableLanguage : availableLanguages) {
          searchedMetadatas.add(metadata.getSearchableMetadataWithLanguage(availableLanguage));
        }
      } else {
        searchedMetadatas.add(metadata.getSearchableMetadataWithLanguage(language));
      }
    }

    return ConditionTemplate.anyField(searchedMetadatas, query(value));
  }