jdk/src/share/classes/sun/security/util/Resources_zh_TW.java
changeset 2 90ce3da70b43
child 5506 202f599c92aa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/sun/security/util/Resources_zh_TW.java	Sat Dec 01 00:00:00 2007 +0000
@@ -0,0 +1,650 @@
+/*
+ * Copyright 2001-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.security.util;
+
+/**
+ * <p> This class represents the <code>ResourceBundle</code>
+ * for javax.security.auth and sun.security.
+ *
+ */
+public class Resources_zh_TW extends java.util.ListResourceBundle {
+
+    private static final Object[][] contents = {
+
+        // shared (from jarsigner)
+        {" ", " "},
+        {"  ", "  "},
+        {"      ", "      "},
+        {", ", ", "},
+        // shared (from keytool)
+        {"\n", "\n"},
+        {"*******************************************",
+                "*******************************************"},
+        {"*******************************************\n\n",
+                "*******************************************\n\n"},
+
+        // keytool
+        {"keytool error: ", "keytool \u932f\u8aa4\uff1a "},
+        {"Illegal option:  ", "\u975e\u6cd5\u9078\u9805\uff1a  "},
+        {"Try keytool -help","\u5617\u8a66 keytool -help"},
+        {"Command option <flag> needs an argument.", "\u6307\u4ee4\u9078\u9805 {0} \u9700\u8981\u5f15\u6578\u3002"},
+        {"Warning:  Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified <command> value.",
+"\u8b66\u544a\ufe30PKCS12 \u91d1\u9470\u5132\u5b58\u5eab\u4e0d\u652f\u63f4\u4e0d\u540c\u7684\u5132\u5b58\u5eab\u548c\u91d1\u9470\u5bc6\u78bc\u3002\u5ffd\u7565\u4f7f\u7528\u8005\u6307\u5b9a\u7684 {0} \u503c\u3002"},
+        {"-keystore must be NONE if -storetype is {0}",
+                "\u5982\u679c -storetype \u70ba {0}\uff0c\u5247 -keystore \u5fc5\u9808\u70ba NONE"},
+        {"Too may retries, program terminated",
+"\u91cd\u8a66\u6b21\u6578\u592a\u591a\uff0c\u7a0b\u5f0f\u5df2\u7d42\u6b62"},
+        {"-storepasswd and -keypasswd commands not supported if -storetype is {0}",
+                "\u5982\u679c -storetype \u70ba {0}\uff0c\u5247\u4e0d\u652f\u63f4 -storepasswd \u548c -keypasswd \u6307\u4ee4"},
+        {"-keypasswd commands not supported if -storetype is PKCS12",
+                "\u5982\u679c -storetype \u70ba PKCS12\uff0c\u5247 -keypasswd \u6307\u4ee4\u4e0d\u53d7\u652f\u63f4"},
+        {"-keypass and -new can not be specified if -storetype is {0}",
+                "\u5982\u679c -storetype \u70ba {0}\uff0c\u5247\u4e0d\u80fd\u6307\u5b9a -keypass \u548c -new"},
+        {"if -protected is specified, then -storepass, -keypass, and -new must not be specified",
+                "\u5982\u679c\u6307\u5b9a -protected\uff0c\u5247\u4e0d\u80fd\u6307\u5b9a -storepass\u3001-keypass \u548c -new"},
+        {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified",
+                "\u5982\u679c\u6307\u5b9a -srcprotected\uff0c\u5247\u4e0d\u80fd\u6307\u5b9a -srcstorepass \u548c -srckeypass"},
+        {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified",
+                "\u5982\u679c\u91d1\u9470\u5eab\u4e0d\u53d7\u5bc6\u78bc\u4fdd\u8b77\uff0c\u5247\u4e0d\u80fd\u6307\u5b9a -storepass\u3001-keypass \u548c -new"},
+        {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified",
+                "\u5982\u679c\u4f86\u6e90\u91d1\u9470\u5eab\u4e0d\u53d7\u5bc6\u78bc\u4fdd\u8b77\uff0c\u5247\u4e0d\u80fd\u6307\u5b9a -srcstorepass \u548c -srckeypass"},
+        {"Validity must be greater than zero",
+                "\u6709\u6548\u6027\u5fc5\u9808\u6bd4\u96f6\u9084\u5927"},
+        {"provName not a provider", "{0} \u4e0d\u662f\u4e00\u500b\u63d0\u4f9b\u8005"},
+        {"Usage error: no command provided", "\u7528\u6cd5\u932f\u8aa4\uff1a\u672a\u63d0\u4f9b\u6307\u4ee4"},
+        {"Usage error, <arg> is not a legal command", "\u7528\u6cd5\u932f\u8aa4\uff0c{0} \u4e0d\u662f\u5408\u6cd5\u6307\u4ee4"},
+        {"Source keystore file exists, but is empty: ", "\u4f86\u6e90\u91d1\u9470\u5132\u5b58\u5eab\u6a94\u6848\u5b58\u5728\uff0c\u4f46\u70ba\u7a7a\uff1a"},
+        {"Please specify -srckeystore", "\u8acb\u6307\u5b9a -srckeystore"},
+        {"Must not specify both -v and -rfc with 'list' command",
+                "\u4e0d\u5f97\u4ee5\u300c\u6e05\u55ae\u300d\u6307\u4ee4\u6307\u5b9a -v \u53ca -rfc"},
+        {"Key password must be at least 6 characters",
+                "\u95dc\u9375\u5bc6\u78bc\u5fc5\u9808\u81f3\u5c11\u70ba 6 \u500b\u5b57\u5143"},
+        {"New password must be at least 6 characters",
+                "\u65b0\u7684\u5bc6\u78bc\u5fc5\u9808\u81f3\u5c11\u70ba 6 \u500b\u5b57\u5143"},
+        {"Keystore file exists, but is empty: ",
+                "Keystore \u6a94\u6848\u5b58\u5728\uff0c\u4f46\u70ba\u7a7a\u767d\uff1a "},
+        {"Keystore file does not exist: ",
+                "Keystore \u6a94\u6848\u4e0d\u5b58\u5728\uff1a "},
+        {"Must specify destination alias", "\u5fc5\u9808\u6307\u5b9a\u76ee\u7684\u5730\u5225\u540d"},
+        {"Must specify alias", "\u5fc5\u9808\u6307\u5b9a\u5225\u540d"},
+        {"Keystore password must be at least 6 characters",
+                "Keystore \u5bc6\u78bc\u5fc5\u9808\u81f3\u5c11\u70ba 6 \u500b\u5b57\u5143"},
+        {"Enter keystore password:  ", "\u8f38\u5165 keystore \u5bc6\u78bc\uff1a  "},
+        {"Enter source keystore password:  ", "\u8acb\u8f38\u5165\u4f86\u6e90\u91d1\u9470\u5132\u5b58\u5eab\u5bc6\u78bc\uff1a"},
+        {"Enter destination keystore password:  ", "\u8acb\u8f38\u5165\u76ee\u6a19\u91d1\u9470\u5132\u5b58\u5eab\u5bc6\u78bc\uff1a"},
+        {"Keystore password is too short - must be at least 6 characters",
+         "Keystore \u5bc6\u78bc\u592a\u77ed - \u5fc5\u9808\u81f3\u5c11\u70ba 6 \u500b\u5b57\u5143"},
+        {"Unknown Entry Type", "\u4e0d\u660e\u7684\u9805\u76ee\u985e\u578b"},
+        {"Too many failures. Alias not changed", "\u592a\u591a\u932f\u8aa4\u3002\u672a\u8b8a\u66f4\u5225\u540d"},
+        {"Entry for alias <alias> successfully imported.",
+"\u5df2\u6210\u529f\u532f\u5165\u5225\u540d {0} \u7684\u9805\u76ee\u3002"},
+        {"Entry for alias <alias> not imported.", "\u672a\u532f\u5165\u5225\u540d {0} \u7684\u9805\u76ee\u3002"},
+        {"Problem importing entry for alias <alias>: <exception>.\nEntry for alias <alias> not imported.",
+"\u532f\u5165\u5225\u540d {0} \u7684\u9805\u76ee\u6642\u51fa\u73fe\u554f\u984c\uff1a{1}\u3002\n\u672a\u532f\u5165\u5225\u540d {0} \u7684\u9805\u76ee\u3002"},
+        {"Import command completed:  <ok> entries successfully imported, <fail> entries failed or cancelled",
+"\u5df2\u5b8c\u6210\u532f\u5165\u6307\u4ee4\uff1a\u6210\u529f\u532f\u5165 {0} \u500b\u9805\u76ee\uff0c{1} \u500b\u9805\u76ee\u5931\u6557\u6216\u5df2\u53d6\u6d88"},
+        {"Warning: Overwriting existing alias <alias> in destination keystore",
+"\u8b66\u544a\uff1a\u6b63\u5728\u8986\u5beb\u76ee\u6a19\u91d1\u9470\u5132\u5b58\u5eab\u4e2d\u7684\u73fe\u6709\u5225\u540d {0}"},
+        {"Existing entry alias <alias> exists, overwrite? [no]:  ",
+"\u73fe\u6709\u9805\u76ee\u5225\u540d {0} \u5b58\u5728\uff0c\u662f\u5426\u8986\u5beb\uff1f[\u5426]\uff1a  "},
+        {"Too many failures - try later", "\u592a\u591a\u932f\u8aa4 - \u8acb\u7a0d\u5f8c\u518d\u8a66"},
+        {"Certification request stored in file <filename>",
+                "\u8a8d\u8b49\u8981\u6c42\u5132\u5b58\u5728\u6a94\u6848 <{0}>"},
+        {"Submit this to your CA", "\u5c07\u6b64\u63d0\u9001\u81f3\u60a8\u7684 CA"},
+        {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified",
+"\u5982\u679c\u672a\u6307\u5b9a\u5225\u540d\uff0c\u5247\u4e0d\u80fd\u6307\u5b9a destalias\u3001srckeypass \u53ca destkeypass"},
+        {"Certificate stored in file <filename>",
+                "\u8a8d\u8b49\u5132\u5b58\u5728\u6a94\u6848 <{0}>"},
+        {"Certificate reply was installed in keystore",
+                "\u8a8d\u8b49\u56de\u8986\u5df2\u5b89\u88dd\u5728 keystore \u4e2d"},
+        {"Certificate reply was not installed in keystore",
+                "\u8a8d\u8b49\u56de\u8986\u672a\u5b89\u88dd\u5728 keystore \u4e2d"},
+        {"Certificate was added to keystore",
+                "\u8a8d\u8b49\u5df2\u65b0\u589e\u81f3 keystore \u4e2d"},
+        {"Certificate was not added to keystore",
+                "\u8a8d\u8b49\u672a\u65b0\u589e\u81f3 keystore \u4e2d"},
+        {"[Storing ksfname]", "[\u5132\u5b58 {0}]"},
+        {"alias has no public key (certificate)",
+                "{0} \u6c92\u6709\u516c\u958b\u91d1\u9470\uff08\u8a8d\u8b49\uff09"},
+        {"Cannot derive signature algorithm",
+                "\u7121\u6cd5\u53d6\u5f97\u7c3d\u540d\u6f14\u7b97\u6cd5"},
+        {"Alias <alias> does not exist",
+                "\u5225\u540d <{0}> \u4e0d\u5b58\u5728"},
+        {"Alias <alias> has no certificate",
+                "\u5225\u540d <{0}> \u6c92\u6709\u8a8d\u8b49"},
+        {"Key pair not generated, alias <alias> already exists",
+                "\u6c92\u6709\u5efa\u7acb\u9375\u503c\u5c0d\uff0c\u5225\u540d <{0}> \u5df2\u7d93\u5b58\u5728"},
+        {"Cannot derive signature algorithm",
+                "\u7121\u6cd5\u53d6\u5f97\u7c3d\u540d\u6f14\u7b97\u6cd5"},
+        {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name",
+"\u91dd\u5c0d {4} \u7522\u751f\u6709\u6548\u671f\u70ba {3} \u5929\u7684 {0} \u4f4d\u5143 {1} \u91d1\u9470\u5c0d\u4ee5\u53ca\u81ea\u6211\u7c3d\u7f72\u6191\u8b49 ({2})\n\t"},
+        {"Enter key password for <alias>", "\u8f38\u5165 <{0}> \u7684\u4e3b\u5bc6\u78bc"},
+        {"\t(RETURN if same as keystore password):  ",
+                "\t\uff08RETURN \u5982\u679c\u548c keystore \u5bc6\u78bc\u76f8\u540c\uff09\uff1a  "},
+        {"Key password is too short - must be at least 6 characters",
+                "\u4e3b\u5bc6\u78bc\u592a\u77ed - \u5fc5\u9808\u81f3\u5c11\u70ba 6 \u500b\u5b57\u5143"},
+        {"Too many failures - key not added to keystore",
+                "\u592a\u591a\u932f\u8aa4 - \u9375\u503c\u672a\u88ab\u65b0\u589e\u81f3 keystore \u4e2d"},
+        {"Destination alias <dest> already exists",
+                "\u76ee\u7684\u5730\u5225\u540d <{0}> \u5df2\u7d93\u5b58\u5728"},
+        {"Password is too short - must be at least 6 characters",
+                "\u5bc6\u78bc\u592a\u77ed - \u5fc5\u9808\u81f3\u5c11\u70ba 6 \u500b\u5b57\u5143"},
+        {"Too many failures. Key entry not cloned",
+                "\u592a\u591a\u932f\u8aa4\u3002 \u9375\u503c\u8f38\u5165\u672a\u88ab\u8907\u88fd"},
+        {"key password for <alias>", "<{0}> \u7684\u4e3b\u5bc6\u78bc"},
+        {"Keystore entry for <id.getName()> already exists",
+                "<{0}> \u7684 Keystore \u8f38\u5165\u5df2\u7d93\u5b58\u5728"},
+        {"Creating keystore entry for <id.getName()> ...",
+                "\u5efa\u7acb <{0}> \u7684 keystore \u8f38\u5165..."},
+        {"No entries from identity database added",
+                "\u5f9e\u65b0\u589e\u8fa8\u8b58\u8cc7\u6599\u5eab\u4e2d\uff0c\u6c92\u6709\u8f38\u5165"},
+        {"Alias name: alias", "\u5225\u540d\u540d\u7a31\uff1a {0}"},
+        {"Creation date: keyStore.getCreationDate(alias)",
+                "\u5efa\u7acb\u65e5\u671f\uff1a {0,date}"},
+        {"alias, keyStore.getCreationDate(alias), ",
+                "{0}, {1,date}, "},
+        {"alias, ", "{0}, "},
+        {"Entry type: <type>", "\u9805\u76ee\u985e\u578b\uff1a{0}"},
+        {"Certificate chain length: ", "\u8a8d\u8b49\u93c8\u9577\u5ea6\uff1a "},
+        {"Certificate[(i + 1)]:", "\u8a8d\u8b49 [{0,number,integer}]:"},
+        {"Certificate fingerprint (MD5): ", "\u8a8d\u8b49\u6307\u7d0b (MD5)\uff1a "},
+        {"Entry type: trustedCertEntry\n", "\u8f38\u5165\u985e\u578b\uff1a trustedCertEntry\n"},
+        {"trustedCertEntry,", "trustedCertEntry,"},
+        {"Keystore type: ", "Keystore \u985e\u578b\uff1a "},
+        {"Keystore provider: ", "Keystore \u63d0\u4f9b\u8005\uff1a "},
+        {"Your keystore contains keyStore.size() entry",
+                "\u60a8\u7684 keystore \u5305\u542b {0,number,integer} \u8f38\u5165"},
+        {"Your keystore contains keyStore.size() entries",
+                "\u60a8\u7684 keystore \u5305\u542b {0,number,integer} \u8f38\u5165"},
+        {"Failed to parse input", "\u7121\u6cd5\u8a9e\u6cd5\u5206\u6790\u8f38\u5165"},
+        {"Empty input", "\u7a7a\u8f38\u5165"},
+        {"Not X.509 certificate", "\u975e X.509 \u8a8d\u8b49"},
+        {"Cannot derive signature algorithm",
+                "\u7121\u6cd5\u53d6\u5f97\u7c3d\u540d\u6f14\u7b97\u6cd5"},
+        {"alias has no public key", "{0} \u7121\u516c\u958b\u91d1\u9470"},
+        {"alias has no X.509 certificate", "{0} \u7121 X.509 \u8a8d\u8b49"},
+        {"New certificate (self-signed):", "\u65b0\u8a8d\u8b49\uff08\u81ea\u6211\u7c3d\u7f72\uff09\uff1a"},
+        {"Reply has no certificates", "\u56de\u8986\u4e0d\u542b\u8a8d\u8b49"},
+        {"Certificate not imported, alias <alias> already exists",
+                "\u8a8d\u8b49\u672a\u8f38\u5165\uff0c\u5225\u540d <{0}> \u5df2\u7d93\u5b58\u5728"},
+        {"Input not an X.509 certificate", "\u6240\u8f38\u5165\u7684\u4e0d\u662f\u4e00\u500b X.509 \u8a8d\u8b49"},
+        {"Certificate already exists in keystore under alias <trustalias>",
+                "\u5728 <{0}> \u7684\u5225\u540d\u4e4b\u4e0b\uff0c\u8a8d\u8b49\u5df2\u7d93\u5b58\u5728 keystore \u4e2d"},
+        {"Do you still want to add it? [no]:  ",
+                "\u60a8\u4ecd\u7136\u60f3\u8981\u5c07\u4e4b\u65b0\u589e\u55ce\uff1f [\u5426]\uff1a  "},
+        {"Certificate already exists in system-wide CA keystore under alias <trustalias>",
+                "\u5728 <{0}> \u7684\u5225\u540d\u4e4b\u4e0b\uff0c\u8a8d\u8b49\u5df2\u7d93\u5b58\u5728\u65bc CA keystore \u6574\u500b\u7cfb\u7d71\u4e4b\u4e2d"},
+        {"Do you still want to add it to your own keystore? [no]:  ",
+                "\u60a8\u4ecd\u7136\u60f3\u8981\u5c07\u4e4b\u65b0\u589e\u81f3\u81ea\u5df1\u7684 keystore \u55ce\uff1f [\u5426]\uff1a  "},
+        {"Trust this certificate? [no]:  ", "\u4fe1\u4efb\u9019\u500b\u8a8d\u8b49\uff1f [\u5426]\uff1a  "},
+        {"YES", "\u662f"},
+        {"New prompt: ", "\u65b0 {0}\uff1a "},
+        {"Passwords must differ", "\u5fc5\u9808\u662f\u4e0d\u540c\u7684\u5bc6\u78bc"},
+        {"Re-enter new prompt: ", "\u91cd\u65b0\u8f38\u5165\u65b0 {0}\uff1a "},
+        {"Re-enter new password: ", "\u91cd\u65b0\u8f38\u5165\u65b0\u5bc6\u78bc: "},
+        {"They don't match. Try again", "\u5b83\u5011\u4e0d\u76f8\u7b26\u3002\u8acb\u91cd\u8a66"},
+        {"Enter prompt alias name:  ", "\u8f38\u5165 {0} \u5225\u540d\u540d\u7a31\uff1a  "},
+        {"Enter new alias name\t(RETURN to cancel import for this entry):  ",
+"\u8acb\u8f38\u5165\u65b0\u7684\u5225\u540d\t(RETURN \u4ee5\u53d6\u6d88\u532f\u5165\u6b64\u9805\u76ee\u7684\u5225\u540d)\uff1a  "},
+        {"Enter alias name:  ", "\u8f38\u5165\u5225\u540d\u540d\u7a31\uff1a  "},
+        {"\t(RETURN if same as for <otherAlias>)",
+                "\t\uff08RETURN \u5982\u679c\u548c <{0}> \u7684\u76f8\u540c\uff09"},
+        {"*PATTERN* printX509Cert",
+                "\u6240\u6709\u8005\uff1a{0}\n\u6838\u767c\u8005\uff1a{1}\n\u5e8f\u865f\uff1a{2}\n\u81ea\u4ee5\u4e0b\u65e5\u671f\u958b\u59cb\u751f\u6548\uff1a{3}\uff0c\u76f4\u5230\uff1a{4}\n\u6191\u8b49\u6307\u7d0b\uff1a\n\tMD5\uff1a{5}\n\tSHA1\uff1a{6}\n\t\u7c3d\u540d\u6f14\u7b97\u6cd5\u540d\u7a31\uff1a{7}\n\t\u7248\u672c\uff1a{8}"},
+        {"What is your first and last name?",
+                "\u60a8\u7684\u540d\u5b57\u8207\u59d3\u6c0f\u70ba\u4f55\uff1f"},
+        {"What is the name of your organizational unit?",
+                "\u60a8\u7684\u7de8\u5236\u55ae\u4f4d\u540d\u7a31\u70ba\u4f55\uff1f"},
+        {"What is the name of your organization?",
+                "\u60a8\u7684\u7d44\u7e54\u540d\u7a31\u70ba\u4f55\uff1f"},
+        {"What is the name of your City or Locality?",
+                "\u60a8\u6240\u5728\u7684\u57ce\u5e02\u6216\u5730\u5340\u540d\u7a31\u70ba\u4f55\uff1f"},
+        {"What is the name of your State or Province?",
+                "\u60a8\u6240\u5728\u7684\u5dde\u53ca\u7701\u4efd\u540d\u7a31\u70ba\u4f55\uff1f"},
+        {"What is the two-letter country code for this unit?",
+                "\u8a72\u55ae\u4f4d\u7684\u4e8c\u5b57\u570b\u78bc\u70ba\u4f55"},
+        {"Is <name> correct?", "{0} \u6b63\u78ba\u55ce\uff1f"},
+        {"no", "\u5426"},
+        {"yes", "\u662f"},
+        {"y", "y"},
+        {"  [defaultValue]:  ", "  [{0}]\uff1a  "},
+        {"Alias <alias> has no key",
+                "\u5225\u540d <{0}> \u6c92\u6709\u91d1\u9470"},
+        {"Alias <alias> references an entry type that is not a private key entry.  The -keyclone command only supports cloning of private key entries",
+"\u5225\u540d <{0}> \u6240\u53c3\u7167\u7684\u9805\u76ee\u4e0d\u662f\u79c1\u5bc6\u91d1\u9470\u985e\u578b\u3002-keyclone \u6307\u4ee4\u50c5\u652f\u63f4\u79c1\u5bc6\u91d1\u9470\u9805\u76ee\u7684\u8907\u88fd"},
+
+        {"*****************  WARNING WARNING WARNING  *****************",
+            "***************** \u8b66\u544a \u8b66\u544a \u8b66\u544a  *****************"},
+
+        // Translators of the following 5 pairs, ATTENTION:
+        // the next 5 string pairs are meant to be combined into 2 paragraphs,
+        // 1+3+4 and 2+3+5. make sure your translation also does.
+        {"* The integrity of the information stored in your keystore  *",
+            "* \u8cc7\u6599\u7684\u5b8c\u6574\u6027\u5df2\u5132\u5b58\u5728\u60a8\u7684 keystore \u4e2d  *"},
+        {"* The integrity of the information stored in the srckeystore*",
+"* \u5b8c\u6574\u7684\u8cc7\u8a0a\u5132\u5b58\u5728 srckeystore \u4e2d *"},
+        {"* has NOT been verified!  In order to verify its integrity, *",
+            "* \u5c1a\u672a\u88ab\u9a57\u8b49\uff01  \u70ba\u4e86\u9a57\u8b49\u5176\u5b8c\u6574\u6027\uff0c *"},
+        {"* you must provide your keystore password.                  *",
+            "* \u60a8\u5fc5\u9808\u63d0\u4f9b\u60a8 keystore \u7684\u5bc6\u78bc\u3002                  *"},
+        {"* you must provide the srckeystore password.                *",
+            "* \u60a8\u5fc5\u9808\u63d0\u4f9b srckeystore \u5bc6\u78bc\u3002                *"},
+
+
+        {"Certificate reply does not contain public key for <alias>",
+                "\u8a8d\u8b49\u56de\u8986\u4e26\u672a\u5305\u542b <{0}> \u7684\u516c\u958b\u91d1\u9470"},
+        {"Incomplete certificate chain in reply",
+                "\u56de\u8986\u6642\u7684\u8a8d\u8b49\u9375\u4e0d\u5b8c\u6574"},
+        {"Certificate chain in reply does not verify: ",
+                "\u56de\u8986\u6642\u7684\u8a8d\u8b49\u93c8\u672a\u9a57\u8b49\uff1a "},
+        {"Top-level certificate in reply:\n",
+                "\u56de\u8986\u6642\u7684\u6700\u9ad8\u7d1a\u8a8d\u8b49\uff1a\n"},
+        {"... is not trusted. ", "... \u662f\u4e0d\u88ab\u4fe1\u4efb\u7684\u3002 "},
+        {"Install reply anyway? [no]:  ", "\u9084\u662f\u8981\u5b89\u88dd\u56de\u8986\uff1f [\u5426]\uff1a  "},
+        {"NO", "\u5426"},
+        {"Public keys in reply and keystore don't match",
+                "\u56de\u8986\u6642\u7684\u516c\u958b\u91d1\u9470\u8207 keystore \u4e0d\u7b26"},
+        {"Certificate reply and certificate in keystore are identical",
+                "\u8a8d\u8b49\u56de\u8986\u8207 keystore \u4e2d\u7684\u8a8d\u8b49\u662f\u76f8\u540c\u7684"},
+        {"Failed to establish chain from reply",
+                "\u7121\u6cd5\u5f9e\u56de\u8986\u4e2d\u5c07\u9375\u5efa\u7acb\u8d77\u4f86"},
+        {"n", "n"},
+        {"Wrong answer, try again", "\u932f\u8aa4\u7684\u7b54\u6848\uff0c\u8acb\u518d\u8a66\u4e00\u6b21"},
+        {"Secret key not generated, alias <alias> already exists",
+                "\u672a\u7522\u751f\u79d8\u5bc6\u91d1\u9470\uff0c\u5225\u540d <{0}> \u5df2\u5b58\u5728"},
+        {"Please provide -keysize for secret key generation",
+"\u8acb\u63d0\u4f9b -keysize \u4ee5\u7522\u751f\u79d8\u5bc6\u91d1\u9470"},
+        {"keytool usage:\n", "keytool \u7528\u6cd5\uff1a\n"},
+
+        {"Extensions: ", "\u5ef6\u4f38\uff1a "},
+
+        {"-certreq     [-v] [-protected]",
+                "-certreq     [-v] [-protected]"},
+        {"\t     [-alias <alias>] [-sigalg <sigalg>]",
+                "\t     [-alias <\u5225\u540d>] [-sigalg <\u7c3d\u7ae0\u6f14\u7b97\u6cd5>]"},
+        {"\t     [-file <csr_file>] [-keypass <keypass>]",
+                "\t     [-file <\u6191\u8b49\u7c3d\u7ae0\u8981\u6c42\u6a94\u6848>] [-keypass <\u4e3b\u5bc6\u78bc>]"},
+        {"\t     [-keystore <keystore>] [-storepass <storepass>]",
+                "\t     [-keystore <\u91d1\u9470\u5132\u5b58\u5eab>] [-storepass <\u5132\u5b58\u5eab\u5bc6\u78bc>]"},
+        {"\t     [-storetype <storetype>] [-providername <name>]",
+                "\t[-storetype <\u5132\u5b58\u5eab\u985e\u578b>] [-providername <\u540d\u7a31>]"},
+        {"\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ...",
+                "\t[-providerclass <\u63d0\u4f9b\u8005\u985e\u5225\u540d\u7a31> [-providerarg <\u5f15\u6578>]] ..."},
+        {"\t     [-providerpath <pathlist>]",
+"\t[-providerpath <\u8def\u5f91\u6e05\u55ae>]"},
+        {"-delete      [-v] [-protected] -alias <alias>",
+                "-delete      [-v] [-protected] -alias <\u5225\u540d>"},
+        /** rest is same as -certreq starting from -keystore **/
+
+        //{"-export      [-v] [-rfc] [-protected]",
+        //       "-export      [-v] [-rfc] [-protected]"},
+        {"-exportcert  [-v] [-rfc] [-protected]",
+                "-exportcert [-v] [-rfc] [-protected]"},
+        {"\t     [-alias <alias>] [-file <cert_file>]",
+                "\t     [-alias <\u5225\u540d>] [-file <\u8a8d\u8b49\u6a94\u6848>]"},
+        /** rest is same as -certreq starting from -keystore **/
+
+        //{"-genkey      [-v] [-protected]",
+        //        "-genkey      [-v] [-protected]"},
+        {"-genkeypair  [-v] [-protected]",
+                "-genkeypair [-v] [-protected]"},
+        {"\t     [-alias <alias>]", "\t     [-alias <\u5225\u540d>]"},
+        {"\t     [-keyalg <keyalg>] [-keysize <keysize>]",
+                "\t     [-keyalg <\u91d1\u9470\u6f14\u7b97\u6cd5>] [-keysize <\u91d1\u9470\u5927\u5c0f>]"},
+        {"\t     [-sigalg <sigalg>] [-dname <dname>]",
+                "\t     [-sigalg <\u7c3d\u7ae0\u6f14\u7b97\u6cd5>] [-dname <\u7db2\u57df\u540d\u7a31>]"},
+        {"\t     [-validity <valDays>] [-keypass <keypass>]",
+                "\t     [-validity <\u6709\u6548\u5929\u6578>] [-keypass <\u4e3b\u5bc6\u78bc>]"},
+        /** rest is same as -certreq starting from -keystore **/
+
+        {"-genseckey   [-v] [-protected]",
+                "-genseckey [-v] [-protected]"},
+        /** rest is same as -certreq starting from -keystore **/
+
+        {"-help", "-help"},
+        //{"-identitydb  [-v] [-protected]",
+        //      "-identitydb  [-v] [-protected]"},
+        //{"\t     [-file <idb_file>]", "\t     [-file <\u8fa8\u8b58\u8cc7\u6599\u5eab\u6a94\u6848>]"},
+        /** rest is same as -certreq starting from -keystore **/
+
+        //{"-import      [-v] [-noprompt] [-trustcacerts] [-protected]",
+        //       "-import      [-v] [-noprompt] [-trustcacerts] [-protected]"},
+        {"-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]",
+                "-importcert [-v] [-noprompt] [-trustcacerts] [-protected]"},
+        {"\t     [-alias <alias>]", "\t     [-alias <\u5225\u540d>]"},
+        {"\t     [-alias <alias>] [-keypass <keypass>]",
+"\t[-alias <\u5225\u540d>] [-keypass <\u4e3b\u5bc6\u78bc>]"},
+        {"\t     [-file <cert_file>] [-keypass <keypass>]",
+                "\t     [-file <\u8a8d\u8b49\u6a94\u6848>] [-keypass <\u4e3b\u5bc6\u78bc>]"},
+        /** rest is same as -certreq starting from -keystore **/
+
+        {"-importkeystore [-v] ",
+"-importkeystore [-v]"},
+        {"\t     [-srckeystore <srckeystore>] [-destkeystore <destkeystore>]",
+"\t[-srckeystore <\u4f86\u6e90\u91d1\u9470\u5132\u5b58\u5eab>] [-destkeystore <\u76ee\u6a19\u91d1\u9470\u5132\u5b58\u5eab>]"},
+        {"\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]",
+"\t[-srcstoretype <\u4f86\u6e90\u5132\u5b58\u5eab\u985e\u578b>] [-deststoretype <\u76ee\u6a19\u5132\u5b58\u5eab\u985e\u578b>]"},
+        {"\t     [-srcprotected] [-destprotected]",
+"\t[-srcprotected] [-destprotected]"},
+        {"\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]",
+"\t[-srcstorepass <\u4f86\u6e90\u5132\u5b58\u5eab\u5bc6\u78bc>] [-deststorepass <\u76ee\u6a19\u5132\u5b58\u5eab\u5bc6\u78bc>]"},
+        {"\t     [-srcprovidername <srcprovidername>]\n\t     [-destprovidername <destprovidername>]",  //\u884c\u592a\u9577\uff0c\u8acb\u5206\u70ba 2 \u884c
+"\t[-srcprovidername <\u4f86\u6e90\u63d0\u4f9b\u8005\u540d\u7a31>]\n\t[-destprovidername <\u76ee\u6a19\u63d0\u4f9b\u8005\u540d\u7a31>]"},
+        {"\t     [-srcalias <srcalias> [-destalias <destalias>]",
+"\t[-srcalias <\u4f86\u6e90\u5225\u540d> [-destalias <\u76ee\u6a19\u5225\u540d>]"},
+        {"\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]",
+"\t[-srckeypass <\u4f86\u6e90\u4e3b\u5bc6\u78bc>] [-destkeypass <\u76ee\u6a19\u4e3b\u5bc6\u78bc>]]"},
+        {"\t     [-noprompt]", "\t[-noprompt]"},
+        /** rest is same as -certreq starting from -keystore **/
+
+        {"-changealias [-v] [-protected] -alias <alias> -destalias <destalias>",
+"-changealias [-v] [-protected] -alias <\u5225\u540d> -destalias <\u76ee\u6a19\u5225\u540d>"},
+        {"\t     [-keypass <keypass>]", "\t     [-keypass <\u4e3b\u5bc6\u78bc>]"},
+
+        //{"-keyclone    [-v] [-protected]",
+        //      "-keyclone    [-v] [-protected]"},
+        //{"\t     [-alias <alias>] -dest <dest_alias>",
+        //      "\t     [-alias <\u5225\u540d>] -dest <\u76ee\u6a19\u5225\u540d>"},
+        //{"\t     [-keypass <keypass>] [-new <new_keypass>]",
+        //      "\t     [-keypass <\u4e3b\u5bc6\u78bc>] [-new <\u65b0\u4e3b\u5bc6\u78bc>]"},
+        /** rest is same as -certreq starting from -keystore **/
+
+        {"-keypasswd   [-v] [-alias <alias>]",
+                "-keypasswd   [-v] [-alias <\u5225\u540d>]"},
+        {"\t     [-keypass <old_keypass>] [-new <new_keypass>]",
+                "\t     [-keypass <\u820a\u4e3b\u5bc6\u78bc>] [-new <\u65b0\u4e3b\u5bc6\u78bc>]"},
+        /** rest is same as -certreq starting from -keystore **/
+
+        {"-list        [-v | -rfc] [-protected]",
+                "-list        [-v | -rfc] [-protected]"},
+        {"\t     [-alias <alias>]", "\t     [-alias <\u5225\u540d>]"},
+        /** rest is same as -certreq starting from -keystore **/
+
+        {"-printcert   [-v] [-file <cert_file>]",
+                "-printcert   [-v] [-file <\u8a8d\u8b49\u6a94\u6848>]"},
+
+        //{"-selfcert    [-v] [-protected]",
+        //      "-selfcert    [-v] [-protected]"},
+        {"\t     [-alias <alias>]", "\t     [-alias <\u5225\u540d>]"},
+        //{"\t     [-dname <dname>] [-validity <valDays>]",
+        //      "\t     [-dname <\u7db2\u57df\u540d\u7a31>] [-validity <\u6709\u6548\u5929\u6578>]"},
+        //{"\t     [-keypass <keypass>] [-sigalg <sigalg>]",
+        //      "\t     [-keypass <\u4e3b\u5bc6\u78bc>] [-sigalg <\u7c3d\u7ae0\u6f14\u7b97\u6cd5>]"},
+        /** rest is same as -certreq starting from -keystore **/
+
+        {"-storepasswd [-v] [-new <new_storepass>]",
+                "-storepasswd [-v] [-new <\u65b0\u5132\u5b58\u5eab\u5bc6\u78bc>]"},
+        /** rest is same as -certreq starting from -keystore **/
+
+        // policytool
+        {"Warning: A public key for alias 'signers[i]' does not exist.  Make sure a KeyStore is properly configured.",
+                "\u8b66\u544a\ufe30\u5225\u540d {0} \u7684\u516c\u958b\u91d1\u9470\u4e0d\u5b58\u5728\u3002\u8acb\u78ba\u5b9a\u91d1\u9470\u5132\u5b58\u5eab\u914d\u7f6e\u6b63\u78ba\u3002"},
+        {"Warning: Class not found: class", "\u8b66\u544a\ufe30\u627e\u4e0d\u5230\u985e\u5225 {0}"},
+        {"Warning: Invalid argument(s) for constructor: arg",
+                "\u8b66\u544a\ufe30\u7121\u6548\u7684\u5efa\u69cb\u5b50\u5f15\u6578\uff1a{0}"},
+        {"Illegal Principal Type: type", "\u975e\u6cd5\u7684\u4e3b\u9ad4\u985e\u578b\ufe30{0}"},
+        {"Illegal option: option", "\u975e\u6cd5\u7684\u9078\u9805\uff1a{0}"},
+        {"Usage: policytool [options]", "\u7528\u6cd5\uff1a policytool [\u9078\u9805]"},
+        {"  [-file <file>]    policy file location",
+                "  [-file <file>]    \u898f\u5247\u6a94\u6848\u4f4d\u7f6e"},
+        {"New", "\u65b0\u589e"},
+        {"Open", "\u958b\u555f"},
+        {"Save", "\u5132\u5b58"},
+        {"Save As", "\u53e6\u5b58\u65b0\u6a94"},
+        {"View Warning Log", "\u6aa2\u8996\u8b66\u544a\u8a18\u9304"},
+        {"Exit", "\u96e2\u958b"},
+        {"Add Policy Entry", "\u65b0\u589e\u898f\u5247\u9805\u76ee"},
+        {"Edit Policy Entry", "\u7de8\u8f2f\u898f\u5247\u9805\u76ee"},
+        {"Remove Policy Entry", "\u79fb\u9664\u898f\u5247\u9805\u76ee"},
+        {"Edit", "\u7de8\u8f2f"},
+        {"Retain", "\u4fdd\u7559"},
+
+        {"Warning: File name may include escaped backslash characters. " +
+                        "It is not necessary to escape backslash characters " +
+                        "(the tool escapes characters as necessary when writing " +
+                        "the policy contents to the persistent store).\n\n" +
+                        "Click on Retain to retain the entered name, or click on " +
+                        "Edit to edit the name.",
+            "Warning: File name may include escaped backslash characters. " +
+                        "It is not necessary to escape backslash characters " +
+                        "(the tool escapes characters as necessary when writing " +
+                        "the policy contents to the persistent store).\n\n" +
+                        "Click on Retain to retain the entered name, or click on " +
+                        "Edit to edit the name."},
+
+        {"Add Public Key Alias", "\u65b0\u589e\u516c\u958b\u91d1\u9470\u5225\u540d"},
+        {"Remove Public Key Alias", "\u79fb\u9664\u516c\u958b\u91d1\u9470\u5225\u540d"},
+        {"File", "\u6a94\u6848"},
+        {"KeyStore", "\u91d1\u9470\u5132\u5b58\u5eab"},
+        {"Policy File:", "\u898f\u5247\u6a94\u6848\uff1a"},
+        {"Could not open policy file: policyFile: e.toString()",
+                "\u7121\u6cd5\u958b\u555f\u7b56\u7565\u6a94\u6848\uff1a{0}\uff1a{1}"},
+        {"Policy Tool", "\u898f\u5247\u5de5\u5177"},
+        {"Errors have occurred while opening the policy configuration.  View the Warning Log for more information.",
+                "\u958b\u555f\u898f\u5247\u8a18\u7f6e\u6642\u767c\u751f\u932f\u8aa4\u3002 \u8acb\u6aa2\u8996\u8b66\u544a\u8a18\u9304\u4ee5\u53d6\u5f97\u66f4\u591a\u7684\u8cc7\u8a0a"},
+        {"Error", "\u932f\u8aa4"},
+        {"OK", "\u78ba\u8a8d"},
+        {"Status", "\u72c0\u614b"},
+        {"Warning", "\u8b66\u544a"},
+        {"Permission:                                                       ",
+                "\u8a31\u53ef\uff1a                                                       "},
+        {"Principal Type:", "Principal \u985e\u578b\uff1a"},
+        {"Principal Name:", "Principal \u540d\u7a31\uff1a"},
+        {"Target Name:                                                    ",
+                "\u76ee\u6a19\u540d\u7a31\uff1a                                                    "},
+        {"Actions:                                                             ",
+                "\u52d5\u4f5c\uff1a                                                             "},
+        {"OK to overwrite existing file filename?",
+                "\u78ba\u8a8d\u8986\u5beb\u73fe\u5b58\u7684\u6a94\u6848 {0}\uff1f"},
+        {"Cancel", "\u53d6\u6d88"},
+        {"CodeBase:", "CodeBase:"},
+        {"SignedBy:", "SignedBy:"},
+        {"Add Principal", "\u65b0\u589e Principal"},
+        {"Edit Principal", "\u7de8\u8f2f Principal"},
+        {"Remove Principal", "\u79fb\u9664 Principal"},
+        {"Principals:", "Principals\uff1a"},
+        {"  Add Permission", "  \u65b0\u589e\u8a31\u53ef\u6b0a"},
+        {"  Edit Permission", "  \u7de8\u8f2f\u8a31\u53ef\u6b0a"},
+        {"Remove Permission", "\u79fb\u9664\u8a31\u53ef\u6b0a"},
+        {"Done", "\u5b8c\u6210"},
+        {"KeyStore URL:", "\u91d1\u9470\u5132\u5b58\u5eab URL\uff1a"},
+        {"KeyStore Type:", "\u91d1\u9470\u5132\u5b58\u5eab\u985e\u578b\ufe30"},
+        {"KeyStore Provider:", "\u91d1\u9470\u5132\u5b58\u5eab\u63d0\u4f9b\u8005\ufe30"},
+        {"KeyStore Password URL:", "\u91d1\u9470\u5132\u5b58\u5eab\u5bc6\u78bc URL\uff1a"},
+        {"Principals", "Principals"},
+        {"  Edit Principal:", "  \u7de8\u8f2f Principal\uff1a"},
+        {"  Add New Principal:", "  \u52a0\u5165\u65b0 Principal\uff1a"},
+        {"Permissions", "\u8a31\u53ef\u6b0a"},
+        {"  Edit Permission:", "  \u7de8\u8f2f\u8a31\u53ef\u6b0a"},
+        {"  Add New Permission:", "  \u52a0\u5165\u65b0\u7684\u8a31\u53ef\u6b0a"},
+        {"Signed By:", "\u7c3d\u7f72\u4eba\uff1a"},
+        {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name",
+            "\u6c92\u6709\u901a\u914d\u7b26\u865f\u540d\u7a31\uff0c\u7121\u6cd5\u6307\u5b9a\u542b\u6709\u901a\u914d\u7b26\u865f\u985e\u5225\u7684 Principal"},
+        {"Cannot Specify Principal without a Name",
+            "\u6c92\u6709\u540d\u7a31\uff0c\u7121\u6cd5\u6307\u5b9a Principal"},
+        {"Permission and Target Name must have a value",
+                "\u8a31\u53ef\u6b0a\u53ca\u76ee\u6a19\u5fc5\u9808\u6709\u4e00\u500b\u503c\u3002"},
+        {"Remove this Policy Entry?", "\u79fb\u9664\u9019\u500b\u898f\u5247\u9805\u76ee\uff1f"},
+        {"Overwrite File", "\u8986\u5beb\u6a94\u6848"},
+        {"Policy successfully written to filename",
+                "\u898f\u5247\u6210\u529f\u5beb\u81f3 {0}"},
+        {"null filename", "\u7121\u6548\u7684\u6a94\u540d"},
+        {"Save changes?", "\u5132\u5b58\u8b8a\u66f4\uff1f"},
+        {"Yes", "\u662f"},
+        {"No", "\u5426"},
+        {"Policy Entry", "\u898f\u5247\u9805\u76ee"},
+        {"Save Changes", "\u5132\u5b58\u8b8a\u66f4"},
+        {"No Policy Entry selected", "\u6c92\u6709\u9078\u53d6\u898f\u5247\u9805\u76ee"},
+        {"Unable to open KeyStore: ex.toString()",
+                "\u7121\u6cd5\u958b\u555f\u91d1\u9470\u5132\u5b58\u5eab\uff1a{0}"},
+        {"No principal selected", "\u672a\u9078\u53d6 Principal"},
+        {"No permission selected", "\u6c92\u6709\u9078\u53d6\u8a31\u53ef\u6b0a"},
+        {"name", "\u540d\u7a31"},
+        {"configuration type", "\u914d\u7f6e\u985e\u578b"},
+        {"environment variable name", "\u74b0\u5883\u8b8a\u6578\u540d\u7a31"},
+        {"library name", "\u7a0b\u5f0f\u5eab\u540d\u7a31"},
+        {"package name", "\u5957\u88dd\u8edf\u9ad4\u540d\u7a31"},
+        {"policy type", "\u7b56\u7565\u985e\u578b"},
+        {"property name", "\u5c6c\u6027\u540d\u7a31"},
+        {"provider name", "\u63d0\u4f9b\u8005\u540d\u7a31"},
+        {"Principal List", "\u4e3b\u9ad4\u6e05\u55ae"},
+        {"Permission List", "\u6b0a\u9650\u6e05\u55ae"},
+        {"Code Base", "\u4ee3\u78bc\u57fa\u6e96"},
+        {"KeyStore U R L:", "\u91d1\u9470\u5132\u5b58\u5eab U R L\uff1a"},
+        {"KeyStore Password U R L:", "\u91d1\u9470\u5132\u5b58\u5eab\u5bc6\u78bc U R L\uff1a"},
+
+
+        // javax.security.auth.PrivateCredentialPermission
+        {"invalid null input(s)", "\u7121\u6548\u7a7a\u8f38\u5165"},
+        {"actions can only be 'read'", "\u52d5\u4f5c\u53ea\u80fd\u88ab\u8b80\u53d6'"},
+        {"permission name [name] syntax invalid: ",
+                "\u8a31\u53ef\u6b0a\u540d\u7a31 [{0}] \u662f\u7121\u6548\u7684\u8a9e\u6cd5\uff1a "},
+        {"Credential Class not followed by a Principal Class and Name",
+                "\u8a8d\u8b49\u7b49\u7d1a\u672a\u63a5\u5728 Principal \u985e\u5225\u53ca\u540d\u7a31\u4e4b\u5f8c"},
+        {"Principal Class not followed by a Principal Name",
+                "Principal \u985e\u5225\u672a\u63a5\u5728 Principal \u540d\u7a31\u4e4b\u5f8c"},
+        {"Principal Name must be surrounded by quotes",
+                "Principal \u540d\u7a31\u5fc5\u9808\u4ee5\u5f15\u865f\u5708\u4f4f"},
+        {"Principal Name missing end quote",
+                "Principal \u540d\u7a31\u7f3a\u5c11\u4e0b\u5f15\u865f"},
+        {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value",
+                "\u5982\u679c Principal \u540d\u7a31\u4e0d\u662f\u4e00\u500b\u901a\u914d\u7b26\u865f (*) \u503c\uff0c\u90a3\u9ebc PrivateCredentialPermission Principal \u985e\u5225\u5c31\u4e0d\u6703\u662f\u4e00\u500b\u901a\u914d\u7b26\u865f (*) \u503c"},
+        {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name",
+                "CredOwner:\n\tPrincipal \u985e\u5225 = {0}\n\tPrincipal \u540d\u7a31 = {1}"},
+
+        // javax.security.auth.x500
+        {"provided null name", "\u63d0\u4f9b\u7a7a\u540d"},
+        {"provided null keyword map", "\u63d0\u4f9b\u7a7a\u7684\u95dc\u9375\u5b57\u5c0d\u6620"},
+        {"provided null OID map", "\u63d0\u4f9b\u7a7a\u7684 OID \u5c0d\u6620"},
+
+        // javax.security.auth.Subject
+        {"invalid null AccessControlContext provided",
+                "\u63d0\u4f9b\u7121\u6548\u7684\u7a7a AccessControlContext"},
+        {"invalid null action provided", "\u63d0\u4f9b\u7121\u6548\u7684\u7a7a\u52d5\u4f5c"},
+        {"invalid null Class provided", "\u63d0\u4f9b\u7121\u6548\u7684\u7a7a\u985e\u5225"},
+        {"Subject:\n", "\u4e3b\u984c\uff1a\n"},
+        {"\tPrincipal: ", "\tPrincipal: "},
+        {"\tPublic Credential: ", "\t\u516c\u7528\u8a8d\u8b49 "},
+        {"\tPrivate Credentials inaccessible\n",
+                "\t\u79c1\u4eba\u8a8d\u8b49\u7121\u6cd5\u9032\u5165\n"},
+        {"\tPrivate Credential: ", "\t\u79c1\u4eba\u6388\u6b0a "},
+        {"\tPrivate Credential inaccessible\n",
+                "\t\u79c1\u4eba\u8a8d\u8b49\u7121\u6cd5\u9032\u5165\n"},
+        {"Subject is read-only", "\u4e3b\u984c\u70ba\u552f\u8b80"},
+        {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set",
+                "\u8a66\u5716\u65b0\u589e\u4e00\u500b\u975e java.security.Principal \u6848\u4f8b\u7684\u7269\u4ef6\u81f3\u4e3b\u984c\u7684 Principal \u7fa4\u4e2d"},
+        {"attempting to add an object which is not an instance of class",
+                "\u8a66\u5716\u65b0\u589e\u4e00\u500b\u975e {0} \u6848\u4f8b\u7684\u7269\u4ef6"},
+
+        // javax.security.auth.login.AppConfigurationEntry
+        {"LoginModuleControlFlag: ", "LoginModuleControlFlag: "},
+
+        // javax.security.auth.login.LoginContext
+        {"Invalid null input: name", "\u7121\u6548\u7a7a\u8f38\u5165\uff1a \u540d\u7a31"},
+        {"No LoginModules configured for name",
+         "\u7121\u91dd\u5c0d {0} \u914d\u7f6e\u7684 LoginModules"},
+        {"invalid null Subject provided", "\u63d0\u4f9b\u7121\u6548\u7a7a\u4e3b\u984c"},
+        {"invalid null CallbackHandler provided",
+                "\u63d0\u4f9b\u7121\u6548\u7a7a CallbackHandler"},
+        {"null subject - logout called before login",
+                "\u7a7a\u4e3b\u984c - \u5728\u767b\u5165\u4e4b\u524d\u5373\u547c\u53eb\u767b\u51fa"},
+        {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor",
+                "\u7121\u6cd5\u5be6\u5217\u5316 LoginModule\uff0c{0}\uff0c\u56e0\u70ba\u5b83\u4e26\u672a\u63d0\u4f9b\u4e00\u500b\u975e\u5f15\u6578\u7684\u69cb\u9020\u51fd\u6578"},
+        {"unable to instantiate LoginModule",
+                "\u7121\u6cd5\u5be6\u4f8b\u5316 LoginModule"},
+        {"unable to instantiate LoginModule: ",
+                "\u7121\u6cd5\u5275\u8a2d LoginModule\uff1a"},
+        {"unable to find LoginModule class: ",
+                "\u7121\u6cd5\u627e\u5230 LoginModule \u985e\u5225\uff1a "},
+        {"unable to access LoginModule: ",
+                "\u7121\u6cd5\u5b58\u53d6 LoginModule: "},
+        {"Login Failure: all modules ignored",
+                "\u767b\u5165\u5931\u6557\uff1a \u5ffd\u7565\u6240\u6709\u6a21\u7d44"},
+
+        // sun.security.provider.PolicyFile
+
+        {"java.security.policy: error parsing policy:\n\tmessage",
+                "java.security.policy: \u89e3\u6790\u932f\u8aa4 {0}\uff1a\n\t{1}"},
+        {"java.security.policy: error adding Permission, perm:\n\tmessage",
+                "java.security.policy: \u65b0\u589e\u8a31\u53ef\u6b0a\u932f\u8aa4 {0}\uff1a\n\t{1}"},
+        {"java.security.policy: error adding Entry:\n\tmessage",
+                "java.security.policy: \u65b0\u589e\u9805\u76ee\u932f\u8aa4\uff1a\n\t{0}"},
+        {"alias name not provided (pe.name)", "\u5225\u540d\u540d\u7a31 ({0}) \u672a\u63d0\u4f9b"},
+        {"unable to perform substitution on alias, suffix",
+                "\u7121\u6cd5\u5c0d\u5225\u540d\u57f7\u884c\u66ff\u63db\uff0c{0}"},
+        {"substitution value, prefix, unsupported",
+                "\u4e0d\u652f\u63f4\u7684\u66ff\u63db\u503c\uff0c{0}"},
+        {"(", "("},
+        {")", ")"},
+        {"type can't be null","\u4e0d\u80fd\u70ba\u7a7a\u8f38\u5165"},
+
+        // sun.security.provider.PolicyParser
+        {"keystorePasswordURL can not be specified without also specifying keystore",
+                "\u6307\u5b9a keystorePasswordURL \u9700\u8981\u540c\u6642\u6307\u5b9a keystore"},
+        {"expected keystore type", "\u9810\u671f\u7684 keystore \u985e\u578b"},
+        {"expected keystore provider", "\u9810\u671f\u7684 keystore \u63d0\u4f9b\u8005"},
+        {"multiple Codebase expressions",
+                "\u591a\u52d5 Codebase \u8868\u793a\u5f0f"},
+        {"multiple SignedBy expressions","\u591a\u91cd SignedBy \u8868\u793a\u5f0f"},
+        {"SignedBy has empty alias","SignedBy \u6709\u7a7a\u5225\u540d"},
+        {"can not specify Principal with a wildcard class without a wildcard name",
+                "\u6c92\u6709\u901a\u914d\u7b26\u865f\u540d\u7a31\uff0c\u7121\u6cd5\u6307\u5b9a\u542b\u6709\u901a\u914d\u7b26\u865f\u985e\u5225\u7684 Principal"},
+        {"expected codeBase or SignedBy or Principal",
+                "\u9810\u671f\u7684 codeBase \u6216 SignedBy \u6216 Principal"},
+        {"expected permission entry", "\u9810\u671f\u7684\u8a31\u53ef\u6b0a\u9805\u76ee"},
+        {"number ", "\u865f\u78bc "},
+        {"expected [expect], read [end of file]",
+                "\u9810\u671f\u7684 [{0}], \u8b80\u53d6 [end of file]"},
+        {"expected [;], read [end of file]",
+                "\u9810\u671f\u7684 [;], \u8b80\u53d6 [end of file]"},
+        {"line number: msg", "\u884c {0}\uff1a {1}"},
+        {"line number: expected [expect], found [actual]",
+                "\u884c {0}\uff1a \u9810\u671f\u7684 [{1}]\uff0c\u767c\u73fe [{2}]"},
+        {"null principalClass or principalName",
+                "\u7a7a principalClass \u6216 principalName"},
+
+        // sun.security.pkcs11.SunPKCS11
+        {"PKCS11 Token [providerName] Password: ",
+                "PKCS11 \u8a18\u865f [{0}] \u5bc6\u78bc\uff1a "},
+
+        /* --- DEPRECATED --- */
+        // javax.security.auth.Policy
+        {"unable to instantiate Subject-based policy",
+                "\u7121\u6cd5\u5275\u8a2d\u57fa\u65bc\u4e3b\u9ad4\u7684\u7b56\u7565"}
+    };
+
+
+    /**
+     * Returns the contents of this <code>ResourceBundle</code>.
+     *
+     * <p>
+     *
+     * @return the contents of this <code>ResourceBundle</code>.
+     */
+    public Object[][] getContents() {
+        return contents;
+    }
+}