मैं अंग्रेजी में सभी Exception
संदेश प्राप्त करने का प्रयास कर रहा हूं, इससे कोई फर्क नहीं पड़ता कि मेरा प्रोग्राम किस मशीन पर चल रहा है।अंग्रेजी में Win32Exception कैसे प्राप्त करें?
मैं निम्न पदों से जवाब का उपयोग कर अंग्रेजी में लगभग सभी अपवाद संदेश प्राप्त करने के लिए प्रबंधन किया है: Exception messages in English? और कुछ अन्य समाधान मैं (प्रतिबिंब का उपयोग डिफ़ॉल्ट CultureInfo
बदलने के लिए की तरह) मिल गया है। मुझे SocketException
के साथ विशिष्ट समस्या है, कोई फर्क नहीं पड़ता कि मैं क्या कर रहा हूं मैं इसे डिफ़ॉल्ट मशीन की भाषा में प्राप्त कर रहा हूं।
मैं एक परीक्षण कार्यक्रम बना लिया है समस्या को दिखाने के लिए:
using System;
using System.Text;
using System.Threading;
using System.IO;
using System.Net.Sockets;
using System.Reflection;
using System.Globalization;
namespace TestApp
{
class Program
{
static void Main(string[] args)
{
try
{
//I'm not listening on the following port:
TcpClient s = new TcpClient("localhost", 2121);
}
catch (Exception ex)
{
Console.WriteLine("Socket exception: " + ex.Message);
}
try
{
//the following file doesn't exists:
File.ReadAllText("filenotexist.txt");
}
catch (Exception ex)
{
Console.WriteLine("File exception: " + ex.Message);
}
}
}
}
मेरी मशीन पर यह परिणाम निम्न पाठ:
H:\Shared>Test-def.exe
Socket exception: No connection could be made because the target machine actively refused it 127.0.0.1:2121
File exception: Could not find file 'H:\Shared\filenotexist.txt'.
इस परीक्षा कार्यक्रम डिफ़ॉल्ट भाषा में अपवाद प्रिंट होगा
Z:\>Test-def.exe
Socket exception: 対象のコンピューターによって拒否されたため、接続できませんでした。 127.0.0.1:2121
File exception: ファイル 'Z:\filenotexist.txt' が見つかりませんでした。
: जापानी मशीन पर यह जापानी में सभी अपवादों को (जो मुझे समझ नहीं आता) लिखने
(जापानी '\' जापानी मशीन में अलग दिखता है, लेकिन जब मेरी मशीन में कॉपी किया यह '\' के रूप में दिखाया गया है)
तो जवाब मैंने पाया की संयोजन से, मैं निम्नलिखित समाधान को क्रियान्वित किया है, तो अब यह इस तरह दिखता है:
Z:\>Test-en.exe
Socket exception: 対象のコンピューターによって拒否されたため、接続できませんでした。 127.0.0.1:2121
File exception: Could not find file 'Z:\filenotexist.txt'.
मैं भी कुछ अन्य परीक्षण किया है:
namespace TestApp
{
class Program
{
//will change CultureInfo to English, this should change all threads CultureInfo to English.
public static void SetEnglishCulture()
{
CultureInfo ci = new CultureInfo("en-US");
//change CultureInfo for current thread:
Thread.CurrentThread.CurrentUICulture = ci;
Thread.CurrentThread.CurrentCulture = ci;
//change CultureInfo for new threads:
Type t = typeof(CultureInfo);
try
{
t.InvokeMember("s_userDefaultCulture", BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Static, null, ci, new object[] { ci });
t.InvokeMember("s_userDefaultUICulture", BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Static, null, ci, new object[] { ci });
}
catch { }
try
{
t.InvokeMember("m_userDefaultCulture", BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Static, null, ci, new object[] { ci });
t.InvokeMember("m_userDefaultUICulture", BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Static, null, ci, new object[] { ci });
}
catch { }
}
static void Main(string[] args)
{
//first thing: set CultureInfo to English:
SetEnglishCulture();
try
{
//I'm not listening on the following port:
TcpClient s = new TcpClient("localhost", 2121);
}
catch (Exception ex)
{
Console.WriteLine("Socket exception: " + ex.Message);
}
try
{
//the following file doesn't exists:
File.ReadAllText("filenotexist.txt");
}
catch (Exception ex)
{
Console.WriteLine("File exception: " + ex.Message);
}
}
}
}
अब जापानी मशीन पर यह अंग्रेजी में फ़ाइल अपवाद लेकिन Net.socket अपवाद जापानी में अभी भी लिखना अपवाद, कुछ अपवाद अब अंग्रेजी में दिखाए जाते हैं, bu उनमें से सभी नहीं, सॉकेट अपवाद लगातार हैं। जैसा कि आप देख सकते हैं, फ़ाइल अपवाद का अनुवाद अंग्रेजी में किया गया था, लेकिन सॉकेट अपवाद अभी भी जापानी में है।
मैंने इसे किसी भी .NET ढांचे (2.1 से 4.5 तक) में अभी भी परीक्षण किया है।
- क्या सभी अपवादों के लिए कोई संपूर्ण समाधान है?
- क्या मुझे कुछ याद आया?
- क्या मुझे कुछ और करना चाहिए?
- शायद अंग्रेजी आउटपुट प्राप्त करने के लिए विदेशी मशीन पर प्रोग्राम चलाने का कोई और तरीका है, और कुछ पर्यावरण चर सेट करें?
मुझे कोई भी अंग्रेजी पाठ नहीं मिला है, न तो वीएस -2008 (.NET 3.5) और न ही VS2015 (.net 4.5.2) में। डीएफएसबी में एक जर्मन पाठ है, EngSb में कुछ भी नहीं है। –
defLangID भाषा पहचानकर्ता है, मैंने अपने नमूने में eng-us का उपयोग किया, लेकिन ऐसा लगता है कि आपकी मशीन इसका समर्थन नहीं करती है, लेकिन हो सकता है कि यह अन्य Eng का समर्थन करे। भाषा? शायद Eng-uk? आप अन्य लोकेल का उपयोग करने का प्रयास कर सकते हैं, यहां पूरी सूची देखें: https://msdn.microsoft.com/en-us/library/windows/desktop/dd318693(v=vs.85).aspxhttps://msdn.microsoft। com/en-us/पुस्तकालय/विंडोज़/डेस्कटॉप/dd318693 (v = vs.85) .aspx – SHR