Skip to content

Commit

Permalink
Merge branch 'dev' into i18n/add-ru
Browse files Browse the repository at this point in the history
  • Loading branch information
Innei committed Sep 20, 2024
2 parents e42b088 + 972ff76 commit e833cfb
Show file tree
Hide file tree
Showing 21 changed files with 590 additions and 12 deletions.
3 changes: 2 additions & 1 deletion apps/renderer/src/@types/constants.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
const langs = ["ja", "zh-CN", "zh-TW", "pt", "fr", "ar-DZ", "ar-SA", "ar-MA", "zh-HK"]
const langs = ["ja", "zh-CN", "zh-TW", "pt", "fr", "ar-DZ", "ar-SA", "ar-MA", "zh-HK","fi","it","ru","es"]
export const currentSupportedLanguages = ["en", ...langs.sort()]
export const dayjsLocaleImportMap = {
en: ["en", () => import("dayjs/locale/en")],
["zh-CN"]: ["zh-cn", () => import("dayjs/locale/zh-cn")],
["ja"]: ["ja", () => import("dayjs/locale/ja")],
["ru"]: ["ru", () => import("dayjs/locale/ru")],
["fi"]: ["fi", () => import("dayjs/locale/fi")],
["it"]: ["it", () => import("dayjs/locale/it")],
["ar-DZ"]: ["ar-dz", () => import("dayjs/locale/ar-dz")],
["ar-SA"]: ["ar-sa", () => import("dayjs/locale/ar-sa")],
Expand Down
3 changes: 3 additions & 0 deletions apps/renderer/src/@types/default-resource.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import common_arma from "../../../../locales/common/ar-MA.json"
import common_arsa from "../../../../locales/common/ar-SA.json"
import common_en from "../../../../locales/common/en.json"
import common_es from "../../../../locales/common/es.json"
import common_fi from "../../../../locales/common/fi.json"
import common_fr from "../../../../locales/common/fr.json"
import common_it from "../../../../locales/common/it.json"
import common_ja from "../../../../locales/common/ja.json"
Expand All @@ -18,6 +19,7 @@ import lang_arma from "../../../../locales/lang/ar-MA.json"
import lang_arsa from "../../../../locales/lang/ar-SA.json"
import lang_en from "../../../../locales/lang/en.json"
import lang_es from "../../../../locales/lang/es.json"
import lang_fi from "../../../../locales/lang/fi.json"
import lang_fr from "../../../../locales/lang/fr.json"
import lang_it from "../../../../locales/lang/it.json"
import lang_ja from "../../../../locales/lang/ja.json"
Expand Down Expand Up @@ -53,6 +55,7 @@ export const defaultResources = {
common: common_ja,
},
ru: { lang: lang_ru, common: common_ru },
fi: { lang: lang_fi, common: common_fi },
it: { lang: lang_it, common: common_it },
"ar-DZ": { lang: lang_ardz, common: common_ardz },
"ar-SA": { lang: lang_arsa, common: common_arsa },
Expand Down
7 changes: 5 additions & 2 deletions apps/renderer/src/components/feed-certification.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export const FeedCertification = ({ feed, className }: { feed: FeedModel; classN
<TooltipPortal>
<TooltipContent className="px-4 py-2">
<div className="flex items-center text-base font-semibold">
<i className="i-mgc-certificate-cute-fi mr-2 shrink-0 text-accent" />
<i className="i-mgc-certificate-cute-fi mr-2 size-4 shrink-0 text-accent" />
{t("feed_item.claimed_feed")}
</div>
<div>{t("feed_item.claimed_by_you")}</div>
Expand All @@ -34,7 +34,10 @@ export const FeedCertification = ({ feed, className }: { feed: FeedModel; classN
<Tooltip delayDuration={300}>
<TooltipTrigger asChild>
<i
className={cn("i-mgc-certificate-cute-fi ml-1.5 shrink-0 text-amber-500", className)}
className={cn(
"i-mgc-certificate-cute-fi ml-1.5 size-4 shrink-0 text-amber-500",
className,
)}
/>
</TooltipTrigger>

Expand Down
28 changes: 27 additions & 1 deletion apps/renderer/src/components/ui/loading.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import React, { cloneElement } from "react"
import { m, useAnimation } from "framer-motion"
import React, { cloneElement, useEffect } from "react"

import { cn } from "~/lib/utils"

Expand Down Expand Up @@ -112,3 +113,28 @@ export const LoadingWithIcon: Component<
)
}
}

export const RotatingRefreshIcon: React.FC<{
isRefreshing: boolean
className?: string
}> = ({ isRefreshing, className }) => {
const controls = useAnimation()

useEffect(() => {
if (isRefreshing) {
controls.set({ rotate: 0 })
controls.start({
rotate: 360,
transition: { duration: 1, repeat: Infinity, ease: "linear" },
})
} else {
controls.stop()
controls.start({
rotate: 360,
transition: { ease: "linear", type: "spring" },
})
}
}, [isRefreshing, controls])

return <m.i className={cn("i-mgc-refresh-2-cute-re", className)} animate={controls} />
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { useWhoami } from "~/atoms/user"
import { ImpressionView } from "~/components/common/ImpressionTracker"
import { ActionButton } from "~/components/ui/button"
import { DividerVertical } from "~/components/ui/divider"
import { RotatingRefreshIcon } from "~/components/ui/loading"
import { EllipsisHorizontalTextWithTooltip } from "~/components/ui/typography"
import { FEED_COLLECTION_LIST, ROUTE_ENTRY_PENDING, views } from "~/constants"
import { shortcuts } from "~/constants/shortcuts"
Expand Down Expand Up @@ -109,7 +110,7 @@ export const EntryListHeader: FC<{
refreshFeed()
}}
>
<i className={cn("i-mgc-refresh-2-cute-re", isPending && "animate-spin")} />
<RotatingRefreshIcon isRefreshing={isPending} />
</ActionButton>
) : (
<ActionButton
Expand All @@ -122,12 +123,9 @@ export const EntryListHeader: FC<{
refetch()
}}
>
<i
className={cn(
"i-mgc-refresh-2-cute-re",
isRefreshing && "animate-spin",
hasUpdate && "text-accent",
)}
<RotatingRefreshIcon
className={cn(hasUpdate && "text-accent")}
isRefreshing={isRefreshing}
/>
</ActionButton>
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,9 @@ export const MyWalletSection = () => {
{t("wallet.balance.withdrawable")} <i className="i-mingcute-question-line" />
</span>

<Balance>{myWallet.cashablePowerToken}</Balance>
<Balance className="center text-[12px] font-medium">
{myWallet.cashablePowerToken}
</Balance>
</div>
</TooltipTrigger>
<TooltipPortal>
Expand Down
207 changes: 207 additions & 0 deletions locales/app/fi.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
{
"ai_daily.title": "Pääuutiset - {{title}}",
"ai_daily.tooltip.content": "Tässä ovat uutiset, jotka AI on valinnut aikajanaltasi (<From /> - <To />), ja jotka saattavat olla sinulle tärkeitä.",
"ai_daily.tooltip.update_schedule": "Päivitetään päivittäin klo 8 ja klo 20.",
"app.app_name": "SOVELLUKSEN_NIMI",
"app.copy_logo_svg": "Kopioi Logo SVG",
"app.toggle_sidebar": "Vaihda sivupalkki",
"discover.any_url_or_keyword": "Mikä tahansa URL tai avainsana",
"discover.default_option": " (oletus)",
"discover.feed_description": "Tämän syötteen kuvaus on seuraava, ja voit täyttää lomakkeen vastaavilla tiedoilla.",
"discover.feed_maintainers": "Tämän syötteen tarjoaa RSSHub, kiitos <maintainers />",
"discover.import.click_to_upload": "Klikkaa ladataksesi OPML-tiedosto",
"discover.popular": "Suosittu",
"discover.preview": "Esikatselu",
"discover.rss_hub_route": "RSSHub-reitti",
"discover.rss_url": "RSS-URL",
"discover.select_placeholder": "Valitse",
"early_access": "Varhainen pääsy",
"entry_actions.copy_link": "Kopioi linkki",
"entry_actions.failed_to_save_to_eagle": "Tallennus Eagleen epäonnistui.",
"entry_actions.failed_to_save_to_instapaper": "Tallennus Instapaperiin epäonnistui.",
"entry_actions.failed_to_save_to_readwise": "Tallennus Readwiseen epäonnistui.",
"entry_actions.link_copied": "Linkki kopioitu leikepöydälle.",
"entry_actions.mark_as_read": "Merkitse luetuksi",
"entry_actions.mark_as_unread": "Merkitse lukemattomaksi",
"entry_actions.open_in_browser": "Avaa selaimessa",
"entry_actions.save_media_to_eagle": "Tallenna media Eagleen",
"entry_actions.save_to_instapaper": "Tallenna Instapaperiin",
"entry_actions.save_to_readwise": "Tallenna Readwiseen",
"entry_actions.saved_to_eagle": "Tallennettu Eagleen.",
"entry_actions.saved_to_instapaper": "Tallennettu Instapaperiin.",
"entry_actions.saved_to_readwise": "Tallennettu Readwiseen.",
"entry_actions.share": "Jaa",
"entry_actions.star": "Tähtää",
"entry_actions.starred": "Tähdätään.",
"entry_actions.tip": "Tippi",
"entry_actions.unstar": "Poista tähti",
"entry_actions.unstarred": "Tähti poistettu.",
"entry_column.refreshing": "Päivitetään uusia merkintöjä...",
"entry_content.ai_summary": "AI-yhteenveto",
"entry_content.fetching_content": "Noudetaan alkuperäistä sisältöä ja käsitellään...",
"entry_content.header.play_tts": "Toista TTS",
"entry_content.header.readability": "Luettavuus",
"entry_content.no_content": "Ei sisältöä",
"entry_content.readability_notice": "Tämä sisältö on saatavilla Readabilityn kautta. Jos huomaat typografisia ongelmia, käy lähdesivustolla katsomassa alkuperäinen sisältö.",
"entry_content.render_error": "Renderointivirhe:",
"entry_content.report_issue": "Ilmoita ongelmasta",
"entry_content.web_app_notice": "Verkkosovellus ei ehkä tue tätä sisältötyyppiä. Voit kuitenkin ladata työpöytäsovelluksen.",
"entry_list.zero_unread": "Ei lukemattomia",
"entry_list_header.daily_report": "Päivittäinen raportti",
"entry_list_header.hide_no_image_items": "Piilota merkinnät ilman kuvia",
"entry_list_header.items": "kohteet",
"entry_list_header.new_entries_available": "Uusia merkintöjä saatavilla",
"entry_list_header.refetch": "Päivitä",
"entry_list_header.refresh": "Virkistä",
"entry_list_header.show_all": "Näytä kaikki",
"entry_list_header.show_all_items": "Näytä kaikki merkintäkohteet",
"entry_list_header.show_unread_only": "Näytä vain lukemattomat",
"entry_list_header.switch_to_grid": "Vaihda ruudukkonäkymään",
"entry_list_header.switch_to_masonry": "Vaihda tiilinäkymään",
"entry_list_header.unread": "lukematon",
"feed_claim_modal.choose_verification_method": "Valittavana on kolme tapaa, voit valita yhden niistä vahvistaaksesi.",
"feed_claim_modal.claim_button": "Vahvista",
"feed_claim_modal.content_instructions": "Kopioi alla oleva sisältö ja julkaise se viimeisimpään RSS-syötteeseesi.",
"feed_claim_modal.description_current": "Nykyinen kuvaus:",
"feed_claim_modal.description_instructions": "Kopioi seuraava sisältö ja liitä se RSS-syötteen <code />-kenttään.",
"feed_claim_modal.failed_to_load": "Vahvistusviestin lataus epäonnistui",
"feed_claim_modal.rss_format_choice": "RSS-generaattoreilla on yleensä kaksi valittavaa muotoa. Kopioi alla olevat XML- ja JSON-muodot tarpeen mukaan.",
"feed_claim_modal.rss_instructions": "Kopioi alla oleva koodi ja liitä se RSS-generaattoriisi.",
"feed_claim_modal.rss_json_format": "JSON-muoto",
"feed_claim_modal.rss_xml_format": "XML-muoto",
"feed_claim_modal.rsshub_notice": "Tämän syötteen tarjoaa RSSHub 1 tunnin välimuistilla. Muutosten näkyminen voi kestää jopa tunnin julkaisun jälkeen.",
"feed_claim_modal.tab_content": "Sisältö",
"feed_claim_modal.tab_description": "Kuvaus",
"feed_claim_modal.tab_rss": "RSS-tagi",
"feed_claim_modal.verify_ownership": "Vahvistaaksesi tämän syötteen omistajuuden sinun on vahvistettava omistusoikeus.",
"feed_form.add_follow": "Lisää seuraaminen",
"feed_form.category": "Kategoria",
"feed_form.category_description": "Oletuksena seuraamasi sivustot ryhmitellään verkkosivuston mukaan.",
"feed_form.error_fetching_feed": "Virhe syötteen noutamisessa.",
"feed_form.feed_not_found": "Syötettä ei löytynyt.",
"feed_form.feedback": "Palaute",
"feed_form.follow": "Seuraa",
"feed_form.followed": "🎉 Seurattu.",
"feed_form.private_follow": "Yksityinen seuraaminen",
"feed_form.private_follow_description": "Onko tämä seuranta julkisesti näkyvillä profiilisivullasi.",
"feed_form.retry": "Yritä uudelleen",
"feed_form.title": "Otsikko",
"feed_form.title_description": "Mukautettu otsikko tälle syötteelle. Jätä tyhjäksi käyttääksesi oletusotsikkoa.",
"feed_form.unfollow": "Lopeta seuraaminen",
"feed_form.update": "Päivitä",
"feed_form.update_follow": "Päivitä seuranta",
"feed_form.updated": "🎉 Päivitetty.",
"feed_form.view": "Näytä",
"feed_item.claimed_by_owner": "Tämän syötteen on vahvistanut",
"feed_item.claimed_by_unknown": "omistaja.",
"feed_item.claimed_by_you": "Sinun vahvistama syöte",
"feed_item.claimed_feed": "Vahvistettu syöte",
"feed_item.error_since": "Virhe alkaen",
"feed_item.not_publicly_visible": "Ei julkisesti näkyvissä profiilisivullasi",
"feed_view_type.articles": "Artikkelit",
"feed_view_type.audios": "Äänitteet",
"feed_view_type.notifications": "Ilmoitukset",
"feed_view_type.pictures": "Kuvat",
"feed_view_type.social_media": "Sosiaalinen media",
"feed_view_type.videos": "Videot",
"mark_all_read_button.auto_confirm_info": "Vahvistetaan automaattisesti 3 sekunnin kuluttua.",
"mark_all_read_button.confirm": "Vahvista",
"mark_all_read_button.confirm_mark_all": "Merkitäänkö {{which}} luetuksi?",
"mark_all_read_button.confirm_mark_all_info": "Vahvista kaikki merkinnät luetuiksi?",
"mark_all_read_button.mark_all_as_read": "Merkitse kaikki luetuiksi",
"mark_all_read_button.mark_as_read": "Merkitse {{which}} luetuksi",
"mark_all_read_button.undo": "Kumoa",
"player.back_10s": "Takaisin 10 sekuntia",
"player.close": "Sulje",
"player.download": "Lataa",
"player.exit_full_screen": "Poistu koko näytöstä",
"player.forward_10s": "Eteenpäin 10 sekuntia",
"player.full_screen": "Koko näyttö",
"player.mute": "Mykistä",
"player.open_entry": "Avaa merkintä",
"player.pause": "Tauko",
"player.play": "Toista",
"player.playback_rate": "Toistonopeus",
"player.unmute": "Poista mykistys",
"player.volume": "Äänenvoimakkuus",
"search.empty.no_results": "Ei tuloksia.",
"search.group.entries": "Merkinnät",
"search.group.feeds": "Syötteet",
"search.options.all": "Kaikki",
"search.options.entries": "Merkinnät",
"search.options.feeds": "Syötteet",
"search.options.search_type": "Hakutyyppi",
"search.placeholder": "Hae...",
"search.result_count_local_mode": "(Paikallinen tila)",
"search.tooltip.local_search": "Tämä haku kattaa paikallisesti saatavilla olevan datan. Kokeile päivittämistä sisällyttääksesi uusimmat tiedot.",
"shortcuts.guide.title": "Pikanäppäimet",
"sidebar.category_remove_dialog.cancel": "Peruuta",
"sidebar.category_remove_dialog.continue": "Jatka",
"sidebar.category_remove_dialog.description": "Tämä toiminto poistaa kategoriat, mutta niiden sisältämät syötteet säilyvät ja ryhmitellään verkkosivuston mukaan.",
"sidebar.category_remove_dialog.title": "Poista kategoria",
"sidebar.feed_actions.claim": "Vahvista",
"sidebar.feed_actions.claim_feed": "Vahvista syöte",
"sidebar.feed_actions.copy_feed_id": "Kopioi syötteen ID",
"sidebar.feed_actions.copy_feed_url": "Kopioi syötteen URL",
"sidebar.feed_actions.edit": "Muokkaa",
"sidebar.feed_actions.edit_feed": "Muokkaa syötettä",
"sidebar.feed_actions.feed_owned_by_you": "Tämä syöte on sinun omistuksessasi",
"sidebar.feed_actions.mark_all_as_read": "Merkitse kaikki luetuiksi",
"sidebar.feed_actions.navigate_to_feed": "Siirry syötteeseen",
"sidebar.feed_actions.open_feed_in_browser": "Avaa syöte selaimessa",
"sidebar.feed_actions.open_site_in_browser": "Avaa sivusto selaimessa",
"sidebar.feed_actions.unfollow": "Lopeta seuraaminen",
"sidebar.feed_actions.unfollow_feed": "Lopeta syötteen seuraaminen",
"sidebar.feed_column.context_menu.change_to_other_view": "Vaihda toiseen näkymään",
"sidebar.feed_column.context_menu.delete_category": "Poista kategoria",
"sidebar.feed_column.context_menu.delete_category_confirmation": "Poistetaanko kategoria {{folderName}}?",
"sidebar.feed_column.context_menu.mark_as_read": "Merkitse luetuksi",
"sidebar.feed_column.context_menu.rename_category": "Nimeä kategoria uudelleen",
"sidebar.select_sort_method": "Valitse lajittelutapa",
"signin.continue_with_github": "Jatka GitHubilla",
"signin.continue_with_google": "Jatka Googlella",
"signin.sign_in_to": "Kirjaudu sisään",
"sync_indicator.disabled": "Tietoturvasyistä synkronointi on poistettu käytöstä.",
"sync_indicator.offline": "Offline",
"sync_indicator.synced": "Synkronoitu palvelimen kanssa",
"tip_modal.amount": "Määrä",
"tip_modal.claim_feed": "Vahvista tämä syöte",
"tip_modal.create_wallet": "Luo ilmainen lompakko",
"tip_modal.feed_owner": "Syötteen omistaja",
"tip_modal.low_balance": "Saldosi ei riitä tämän tipin kattamiseen. Säädä summaa.",
"tip_modal.no_wallet": "Sinulla ei ole vielä lompakkoa. Luo lompakko tippiä varten.",
"tip_modal.tip_amount_sent": "on lähetetty kirjoittajalle.",
"tip_modal.tip_now": "Tiputa nyt",
"tip_modal.tip_sent": "Tiputus onnistui! Kiitos tuestasi.",
"tip_modal.tip_support": "⭐ Tiputa näyttääksesi tukesi!",
"tip_modal.unclaimed_feed": "Kukaan ei ole vielä vahvistanut tätä syötettä. Saatu Power tallennetaan turvallisesti lohkoketjun sopimukseen, kunnes se vahvistetaan.",
"user_button.account": "Tili",
"user_button.download_desktop_app": "Lataa työpöytäsovellus",
"user_button.log_out": "Kirjaudu ulos",
"user_button.power": "Power",
"user_button.preferences": "Asetukset",
"user_button.profile": "Profiili",
"user_profile.close": "Sulje",
"user_profile.edit": "Muokkaa",
"user_profile.loading": "Ladataan",
"user_profile.share": "Jaa",
"user_profile.toggle_item_style": "Vaihda kohteiden tyyliä",
"words.add": "Lisää",
"words.confirm": "Vahvista",
"words.discover": "Löydä",
"words.email": "Sähköposti",
"words.import": "Tuo",
"words.items": "Kohteet",
"words.language": "Kieli",
"words.load_archived_entries": "Lataa arkistoidut merkinnät",
"words.login": "Kirjaudu sisään",
"words.rss": "RSS",
"words.rss3": "RSS3",
"words.rsshub": "RSSHub",
"words.search": "Hae",
"words.starred": "Tähdät",
"words.unread": "Lukematon",
"words.user": "Käyttäjä",
"words.which.all": "kaikki",
"words.zero_items": "Ei kohteita"
}
28 changes: 28 additions & 0 deletions locales/common/fi.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"app.copied_to_clipboard": "Kopioitu leikepöydälle",
"cancel": "Peruuta",
"confirm": "Vahvista",
"ok": "OK",
"quantifier.piece": "",
"time.last_night": "Viime yö",
"time.the_night_before_last": "Toissa yö",
"time.today": "Tänään",
"time.yesterday": "Eilen",
"tips.load-lng-error": "Kielipaketin lataaminen epäonnistui",
"words.back": "Takaisin",
"words.copy": "Kopioi",
"words.edit": "Muokkaa",
"words.entry": "Merkintä",
"words.id": "ID",
"words.items_one": "Kohde",
"words.items_other": "Kohteet",
"words.local": "paikallinen",
"words.record": "tietue",
"words.record_one": "tietue",
"words.record_other": "tietueet",
"words.result": "tulos",
"words.result_one": "tulos",
"words.result_other": "tulokset",
"words.space": " ",
"words.which.all": "Kaikki"
}
Loading

0 comments on commit e833cfb

Please sign in to comment.