添加多语言处理
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
#native2ascii -encoding UTF-8 messages.properties temp_messages.properties
|
||||
Above_Greeting_Message=\u4ee5\u4e0a\u662f\u6253\u62db\u547c\u4fe1\u606f
|
||||
Friend_Can_Start_Chat=\u4f60\u4eec\u5df2\u7ecf\u6210\u4e3a\u597d\u53cb\u4e86\uff0c\u73b0\u5728\u53ef\u4ee5\u5f00\u59cb\u804a\u5929\u4e86
|
||||
@@ -0,0 +1,2 @@
|
||||
greeting=This's the greeting
|
||||
name=You're already friend, start chat now.
|
||||
@@ -0,0 +1,2 @@
|
||||
Above_Greeting_Message=\u4ee5\u4e0a\u662f\u6253\u62db\u547c\u4fe1\u606f
|
||||
Friend_Can_Start_Chat=\u4f60\u4eec\u5df2\u7ecf\u6210\u4e3a\u597d\u53cb\u4e86\uff0c\u73b0\u5728\u53ef\u4ee5\u5f00\u59cb\u804a\u5929\u4e86
|
||||
@@ -14,6 +14,7 @@ import io.moquette.persistence.MemorySessionStore;
|
||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import cn.wildfirechat.common.ErrorCode;
|
||||
import win.liyufan.im.I18n;
|
||||
import win.liyufan.im.IMTopic;
|
||||
import win.liyufan.im.MessageShardingUtil;
|
||||
|
||||
@@ -35,7 +36,10 @@ public class HandleFriendRequestHandler extends IMHandler<WFCMessage.HandleFrien
|
||||
builder.setServerTimestamp(timestamp);
|
||||
saveAndPublish(request.getTargetUid(), null, builder.build(), false);
|
||||
|
||||
WFCMessage.MessageContent.Builder contentBuilder = WFCMessage.MessageContent.newBuilder().setType(90).setContent("以上是打招呼信息");
|
||||
MemorySessionStore.Session session = m_sessionsStore.getSession(clientID);
|
||||
|
||||
WFCMessage.MessageContent.Builder contentBuilder = WFCMessage.MessageContent.newBuilder().setType(90).setContent(I18n.getString(session.getLanguage(), "Above_Greeting_Message"));
|
||||
|
||||
builder = WFCMessage.Message.newBuilder();
|
||||
builder.setFromUser(request.getTargetUid());
|
||||
builder.setConversation(WFCMessage.Conversation.newBuilder().setTarget(fromUser).setLine(0).setType(ProtoConstants.ConversationType.ConversationType_Private).build());
|
||||
@@ -47,12 +51,7 @@ public class HandleFriendRequestHandler extends IMHandler<WFCMessage.HandleFrien
|
||||
builder.setMessageId(messageId);
|
||||
saveAndPublish(request.getTargetUid(), null, builder.build(), false);
|
||||
|
||||
MemorySessionStore.Session session = m_sessionsStore.getSession(clientID);
|
||||
if (session != null && session.getLanguage() != null && session.getLanguage().toLowerCase().contains("en")) {
|
||||
contentBuilder.setContent("This's the greeting");
|
||||
} else {
|
||||
contentBuilder.setContent("你们已经成为好友了,现在可以开始聊天了");
|
||||
}
|
||||
contentBuilder.setContent(I18n.getString(session.getLanguage(), "Friend_Can_Start_Chat"));
|
||||
builder.setContent(contentBuilder);
|
||||
messageId = MessageShardingUtil.generateId();
|
||||
builder.setMessageId(messageId);
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
package win.liyufan.im;
|
||||
|
||||
import io.netty.util.internal.StringUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class I18n {
|
||||
private static ClassLoader Loader = null;
|
||||
static {
|
||||
String configPath = System.getProperty("wildfirechat.path", null);
|
||||
String resBundlePaht = "config/i18n";
|
||||
|
||||
File file = new File(configPath, resBundlePaht);
|
||||
URL[] urls = new URL[0];
|
||||
try {
|
||||
urls = new URL[]{file.toURI().toURL()};
|
||||
Loader = new URLClassLoader(urls);
|
||||
} catch (MalformedURLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private static Map<String, ResourceBundle> bundleMap = new ConcurrentHashMap<>();
|
||||
|
||||
public static String getString(String language, String key) {
|
||||
ResourceBundle bundle = bundleMap.get(language);
|
||||
|
||||
if (StringUtil.isNullOrEmpty(language)) language = "zh_CN";
|
||||
|
||||
if (bundle == null) {
|
||||
bundle = ResourceBundle.getBundle("messages", new Locale(language), Loader);
|
||||
bundleMap.put(language, bundle);
|
||||
}
|
||||
|
||||
return bundle.getString(key);
|
||||
}
|
||||
|
||||
public static void test() throws MalformedURLException {
|
||||
|
||||
// 设置定制的语言国家代码
|
||||
Locale locale1 = new Locale("zh_CN");
|
||||
Locale locale2 = new Locale("en_US");
|
||||
ResourceBundle rb = ResourceBundle.getBundle("messages", locale1, Loader);
|
||||
|
||||
|
||||
|
||||
// 获得相应的key值
|
||||
String greeting = rb.getString("greeting");
|
||||
String userInfo = rb.getString("test");
|
||||
|
||||
System.out.println(greeting);
|
||||
System.out.println(userInfo);
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
test();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user