Excel çözümlerinin genelleştirilmesi ve yerelleştirilmesi

Bu bölüm, Windows için İngilizce olmayan ayarlara sahip bilgisayarlarda çalıştırılacak Microsoft Office Excel çözümleri için dikkat edilmesi gereken özel noktalar hakkında bilgi içerir. Microsoft Office çözümlerini genelleştirme ve yerelleştirmenin çoğu yönü, Visual Studio kullanarak başka tür çözümler oluştururken karşılaştığınızla aynıdır. Genel bilgi için bkz . Uygulamaları genelleştirme ve yerelleştirme.

Yönetilen kod kullanılarak geçirilen veya yönetilen tüm veriler İngilizce (Birleşik Devletler) biçimlendirme kullanılarak biçimlendirildiğinden, Microsoft Office Excel'deki konak denetimleri varsayılan olarak herhangi bir Windows bölgesel ayarında düzgün çalışır. .NET Framework 4 veya .NET Framework 4.5'i hedefleyen projelerde bu davranış ortak dil çalışma zamanı (CLR) tarafından denetlenmektedir.

Şunlar için geçerlidir: Bu konudaki bilgiler, Excel için belge düzeyi projeler ve VSTO Eklenti projeleri için geçerlidir. Daha fazla bilgi için bkz. Office uygulaması ve proje türüne göre kullanılabilen özellikler.

Excel'de verileri çeşitli bölgesel ayarlarla biçimlendirme

Tarihler ve para birimi gibi yerel ayara duyarlı biçimlendirmeye sahip tüm verileri Microsoft Office Excel'e geçirmeden veya Office projenizdeki koddan okumadan önce İngilizce (Birleşik Devletler) veri biçimini (yerel ayar kimliği 1033) kullanarak biçimlendirmeniz gerekir.

Varsayılan olarak, Visual Studio'da bir Office çözümü geliştirirken, Excel nesne modeli yerel ayar kimliği 1033 veri biçimlendirmesini bekler (buna nesne modelini yerel ayar kimliği 1033'e kilitleme de denir). Bu davranış, Visual Basic for Applications'ın çalışma şekliyle eşleşir. Ancak, Office çözümlerinizde bu davranışı değiştirebilirsiniz.

Excel nesne modelinin her zaman 1033 yerel ayar kimliğini nasıl beklediğini anlama

Varsayılan olarak, Visual Studio kullanarak oluşturduğunuz Office çözümleri son kullanıcının yerel ayarından etkilenmez ve her zaman yerel ayar İngilizce (Birleşik Devletler) gibi davranır. Örneğin, Özelliği Excel'de alırsanız veya ayarlarsanız Value2 , veriler yerel ayar kimliği 1033'te beklenen şekilde biçimlendirilmelidir. Farklı bir veri biçimi kullanıyorsanız beklenmeyen sonuçlar alabilirsiniz.

Yönetilen kod tarafından geçirilen veya yönetilen veriler için İngilizce (Birleşik Devletler) biçimini kullanmanıza rağmen, Excel verileri son kullanıcının yerel ayarına göre doğru şekilde yorumlar ve görüntüler. Yönetilen kod, verilerin İngilizce (Birleşik Devletler) biçiminde olduğunu ve bu nedenle kullanıcının yerel ayarıyla eşleşecek şekilde yeniden biçimlendirilmesi gerektiğini gösteren verilerle birlikte yerel ayar kimliği 1033'ten geçtiğinden Excel verileri doğru biçimlendirebilir.

Örneğin, son kullanıcıların bölgesel seçenekleri Almanca (Almanya) yerel ayarına ayarlanmışsa, 29 Haziran 2005 tarihinin şu şekilde biçimlendirilmesi beklenebilir: 29.06.2005. Ancak çözümünüz tarihi Excel'e dize olarak geçirirse, tarihi İngilizce (Birleşik Devletler) biçimine göre biçimlendirmeniz gerekir: 29.06.2005. Hücre Tarih hücresi olarak biçimlendirildiyse, Excel tarihi Almanca (Almanya) biçiminde görüntüler.

Excel nesne modeline diğer yerel ayar kimliklerini geçirme

Ortak dil çalışma zamanı (CLR), yerel ayara duyarlı verileri kabul eden Excel nesne modelindeki tüm yöntemlere ve özelliklere otomatik olarak yerel ayar kimliği 1033 geçirir. Nesne modeline yapılan tüm çağrılar için bu davranışı otomatik olarak değiştirmenin bir yolu yoktur. Ancak yöntemini çağırmak için kullanarak InvokeMember ve yerel ayar kimliğini yöntemin culture parametresine geçirerek farklı bir yerel ayar kimliğini belirli bir yönteme geçirebilirsiniz.

Belge metnini yerelleştirme

Projenizdeki belge, şablon veya çalışma kitabı büyük olasılıkla derlemeden ve diğer yönetilen kaynaklardan ayrı olarak yerelleştirilmesi gereken statik metin içeriyordur. Bunun basit bir yolu, belgenin bir kopyasını oluşturmak ve Microsoft Office Word veya Microsoft Office Excel kullanarak metni çevirmektir. Herhangi bir sayıda belge aynı derlemeye bağlanabildiğinden, kodda değişiklik yapmasanız bile bu işlem çalışır.

Yine de kodunuzun belge metniyle etkileşim kuran herhangi bir bölümünün metnin diliyle eşleşmeye devam ettiğinden ve yer işaretlerinin, adlandırılmış aralıkların ve diğer görüntüleme alanlarının Office belgesinin farklı dil bilgisi ve metin uzunluğu için ayarlamak için gerekli olan yeniden biçimlendirmeye uygun olduğundan emin olmanız gerekir. Görece az metin içeren belge şablonları için, metni kaynak dosyalarında depolamayı ve ardından çalışma zamanında yüklemeyi düşünebilirsiniz.

Metin yönü

Excel'de, metni sağdan sola işlemek için çalışma sayfasının bir özelliğini ayarlayabilirsiniz. Konak denetimleri veya tasarımcıya yerleştirilen özelliği olan herhangi bir RightToLeft denetim, çalışma zamanında bu ayarlarla otomatik olarak eşleşmektedir. Word'de çift yönlü metin için belge ayarı yoktur (yalnızca metin hizalamanızı değiştirirsiniz), bu nedenle denetimler bu ayara eşlenemez. Bunun yerine, her denetim için metin hizalamasını ayarlamanız gerekir. Tüm denetimlerde gezinmek ve metni sağdan sola işlemeye zorlamak için kod yazmak mümkündür.

Kültür değiştirme

Belge düzeyinde özelleştirme kodunuz genellikle Excel'in ana kullanıcı arabirimi iş parçacığını paylaşır, bu nedenle iş parçacığı kültüründe yaptığınız tüm değişiklikler bu iş parçacığında çalışan diğer her şeyi etkiler; değişiklik, özelleştirmenizle sınırlı değildir.

Windows Forms denetimleri, konak uygulama tarafından uygulama düzeyinde VSTO Eklentileri başlatılmadan önce başlatılır. Bu gibi durumlarda, kullanıcı arabirimi denetimleri ayarlanmadan önce kültürün değiştirilmesi gerekir.

Dil paketlerini yükleme

Windows için İngilizce olmayan ayarlarınız varsa, Office çalışma zamanı iletilerine yönelik Visual Studio Araçları Windows ile aynı dilde görmek üzere Office çalışma zamanı Dil Paketleri için Visual Studio Araçları yükleyebilirsiniz. Herhangi bir son kullanıcı çözümlerinizi Windows için İngilizce olmayan ayarlarla çalıştırıyorsa, çalışma zamanı iletilerini Windows ile aynı dilde görmek için doğru dil paketine sahip olmaları gerekir. Office çalışma zamanı Dil Paketleri için Visual Studio Araçları Microsoft indirme merkezinden edinilebilir.

Ayrıca, ClickOnce iletileri için yeniden dağıtılabilir .NET Framework Dil Paketleri gereklidir. .NET Framework Dil Paketleri Microsoft indirme merkezinden edinilebilir.

Bölgesel ayarlar ve Excel COM Çağrıları

Yönetilen istemci COM nesnesindeki bir yöntemi çağırdığı ve kültüre özgü bilgileri geçirmesi gerektiğinde, bunu geçerli iş parçacığı yerel ayarıyla CurrentCulture eşleşen (yerel ayar) kullanarak yapar. Geçerli iş parçacığı yerel ayarı varsayılan olarak kullanıcının bölgesel ayarlarından devralınır. Ancak, Visual Studio'daki Office geliştirme araçları kullanılarak oluşturulan bir Excel çözümünden Excel nesne modeline çağrı yaptığınızda, İngilizce (Birleşik Devletler) veri biçimi (yerel ayar kimliği 1033) Excel nesne modeline otomatik olarak geçirilir. Tarihler ve para birimi gibi yerel ayara duyarlı biçimlendirmeye sahip tüm verileri Microsoft Office Excel'e geçirmeden veya proje kodunuzdaki verileri okumadan önce İngilizce (Birleşik Devletler) veri biçimini kullanarak biçimlendirmeniz gerekir.

Verileri depolama konusunda dikkat edilmesi gerekenler

Verilerinizin doğru yorumlandığından ve görüntülendiğinden emin olmak için, bir uygulama Excel çalışma sayfası formülleri gibi verileri kesin olarak yazılan nesneler yerine dize değişmez değerlerinde (sabit kodlanmış) depoladığında da sorunlarla karşılaşabileceğinizi göz önünde bulundurmanız gerekir. Kültür sabiti veya İngilizce (Birleşik Devletler) (LCID değeri 1033) stili varsayılarak biçimlendirilmiş verileri kullanmalısınız.

Dize değişmez değerleri kullanan uygulamalar

Sabit kodlanmış olabilecek olası değerler, İngilizce (Birleşik Devletler) biçiminde yazılmış tarih değişmez değerleri ve yerelleştirilmiş işlev adları içeren Excel çalışma sayfası formüllerini içerir. Bir diğer olasılık da "1.000" gibi bir sayı içeren sabit kodlanmış bir dize olabilir; bazı kültürlerde bu bin olarak yorumlanır, ancak diğer kültürlerde bir nokta sıfırı temsil eder. Yanlış biçimde gerçekleştirilen hesaplamalar ve karşılaştırmalar yanlış verilerle sonuçlanabilir.

Excel tüm dizeleri, dizeyle geçirilen LCID'ye uygun olarak yorumlar. Dizenin biçimi geçirilen LCID'ye karşılık gelmiyorsa bu sorun olabilir. Visual Studio'daki Office geliştirme araçları kullanılarak oluşturulan Excel çözümleri, tüm verileri geçirirken LCID 1033'i (en-US) kullanır. Excel verileri bölgesel ayarlara ve Excel kullanıcı arabirimi diline göre görüntüler. Visual Basic for Applications (VBA) da bu şekilde çalışır; dizeleri en-US olarak biçimlendirilir ve VBA neredeyse her zaman LCID olarak 0 (dil nötr) geçirir. Örneğin, aşağıdaki VBA kodu geçerli kullanıcı yerel ayarına uygun olarak 12 Mayıs 2004 için doğru biçimlendirilmiş bir değer görüntüler:

'VBA
Application.ActiveCell.Value2 = "05/12/04"

Aynı kod, Visual Studio'daki Office geliştirme araçları kullanılarak oluşturulan bir çözümde kullanıldığında ve COM birlikte çalışma aracılığıyla Excel'e geçirildiğinde, tarih EN-US stilinde biçimlendirildiğinde aynı sonuçları verir.

Örneğin:

this.Range["A1"].Value2 = "05/12/04";

Mümkün olduğunda dize değişmez değerleri yerine kesin türemiş verilerle çalışmanız gerekir. Örneğin, bir tarihi bir dize değişmez değeri içinde depolamak yerine, olarak Doubledepolayın ve ardından işleme için bir DateTime nesneye dönüştürün.

Aşağıdaki kod örneği, kullanıcının A5 hücresine girdiği tarihi alır, bunu olarak Doubledepolar ve ardından A7 hücresinde görüntülenmek üzere bir DateTime nesneye dönüştürür. Tarih görüntülemek için A7 hücresi biçimlendirilmelidir.

private void ConvertDate_Click(object sender, EventArgs e)
{
    try
    {
        double dbl = (double)(this.Range["A5"].Value2);
        System.DateTime dt = System.DateTime.FromOADate(dbl);
        this.Range["A7"].Value2 = dt;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

Excel çalışma sayfası işlevleri

Çalışma sayfası işlev adları, Excel'in çoğu dil sürümü için dahili olarak çevrilir. Ancak, olası dil ve COM birlikte çalışma sorunları nedeniyle kodunuzda yalnızca İngilizce işlev adlarını kullanmanız önerilir.

Dış veri kullanan uygulamalar

Eski bir sistemden dışarı aktarılan virgülle ayrılmış değerler (CSV dosyaları) içeren dosyalar gibi dış verileri açan veya başka bir şekilde kullanan tüm kodlar, bu tür dosyalar en-US dışında herhangi bir biçim kullanılarak dışarı aktarılıyorsa da etkilenebilir. Veritabanı tarihleri dize olarak depolamadığı veya ikili biçim kullanmayan işlemler gerçekleştirmediği sürece, tüm değerlerin ikili biçimde olması gerektiğinden veritabanı erişimi etkilenmeyebilir. Ayrıca, Excel'deki verileri kullanarak SQL sorguları oluşturursanız, kullandığınız işleve bağlı olarak bunların en-US biçiminde olduğundan emin olmanız gerekebilir.