2010-01-07 28 views
10

Chúng tôi có ứng dụng ASP.NET chạy các ứng dụng khác nhau trên toàn thế giới. Trong ứng dụng này, chúng tôi có từ điển cho mỗi ngôn ngữ. Trong từ điển, chúng ta có các từ trong chữ thường và đôi khi chúng ta viết hoa nó bằng mã cho các lý do typographic.Làm cách nào để viết đúng các từ tiếng Hy Lạp trong .NET?

var greek= new CultureInfo("el-GR"); 
string grrr = "Πόλη"; 
string GRRR = grrr.ToUpper(greek); // "ΠΌΛΗ" 

Vấn đề là:

... nếu bạn đang sử dụng chữ in hoa sau đó họ phải xuất hiện như thế này: f.e. ΠΟΛΗ và không thích ΠΌΛΗ, tương tự cho tất cả Nói cách khác viết bằng chữ in hoa

Vậy là nó có thể tổng quát để từ tiếng Hy Lạp chữ hoa một cách chính xác trong NET? Hoặc tôi nên viết thuật toán tùy chỉnh của riêng tôi cho chữ hoa Hy Lạp?

Làm cách nào để giải quyết vấn đề này ở Hy Lạp?

+0

đâu bạn trích dẫn nguyên tắc từ đâu? – AakashM

+0

@AakashM: từ giao tiếp với khách hàng. –

+0

Bạn đã xác minh rằng yêu cầu của họ thực sự đúng với tiếng Hy Lạp nói chung hay chỉ đúng đối với họ? –

Trả lời

4

Tôi nghi ngờ rằng bạn sẽ phải viết phương pháp của riêng mình, nếu el-GR không thực hiện những gì bạn muốn. Đừng nghĩ rằng bạn cần phải đi đến chiều dài đầy đủ của creating a custom CultureInfo, nếu đây là tất cả những gì bạn cần. Đó là tốt, bởi vì trông khá khó sử dụng.

Những gì tôi đề nghị bạn làm là đọc this Michael Kaplan blog post và bất cứ điều gì khác có liên quan mà bạn có thể tìm thấy - anh ấy đang làm việc và viết về i18n và các vấn đề ngôn ngữ trong nhiều năm và nhiều năm và bình luận của anh ấy là điểm đầu tiên của tôi vấn đề trên Windows.

2

Tôi không biết nhiều về ASP.Net nhưng tôi biết làm thế nào tôi sẽ làm điều này trong Java.

Nếu các nhân vật là Unicode, tôi sẽ chỉ sau quá trình đầu ra từ ToUpper với một số thay đơn giản, một khi việc chuyển đổi \ u038C (Ό) để \ u039F (Ο) hoặc \ u0386 (Ά) để \ u0391 (Α).

Từ giao diện của trang mã tiếng Hy Lạp/Coptic (\ u0370 đến \ u03ff), chỉ có một vài ký tự (6 hoặc 7) bạn cần phải thay đổi.

+0

Đó là điều ác. Điều gì nếu khách hàng một ngày đầu vào như một nhân vật sẵn sàng? –

+0

Nó đã được ghi trong các chú thích rằng các từ tiếng Hy Lạp viết hoa không bao giờ có dấu phụ trừ từ Ἢ: "Khi một từ được viết hoàn toàn bằng chữ in hoa, dấu phụ không bao giờ được sử dụng, từ Ἢ (" hoặc ") là một ngoại lệ quy tắc "(xem http://www.statemaster.com/encyclopedia/Diacritics-%28Greek-alphabet%29) – paxdiablo

+0

Vì vậy,? Tôi, với tư cách là khách hàng, muốn chương trình không thay đổi chữ hoa tôi đã tự viết, ngay cả khi nó có chứa dấu phụ. Tùy thuộc vào tôi những gì tôi muốn lưu trong một trường văn bản, và nếu chương trình của bạn thay đổi văn bản được viết rõ ràng, tôi sẽ thuyết phục bộ phận hỗ trợ của bạn cho đến khi họ khóc trong tòa nhà công ty. ;) Vâng, có lẽ một chút exeggerated, nhưng quan điểm của tôi là đó sẽ là một giải pháp nhanh chóng và bẩn mà không bao giờ được trong một hệ thống sản xuất. –

1

Làm thế nào về thay thế các ký tự sai với những cái đúng:

/// <summary> 
/// Returns the string to uppercase using Greek uppercase rules. 
/// </summary> 
/// <param name="source">The string that will be converted to uppercase</param> 
public static string ToUpperGreek(this string source) 
{ 
    Dictionary<char, char> mappings = new Dictionary<char, char>(){ 
     {'Ά','Α'}, {'Έ','Ε'}, {'Ή','Η'}, {'Ί','Ι'}, {'Ό','Ο'}, {'Ύ','Υ'}, {'Ώ','Ω'} 
    }; 

    source = source.ToUpper(); 

    char[] result = new char[source.Length]; 
    for (int i = 0; i < result.Length; i++) 
    { 
     result[i] = mappings.ContainsKey(source[i]) ? mappings[source[i]] : source[i]; 
    } 

    return new string(result); 
} 
Các vấn đề liên quan