feat(ui): icon-only fork mark, pencil edit mark, tighter expiration and location pills

- The fork marker drops "Forked from <name>" for a bare fork-right icon
  (new MaterialSymbols.ForkRight, U+EBAC); tapping still opens the
  original version. Font regenerated via subset.sh, which also re-baked
  the custom OpenTimestamps glyph, proving the custom-glyph pipeline
  survives regeneration.
- The edited mark becomes a pencil: bare pencil for the latest edit,
  pencil + "#2"/"original" only while cycling versions on tap.
- The expiration pill clamps beyond one year to "1y+" instead of
  switching to a full date.
- The location pill caps at 110dp and ellipsizes, so unbounded city
  names cannot squeeze the author's name out of the row.
- Remove the now-unused existed_since string from all 35 locale files.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AgEpNtwnetPhETXQSdq4b5
This commit is contained in:
Claude
2026-07-14 13:46:12 +00:00
parent 170bc7c121
commit 811d9cf802
41 changed files with 42 additions and 72 deletions
@@ -351,6 +351,7 @@ import com.vitorpamplona.quartz.nipF4Podcasts.metadata.PodcastMetadataEvent
import com.vitorpamplona.quartz.nipXXPodcasting20.episode.Podcasting20EpisodeEvent
import com.vitorpamplona.quartz.nipXXPodcasting20.metadata.Podcasting20PodcastMetadata
import com.vitorpamplona.quartz.nipXXPodcasting20.trailer.Podcasting20TrailerEvent
import com.vitorpamplona.quartz.utils.TimeUtils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.withContext
@@ -1762,9 +1763,17 @@ fun SecondUserInfoRow(
@Composable
fun DisplayExpiration(expirationDate: Long) {
val context = LocalContext.current
// Beyond a year timeAheadNoDot switches to a full date, which is too wide
// for the pill: clamp it.
val text =
if (expirationDate - TimeUtils.now() > TimeUtils.ONE_YEAR) {
stringRes(R.string.one_year_plus)
} else {
timeAheadNoDot(expirationDate, context)
}
HeaderPill(
symbol = MaterialSymbols.Timer,
text = timeAheadNoDot(expirationDate, context),
text = text,
contentDescription = stringRes(R.string.expiration_date_label),
)
}
@@ -22,23 +22,31 @@ package com.vitorpamplona.amethyst.ui.note.elements
import androidx.compose.runtime.Composable
import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols
import com.vitorpamplona.amethyst.commons.ui.note.QuietMark
import com.vitorpamplona.amethyst.ui.note.types.EditState
import com.vitorpamplona.amethyst.ui.stringRes
/**
* Pencil marking an edited note; tapping cycles through the versions. The
* bare pencil is the latest edit — a suffix appears only while browsing
* older versions.
*/
@Composable
fun DisplayEditStatus(editState: EditState) {
val label =
if (editState.showingVersion.value == editState.originalVersionId()) {
if (editState.showingVersion.value == editState.lastVersionId()) {
null
} else if (editState.showingVersion.value == editState.originalVersionId()) {
stringRes(id = R.string.original)
} else if (editState.showingVersion.value == editState.lastVersionId()) {
stringRes(id = R.string.edited)
} else {
stringRes(id = R.string.edited_number, editState.versionId())
"#${editState.versionId()}"
}
QuietMark(
symbol = MaterialSymbols.Edit,
text = label,
contentDescription = stringRes(id = R.string.edited),
onClick = { editState.nextModification() },
)
}
@@ -20,7 +20,10 @@
*/
package com.vitorpamplona.amethyst.ui.note.elements
import androidx.compose.foundation.layout.widthIn
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols
import com.vitorpamplona.amethyst.commons.ui.note.HeaderPill
import com.vitorpamplona.amethyst.ui.navigation.navs.INav
@@ -31,6 +34,8 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
/**
* Compact pill showing the geohash a note is scoped to, resolved to a city
* name. Tapping it opens the geohash feed. Sits inline in note headers.
* City names are unbounded user data, so the pill is capped and ellipsizes
* to protect the author's name from being squeezed out of the row.
*/
@Composable
fun DisplayLocation(
@@ -42,6 +47,7 @@ fun DisplayLocation(
HeaderPill(
symbol = MaterialSymbols.LocationOn,
text = cityName,
modifier = Modifier.widthIn(max = 110.dp),
onClick = { nav.nav(Route.Geohash(geohashStr)) },
)
}
@@ -20,26 +20,21 @@
*/
package com.vitorpamplona.amethyst.ui.note.elements
import androidx.compose.foundation.layout.Row
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols
import com.vitorpamplona.amethyst.commons.ui.note.QuietMark
import com.vitorpamplona.amethyst.model.Note
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.observeNote
import com.vitorpamplona.amethyst.service.relayClient.reqCommand.user.observeUserInfo
import com.vitorpamplona.amethyst.ui.components.CreateClickableTextWithEmoji
import com.vitorpamplona.amethyst.ui.components.LoadNote
import com.vitorpamplona.amethyst.ui.navigation.navs.INav
import com.vitorpamplona.amethyst.ui.navigation.routes.routeFor
import com.vitorpamplona.amethyst.ui.note.LoadAddressableNote
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.stringRes
import com.vitorpamplona.amethyst.ui.theme.Font14SP
import com.vitorpamplona.amethyst.ui.theme.lessImportantLink
import com.vitorpamplona.quartz.experimental.forks.IForkableEvent
@Composable
@@ -54,20 +49,21 @@ fun ShowForkInformation(
if (forkedAddress != null) {
LoadAddressableNote(forkedAddress, accountViewModel) { addressableNote ->
if (addressableNote != null) {
ForkInformationRowLightColor(addressableNote, modifier, accountViewModel, nav)
ForkMark(addressableNote, modifier, accountViewModel, nav)
}
}
} else if (forkedEvent != null) {
LoadNote(forkedEvent, accountViewModel) { event ->
if (event != null) {
ForkInformationRowLightColor(event, modifier, accountViewModel, nav)
ForkMark(event, modifier, accountViewModel, nav)
}
}
}
}
/** Fork-right icon marking a forked note; tapping opens the original version. */
@Composable
fun ForkInformationRowLightColor(
fun ForkMark(
originalVersion: Note,
modifier: Modifier = Modifier,
accountViewModel: AccountViewModel,
@@ -75,22 +71,14 @@ fun ForkInformationRowLightColor(
) {
val noteState by observeNote(originalVersion, accountViewModel)
val note = noteState.note
val author = note.author ?: return
val route = remember(note) { routeFor(note, accountViewModel.account) }
if (route != null) {
Row(modifier, verticalAlignment = Alignment.CenterVertically) {
val userState by observeUserInfo(author, accountViewModel)
CreateClickableTextWithEmoji(
clickablePart = stringRes(id = R.string.forked_from) + " " + (userState?.info?.bestName() ?: author.pubkeyDisplayHex()),
maxLines = 1,
route = route,
overrideColor = MaterialTheme.colorScheme.lessImportantLink,
fontSize = Font14SP,
nav = nav,
tags = userState?.tags,
)
}
QuietMark(
symbol = MaterialSymbols.ForkRight,
contentDescription = stringRes(id = R.string.forked_from),
modifier = modifier,
onClick = { nav.nav(route) },
)
}
}
@@ -2797,7 +2797,6 @@
<string name="nsite_source">Zdroj:</string>
<string name="nsite_servers">Servery:</string>
<string name="nsite_open">Otevřít</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Důkaz časového razítka</string>
<string name="ots_info_description">Existuje důkaz, že tento příspěvek byl podepsán někdy před %1$s. Důkaz byl označen v Bitcoin blockchainu v tomto datu a čase.</string>
<string name="edit_article">Upravit článek</string>
@@ -2683,7 +2683,6 @@
<string name="nsite_source">Quelle:</string>
<string name="nsite_servers">Server:</string>
<string name="nsite_open">Öffnen</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Zeitstempel Beweis</string>
<string name="ots_info_description">Es gibt einen Beweis, dass dieser Beitrag irgendwann vor %1$s signiert wurde. Der Beweis wurde zu diesem Datum und Uhrzeit in der Bitcoin-Blockchain gestempelt.</string>
<string name="edit_article">Artikel bearbeiten</string>
@@ -680,7 +680,6 @@ anz der Bedingungen ist erforderlich</string>
<string name="forked_from">Geforkt von</string>
<string name="git_web_address">Internet:</string>
<string name="git_clone_address">Klonen:</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Zeitstempel Beweis</string>
<string name="ots_info_description">Es gibt einen Beweis, dass dieser Beitrag irgendwann vor %1$s signiert wurde. Der Beweis wurde zu diesem Datum und Uhrzeit in der Bitcoin-Blockchain gestempelt.</string>
<string name="edit_post">Beitrag bearbeiten</string>
@@ -2125,7 +2125,6 @@
<string name="nsite_source">Fonto:</string>
<string name="nsite_servers">Serviloj:</string>
<string name="nsite_open">Malfermi</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Tempomarko-Pruvo</string>
<string name="ots_info_description">Estas pruvo ke ĉi tiu afiŝo estis subskribita iam antaŭ %1$s. La pruvo estis stampita en la Bitcoin-blokĉeno en tiu dato kaj horo.</string>
<string name="edit_article">Redakti Artikolon</string>
@@ -2297,7 +2297,6 @@
<string name="nsite_source">Fuente:</string>
<string name="nsite_servers">Servidores:</string>
<string name="nsite_open">Abrir</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Prueba de marca de tiempo</string>
<string name="ots_info_description">Hay prueba de que esta publicación se firmó en algún momento antes de %1$s. La prueba se marcó en la cadena de bloques de Bitcoin en esa fecha y hora.</string>
<string name="edit_article">Editar artículo</string>
@@ -2288,7 +2288,6 @@
<string name="nsite_source">Fuente:</string>
<string name="nsite_servers">Servidores:</string>
<string name="nsite_open">Abrir</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Prueba de marca de tiempo</string>
<string name="ots_info_description">Hay prueba de que esta publicación se firmó en algún momento antes de %1$s. La prueba se marcó en la cadena de bloques de Bitcoin en esa fecha y hora.</string>
<string name="edit_article">Editar artículo</string>
@@ -2288,7 +2288,6 @@
<string name="nsite_source">Fuente:</string>
<string name="nsite_servers">Servidores:</string>
<string name="nsite_open">Abrir</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Prueba de marca de tiempo</string>
<string name="ots_info_description">Hay prueba de que esta publicación se firmó en algún momento antes de %1$s. La prueba se marcó en la cadena de bloques de Bitcoin en esa fecha y hora.</string>
<string name="edit_article">Editar artículo</string>
@@ -2618,8 +2618,6 @@
<string name="git_clone_address">Clon:</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Prueba de marca de tiempo</string>
<string name="ots_info_description">Hay prueba de que esta publicación se firmó en algún momento antes de %1$s. La prueba se marcó en la cadena de bloques de Bitcoin en esa fecha y hora.</string>
@@ -2253,7 +2253,6 @@
<string name="nsite_source">منبع:</string>
<string name="nsite_servers">سرورها:</string>
<string name="nsite_open">باز کردن</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">اثبات مهر زمان</string>
<string name="ots_info_description">مدرکی وجود دارد که ثابت کند این پست پیش از %1$s امضا شده است. این مدرک در بلاکچین بیتکوین در آن تاریخ و زمان ثبت شده است.</string>
<string name="edit_article">ویرایش مقاله</string>
@@ -665,7 +665,6 @@
<string name="forked_from">انشعاب شده از</string>
<string name="git_web_address">وب:</string>
<string name="git_clone_address">نسخه برداری:</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">اثبات مهر زمان</string>
<string name="ots_info_description">مدرکی وجود دارد که ثابت کند این پست پیش از %1$s امضا شده است. این مدرک در بلاکچین بیتکوین در آن تاریخ و زمان ثبت شده است.</string>
<string name="edit_post">ویرایش نوشته</string>
@@ -2511,7 +2511,6 @@
<string name="nsite_source">Source :</string>
<string name="nsite_servers">Serveurs :</string>
<string name="nsite_open">Ouvrir</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Preuve d\'horodatage</string>
<string name="ots_info_description">Il y a une preuve que ce message a été signé avant %1$s. La preuve a été estampillée dans la blockchain Bitcoin à cette date et à cette heure.</string>
<string name="edit_article">Modifier l\'article</string>
@@ -670,7 +670,6 @@
<string name="forked_from">Forké depuis</string>
<string name="git_web_address">Web :</string>
<string name="git_clone_address">Clone :</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Preuve d\'horodatage</string>
<string name="ots_info_description">Il y a une preuve que ce message a été signé avant %1$s. La preuve a été estampillée dans la blockchain Bitcoin à cette date et à cette heure.</string>
<string name="edit_post">Modifier le Message</string>
@@ -2730,7 +2730,6 @@
<string name="nsite_source">स्रोत :</string>
<string name="nsite_servers">सेवासंगणक :</string>
<string name="nsite_open">खोलें</string>
<string name="existed_since">ओ॰टी॰एस : %1$s</string>
<string name="ots_info_title">समयांकन प्रमाण</string>
<string name="ots_info_description">प्रमाण उपलब्ध है कि इस पत्र पर हस्ताक्षर किया गया %1$s के कुछ पहले। प्रमाण अंकित किया गया द्व्यंकरूप्य खण्डश्रृंखला में उस समय उस दिन पर।</string>
<string name="edit_article">लेख सम्पादित करें</string>
@@ -2731,7 +2731,6 @@
<string name="nsite_source">Forrás:</string>
<string name="nsite_servers">Kiszolgálók:</string>
<string name="nsite_open">Megnyitás</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Időbélyeg-igazolás</string>
<string name="ots_info_description">Bizonyíték van arra, hogy ezt a bejegyzést valamikor %1$s előtt írták alá. A bizonyítékot ezen a napon és időpontban bélyegezték a Bitcoin blokkláncába.</string>
<string name="edit_article">Cikk szerkesztése</string>
@@ -2726,8 +2726,6 @@
<string name="nsite_open">Buka</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Bukti Stempel Waktu</string>
<string name="ots_info_description">Ada bukti bahwa postingan ini ditandatangani sebelum %1$s. Bukti ini dicap dalam blockchain Bitcoin pada tanggal dan waktu tersebut.</string>
@@ -2818,8 +2818,6 @@
<string name="nsite_open">開く</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">タイムスタンプ証明</string>
<string name="ots_info_description">この投稿が %1$s より前に署名されたことの証明があります。この証明はその日時に Bitcoin ブロックチェーンに刻印されています。</string>
@@ -3798,8 +3798,6 @@
<string name="nsite_servers">Servers:</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Bewijs van tijdstempel</string>
<string name="ots_info_description">Er is cryptografisch bewijs dat dit bericht vóór %1$s is ondertekend. Dit bewijs is vastgelegd in de Bitcoin-blockchain.</string>
@@ -2566,7 +2566,6 @@
<string name="nsite_source">Bron:</string>
<string name="nsite_servers">Servers:</string>
<string name="nsite_open">Openen</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Bewijs van tijdstempel</string>
<string name="ots_info_description">Er is cryptografisch bewijs dat dit bericht vóór %1$s is ondertekend. Dit bewijs is vastgelegd in de Bitcoin-blockchain.</string>
<string name="edit_article">Artikel bewerken</string>
@@ -669,7 +669,6 @@
<string name="forked_from">Geforked van</string>
<string name="git_web_address">Web:</string>
<string name="git_clone_address">Kopiëren:</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Bewijs van tijdstempel</string>
<string name="ots_info_description">Er is bewijs dat dit bericht enige tijd voor %1$sis getekend. Het bewijs is op dat tijdstip en op dat moment getypeerd in de Bitcoin-blockchain.</string>
<string name="edit_post">Bericht wijzigen</string>
@@ -2798,7 +2798,6 @@ Zaplanowane posty z innych kont nie zostaną opublikowane, dopóki to konto jest
<string name="nsite_source">Źródło:</string>
<string name="nsite_servers">Serwery:</string>
<string name="nsite_open">Otwórz</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Potwierdzenie znacznika czasu</string>
<string name="ots_info_description">Istnieje dowód na to, że ten post został podpisany przed %1$s. Dowód został opatrzony pieczęcią w łańcuchu bloków Bitcoin w tym dniu i czasie.</string>
<string name="edit_article">Redaguj artykuł</string>
@@ -2680,7 +2680,6 @@
<string name="nsite_source">Fonte:</string>
<string name="nsite_servers">Servidores:</string>
<string name="nsite_open">Abrir</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Prova de Carimbo de data/hora</string>
<string name="ots_info_description">Há prova de que esta postagem foi assinada antes de %1$s. A prova foi carimbada no blockchain do Bitcoin naquela data e hora.</string>
<string name="edit_article">Editar artigo</string>
@@ -2596,8 +2596,6 @@
<string name="nsite_open">Открыть</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Доказательство временно́й метки</string>
<string name="ots_info_description">Есть доказательство того, что эта публикация была подписана до %1$s. Доказательство зафиксировано в блокчейне Bitcoin в указанную дату и время.</string>
@@ -2813,7 +2813,6 @@ Za ohranitev zasebnosti to denarnico polni in prazni prek ne-zasebnih računov,
<string name="nsite_source">Vir:</string>
<string name="nsite_servers">Strežniki:</string>
<string name="nsite_open">Odpri</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Dokaz časovnega žiga</string>
<string name="ots_info_description">Obstaja dokaz, da je bil ta zapisek podpisan pred %1$s. Dokaz je bil ožigosan v Bitcoin verigi blokov na ta datum in čas.</string>
<string name="edit_article">Uredi članek</string>
@@ -2688,7 +2688,6 @@
<string name="nsite_source">Källa:</string>
<string name="nsite_servers">Servrar:</string>
<string name="nsite_open">Öppna</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Tidsstämpel Bevis</string>
<string name="ots_info_description">Det finns bevis på att detta inlägg signerades någon gång före %1$s. Beviset stämplades i Bitcoin-blockchainen vid det datumet och den tiden.</string>
<string name="edit_article">Redigera artikel</string>
@@ -2125,7 +2125,6 @@
<string name="nsite_source">மூலம்:</string>
<string name="nsite_servers">சேவையகங்கள்:</string>
<string name="nsite_open">திறக்கவும்</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">நேர முத்திரை சான்று</string>
<string name="ots_info_description">இந்த இடுகை %1$s-க்கு முன்பு ஒரு நேரத்தில் கையொப்பமிடப்பட்டது என்பதற்கான சான்று உள்ளது. சான்று அந்த தேதியிலும் நேரத்திலும் Bitcoin blockchain-ல் முத்திரையிடப்பட்டது.</string>
<string name="edit_article">கட்டுரையைத் திருத்து</string>
@@ -2171,7 +2171,6 @@
<string name="nsite_source">แหล่งที่มา:</string>
<string name="nsite_servers">เซิร์ฟเวอร์:</string>
<string name="nsite_open">เปิด</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Timestamp ถูกยืนยัน</string>
<string name="ots_info_description">มีหลักฐานว่าโพสต์นี้มีการลงนามก่อน %1$s หลักฐานถูกประทับตราใน Bitcoin blockchain ณ วันและเวลาดังกล่าว</string>
<string name="edit_article">แก้ไขบทความ</string>
@@ -574,7 +574,6 @@
<string name="forked_from">คัดลอกมาจาก</string>
<string name="git_web_address">เว็บไซน์</string>
<string name="git_clone_address">สำเนา:</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Timestamp ถูกยืนยัน</string>
<string name="ots_info_description">มีหลักฐานว่าโพสต์นี้มีการลงนามก่อน %1$s หลักฐานถูกประทับตราใน Bitcoin blockchain ณ วันและเวลาดังกล่าว</string>
<string name="edit_post">แก้ไขโพสต์</string>
@@ -2996,8 +2996,6 @@
<string name="nsite_open">Aç</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Zaman Damgası Kanıtı</string>
<string name="ots_info_description">Bu gönderinin %1$s tarihinden önce imzalandığına dair kanıt var. Kanıt, o tarih ve saatte Bitcoin blok zincirine işlendi.</string>
@@ -2786,8 +2786,6 @@
<string name="nsite_open">Відкрити</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Доказ часової позначки</string>
<string name="ots_info_description">Є доказ того, що ця публікація була підписана до %1$s. Доказ засвідчено в блокчейні Bitcoin на ту дату та час.</string>
@@ -2695,7 +2695,6 @@
<string name="nsite_source">源:</string>
<string name="nsite_servers">服务器:</string>
<string name="nsite_open">打开</string>
<string name="existed_since">OTS:%1$s</string>
<string name="ots_info_title">OpenTimestamps 证明</string>
<string name="ots_info_description">%1$s之前的某个时候签署了此帖子的证明。此证明是在那个日期和时间在比特币区块链中盖章的。</string>
<string name="edit_article">编辑文章</string>
@@ -2232,7 +2232,6 @@
<string name="nsite_source">源:</string>
<string name="nsite_servers">服务器:</string>
<string name="nsite_open">打开</string>
<string name="existed_since">OTS:%1$s</string>
<string name="ots_info_title">OpenTimestamps 证明</string>
<string name="ots_info_description">%1$s之前的某个时候签署了此帖子的证明。此证明是在那个日期和时间在比特币区块链中盖章的。</string>
<string name="edit_article">编辑文章</string>
@@ -2232,7 +2232,6 @@
<string name="nsite_source">源:</string>
<string name="nsite_servers">服务器:</string>
<string name="nsite_open">打开</string>
<string name="existed_since">OTS:%1$s</string>
<string name="ots_info_title">OpenTimestamps 证明</string>
<string name="ots_info_description">%1$s之前的某个时候签署了此帖子的证明。此证明是在那个日期和时间在比特币区块链中盖章的。</string>
<string name="edit_article">编辑文章</string>
@@ -2209,7 +2209,6 @@
<string name="nsite_source">來源:</string>
<string name="nsite_servers">伺服器:</string>
<string name="nsite_open">開啟</string>
<string name="existed_since">OTS:%1$s</string>
<string name="ots_info_title">時間戳證明</string>
<string name="ots_info_description">有在 %1$s 之前的某個時間簽署了此帖子的證明。此證明是在那個日期和時間在比特幣區塊鏈中記錄的時間戳。</string>
<string name="edit_article">編輯文章</string>
@@ -4214,8 +4214,6 @@
<string name="nsite_open">打开</string>
<string name="existed_since">OTS:%1$s</string>
<string name="ots_info_title">OpenTimestamps 证明</string>
<string name="ots_info_description">%1$s之前的某个时候签署了此帖子的证明。此证明是在那个日期和时间在比特币区块链中盖章的。</string>
+1 -1
View File
@@ -45,6 +45,7 @@
<string name="timestamp_it">Timestamp it</string>
<string name="timestamp_pending">Timestamp: Pending Confirmations</string>
<string name="timestamp_pending_short">OTS: Pending</string>
<string name="one_year_plus">1y+</string>
<string name="request_deletion">Request Deletion</string>
<string name="block_report">Block / Report</string>
<string name="block_hide_user"><![CDATA[Block & Hide User]]></string>
@@ -3017,7 +3018,6 @@
<string name="nsite_source">Source:</string>
<string name="nsite_servers">Servers:</string>
<string name="nsite_open">Open</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Timestamp Proof</string>
<string name="ots_info_description">There\'s proof this post was signed sometime before %1$s. The proof was stamped in the Bitcoin blockchain at that date and time.</string>
@@ -117,6 +117,7 @@ object MaterialSymbols {
val FitnessCenter = MaterialSymbol("\uEB43")
val Folder = MaterialSymbol("\uE2C7")
val FolderZip = MaterialSymbol("\uEB2C")
val ForkRight = MaterialSymbol("\uEBAC")
val FormatBold = MaterialSymbol("\uE238")
val FormatItalic = MaterialSymbol("\uE23F")
val FormatListNumbered = MaterialSymbol("\uE242")