ठीक है, मेरे पास दिखाने के लिए कुछ है, एक तैयार उत्पाद की तुलना में अवधारणा का अधिक प्रमाण है, लेकिन सटीक विशिष्टताओं की कमी के कारण, मैं इसे इस तरह छोड़ देता हूं (या मैं इसे खत्म कर दूंगा)। मैं एक अलग संदेश में पोस्ट करता हूं क्योंकि यह थोड़ा लंबा होगा। मैं थोड़ा और अधिक jQuery का प्रयास करने का अवसर लिया ...
जावा कोड:
GetLocaleInfo.java
import java.applet.*;
import java.util.Locale;
import java.text.*;
public class GetLocaleInfo extends Applet
{
Locale loc;
NumberFormat nf;
NumberFormat cnf;
NumberFormat pnf;
public static void main(String args[])
{
final Applet applet = new GetLocaleInfo();
applet.init();
applet.start();
}
public void init()
{
loc = Locale.getDefault();
nf = NumberFormat.getInstance();
cnf = NumberFormat.getCurrencyInstance();
pnf = NumberFormat.getPercentInstance();
}
public void start()
{
System.out.println(GetLocaleInformation());
System.out.println(nf.format(0.1));
System.out.println(cnf.format(1.0));
System.out.println(pnf.format(0.01));
}
public String GetLocaleInformation()
{
return String.format("Locale for %s: country=%s (%s / %s), lang=%s (%s / %s), variant=%s (%s)",
loc.getDisplayName(),
loc.getDisplayCountry(),
loc.getCountry(),
loc.getISO3Country(),
loc.getDisplayLanguage(),
loc.getLanguage(),
loc.getISO3Language(),
loc.getDisplayVariant(),
loc.getVariant()
);
}
public String FormatNumber(String number)
{
double value = 0;
try
{
value = Double.parseDouble(number);
}
catch (NumberFormatException nfe)
{
return "!";
}
return nf.format(value);
}
public String FormatCurrency(String number)
{
double value = 0;
try
{
value = Double.parseDouble(number);
}
catch (NumberFormatException nfe)
{
return "!";
}
return cnf.format(value);
}
public String FormatPercent(String number)
{
double value = 0;
try
{
value = Double.parseDouble(number);
}
catch (NumberFormatException nfe)
{
return "!";
}
return pnf.format(value);
}
}
उपरोक्त एप्लेट का उपयोग करके HTML पेज का एक उदाहरण:
GetLocaleInfo.html
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js"></script>
<script type="text/javascript">
var applet;
$(document).ready(function()
{
applet = document.getElementById('LocaleInfo');
$('#Results').text(applet.GetLocaleInformation());
});
</script>
<script type="text/javascript">
function DoFormatting()
{
$('table.toFormat').each(function()
{
var table = $(this);
$('td', table).each(function(cellId)
{
var val = $(this);
if (val.is('.number'))
{
val.text(applet.FormatNumber(val.text()));
}
else if (val.is('.currency'))
{
val.text(applet.FormatCurrency(val.text()));
}
else if (val.is('.percent'))
{
val.text(applet.FormatPercent(val.text()));
}
});
});
}
</script>
</head>
<body>
<div id="Container">
<p>Page to demonstrate how JavaScript can get locale information from Java</p>
<div id="AppletContainer">
<object classid="java:GetLocaleInfo.class"
type="application/x-java-applet" codetype="application/java"
name="LocaleInfo" id="LocaleInfo" width="0" height="0">
<param name="code" value="GetLocaleInfo"/>
<param name="mayscript" value="true"/>
<param name="scriptable" value="true"/>
<p>
<strong>This browser does not have Java enabled.</strong>
<br>
<a href="http://java.sun.com/products/plugin/downloads/index.html" title="Download Java plug-in">
Get the latest Java plug-in here
</a> (or enable Java support).
</p>
</object>
</div>
<p>
Click on the button to format the table content to the locale rules of the user.
</p>
<input type="button" name="DoFormatting" id="DoFormatting" value="Format the table" onclick="javascript:DoFormatting()"/>
<div id="Results">
</div>
<table class="toFormat">
<caption>Synthetic View</caption>
<thead><tr>
<th>Name</th><th>Value</th><th>Cost</th><th>Discount</th>
</tr></thead>
<tbody>
<tr><td>Foo</td><td class="number">3.1415926</td><td class="currency">21.36</td><td class="percent">0.196</td></tr>
<tr><td>Bar</td><td class="number">159263.14</td><td class="currency">33</td><td class="percent">0.33</td></tr>
<tr><td>Baz</td><td class="number">15926</td><td class="currency">12.99</td><td class="percent">0.05</td></tr>
<tr><td>Doh</td><td class="number">0.01415926</td><td class="currency">5.1</td><td class="percent">0.1</td></tr>
</tbody>
</table>
</div>
</body>
</html>
विंडोज XP प्रो SP3 पर फ़ायरफ़ॉक्स 3.0, IE 6, सफारी 3.1 और ओपेरा 9.50 पर परीक्षण किया गया। यह पहले दो के साथ समस्या के बिना काम करता है, सफारी पर आईआईटी () कॉल के बाद एक अजीब त्रुटि है:
java.net.MalformedURLException: no protocol:
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at sun.plugin.liveconnect.SecureInvocation.checkLiveConnectCaller(Unknown Source)
at sun.plugin.liveconnect.SecureInvocation.access$000(Unknown Source)
at sun.plugin.liveconnect.SecureInvocation$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin.liveconnect.SecureInvocation.CallMethod(Unknown Source)
लेकिन यह अभी भी काम करता है।
मैं इसे ओपेरा के साथ काम नहीं कर सकता: एप्लेट सही ढंग से लोड होता है, जैसा कि मैं जावा कंसोल में इनिट () कॉल का निशान देख सकता हूं, जब जावा जावा फ़ंक्शन को कॉल करता है तो मुझे कोई त्रुटि नहीं है (सिवाय अगर मैं एक विधि जोड़ता हूं और कॉल करता हूं) एक JSObject पैरामीटर प्राप्त करना, उत्सुकता से), लेकिन जावा फ़ंक्शंस को नहीं कहा जाता है (मैंने कॉल्स का पता लगाया)।
मेरा मानना है कि लाइवकनेक्ट ओपेरा में काम करता है, लेकिन मैं अभी तक नहीं देखता कि कैसे। मैं थोड़ा और शोध करूंगा।
[अपडेट] मैंने गैर-मौजूदा जार फ़ाइल (जो अन्य ब्राउज़र को बंद नहीं करता है) के संदर्भ हटा दिए और मुझे कॉल का पता चला, लेकिन यह पृष्ठ को अपडेट नहीं करता है।
मम्म, अगर मैं करूँ तो alert(applet.GetLocaleInformation());
मुझे जानकारी मिल गई है, इसलिए यह एक jQuery मुद्दा हो सकता है।