Skip to content

Commit

Permalink
feat(i18n): add Finnish language support (#401)
Browse files Browse the repository at this point in the history
* feat(i18n): add  Finnish language support

Added Finnish translations to the application, including localization for app content, common phrases, external resources, language settings, and shortcuts.

* Update default-resource.ts

* feat: support lang/*.json

* fix: tsfile format

* fix: format
  • Loading branch information
upupnoah authored Sep 19, 2024
1 parent 13105ee commit b1a625a
Show file tree
Hide file tree
Showing 18 changed files with 563 additions and 0 deletions.
1 change: 1 addition & 0 deletions apps/renderer/src/@types/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ export const dayjsLocaleImportMap = {
en: ["en", () => import("dayjs/locale/en")],
["zh-CN"]: ["zh-cn", () => import("dayjs/locale/zh-cn")],
["ja"]: ["ja", () => import("dayjs/locale/ja")],
["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 @@ -17,6 +18,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 @@ -50,6 +52,7 @@ export const defaultResources = {
lang: lang_ja,
common: common_ja,
},
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
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"
}
42 changes: 42 additions & 0 deletions locales/external/fi.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"feed": {
"follow_one": "seuraa",
"follow_other": "seuraajat",
"followsAndReads": "{{subscriptionCount}} {{subscriptionNoun}} ja {{readCount}} {{readNoun}} palvelussa {{appName}}",
"read_one": "lue",
"read_other": "lukee"
},
"header": {
"app": "Sovellus",
"download": "Lataa"
},
"invitation": {
"activate": "Aktivoi",
"codeOptions": {
"1": "Etsi mikä tahansa alpha-testaaja kutsumaan sinut.",
"2": "Liity Discord-palvelimeemme satunnaisia arvontoja varten.",
"3": "Seuraa X-tiliämme satunnaisia arvontoja varten."
},
"earlyAccess": "Follow on tällä hetkellä varhaisessa käytössä ja vaatii kutsukoodin.",
"earlyAccessMessage": "😰 Pahoittelut, Follow on tällä hetkellä varhaisessa käytössä ja vaatii kutsukoodin.",
"generateButton": "Luo uusi koodi",
"generateCost": "Voit käyttää {{INVITATION_PRICE}} Poweria luodaksesi kutsukoodin ystävillesi.",
"getCodeMessage": "Voit saada kutsukoodin seuraavilla tavoilla:",
"title": "Kutsukoodi"
},
"login": {
"backToWebApp": "Takaisin verkkosovellukseen",
"continueWithGitHub": "Jatka GitHubilla",
"continueWithGoogle": "Jatka Googlella",
"logInTo": "Kirjaudu sisään ",
"openApp": "Avaa sovellus",
"redirecting": "Uudelleenohjataan",
"welcomeTo": "Tervetuloa "
},
"redirect": {
"continueInBrowser": "Jatka selaimessa",
"instruction": "Nyt on aika avata {{APP_NAME}} ja sulkea tämä sivu turvallisesti.",
"openApp": "Avaa {{APP_NAME}}",
"successMessage": "Olet onnistuneesti yhdistänyt {{APP_NAME}}-tilisi."
}
}
14 changes: 14 additions & 0 deletions locales/lang/ar-dz.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"langs.ar-DZ": "العربية (الجزائر)",
"langs.ar-MA": "العربية (المغرب)",
"langs.ar-SA": "العربية (السعودية)",
"langs.en": "English",
"langs.es": "Español",
"langs.fr": "Français",
"langs.ja": "日本語",
"langs.pt": "Português",
"langs.zh-CN": "简体中文",
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "العربية (الجزائر)"
}
14 changes: 14 additions & 0 deletions locales/lang/ar-ma.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"langs.ar-DZ": "العربية (الجزائر)",
"langs.ar-MA": "العربية (المغرب)",
"langs.ar-SA": "العربية (السعودية)",
"langs.en": "English",
"langs.es": "Español",
"langs.fr": "Français",
"langs.ja": "日本語",
"langs.pt": "Português",
"langs.zh-CN": "简体中文",
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "العربية (المغرب)"
}
14 changes: 14 additions & 0 deletions locales/lang/ar-sa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"langs.ar-DZ": "العربية (الجزائر)",
"langs.ar-MA": "العربية (المغرب)",
"langs.ar-SA": "العربية (السعودية)",
"langs.en": "English",
"langs.es": "Español",
"langs.fr": "Français",
"langs.ja": "日本語",
"langs.pt": "Português",
"langs.zh-CN": "简体中文",
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "العربية (السعودية)"
}
1 change: 1 addition & 0 deletions locales/lang/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"langs.ar-SA": "العربية (السعودية)",
"langs.en": "English",
"langs.es": "Español",
"langs.fi": "Suomi",
"langs.fr": "Français",
"langs.it": "Italiano",
"langs.ja": "日本語",
Expand Down
1 change: 1 addition & 0 deletions locales/lang/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"langs.ar-SA": "العربية (السعودية)",
"langs.en": "English",
"langs.es": "Español",
"langs.fi": "Suomi",
"langs.fr": "Français",
"langs.it": "Italiano",
"langs.ja": "日本語",
Expand Down
14 changes: 14 additions & 0 deletions locales/lang/fi.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"langs.ar-dz": "العربية (الجزائر)",
"langs.ar-ma": "العربية (المغرب)",
"langs.ar-sa": "العربية (السعودية)",
"langs.en": "English",
"langs.es": "Español",
"langs.fi": "Suomi",
"langs.fr": "Français",
"langs.ja": "日本語",
"langs.pt": "Português",
"langs.zh-CN": "简体中文",
"langs.zh-TW": "繁體中文(台灣)",
"name": "Suomi"
}
1 change: 1 addition & 0 deletions locales/lang/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"langs.ar-SA": "العربية (السعودية)",
"langs.en": "English",
"langs.es": "Español",
"langs.fi": "Suomi",
"langs.fr": "Français",
"langs.it": "Italiano",
"langs.ja": "日本語",
Expand Down
Loading

0 comments on commit b1a625a

Please sign in to comment.