Files
Stirling-PDF/src/main/java/stirling/software/SPDF/service/LanguageService.java
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

57 lines
2.1 KiB
Java
Raw Normal View History

2024-11-03 15:20:26 +01:00
package stirling.software.SPDF.service;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;
2024-11-03 15:20:26 +01:00
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
import stirling.software.SPDF.model.ApplicationProperties;
2024-11-03 15:20:26 +01:00
@Service
@Slf4j
2024-11-03 15:20:26 +01:00
public class LanguageService {
private final ApplicationProperties applicationProperties;
2024-11-03 15:20:26 +01:00
private final PathMatchingResourcePatternResolver resourcePatternResolver =
new PathMatchingResourcePatternResolver();
public LanguageService(ApplicationProperties applicationProperties) {
this.applicationProperties = applicationProperties;
}
2024-11-03 15:20:26 +01:00
public Set<String> getSupportedLanguages() {
2024-11-03 15:20:26 +01:00
try {
Resource[] resources =
resourcePatternResolver.getResources("classpath*:messages_*.properties");
return Arrays.stream(resources)
.map(Resource::getFilename)
.filter(
filename ->
filename != null
&& filename.startsWith("messages_")
&& filename.endsWith(".properties"))
.map(filename -> filename.replace("messages_", "").replace(".properties", ""))
.filter(
languageCode -> {
Set<String> allowedLanguages =
new HashSet<>(applicationProperties.getUi().getLanguages());
return allowedLanguages.isEmpty()
|| allowedLanguages.contains(languageCode)
|| "en_GB".equals(languageCode);
})
.collect(Collectors.toSet());
2024-11-03 15:20:26 +01:00
} catch (IOException e) {
log.error("Error retrieving supported languages", e);
return new HashSet<>();
2024-11-03 15:20:26 +01:00
}
}
}