Markdown Converter
Agent skill for markdown-converter
This module provides comprehensive localization capabilities for the TwitterX project, enabling multi-language support across English, Ukrainian, and Russian languages.
Sign in to like and favorite skills
This module provides comprehensive localization capabilities for the TwitterX project, enabling multi-language support across English, Ukrainian, and Russian languages.
The Localization module is organized into several sub-modules:
Core interfaces and models for localization functionality.
Main interface for localization operations:
public interface LocalizationService { public suspend fun getMessage(key: MessageKey, language: Language): String public suspend fun getMessage(key: MessageKey, language: Language, parameters: Map<String, String>): String public suspend fun getAvailableKeys(): Set<MessageKey> public suspend fun hasMessage(key: MessageKey, language: Language): Boolean }
Comprehensive enumeration of all user-facing text keys:
public enum class MessageKey(public val key: String) { START_WELCOME("start.welcome"), ADD_SUCCESS("add.success"), TWEET_FROM("tweet.from"), // ... 50+ message keys }
Comprehensive exception handling for localization errors:
LocalizationException - Base exceptionMessageFileLoadException - File loading errorsInvalidMessageFormatException - JSON format errorsMessageKeyNotFoundException - Missing message keysParameterSubstitutionException - Parameter replacement errorsJSON file-based implementation that loads messages from resource files.
messages_en.json, messages_uk.json, messages_ru.json)start.welcome)Supports dynamic parameter replacement:
val parameters = mapOf("username" to "elonmusk") val message = service.getMessage(MessageKey.ADD_SUCCESS, Language.ENGLISH, parameters) // Result: "Successfully subscribed to @elonmusk! You will now receive new tweets from this account."
{ "start": { "welcome": "Hello! I am a bot that will help you read Twitter without leaving Telegram!", "instructions": "Use /add @username to subscribe to a Twitter account..." }, "add": { "success": "Successfully subscribed to @{username}! You will now receive new tweets from this account.", "already_exists": "You are already subscribed to @{username}." } }
/start - Welcome and instructions/add - Subscription management/remove - Unsubscription/list - Subscription listing/lang - Language selectionThe localization module integrates with the main TwitterX application to:
/lang command functionality./gradlew :localization:impl:test
./gradlew :localization:e2e:test
./gradlew :localization:api:test
Message files are located in
localization/impl/src/main/resources/:
messages_en.json - English messagesmessages_uk.json - Ukrainian messagesmessages_ru.json - Russian messagesval localizationService = FileBasedLocalizationService() // Simple message val welcome = localizationService.getMessage(MessageKey.START_WELCOME, Language.UKRAINIAN) // Result: "Привіт! Я бот, який допоможе вам читати Twitter, не виходячи з Telegram!" // Message with parameters val parameters = mapOf("username" to "elonmusk") val success = localizationService.getMessage(MessageKey.ADD_SUCCESS, Language.ENGLISH, parameters) // Result: "Successfully subscribed to @elonmusk! You will now receive new tweets from this account." // Check message availability val hasMessage = localizationService.hasMessage(MessageKey.TWEET_FROM, Language.RUSSIAN) // Result: true