commit 97b6755504563f3b5d0cf2d1fb3807b9e088cbc5
parent c765b031e9bcab4c807636a60eb3a846fa69f314
Author: Terry Yiu <git@tyiu.xyz>
Date: Thu, 4 Sep 2025 22:22:27 -0400
Add missing localized strings and export strings for translation
Diffstat:
6 files changed, 147 insertions(+), 9 deletions(-)
diff --git a/assets/translations/en-US/main.ftl b/assets/translations/en-US/main.ftl
@@ -46,6 +46,9 @@ Add_Hashtag_Column_ebf4 = Add Hashtag Column
# Column title for adding last notes column
Add_Last_Notes_Column_bbad = Add Last Notes Column
+# Tooltip text for adding a new deck button
+Add_new_deck_f2fc = Add new deck
+
# Column title for adding notifications column
Add_Notifications_Column_79f8 = Add Notifications Column
@@ -136,6 +139,9 @@ Copy_Note_ID_6b45 = Copy Note ID
# Copy the raw note data in JSON format to clipboard
Copy_Note_JSON_9e4e = Copy Note JSON
+# Tooltip text for copying npub to clipboard
+Copy_npub_to_clipboard_c105 = Copy npub to clipboard
+
# Copy the author's public key to clipboard
Copy_Pubkey_9cc4 = Copy Pubkey
@@ -208,6 +214,9 @@ Display_name_f9d9 = Display name
# Domain identification message
domain___will_be_used_for_identification_b67e = "{$domain}" will be used for identification
+# Button to indicate that the user is done going through the onboarding process.
+Done_50dd = Done
+
# Column title for editing deck
Edit_Deck_4018 = Edit Deck
@@ -283,6 +292,9 @@ k_5K_f7e6 = 5K
# Description for your notes column
Keep_track_of_your_notes___replies_a334 = Keep track of your notes & replies
+# label for keys setting section
+Keys_435f = Keys
+
# Label for language, Appearance settings section
Language_e264 = Language:
@@ -310,6 +322,18 @@ Moves_this_column_to_another_position_0d4b = Moves this column to another positi
# Title for the user's deck
My_Deck_4ac5 = My Deck
+# reaction from user to a note you were tagged in
+name__reacted_to_a_note_you_were_tagged_in_4b62 = {$name} reacted to a note you were tagged in
+
+# reaction from user to your note
+name__reacted_to_your_note_ead9 = {$name} reacted to your note
+
+# repost from user
+name__reposted_a_note_you_were_tagged_in_1379 = {$name} reposted a note you were tagged in
+
+# repost from user
+name__reposted_your_note_1379 = {$name} reposted your note
+
# Label asking if the user is new to Nostr. Underneath this label is a button to create an account.
New_to_Nostr_a2fd = New to Nostr?
@@ -385,6 +409,9 @@ Press_the_button_below_to_copy_your_most_recent_logs_to_your_system_s_clipboard_
# Profile picture URL field label
Profile_picture_81ff = Profile picture
+# label describing public key
+PUBLIC_ACCOUNT_ID_4394 = PUBLIC ACCOUNT ID
+
# Column title for quote composition
Quote_475c = Quote
@@ -463,6 +490,9 @@ Search_notes_42a6 = Search notes...
# Search in progress message
Searching_for___query_5d18 = Searching for '{$query}'
+# label describing secret key
+SECRET_ACCOUNT_LOGIN_KEY_8440 = SECRET ACCOUNT LOGIN KEY
+
# Description for Home column
See_notes_from_your_contacts_ac16 = See notes from your contacts
@@ -609,3 +639,35 @@ Got__count__results_for___query_85fb =
[one] Got {$count} result for '{$query}'
*[other] Got {$count} results for '{$query}'
}
+
+
+# amount of reactions a note you were tagged in received
+name__and__count__others_reacted_to_a_note_you_were_tagged_in_181a =
+ { $count ->
+ [one] {$name} and {$count} other reacted to a note you were tagged in
+ *[other] {$name} and {$count} others reacted to a note you were tagged in
+ }
+
+
+# describing the amount of reactions your note received
+name__and__count__others_reacted_to_your_note_0f6a =
+ { $count ->
+ [one] {$name} and {$count} other reacted to your note
+ *[other] {$name} and {$count} others reacted to your note
+ }
+
+
+# describing the amount of reposts a note you were tagged in received
+name__and__count__others_reposted_a_note_you_were_tagged_in_08e1 =
+ { $count ->
+ [one] {$name} and {$count} other reposted a note you were tagged in
+ *[other] {$name} and {$count} others reposted a note you were tagged in
+ }
+
+
+# describing the amount of reposts your note received
+name__and__count__others_reposted_your_note_70a0 =
+ { $count ->
+ [one] {$name} and {$count} other reposted your note
+ *[other] {$name} and {$count} others reposted your note
+ }
diff --git a/assets/translations/en-XA/main.ftl b/assets/translations/en-XA/main.ftl
@@ -46,6 +46,9 @@ Add_Hashtag_Column_ebf4 = {"["}Àdd Hàshtàg Çólúmñ{"]"}
# Column title for adding last notes column
Add_Last_Notes_Column_bbad = {"["}Àdd Làst Ñótés Çólúmñ{"]"}
+# Tooltip text for adding a new deck button
+Add_new_deck_f2fc = {"["}Àdd ñéw déçk{"]"}
+
# Column title for adding notifications column
Add_Notifications_Column_79f8 = {"["}Àdd Ñótífíçàtíóñs Çólúmñ{"]"}
@@ -136,6 +139,9 @@ Copy_Note_ID_6b45 = {"["}Çópy Ñóté ÍD{"]"}
# Copy the raw note data in JSON format to clipboard
Copy_Note_JSON_9e4e = {"["}Çópy Ñóté JSÓÑ{"]"}
+# Tooltip text for copying npub to clipboard
+Copy_npub_to_clipboard_c105 = {"["}Çópy ñpúb tó çlípbóàrd{"]"}
+
# Copy the author's public key to clipboard
Copy_Pubkey_9cc4 = {"["}Çópy Púbkéy{"]"}
@@ -208,6 +214,9 @@ Display_name_f9d9 = {"["}Dísplày ñàmé{"]"}
# Domain identification message
domain___will_be_used_for_identification_b67e = {"["}"{$domain}" wíll bé úséd fór ídéñtífíçàtíóñ{"]"}
+# Button to indicate that the user is done going through the onboarding process.
+Done_50dd = {"["}Dóñé{"]"}
+
# Column title for editing deck
Edit_Deck_4018 = {"["}Édít Déçk{"]"}
@@ -283,6 +292,9 @@ k_5K_f7e6 = {"["}5K{"]"}
# Description for your notes column
Keep_track_of_your_notes___replies_a334 = {"["}Kéép tràçk óf yóúr ñótés & réplíés{"]"}
+# label for keys setting section
+Keys_435f = {"["}Kéys{"]"}
+
# Label for language, Appearance settings section
Language_e264 = {"["}Làñgúàgé:{"]"}
@@ -310,6 +322,18 @@ Moves_this_column_to_another_position_0d4b = {"["}Móvés thís çólúmñ tó
# Title for the user's deck
My_Deck_4ac5 = {"["}My Déçk{"]"}
+# reaction from user to a note you were tagged in
+name__reacted_to_a_note_you_were_tagged_in_4b62 = {"["}{$name} réàçtéd tó à ñóté yóú wéré tàggéd íñ{"]"}
+
+# reaction from user to your note
+name__reacted_to_your_note_ead9 = {"["}{$name} réàçtéd tó yóúr ñóté{"]"}
+
+# repost from user
+name__reposted_a_note_you_were_tagged_in_1379 = {"["}{$name} répóstéd à ñóté yóú wéré tàggéd íñ{"]"}
+
+# repost from user
+name__reposted_your_note_1379 = {"["}{$name} répóstéd yóúr ñóté{"]"}
+
# Label asking if the user is new to Nostr. Underneath this label is a button to create an account.
New_to_Nostr_a2fd = {"["}Ñéw tó Ñóstr?{"]"}
@@ -385,6 +409,9 @@ Press_the_button_below_to_copy_your_most_recent_logs_to_your_system_s_clipboard_
# Profile picture URL field label
Profile_picture_81ff = {"["}Prófílé píçtúré{"]"}
+# label describing public key
+PUBLIC_ACCOUNT_ID_4394 = {"["}PÚBLÍÇ ÀÇÇÓÚÑT ÍD{"]"}
+
# Column title for quote composition
Quote_475c = {"["}Qúóté{"]"}
@@ -463,6 +490,9 @@ Search_notes_42a6 = {"["}Séàrçh ñótés...{"]"}
# Search in progress message
Searching_for___query_5d18 = {"["}Séàrçhíñg fór '{$query}'{"]"}
+# label describing secret key
+SECRET_ACCOUNT_LOGIN_KEY_8440 = {"["}SÉÇRÉT ÀÇÇÓÚÑT LÓGÍÑ KÉY{"]"}
+
# Description for Home column
See_notes_from_your_contacts_ac16 = {"["}Séé ñótés fróm yóúr çóñtàçts{"]"}
@@ -609,3 +639,35 @@ Got__count__results_for___query_85fb =
[one] {"["}Gót {$count} résúlt fór '{$query}'{"]"}
*[other] {"["}Gót {$count} résúlts fór '{$query}'{"]"}
}
+
+
+# amount of reactions a note you were tagged in received
+name__and__count__others_reacted_to_a_note_you_were_tagged_in_181a =
+ { $count ->
+ [one] {"["}{$name} àñd {$count} óthér réàçtéd tó à ñóté yóú wéré tàggéd íñ{"]"}
+ *[other] {"["}{$name} àñd {$count} óthérs réàçtéd tó à ñóté yóú wéré tàggéd íñ{"]"}
+ }
+
+
+# describing the amount of reactions your note received
+name__and__count__others_reacted_to_your_note_0f6a =
+ { $count ->
+ [one] {"["}{$name} àñd {$count} óthér réàçtéd tó yóúr ñóté{"]"}
+ *[other] {"["}{$name} àñd {$count} óthérs réàçtéd tó yóúr ñóté{"]"}
+ }
+
+
+# describing the amount of reposts a note you were tagged in received
+name__and__count__others_reposted_a_note_you_were_tagged_in_08e1 =
+ { $count ->
+ [one] {"["}{$name} àñd {$count} óthér répóstéd à ñóté yóú wéré tàggéd íñ{"]"}
+ *[other] {"["}{$name} àñd {$count} óthérs répóstéd à ñóté yóú wéré tàggéd íñ{"]"}
+ }
+
+
+# describing the amount of reposts your note received
+name__and__count__others_reposted_your_note_70a0 =
+ { $count ->
+ [one] {"["}{$name} àñd {$count} óthér répóstéd yóúr ñóté{"]"}
+ *[other] {"["}{$name} àñd {$count} óthérs répóstéd yóúr ñóté{"]"}
+ }
diff --git a/crates/notedeck_columns/src/ui/onboarding.rs b/crates/notedeck_columns/src/ui/onboarding.rs
@@ -2,7 +2,7 @@ use std::mem;
use egui::{Layout, ScrollArea};
use nostrdb::Ndb;
-use notedeck::{Images, JobPool, JobsCache, Localization};
+use notedeck::{tr, Images, JobPool, JobsCache, Localization};
use notedeck_ui::{
colors,
nip51_set::{Nip51SetUiCache, Nip51SetWidget, Nip51SetWidgetAction, Nip51SetWidgetFlags},
@@ -107,7 +107,7 @@ impl<'a> FollowPackOnboardingView<'a> {
ui.with_layout(Layout::top_down(egui::Align::Center), |ui| {
ui.add_space(4.0);
- if ui.add(styled_button("Done", colors::PINK)).clicked() {
+ if ui.add(styled_button(tr!(self.loc, "Done", "Button to indicate that the user is done going through the onboarding process.").as_str(), colors::PINK)).clicked() {
action = Some(OnboardingResponse::FollowPacks(
FollowPacksResponse::UserSelectedPacks(mem::take(self.ui_state)),
));
diff --git a/crates/notedeck_columns/src/ui/profile/mod.rs b/crates/notedeck_columns/src/ui/profile/mod.rs
@@ -163,7 +163,10 @@ impl<'a, 'd> ProfileView<'a, 'd> {
.border(ProfilePic::border_stroke(ui)),
);
- if ui.add(copy_key_widget(&pfp_rect)).clicked() {
+ if ui
+ .add(copy_key_widget(&pfp_rect, self.note_context.i18n))
+ .clicked()
+ {
let to_copy = if let Some(bech) = self.pubkey.npub() {
bech
} else {
@@ -297,7 +300,10 @@ fn handle_lud16(ui: &mut egui::Ui, lud16: &str) {
.on_hover_text(lud16);
}
-fn copy_key_widget(pfp_rect: &egui::Rect) -> impl egui::Widget + '_ {
+fn copy_key_widget<'a>(
+ pfp_rect: &'a egui::Rect,
+ i18n: &'a mut Localization,
+) -> impl egui::Widget + 'a {
|ui: &mut egui::Ui| -> egui::Response {
let painter = ui.painter();
#[allow(deprecated)]
@@ -311,7 +317,11 @@ fn copy_key_widget(pfp_rect: &egui::Rect) -> impl egui::Widget + '_ {
ui.id().with("custom_painter"),
Sense::click(),
)
- .on_hover_text("Copy npub to clipboard");
+ .on_hover_text(tr!(
+ i18n,
+ "Copy npub to clipboard",
+ "Tooltip text for copying npub to clipboard"
+ ));
let copy_key_rounding = CornerRadius::same(100);
let fill_color = if resp.hovered() {
diff --git a/crates/notedeck_columns/src/ui/side_panel.rs b/crates/notedeck_columns/src/ui/side_panel.rs
@@ -120,7 +120,7 @@ impl<'a> DesktopSidePanel<'a> {
.color(ui.visuals().noninteractive().fg_stroke.color),
));
ui.add_space(8.0);
- let add_deck_resp = ui.add(add_deck_button());
+ let add_deck_resp = ui.add(add_deck_button(self.i18n));
let decks_inner = ScrollArea::vertical()
.max_height(ui.available_height() - (3.0 * (ICON_WIDTH + 12.0)))
@@ -383,7 +383,7 @@ pub fn search_button() -> impl Widget {
// TODO: convert to responsive button when expanded side panel impl is finished
-fn add_deck_button() -> impl Widget {
+fn add_deck_button<'a>(i18n: &'a mut Localization) -> impl Widget + 'a {
|ui: &mut egui::Ui| -> egui::Response {
let img_size = 40.0;
@@ -403,7 +403,11 @@ fn add_deck_button() -> impl Widget {
helper
.take_animation_response()
.on_hover_cursor(CursorIcon::PointingHand)
- .on_hover_text("Add new deck")
+ .on_hover_text(tr!(
+ i18n,
+ "Add new deck",
+ "Tooltip text for adding a new deck button"
+ ))
}
}
diff --git a/crates/notedeck_columns/src/ui/timeline.rs b/crates/notedeck_columns/src/ui/timeline.rs
@@ -572,7 +572,7 @@ fn repost_description(
tr_plural!(
loc,
"{name} and {count} other reposted a note you were tagged in",
- "{name} and {ocunt} others reposted a note you were tagged in",
+ "{name} and {count} others reposted a note you were tagged in",
"describing the amount of reposts a note you were tagged in received",
count,
name = first_name