feat: localized content types

This commit is contained in:
rhunk 2023-11-21 19:29:08 +01:00
parent 82a3847573
commit c0740877fa
5 changed files with 6 additions and 12 deletions

View File

@ -49,6 +49,7 @@ class MessagingPreview(
private lateinit var messagingBridge: MessagingBridge private lateinit var messagingBridge: MessagingBridge
private lateinit var previewScrollState: LazyListState private lateinit var previewScrollState: LazyListState
private val myUserId by lazy { messagingBridge.myUserId } private val myUserId by lazy { messagingBridge.myUserId }
private val contentTypeTranslation by lazy { context.translation.getCategory("content_type") }
private var conversationId: String? = null private var conversationId: String? = null
private val messages = sortedMapOf<Long, Message>() // server message id => message private val messages = sortedMapOf<Long, Message>() // server message id => message
@ -385,7 +386,7 @@ class MessagingPreview(
.padding(5.dp) .padding(5.dp)
) { ) {
Text("[$contentType] ${messageReader.getString(2, 1) ?: ""}") Text("[${contentType?.let { contentTypeTranslation.getOrNull(it.name) ?: it.name } }] ${messageReader.getString(2, 1) ?: ""}")
} }
} }
} }

View File

@ -672,13 +672,6 @@
"progress": "Progress", "progress": "Progress",
"failure": "Failure" "failure": "Failure"
}, },
"auto_save_messages_in_conversations": {
"NOTE": "Audio Note",
"CHAT": "Chat",
"EXTERNAL_MEDIA": "External Media",
"SNAP": "Snap",
"STICKER": "Sticker"
},
"notifications": { "notifications": {
"chat_screenshot": "Screenshot", "chat_screenshot": "Screenshot",
"chat_screen_record": "Screen Record", "chat_screen_record": "Screen Record",

View File

@ -80,6 +80,7 @@ class LocaleWrapper {
} }
operator fun get(key: String) = translationMap[key] ?: key.also { AbstractLogger.directDebug("Missing translation for $key") } operator fun get(key: String) = translationMap[key] ?: key.also { AbstractLogger.directDebug("Missing translation for $key") }
fun getOrNull(key: String) = translationMap[key]
fun format(key: String, vararg args: Pair<String, String>): String { fun format(key: String, vararg args: Pair<String, String>): String {
return args.fold(get(key)) { acc, pair -> return args.fold(get(key)) { acc, pair ->

View File

@ -21,7 +21,7 @@ class MessagingTweaks : ConfigContainer() {
"NOTE", "NOTE",
"EXTERNAL_MEDIA", "EXTERNAL_MEDIA",
"STICKER" "STICKER"
) { requireRestart() } ) { requireRestart(); customOptionTranslationPath = "content_type" }
val preventMessageSending = multiple("prevent_message_sending", *NotificationType.getOutgoingValues().map { it.key }.toTypedArray()) { val preventMessageSending = multiple("prevent_message_sending", *NotificationType.getOutgoingValues().map { it.key }.toTypedArray()) {
customOptionTranslationPath = "features.options.notifications" customOptionTranslationPath = "features.options.notifications"
nativeHooks() nativeHooks()

View File

@ -161,6 +161,7 @@ class FriendFeedInfoMenu : AbstractMenu() {
.associateBy { it.userId!! } .associateBy { it.userId!! }
val messageBuilder = StringBuilder() val messageBuilder = StringBuilder()
val translation = context.translation.getCategory("content_type")
messages.forEach { message -> messages.forEach { message ->
val sender = participants[message.senderId] val sender = participants[message.senderId]
@ -174,9 +175,7 @@ class FriendFeedInfoMenu : AbstractMenu() {
val contentType = ContentType.fromMessageContainer(messageProtoReader) ?: ContentType.fromId(message.contentType) val contentType = ContentType.fromMessageContainer(messageProtoReader) ?: ContentType.fromId(message.contentType)
var messageString = if (contentType == ContentType.CHAT) { var messageString = if (contentType == ContentType.CHAT) {
messageProtoReader.getString(2, 1) ?: return@forEach messageProtoReader.getString(2, 1) ?: return@forEach
} else { } else translation.getOrNull(contentType.name) ?: contentType.name
contentType.name
}
if (contentType == ContentType.SNAP) { if (contentType == ContentType.SNAP) {
messageString = "\uD83D\uDFE5" //red square messageString = "\uD83D\uDFE5" //red square