View : 231

06/05/2026 08:38am

EP.74 Customizing WebSocket Server for Multilingual Support

EP.74 Customizing WebSocket Server for Multilingual Support

#Multilingual Support

#Go language

#Golang

#Go

#WebSocket Chat

#WebSocket

In this episode, we'll explore how to customize a WebSocket server to support multiple languages (Multilingual Support) in a real-time chat application. This feature enables users to communicate in their preferred languages without the need for developing separate apps for each language or region.

 

Adding multilingual support is a powerful enhancement for applications targeting global audiences, as it greatly improves usability and user satisfaction across different cultures.

 

🔸 Why Multilingual Support Matters in WebSocket Chat

 

1. Broader User Reach:
Users from different countries can choose the language they're most comfortable with, allowing you to serve a global audience.

2. Better Communication Experience:
Users don’t need to rely on external translation tools — they can chat naturally in their own language.

3. Expanding into New Markets:
Supporting multiple languages opens doors to new regional markets and user bases.

4. Enhanced User Experience (UX):
Users feel more connected and comfortable using an app when they can use it in their native language.

 

🔸 How to Add Multilingual Support to a WebSocket Server

 

1. Managing Language Preferences on the Server

  • 1.1 Storing User Language Settings
    You can store users' preferred languages in the database or in a session to personalize message responses.
ALTER TABLE users ADD COLUMN language VARCHAR(10) DEFAULT 'en';
  • 1.2 Sending Messages Based on Language Preference
    Here’s a simple example using Go, Gorilla WebSocket, and PostgreSQL.

 

✅ Full WebSocket Server Example in Go (with Multilingual Support)

package main

import (
    "log"
    "net/http"
    "github.com/gorilla/websocket"
    "database/sql"
    _ "github.com/lib/pq"
)

var clients = make(map[*websocket.Conn]string)
var db *sql.DB

type Message struct {
    User    string `json:"user"`
    Message string `json:"message"`
}

var upgrader = websocket.Upgrader{
    CheckOrigin: func(r *http.Request) bool {
        return true
    },
}

func init() {
    var err error
    db, err = sql.Open("postgres", "user=username dbname=chatapp sslmode=disable")
    if err != nil {
        log.Fatal(err)
    }
}

func handleConnections(w http.ResponseWriter, r *http.Request) {
    conn, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Println(err)
        return
    }
    defer conn.Close()

    lang := r.URL.Query().Get("lang")
    if lang == "" {
        lang = "en"
    }
    clients[conn] = lang

    for {
        var msg Message
        err := conn.ReadJSON(&msg)
        if err != nil {
            log.Println(err)
            delete(clients, conn)
            break
        }
        translateAndBroadcast(msg, lang)
    }
}

func translateAndBroadcast(msg Message, lang string) {
    translatedMessage := msg.Message
    if lang == "es" {
        translatedMessage = "¡Hola, " + msg.User + "!"
    }

    for client := range clients {
        err := client.WriteJSON(Message{
            User:    msg.User,
            Message: translatedMessage,
        })
        if err != nil {
            log.Println(err)
            client.Close()
            delete(clients, client)
        }
    }
}

func main() {
    http.HandleFunc("/", handleConnections)
    log.Println("Server started on :8080")
    log.Fatal(http.ListenAndServe(":8080", nil))
}

 

2. Translating Messages Dynamically

Messages can be translated using:

  • External APIs such as Google Translate API
  • Predefined translation files (e.g., .json, .yaml) loaded into the app

 

3. Updating the UI to Support Language Selection

On the client side, allow users to choose their preferred language via a dropdown:

<select id="languageSelector" onchange="changeLanguage()">
    <option value="en">English</option>
    <option value="es">Español</option>
    <option value="fr">Français</option>
</select>

<script>
function changeLanguage() {
    var selectedLanguage = document.getElementById("languageSelector").value;
    // Send the language preference to WebSocket
    socket.send(JSON.stringify({ language: selectedLanguage }));
}
</script>

 

🔸 Testing Multilingual Support

 

Make sure to test the following:

  • ✅ Language Switching: Ensure the server sends messages in the selected language.
  • ✅ Message Translation: Confirm that messages are being translated properly.
  • ✅ Performance: The server should maintain stable performance even when translating for multiple users in real-time.

 


 

💡 Challenge: Build It Better

 

Try integrating real-time auto-translation so users can communicate in their native languages without barriers — even across language differences!

 

🔜 Coming Next in EP.75:

 

Using Redis for User State Management in WebSocket

In the next episode, we’ll explore how Redis can be used to manage user presence, chat rooms, and real-time status updates efficiently.

 

Read more

🔵 Facebook: Superdev School  (Superdev)

📸 Instagram: superdevschool

🎬 TikTok: superdevschool

🌐 Website: www.superdev.school