Logo
hhlee
2024-10-29 14:33:12

Behind
Developing a Global Version Website with GPT & Copilot

When developing a website, it's tempting to focus solely on the native language, but for SaaS services with global potential, that approach can feel a bit limiting. However, aiming for global reach from the get-go can be quite overwhelming and resource-intensive. Our team has devised a method that allows us to develop in our native language while still supporting global users without breaking a sweat.

Complete Translation Within the Editor

Drawbacks of the Variable Handling Method

Standard i18n libraries often handle multilingual support in the following way: they create keys for each message and provide translations for each user language. This seems like the most logical approach at first glance.

This method represents the simplest form of running a multilingual version. It offers the advantage of being able to flexibly add more languages as the business grows. However, for smaller teams or when the business is not yet fully scaled, this approach can lead to transitional issues, such as:

  • When implementing the UI, there's the challenge of naming and securing language keys for numerous error and user messages.
  • Translating into various languages becomes an issue (though this can be somewhat mitigated by external services or GPT).
  • You have to check if a key is already in use and add it if it’s not, requiring a search process.
  • If a user reports an error message that requires code modification, you must first search for the related language key before locating the error.
  • These might seem like trivial tasks, but when you're developing the front-end that interfaces directly with user messages, these processes can drain already scarce development resources.

    Embedding Language-Specific Messages in Code

    To minimize these inconveniences, our Videostew team is developing the multilingual version at the same pace as the single-language native version. For now, we're limiting the multilingual version to just "English." While this approach may not be sustainable as the market expands, it's extremely useful during the initial global phase to appeal to the "English"-speaking user base.

    At Videostew Team, we register and use a global helper called directTrans in both the backend and frontend. The implementation of this code is quite simple. It takes a Korean message as the first parameter, and an English message as the second parameter.

    To display messages to users, it’s as simple as writing the following code:

    You might think, "Don’t I have to translate to English while coding anyway?" But, with tools like Copilot or Cursor AI, that's not the case. These tools refer to the helper functions or patterns you frequently use in open tabs, so they understand how to apply commonly used helpers like the one above very well.

    When you input dtrans('.. with Korean, it infers the translated English message in the second parameter, allowing you to create a global version while coding in the editor.

    copilot.gif

    < Just type in Korean, and the translated English is automatically added >

    Using this method, you can overcome all the drawbacks of the traditional way of developing a global version.

  • You can write user messages in your native language while coding, so there's no need for a separate translation system, saving time.
  • You can write the necessary messages right away, regardless of existing keys (though it might make the code longer due to duplicate messages, but duplicates are rare).
  • You can quickly find code parts based on exposed user messages (since the messages themselves are in the code).
  • As mentioned earlier, this method aims to implement a global version quickly without much effort. It’s not suitable for creating more sophisticated translations or multiple language versions. As the service grows, the language system needs to be updated.

    Asynchronous Translation of User Guides

    Beyond the user messages included in the code, our service employs numerous messages and texts. For fixed pages like landing pages or terms of service, translating them once is sufficient. However, for dynamic content such as guides or blogs that are constantly being created and updated, manual tracking becomes a challenging task.

    At Videostew, we address this by registering guides in our native Korean, and after a set period, automatically detecting and translating the modified sections into English using the GPT model in the backend. While there are various API services for translation, using LLM offers the following advantages:

  • We can naturally tailor the writing style to our liking.
  • System messages allow translations that consider the nature and characteristics of our service.
  • It prevents mistranslation of technical terms or jargon specific to certain sites.
  • In practice, for large guides (almost book-length), it's impossible to translate the entire content every time there's a modification. Thus, we create hash keys based on each paragraph's content and automatically translate only the changed paragraphs.

    < Hash values for editing only changing paragraphs >

    This call type could be more cost-effective for bulk translations using GPT's bulk call discounts, though we currently don't utilize this option.

    Customer Support Handling

    To ensure a perfectly consistent customer experience and real-time user information integration, we have developed our own chatbot. When a user's information is in a language other than their native one, we automatically attach the native language to the original message. If we respond in the native language, it's then translated back into the user's language for delivery.

    cs.gif

    < Questions not in your native language are automatically translated >

    This helps reduce delays caused by translations and allows us to provide seamless global service.

    Conclusion

    It seems that many services are already integrating GPT into their development and operations. For small teams like Videostew, using AI tools like GPT can efficiently make global services possible.

    Go to Article
    πŸ€” Developing a Global Version Website with GPT & Copilot When developing a website, it's tempting to focus solely on the native language, but for SaaS services with global potential, that approach can feel a bit limit...
    Developing a Global Version Website with GPT & Copilot
    hhlee 2024-10-29
    πŸ€” UX Details to Make All TTS Engines Properly Read Korean VideoStew offers a variety of AI voices. From Google Wavenet, Amazon Polly, KT AI Voice, Naver Clova, Azure, to ElevenLabs...As a result, a natural issue arises...
    UX Details to Make All TTS Engines Properly Read Korean
    Junwoo 2024-08-27
    πŸ€” Practical GPT Utilization for Startup Marketers (We said GPT, but we only used Claude πŸ˜…) Hello, this is Jun from VideoStew.Lately, I've been writing a lot of behind-the-scenes posts. In this post, I will summarize how I, as a non-developer at a star...
    Practical GPT Utilization for Startup Marketers (We said GPT, but we only used Claude πŸ˜…)
    Junwoo 2024-07-22
    πŸ€” VideoStew: Turn Your Message into a Video, Just as You Imagined Hello, this is Jun from VideoStew. Today, I'd like to talk about how we created VideoStew and why we made it this way. In a sense, you could call it our brandin...
    VideoStew: Turn Your Message into a Video, Just as You Imagined
    Junwoo 2024-07-15
    πŸ€” The Struggles of a SaaS Startup with Viral Marketing through Open Chat Getting StartedMost startups don't have a lot of money. Especially when it comes to marketing budgets! (Or they tend to be extra frugal.) Maybe that's why free ...
    The Struggles of a SaaS Startup with Viral Marketing through Open Chat
    Junwoo 2023-12-01
    πŸ€” DIY Battery Replacement for the New MacBook: A Retrospective The haunting aspect of owning a Mac is the bone-chilling repair costs when it breaks down. That's why my team and I have been doing our own Mac repairs for quit...
    DIY Battery Replacement for the New MacBook: A Retrospective
    hhlee 2022-08-05
    [Stop]