1- Diller tablosu oluşturun ve her dil için ID verin
2- Dillerin çevirilerinin yer alacağı ikinci bir tablo oluşturun ve dil id + resource id + value eşleştirin. İlgili dil çağrıldığında istenen resource id ye göre value gönderir.
3- Dil ID ve resource ID'nin unique olması zorunlu. Bu gibi ayarları unutmayın.
4- Storeprocedure ile XML olarak başka dillerin otomatik import edilebileceği bir script yazın. Örnek kod bırakıyorum senin için;
CREATE PROCEDURE [LanguagePackImport]
(
@LanguageId int,
@XmlPackage xml,
@UpdateExistingResources bit
)
AS
BEGIN
IF EXISTS(SELECT * FROM [Language] WHERE [Id] = @LanguageId)
BEGIN
CREATE TABLE #LocaleStringResourceTmp
(
[LanguageId] [int] NOT NULL,
[ResourceName] [nvarchar](200) NOT NULL,
[ResourceValue] [nvarchar](MAX) NOT NULL
)
INSERT INTO #LocaleStringResourceTmp (LanguageId, ResourceName, ResourceValue)
SELECT @LanguageId, nref.value('@Name', 'nvarchar(200)'), nref.value('Value[1]', 'nvarchar(MAX)')
FROM @XmlPackage.nodes('//Language/LocaleResource') AS R(nref)
DECLARE @ResourceName nvarchar(200)
DECLARE @ResourceValue nvarchar(MAX)
DECLARE cur_localeresource CURSOR FOR
SELECT LanguageId, ResourceName, ResourceValue
FROM #LocaleStringResourceTmp
OPEN cur_localeresource
FETCH NEXT FROM cur_localeresource INTO @LanguageId, @ResourceName, @ResourceValue
WHILE @@FETCH_STATUS = 0
BEGIN
IF (EXISTS (SELECT 1 FROM [LocaleStringResource] WHERE LanguageId=@LanguageId AND ResourceName=@ResourceName))
BEGIN
IF (@UpdateExistingResources = 1)
BEGIN
UPDATE [LocaleStringResource]
SET [ResourceValue]=@ResourceValue
WHERE LanguageId=@LanguageId AND ResourceName=@ResourceName
END
END
ELSE
BEGIN
INSERT INTO [LocaleStringResource]
(
[LanguageId],
[ResourceName],
[ResourceValue]
)
VALUES
(
@LanguageId,
@ResourceName,
@ResourceValue
)
END
FETCH NEXT FROM cur_localeresource INTO @LanguageId, @ResourceName, @ResourceValue
END
CLOSE cur_localeresource
DEALLOCATE cur_localeresource
DROP TABLE #LocaleStringResourceTmp
END
END
GO5- Bir XML ile dil dosyası hazırlayın import etmek için, şunun gibi;
<LocaleResource Name="AdminEmailRequired">
<Value>Enter admin email</Value>
</LocaleResource>
<LocaleResource Name="AdminPassword">
<Value>Admin user password</Value>
</LocaleResource>
<LocaleResource Name="AdminPasswordRequired">
<Value>Enter admin password</Value>
</LocaleResource>
6- Excel ile aldığınız dil dosyasını otomatik XML e çevirdikten sonra import edin.
7- Sistemi farklı dillerde farklı değerleri çıkarabileceğiniz biçimde "localresource" ayarları ile yapılandırın. Kaynak kod içerisine tek kelime dahi olsa inline metin girmeyin.
8- Sistemi sağdan sola, soldan sağa dillere göre yapılandırın. Buna özel tasarım dosyaları da oluşturmayı ihmal etmeyin.
9- SEO için farklı dil seçimi yapıldığında URL'de yapılan dil seçimini belirtin.
10- Tanımladığınız dosyaların sistemin çalışmasını yavaşlatabileceğini unutmadan, gereksiz ek tanımlamalardan kaçının ve tekrar eden tanımlamalar için genel tanımlama yaratın. Tam teşekküllü bir e-ticaret sitesi için 5000-7000 arası resource yaratılabilir.
İlave:
ASP.NET Core Globalization & Localization:
https://docs.microsoft.com/en-us/asp...aspnetcore-2.2
Ayrıca, Visual Studio'da online içerikleri yüklemeni, ilaveten MSDN'de bolca vakit geçirmeni öneririm. Biraz da video izlersen, farklı insanların yaşadığı sorunlar ve çözümleri hakkında fikir sahibi olabilirsin. Bu başlangıçta biraz vakit kaybettirebilir, ancak ilerde olabilecek sorunlara karşı önleyici olur ve performans anlamında daha güçlü olmanı sağlar.