-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFileTranslatorProvider.cs
More file actions
35 lines (30 loc) · 1.46 KB
/
FileTranslatorProvider.cs
File metadata and controls
35 lines (30 loc) · 1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
using System.Collections.Concurrent;
using Microsoft.Extensions.Logging;
namespace MN.L10n.JavascriptTranslationMiddleware
{
public interface ITranslatorProvider
{
FileTranslator GetOrCreateTranslator(string languageId, IFileHandle fileHandle);
}
public class FileTranslatorProvider : ITranslatorProvider
{
private readonly ConcurrentDictionary<string, FileTranslator> _fileProviders = new();
private readonly IJavascriptTranslationL10nLanguageProvider _l10NLanguageProvider;
private readonly ILogger<FileTranslator> _logger;
private readonly IJavascriptTranslationMiddlewareConfiguration _configuration;
public FileTranslatorProvider(IJavascriptTranslationL10nLanguageProvider l10NLanguageProvider,
ILogger<FileTranslator> logger, IJavascriptTranslationMiddlewareConfiguration configuration)
{
_l10NLanguageProvider = l10NLanguageProvider;
_logger = logger;
_configuration = configuration;
}
public FileTranslator GetOrCreateTranslator(string languageId, IFileHandle fileHandle)
{
var fileProviderId = $"{languageId}__{fileHandle.RelativeRequestPath}";
return _fileProviders.GetOrAdd(fileProviderId,
_ => new FileTranslator(_l10NLanguageProvider, fileHandle, languageId, _logger,
enableFileVersionGeneration: _configuration.VersionedFileRedirectConfig != null));
}
}
}