• 31-07-2019, 09:21:38
    #1
    Merhabalar .net yazılımı üzerinde çalışıyorum kontrol panelden eklenilen dile göre site içeriği ing, Rusça, almanca vs gibi dilleri desteklemesi gerekiyor. Bunun tam olarak mantığı nedir.
  • 31-07-2019, 09:39:40
    #2
    1- Diller tablonuz olsun ve içerisinde sitede yayınlanacak dilleri ekleyin.
    2- içeriklerinizin bulunduğu tabloya dil alanı ekleyin.
    3-Panelden içerikleri ekletirken dil seçtirin
    4-sitenizde session veya cookie göre işlem yaptırarak en seçildiğinde ilgili tablo alanında dil değeri en olanlar gelsin.
    5-sitede ki sabit içerikleride yine bir tablo yaparak dile göre kaydedip görüntüleyebiilirsiniz.
    en = ingilizce

    Bu anlattığım sadece 1 yöntem.Bunun dışında farklı birçok yöntem kurulabilir ve kurulduda.
  • 31-07-2019, 09:50:18
    #3
    ertugrulyasar adlı üyeden alıntı: mesajı görüntüle
    Merhabalar .net yazılımı üzerinde çalışıyorum kontrol panelden eklenilen dile göre site içeriği ing, Rusça, almanca vs gibi dilleri desteklemesi gerekiyor. Bunun tam olarak mantığı nedir.
    S.a. asp.net üzerinde localization konusunu araştırmanızda fayda var.

    hayırlı günler.
  • 31-07-2019, 09:52:52
    #4
    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
    GO
    5- 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.
  • 31-07-2019, 14:48:18
    #5
    Hepinize teşekkür ederim.
  • 03-08-2019, 15:29:35
    #6
    Beyazsahin adlı üyeden alıntı: mesajı görüntüle
    S.a. asp.net üzerinde localization konusunu araştırmanızda fayda var.

    hayırlı günler.
    Arkadaşın dediği gibi localization bak