diff --git a/README.md b/README.md
index 7b2de03..3060dcd 100644
--- a/README.md
+++ b/README.md
@@ -1,50 +1,50 @@
-# 30 Days Of Streamlit đ
+# ā§Šā§Ļ āĻĻāĻŋāύ⧠āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§ đ
-This is the official repo of `#30DaysOfStreamlit` â a 30-day social challenge for you to learn, build and deploy [Streamlit](https://streamlit.io) apps.
+āĻāĻāĻŋ āĻšāϞ #30DaysOfStreamlit-āĻāϰ āĻĒā§āϰāϧāĻžāύ āϰā§āĻĒā§ â āĻāĻĒāύāĻžāϰ āĻāύā§āϝ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§ āĻ
ā§āϝāĻžāĻĒāĻā§āϞāĻŋ āĻļāĻŋāĻāϤā§, āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻāĻŦāĻ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ 30-āĻĻāĻŋāύā§āϰ āϏāĻžāĻŽāĻžāĻāĻŋāĻ āĻā§āϝāĻžāϞā§āĻā§āĻ⧎
-## How to participate
+## āĻāĻŋāĻāĻžāĻŦā§ āĻ
āĻāĻļāĻā§āϰāĻšāĻŖ āĻāϰāĻŦā§āύ
-All you need to participate is a computer, a basic understanding of Python, and your curiosity. đ§
+āĻ
āĻāĻļāĻā§āϰāĻšāĻŖ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻĒāύāĻžāϰ āϝāĻž āĻĻāϰāĻāĻžāϰ āϤāĻž āĻšāϞ āĻāĻāĻāĻŋ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāϰ, āĻĒāĻžāĻāĻĨāύ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻāĻāĻŋ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āϧāĻžāϰāĻŖāĻž āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻā§āϤā§āĻšāϞāĨ¤ đ§
-A new challenge is released daily via Streamlit's [Twitter](https://twitter.com/streamlit) and [LinkedIn](https://www.linkedin.com/company/streamlit/posts/?feedView=all) accounts as well as the [`#30DaysOfStreamlit` app](https://share.streamlit.io/streamlit/30days/).
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§āϰ [āĻā§āĻāĻāĻžāϰ](https://twitter.com/streamlit) āĻāĻŦāĻ [āϞāĻŋāĻā§āĻāĻĄāĻāύ](https://www.linkedin.com/company/streamlit/posts/?feedView=all) āĻ
ā§āϝāĻžāĻāĻžāĻāύā§āĻā§āϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ [`#30DaysOfStreamlit` app](https://share.streamlit.io/streamlit/30days/) āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ āĻāĻāĻāĻŋ āύāϤā§āύ āĻā§āϝāĻžāϞā§āĻā§āĻ āĻĒā§āϰāĻāĻžāĻļāĻŋāϤ āĻšāϝāĻŧāĨ¤
[](https://share.streamlit.io/streamlit/30days/)
-Complete the daily challenges, share your solutions with us on Twitter or LinkedIn, and get rewarded with cool Streamlit swag! đ
+āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύā§āϰ āĻā§āϝāĻžāϞā§āĻā§āĻāĻā§āϞāĻŋ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāϰā§āύ, āĻā§āĻāĻāĻžāϰ āĻŦāĻž āϞāĻŋāĻā§āĻāĻĄāĻāύ⧠āĻāĻŽāĻžāĻĻā§āϰ āϏāĻžāĻĨā§ āĻāĻĒāύāĻžāϰ āϏāĻŽāĻžāϧāĻžāύāĻā§āϞāĻŋ āĻāĻžāĻ āĻāϰā§āύ āĻāĻŦāĻ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāϏā§āĻā§āϤ āĻšā§āύ! đ
-## What are the daily challenges?
+## āĻĻā§āύāύā§āĻĻāĻŋāύ āĻā§āϝāĻžāϞā§āĻā§āĻ āĻāĻŋ?
-Find out more about the specific challenges by participating! The 30-day challenges are divided by 3 levels of difficulty to appeal to participants of all skill levels:
+āĻ
āĻāĻļāĻā§āϰāĻšāĻŖ āĻāϰ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻā§āϝāĻžāϞā§āĻā§āĻ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰāĻ āĻāĻžāύā§āύ! ā§Šā§Ļ-āĻĻāĻŋāύā§āϰ āĻā§āϝāĻžāϞā§āĻā§āĻāĻā§āϞāĻŋ āϏāĻŽāϏā§āϤ āĻĻāĻā§āώāϤāĻž āϏā§āϤāϰā§āϰ āĻ
āĻāĻļāĻā§āϰāĻšāĻŖāĻāĻžāϰā§āĻĻā§āϰ āĻāĻžāĻā§ āĻāĻŦā§āĻĻāύ āĻāϰāĻžāϰ āĻāύā§āϝ ā§Š āϏā§āϤāϰ āĻĻā§āĻŦāĻžāϰāĻž āĻŦāĻŋāĻāĻā§āϤ:
-| Beginner (Days 1-7) | Intermediate (Days 8-23) | Advanced (Days 24-30) |
+| āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ (āĻĻāĻŋāύ ā§§-ā§) | āĻŽāϧā§āϝāĻŦāϰā§āϤ⧠(āĻĻāĻŋāύ ā§Ž-ā§¨ā§Š) | āĻāύā§āύāϤ (āĻĻāĻŋāύ ⧍ā§Ē-ā§Šā§Ļ) |
| :--- | :---- | :--- |
-| Set up your local and cloud coding environments, install Streamlit, and build your first Streamlit app.| Learn about a new [Streamlit command](https://docs.streamlit.io/library/api-reference) each day and use it to create and deploy a simple Streamlit app. | Learn about important topics such as session state, efficient data and memory management via caching, complex layouts, and much more.
+| āĻāĻĒāύāĻžāϰ āϏā§āĻĨāĻžāύā§āϝāĻŧ āĻāĻŦāĻ āĻā§āϞāĻžāĻāĻĄ āĻā§āĻĄāĻŋāĻ āĻĒāϰāĻŋāĻŦā§āĻļ āϏā§āĻ āĻāĻĒ āĻāϰā§āύ, āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§ āĻāύāϏā§āĻāϞ āĻāϰā§āύ āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻĨāĻŽ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰā§āύāĨ¤ | āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ āĻāĻāĻāĻŋ āύāϤā§āύ [āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§](https://docs.streamlit.io/library/api-reference) āĻāĻŽāĻžāύā§āĻĄ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻžāύā§āύ āĻāĻŦāĻ āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāĻŦāĻ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāϤ⧠āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤ | āϏā§āĻļāύ āϏā§āĻā§āĻ, āĻĻāĻā§āώ āĻĄā§āĻāĻž āĻāĻŦāĻ āĻā§āϝāĻžāĻļāĻŋāĻ, āĻāĻāĻŋāϞ āύāĻāĻļāĻž āĻāĻŦāĻ āĻāϰāĻ āĻ
āύā§āĻ āĻāĻŋāĻā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻŽā§āĻŽāϰāĻŋ āĻŦā§āϝāĻŦāϏā§āĻĨāĻžāĻĒāύāĻžāϰ āĻŽāϤ⧠āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻŦāĻŋāώāϝāĻŧ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻžāύā§āύāĨ¤
-## Prizes
+## āĻĒā§āϰāϏā§āĻāĻžāϰ
-If getting up to speed with the fastest and easiest way to build data apps isn't already the best summer gift, you can also win Streamlit goodies!
+āĻĄā§āĻāĻž āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋāϰ āĻĻā§āϰā§āϤāϤāĻŽ āĻāĻŦāĻ āϏāĻšāĻāϤāĻŽ āĻāĻĒāĻžāϝāĻŧā§ āĻĻā§āϰā§āϤ āĻāϤāĻŋāϤ⧠āĻāĻ āĻž āϝāĻĻāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ āϏā§āϰāĻž āĻā§āϰā§āώā§āĻŽāĻāĻžāϞā§āύ āĻāĻĒāĻšāĻžāϰ āύāĻž āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻŋ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻā§āĻĄāĻŋāĻ āĻāĻŋāϤāϤ⧠āĻĒāĻžāϰā§āύ!
-Complete the daily challenges, share your solutions with us on [Twitter](https://twitter.com/streamlit) or [LinkedIn](https://www.linkedin.com/company/streamlit/posts/?feedView=all), and get rewarded with cool Streamlit swag! đ
+āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύā§āϰ āĻā§āϝāĻžāϞā§āĻā§āĻāĻā§āϞāĻŋ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāϰā§āύ, [āĻā§āĻāĻāĻžāϰ](https://twitter.com/streamlit) āĻŦāĻž [āϞāĻŋāĻā§āĻāĻĄāĻāύ](https://www.linkedin.com/company/streamlit/posts/?feedView=all) āĻāĻŽāĻžāĻĻā§āϰ āϏāĻžāĻĨā§ āĻāĻĒāύāĻžāϰ āϏāĻŽāĻžāϧāĻžāύāĻā§āϞāĻŋ āĻāĻžāĻ āĻāϰā§āύ āĻāĻŦāĻ āĻĻā§āϰā§āĻĻāĻžāύā§āϤ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āϏā§āϝāĻŧāĻžāĻ āĻĻāĻŋāϝāĻŧā§ āĻĒā§āϰāϏā§āĻā§āϤ āĻšā§āύ!
-## Resources
+## āϏāĻŽā§āĻĒāĻĻ
-- The official [`#30DaysOfStreamlit` app](https://share.streamlit.io/streamlit/30days/) where daily challenges are posted
-- Our [Twitter](https://twitter.com/streamlit) and [LinkedIn](https://www.linkedin.com/company/streamlit/posts/?feedView=all) feeds for daily updates
-- Streamlit [documentation](https://docs.streamlit.io/) and [cheat sheet](https://docs.streamlit.io/library/cheatsheet) for a thorough reference of Streamlit commands
-- Our awesome [Gallery](https://streamlit.io/gallery) for inspiration, templates, and community apps
-- Our [blog](https://blog.streamlit.io/how-to-master-streamlit-for-data-science/) for tips and the latest Streamlit info
+- āĻ
āĻĢāĻŋāϏāĻŋāϝāĻŧāĻžāϞ [`#30DaysOfStreamlit` app](https://share.streamlit.io/streamlit/30days/) āĻ
ā§āϝāĻžāĻĒ āϝā§āĻāĻžāύ⧠āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύā§āϰ āĻā§āϝāĻžāϞā§āĻā§āĻ āĻĒā§āϏā§āĻ āĻāϰāĻž āĻšāϝāĻŧ
+- āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύā§āϰ āĻāĻĒāĻĄā§āĻā§āϰ āĻāύā§āϝ āĻāĻŽāĻžāĻĻā§āϰ [āĻā§āĻāĻāĻžāϰ](https://twitter.com/streamlit) āĻāĻŦāĻ [āϞāĻŋāĻā§āĻāĻĄāĻāύ](https://www.linkedin.com/company/streamlit/posts/?feedView=all) āĻĢāĻŋāĻĄ
+- āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§ āĻāĻŽāĻžāύā§āĻĄā§āϰ āĻĒā§āĻā§āĻāĻžāύā§āĻĒā§āĻā§āĻ āϰā§āĻĢāĻžāϰā§āύā§āϏā§āϰ āĻāύā§āϝ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§ [āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ](https://docs.streamlit.io/) āĻāĻŦāĻ [āĻāĻŋāĻ āĻļā§āĻ](https://docs.streamlit.io/library/cheatsheet)
+- āĻ
āύā§āĻĒā§āϰā§āϰāĻŖāĻž, āĻā§āĻŽāĻĒā§āϞā§āĻ āĻāĻŦāĻ āϏāĻŽā§āĻĒā§āϰāĻĻāĻžāϝāĻŧā§āϰ āĻ
ā§āϝāĻžāĻĒā§āϰ āĻāύā§āϝ āĻāĻŽāĻžāĻĻā§āϰ āĻĻā§āϰā§āĻĻāĻžāύā§āϤ [āĻā§āϝāĻžāϞāĻžāϰāĻŋ](https://streamlit.io/gallery)
+- āĻāĻŋāĻĒāϏ āĻāĻŦāĻ āϏāϰā§āĻŦāĻļā§āώ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§ āϤāĻĨā§āϝā§āϰ āĻāύā§āϝ āĻāĻŽāĻžāĻĻā§āϰ [āĻŦā§āϞāĻ](https://blog.streamlit.io/how-to-master-streamlit-for-data-science/)
+
+## āĻ
āύā§āĻŦāĻžāĻĻ
-## Translations
+#30DaysOfStreamlit āĻāϰ āύāĻžāĻāĻžāϞ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻāϰāϤ⧠āĻāĻŽāĻžāĻĻā§āϰ āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰāϤ⧠āĻāĻžāύ āĻāĻŦāĻ āĻāĻāϰā§āĻāĻŋ āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āĻāĻžāώāĻž āύāϝāĻŧ? āĻā§āϝāĻžāϞā§āĻā§āĻāĻā§āϞāĻŋāĻā§ āĻāĻĒāύāĻžāϰ āĻĒāĻāύā§āĻĻā§āϰ āĻāĻžāώāĻžāϝāĻŧ āĻ
āύā§āĻŦāĻžāĻĻ āĻāϰā§āύ āĻāĻŦāĻ āύā§āĻā§ āϤāĻžāĻĻā§āϰ āϞāĻŋāĻā§āĻ āĻāϰā§āύ!
-Want to help us expand the reach of `#30DaysOfStreamlit` and English isn't your primary language? Translate the challenges into your preferred language and link to them below!
-
-- [English](https://github.com/streamlit/30days) (Official): [](https://30days.streamlit.app)
-- [Chinese](https://github.com/TeddyHuang-00/30days-Chinese) (by [Nan Huang](https://github.com/TeddyHuang-00)): [](https://30days-chinese.streamlit.app)
-- [EspaÃąol](https://github.com/streamlit/30days-spanish/) (by [Emiliano Rosso](https://github.com/arraydude)): [](https://30days-in-spanish.streamlit.app/)
-- [French](https://github.com/streamlit/30days-French) (by [Charly Wargnier](https://github.com/charlyWargnier/)): [](https://30days-in-french.streamlit.app/)
-- [Polish](https://github.com/streamlit/30days-polish) (by [MichaÅ Nowotka](https://github.com/sfc-gh-mnowotka)): [](https://w30dni.streamlit.app/)
-- [Portuguese](https://github.com/franciscoed/30days) (by [Francisco Edilton](https://github.com/franciscoed)): [](https://30dias.streamlit.app/)
-- [Russian](https://github.com/kseniaanske/30days) (by [Ksenia Anske](https://github.com/kseniaanske)): [](https://30days-in-russian.streamlit.app/)
-- [Hindi](https://github.com/streamlit/30days-Hindi): [](https://30days-in-hindi.streamlit.app/)
+- [āĻāĻāϰā§āĻāĻŋ](https://github.com/streamlit/30days) (āĻāϧāĻŋāĻāĻžāϰāĻŋāĻ): [](https://30days.streamlit.app)
+- [āĻāĻžāĻāύāĻŋāĻ](https://github.com/TeddyHuang-00/30days-Chinese) ([āύāĻžāύ āĻšā§ā§āĻžāĻ](https://github.com/TeddyHuang-00)) āĻĻā§āĻŦāĻžāϰāĻž: [](https://30days-chinese.streamlit.app)
+- [āϏā§āĻĒā§āϝāĻžāύāĻŋāĻļ](https://github.com/streamlit/30days-spanish/) ([āĻāĻŽāĻŋāϞāĻŋā§āĻžāύ⧠āϰā§āϏā§](https://github.com/arraydude)) āĻĻā§āĻŦāĻžāϰāĻž: [](https://30days-in-spanish.streamlit.app/)
+- [āĻĢāϰāĻžāϏāĻŋ](https://github.com/streamlit/30days-French) ([āĻāĻžāϰā§āϞāĻŋ āĻā§āĻžāϰā§āĻāĻŋāύāĻžāϰ](https://github.com/charlyWargnier/)) āĻĻā§āĻŦāĻžāϰāĻž: [](https://30days-in-french.streamlit.app/)
+- [āĻĒā§āϞāĻŋāĻļ](https://github.com/streamlit/30days-polish) ([āĻŽāĻžāĻāĻā§āϞ āύā§āĻŦāĻāĻāĻž](https://github.com/sfc-gh-mnowotka)) āĻĻā§āĻŦāĻžāϰāĻž: [](https://w30dni.streamlit.app/)
+- [āĻĒāϰā§āϤā§āĻā§āĻ](https://github.com/franciscoed/30days) ([āĻĢā§āϰāĻžāύā§āϏāĻŋāϏā§āĻā§ āĻāĻĄāĻŋāϞā§āĻāύ](https://github.com/franciscoed)) āĻĻā§āĻŦāĻžāϰāĻž: [](https://30dias.streamlit.app/)
+- [āϰāĻžāĻļāĻŋāϝāĻŧāĻžāύ](https://github.com/kseniaanske/30days) ([āĻā§āϏāĻŋāύāĻŋāϝāĻŧāĻž āĻāύāϏāĻā§](https://github.com/kseniaanske)) āĻĻā§āĻŦāĻžāϰāĻž: [](https://30days-in-russian.streamlit.app/)
+- [āĻšāĻŋāύā§āĻĻāĻŋ](https://github.com/streamlit/30days-Hindi): [](https://30days-in-hindi.streamlit.app/)
diff --git a/content/Day1.md b/content/Day1.md
index 1bd1d16..5264ddf 100644
--- a/content/Day1.md
+++ b/content/Day1.md
@@ -1,40 +1,41 @@
-# Setting up a local development environment
+# āĻāĻāĻāĻŋ āϞā§āĻāĻžāϞ āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻ āĻĒāϰāĻŋāĻŦā§āĻļ āϏā§āĻĨāĻžāĻĒāύ
-Before we can actually start building Streamlit apps, we will first have to setup a development environment.
+āĻāϏāϞ⧠āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰāĻž āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻāĻā§, āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰāĻĨāĻŽā§ āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻā§āϰ āĻāύā§āϝ āĻĒāϰāĻŋāĻŦā§āĻļ āϏā§āĻāĻāĻĒ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
-Let's start by installing and setting up a conda environment.
+āĻāϏā§āύ āĻāĻāĻāĻŋ āĻāύāĻĄāĻž āĻĒāϰāĻŋāĻŦā§āĻļ āĻāύāϏā§āĻāϞ āĻāĻŦāĻ āϏā§āĻ āĻāĻĒ āĻāϰ⧠āĻļā§āϰ⧠āĻāϰāĻŋāĨ¤
-## **Install conda**
-- Install `conda` by going to https://docs.conda.io/en/latest/miniconda.html and choose your operating system (Windows, Mac or Linux).
-- Download and run the installer to install `conda`.
+## **āĻāύāĻĄāĻž āĻāύāϏā§āĻāϞ**
+- `conda` āĻāύāϏā§āĻāϞ āĻāĻāĻžāύ⧠https://docs.conda.io/en/latest/miniconda.html. āĻāĻĒāύāĻŋ āĻ
āĻĒāĻžāϰā§āĻāĻŋāĻ āϏāĻŋāϏā§āĻā§āĻŽ āĻŦā§āĻā§ āύāĻŋāύ (āĻāĻāύā§āĻĄā§āϏ, āĻŽā§āϝāĻžāĻ āĻŦāĻž āϞāĻŋāύāĻžāĻā§āϏ).
+- āĻāύāϏā§āĻāϞ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāύāϏā§āĻāϞāĻžāϰāĻāĻŋ āĻĄāĻžāĻāύāϞā§āĻĄ āĻāϰā§āύ āĻāĻŦāĻ `conda` āĻāĻžāϞāĻžāύāĨ¤
-## **Create a new conda environment**
-Now that you have conda installed, let's create a conda environment for managing all the Python library dependencies.
+## **āĻāĻāĻāĻŋ āύāϤā§āύ āĻāύāĻĄāĻž āĻĒāϰāĻŋāĻŦā§āĻļ āϤā§āϰāĻŋ āĻāϰā§āύ**
-To create a new environment with Python 3.9, enter the following:
+āĻāĻāύ āϝā§āĻšā§āϤ⧠āĻāĻĒāύāĻŋ āĻāύāĻĄāĻž āĻāύāϏā§āĻāϞ āĻāϰā§āĻā§āύ, āĻāϏā§āύ āĻĒāĻžāĻāĻĨāύ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāϰ āϏāĻŽāϏā§āϤ āύāĻŋāϰā§āĻāϰāϤāĻž āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻāύāĻĄāĻž āĻĒāϰāĻŋāĻŦā§āĻļ āϤā§āϰāĻŋ āĻāϰāĻŋāĨ¤
+
+āĻĒāĻžāĻāĻĨāύ ā§Š.⧝ āĻāϰ āϏāĻžāĻĨā§ āĻāĻāĻāĻŋ āύāϤā§āύ āĻĒāϰāĻŋāĻŦā§āĻļ āϤā§āϰāĻŋ āĻāϰāϤā§, āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤāĻāĻŋ āĻĒā§āϰāĻŦā§āĻļ āĻāϰāĻžāύ:
```bash
conda create -n stenv python=3.9
```
-where `create -n stenv` will create a conda environment named `stenv` and `python=3.9` will setup the conda environment with Python version 3.9.
+āϝā§āĻāĻžāύ⧠`create -n stenv` āĻāĻāĻāĻŋ āĻāύāĻĄāĻž āĻĒāϰāĻŋāĻŦā§āĻļ āϤā§āϰāĻŋ āĻāϰāĻŦā§ āϝāĻžāϰ āύāĻžāĻŽ `stenv` āĻāĻŦāĻ `python=3.9` āϏā§āĻāĻāĻĒ āĻĒāϰāĻŋāĻŦā§āĻļ āϤā§āϰ⧠āĻāϰāĻŦā§ āϝāĻžāϰ āϏāĻāϏā§āĻāϰāĻŖ ā§Š.⧝āĨ¤
-## **Activate the conda environment**
+## **āĻāύāĻĄāĻž āĻĒāϰāĻŋāĻŦā§āĻļ āϏāĻā§āϰāĻŋāϝāĻŧ āĻāϰā§āύ**
-To use a conda environment that we had just created that is named `stenv`, enter the following into the command line:
+āϤā§āϰ⧠āĻāϰāĻž āĻāύāĻĄāĻž āĻĒāϰāĻŋāĻŦā§āĻļ āϝāĻžāϰ āύāĻžāĻŽ `stenv`, āĻā§āĻŽāĻžāύā§āĻĄ āϞāĻžāĻāύ⧠āĻāĻžāĻāĻĒ āĻāϰā§āύ:
```bash
conda activate stenv
```
-## **Install the Streamlit library**
+## **āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āĻāύāϏā§āĻāϞ āĻāϰā§āύ**
-It's now time to install the `streamlit` library:
+āĻāĻāύāĻŋ `streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āĻāύāϏā§āĻāϞ āĻāϰāĻžāϰ āϏāĻŽā§:
```bash
pip install streamlit
```
-## **Launching the Streamlit demo app**
-To launch the Streamlit demo app (Figure 1) type:
+## **āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ āĻāĻžāϞ⧠āĻāϰāĻž**
+āĻ
ā§āϝāĻžāĻĒ āĻāĻžāϞ⧠āĻāϰāϤā§:
```bash
streamlit hello
```
diff --git a/content/Day10.md b/content/Day10.md
index 40fd3be..f2f4968 100644
--- a/content/Day10.md
+++ b/content/Day10.md
@@ -1,22 +1,22 @@
# st.selectbox
-`st.selectbox` allows the display of a select widget.
+`st.selectbox` āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻŦāĻžāĻāĻŋāϤ āĻāĻāĻā§āĻ āĻĒā§āϰāĻĻāϰā§āĻļāύā§āϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧāĨ¤
-## What we're building?
+## āĻāĻŋ āϤā§āϰ⧠āĻāϰāĻāĻŋ āĻāĻŽāϰāĻž?
-A simple app that asks the user what their favorite color is.
+āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻ
ā§āϝāĻžāĻĒ āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻāĻŋāĻā§āĻāĻžāϏāĻž āĻāϰ⧠āϤāĻžāĻĻā§āϰ āĻĒā§āϰāĻŋāϝāĻŧ āϰāĻ āĻā§āĨ¤
-Flow of the app:
-1. User selects a color
-2. App prints out the selected color
+āĻ
ā§āϝāĻžāĻĒā§āϰ āĻĒā§āϰāĻŦāĻžāĻš:
+1. āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻāĻāĻāĻŋ āϰāĻ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰā§
+2. āĻ
ā§āϝāĻžāĻĒ āύāĻŋāϰā§āĻŦāĻžāĻāĻŋāϤ āϰāĻ āĻĒā§āϰāĻŋāύā§āĻ āĻāϰā§
-## Demo app
-The deployed Streamlit app should look something like the one shown in the below link:
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
+āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒāĻāĻŋ āύā§āĻā§āϰ āϞāĻŋāĻā§āĻā§ āĻĻā§āĻāĻžāύā§āϰ āĻŽāϤ⧠āĻĻā§āĻāϤ⧠āĻšāĻŦā§:
[](https://share.streamlit.io/dataprofessor/st.selectbox/)
-## Code
-Here's the code to implement the above mentioned app:
+## āĻā§āĻĄ
+āĻāĻĒāϰ⧠āĻāϞā§āϞāĻŋāĻāĻŋāϤ āĻ
ā§āϝāĻžāĻĒāĻāĻŋ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āĻāϰāĻžāϰ āĻā§āĻĄ āĻāĻāĻžāύā§:
```python
import streamlit as st
@@ -29,35 +29,35 @@ option = st.selectbox(
st.write('Your favorite color is ', option)
```
-## Line-by-line explanation
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` like so:
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
+āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĒā§āϰāĻĨāĻŽ āĻāĻŋāύāĻŋāϏāĻāĻŋ āĻšāϞ⧠`streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ `st` āĻšāĻŋāϏā§āĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž:
```python
import streamlit as st
```
-This is followed by creating a header text for the app:
+āĻ
ā§āϝāĻžāĻĒ āĻšā§āĻĄāĻžāϰ āϤā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ:
```python
st.header('st.selectbox')
```
-Next, we will create a variable called `option` that will accept user input in the form of a **select** input widget via the `st.selectbox()` command.
+āϤāĻžāϰāĻĒāϰ `option` āύāĻžāĻŽā§āϰ āĻā§āϝāĻžāϰāĻŋā§ā§āĻŦāϞ āϤā§āϰ⧠āĻāϰā§āύ āϝā§āĻāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻĨā§āĻā§ āĻāύāĻĒā§āĻ āύā§āĻŦā§ **select** āĻāύāĻĒā§āĻ āĻāĻāĻā§āĻ āĻĻā§āĻŦāĻžāϰāĻž `st.selectbox()` āĻāĻŽāĻžāύā§āĻĄā§āϰ āϏāĻžāĻĨā§āĨ¤
```python
option = st.selectbox(
'What is your favorite color?',
('Blue', 'Red', 'Green'))
```
-As we can see from the above code box, the `st.selectbox()` command accepts 2 input arguments:
-1. The text that goes above the select widget, i.e. `'What is your favorite color?'`
-2. The possible values to select from `('Blue', 'Red', 'Green')`
+āĻāĻŽāϰāĻž āĻĻā§āĻāϤ⧠āĻĒāĻžāĻā§āĻāĻŋ āϝ⧠`st.selectbox()` āĻāĻŽāĻžāύā§āĻĄ ⧍āĻāĻŋ āĻāϰā§āĻā§āĻŽā§āĻŖā§āĻ āύāĻŋāĻā§āĻā§:
+1. āϝ⧠āĻā§āĻā§āϏāĻāĻāĻŋ āϏāĻŋāϞā§āĻā§āĻ āĻāĻāĻā§āĻā§āϰ āĻāĻĒāϰ⧠āϝāĻžāϝāĻŧ, āϝāĻž āύāĻžāĻāĻŋ `'āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻŋāϝāĻŧ āϰāĻ āĻāĻŋ?'`
+2. āĻāĻ āĻ
āĻĒā§āĻļāύ āĻā§āϞāĻŋ āĻŦāĻžāĻāĻž āϝā§āϤ⧠āĻĒāĻžāϰ⧠`('āύā§āϞ', 'āϞāĻžāϞ', 'āϏāĻŦā§āĻ')`
-Finally, we'll print out the selected color as follows:
+āĻ
āĻŦāĻļā§āώā§, āĻāĻŽāϰāĻž āύāĻŋāϰā§āĻŦāĻžāĻāĻŋāϤ āϰāĻāĻāĻŋ āύāĻŋāĻŽā§āύāϰā§āĻĒ āĻĒā§āϰāĻŋāύā§āĻ āĻāĻāĻ āĻāϰāĻŦ:
```python
st.write('Your favorite color is ', option)
```
-## Next steps
-Now that you have created the Streamlit app locally, it's time to deploy it to [Streamlit Community Cloud](https://streamlit.io/cloud).
+## āĻĒāϰāĻŦāϰā§āϤ⧠āĻĒāĻĻāĻā§āώā§āĻĒ
+āĻāĻāύ āĻāĻĒāύāĻŋ āϏā§āĻĨāĻžāύā§āϝāĻŧāĻāĻžāĻŦā§ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰā§āĻā§āύ, āĻāĻāĻŋ āĻāĻāĻŋ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ [Streamlit Community Cloud](https://streamlit.io/cloud).
-## References
-More about [`st.selectbox`](https://docs.streamlit.io/library/api-reference/widgets/st.selectbox)
+## āϤāĻĨā§āϝāϏā§āϤā§āϰ
+āĻāϰ⧠āĻĻā§āĻā§āύ [`st.selectbox`](https://docs.streamlit.io/library/api-reference/widgets/st.selectbox)
diff --git a/content/Day11.md b/content/Day11.md
index 86c5b63..8edecd4 100644
--- a/content/Day11.md
+++ b/content/Day11.md
@@ -1,13 +1,13 @@
# st.multiselect
-`st.multiselect` displays a multiselect widget.
+`st.multiselect` āĻāĻāĻāĻŋ āĻŽāĻžāϞā§āĻāĻŋāϏāĻŋāϞā§āĻā§āĻ āĻāĻāĻā§āĻ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰā§āĨ¤
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
[](https://share.streamlit.io/dataprofessor/st.multiselect/)
-## Code
-Here's how to use `st.multiselect`:
+## āĻā§āĻĄ
+āĻāĻŋāύā§āϤāĻžāϰ āĻāĻžāϰāĻŖ āύā§āĻāĨ¤ āĻāĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ `st.multiselect`:
```python
import streamlit as st
@@ -21,18 +21,18 @@ options = st.multiselect(
st.write('You selected:', options)
```
-## Line-by-line explanation
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` like so:
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻĨāĻŽ āĻāĻŋāύāĻŋāϏāĻāĻŋ āĻšāϞ⧠`streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ `st` āĻšāĻŋāϏā§āĻŦā§ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž:
```python
import streamlit as st
```
-This is followed by creating a header text for the app:
+āϤāĻžāϰāĻĒāϰ āĻšā§āĻĄāĻžāϰ āϤā§āϰ⧠āĻāϰāϤā§:
```python
st.header('st.multiselect')
```
-Next, we're going to use the `st.multiselect` widget to accept input where users will be able to select one or more colors of there choice.
+āϤāĻžāϰāĻĒāϰ `st.multiselect` āĻāĻāĻā§āĻ āϝāĻž āϤāĻŋāύāĻāĻŋ āĻ
āĻĒā§āĻļāύ āĻĻā§āĻāĻžāĻŦā§, āϤāĻžāϰ āĻā§āĻĄ āĻāĻāĻŋāĨ¤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϤāĻŋāύāĻāĻŋāϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ āϰāĻ āĻŦā§āĻā§ āύā§āĻŦā§āĨ¤
```python
options = st.multiselect(
@@ -41,10 +41,10 @@ options = st.multiselect(
['Yellow', 'Red'])
```
-Finally, we'll write out the selected colors:
+āĻ
āĻŦāĻļā§āώā§, āĻāĻŽāϰāĻž āύāĻŋāϰā§āĻŦāĻžāĻāĻŋāϤ āϰāĻ āϞāĻŋāĻāĻŦ:
```python
st.write('You selected:', options)
```
-## Further reading
+## āĻāϰāĻ āĻĒāĻĄāĻŧāĻž
- [`st.multiselect`](https://docs.streamlit.io/library/api-reference/widgets/st.multiselect)
diff --git a/content/Day12.md b/content/Day12.md
index bf5962b..36dee3e 100644
--- a/content/Day12.md
+++ b/content/Day12.md
@@ -1,13 +1,13 @@
# st.checkbox
-`st.checkbox` displays a checkbox widget.
+`st.checkbox` āĻā§āĻāĻŦāĻā§āϏ āĻāĻāĻā§āĻ āĻĻā§āĻāĻžā§āĨ¤
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
[](https://share.streamlit.io/dataprofessor/st.checkbox/)
-## Code
-Here's how to use `st.checkbox`:
+## āĻā§āĻĄ
+`st.checkbox` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ:
```python
import streamlit as st
@@ -29,30 +29,30 @@ if cola:
st.write("Here you go đĨ¤")
```
-## Line-by-line explanation
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` like so:
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻĨāĻŽ āĻāĻŋāύāĻŋāϏāĻāĻŋ āĻšāϞ⧠`streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ `st` āĻšāĻŋāϏā§āĻŦā§ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž:
```python
import streamlit as st
```
-This is followed by creating a header text for the app:
+āϤāĻžāϰāĻĒāϰ āĻšā§āĻĄāĻžāϰ āϤā§āϰ⧠āĻāϰāϤā§:
```python
st.header('st.checkbox')
```
-Next, we're going to ask a question via `st.write':
+āĻāĻāĻāĻŋ āĻĒā§āϰāĻļā§āύ āĻāĻŋāĻā§āĻāĻžāϏāĻž āĻāϰā§āύ `st.write' āĻĻā§āĻŦāĻžāϰāĻž:
```python
st.write ('What would you like to order?')
```
-We're then going to provide some menu items to tick on:
+āĻāĻŽāϰāĻž āϤāĻžāϰāĻĒāϰ⧠āĻāĻŋāĻ āĻĻā§āĻāϝāĻŧāĻžāϰ āĻāύā§āϝ āĻāĻŋāĻā§ āĻŽā§āύ⧠āĻāĻāĻā§āĻŽ āϏāϰāĻŦāϰāĻžāĻš āĻāϰāϤ⧠āϝāĻžāĻā§āĻāĻŋ:
```python
icecream = st.checkbox('Ice cream')
coffee = st.checkbox('Coffee')
cola = st.checkbox('Cola')
```
-Finally, we're going to print custom text depending on which checkbox was ticked on:
+āĻ
āĻŦāĻļā§āώā§, āĻā§āύ āĻā§āĻāĻŦāĻā§āϏ⧠āĻāĻŋāĻ āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧā§āĻā§ āϤāĻžāϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰ⧠āĻāĻŽāϰāĻž āĻāĻžāϏā§āĻāĻŽ āĻā§āĻā§āϏāĻ āĻĒā§āϰāĻŋāύā§āĻ āĻāϰāϤ⧠āϝāĻžāĻā§āĻāĻŋ:
```python
if icecream:
st.write("Great! Here's some more đĻ")
@@ -64,5 +64,5 @@ if cola:
st.write("Here you go đĨ¤")
```
-## Further reading
+## āĻāϰāĻ āĻĒāĻĄāĻŧāĻž
- [`st.checkbox`](https://docs.streamlit.io/library/api-reference/widgets/st.checkbox)
diff --git a/content/Day13.md b/content/Day13.md
index 525b3bc..b814af6 100644
--- a/content/Day13.md
+++ b/content/Day13.md
@@ -1,12 +1,13 @@
-# Spin up a cloud development environment
+# āĻā§āϞāĻžāĻāĻĄ āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻŦāĻžāύāĻžāύ
### GitPod
-To spin up a development environment on the cloud, we can use [GitPod](https://www.gitpod.io/) and this can be done simply by clicking on the following link:
-- Try it đ https://gitpod.io/#/https://github.com/dataprofessor/streamlit101/
+āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻŦāĻžāύāĻžāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ [GitPod](https://www.gitpod.io/):
+- āĻā§āώā§āĻāĻž āĻāϰ⧠āĻĻā§āĻā§āύ đ https://gitpod.io/#/https://github.com/dataprofessor/streamlit101/
-As you can see from the URL above, a GitHub repo URL is appended after `https://gitpod.io/#/` which essentially allow GitPod to spin up a development environment using instructions contained within the GitHub repo URL (namely in the `requirements.txt` file that specifically lists the Python libraries to install).
-> Note: There are other similar cloud development environment such as:
+āĻāĻĒāύāĻŋ āύāĻŋāĻļā§āĻāĻ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻā§āĻā§āύ āĻāĻŋāĻāĻšāĻžāĻŦ āϰā§āĻĒā§ `https://gitpod.io/#/` āϞāĻŋāĻā§āĻāĻāĻŋāϰ āĻĒāϰ āϞāĻžāĻāĻžāύ⧠āĻāĻā§āĨ¤ āϤāĻž āĻāϰ⧠GitPod āĻāĻāĻāĻŋ āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻ āĻāύāĻāĻžā§āϰāύāĻŽā§āύā§āĻ āϤā§āϰ⧠āĻāϰāĻŦā§ āĻāĻŋāĻāĻšāĻžāĻŦ āϰā§āĻĒā§ āĻĨā§āĻā§ āύāĻŋāϰā§āĻĻā§āĻļāĻžāĻŦāϞ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤ (`requirements.txt` āĻĢāĻžāĻāϞ⧠āĻā§āύ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āĻā§āϞ⧠āĻāύāϏā§āĻāϞ āĻāϰāϤ⧠āĻšāĻŦā§)āĨ¤
+
+> āĻĻā§āϰāώā§āĻāĻŦā§āϝ: āĻ
āύā§āϝāĻžāύā§āϝ āĻ
āύā§āϰā§āĻĒ āĻā§āϞāĻžāĻāĻĄ āĻāύā§āύāϝāĻŧāύ āĻĒāϰāĻŋāĻŦā§āĻļ āϰāϝāĻŧā§āĻā§ āϝā§āĻŽāύ:
> - [GitHub Codespaces](https://docs.github.com/en/codespaces/setting-up-your-project-for-codespaces/setting-up-your-python-project-for-codespaces)
> - [Replit](https://replit.com/)
> - [Cloud9](https://aws.amazon.com/cloud9/)
diff --git a/content/Day14.md b/content/Day14.md
index e6a9128..fcf6f27 100644
--- a/content/Day14.md
+++ b/content/Day14.md
@@ -1,31 +1,31 @@
# Streamlit Components
-Components are third-party Python modules that extend what's possible with Streamlit [[1](https://docs.streamlit.io/library/components)].
+āĻāĻĒāĻžāĻĻāĻžāύāĻā§āϞāĻŋ āĻšāϞ āϤā§āϤā§āϝāĻŧ āĻĒāĻā§āώā§āϰ āĻĒāĻžāĻāĻĨāύ āĻŽāĻĄāĻŋāĻāϞ āϝāĻž āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§āϰ āϏāĻžāĻĨā§ āϝāĻž āϏāĻŽā§āĻāĻŦ āϤāĻž āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻāϰ⧠[[1](https://docs.streamlit.io/library/components)]āĨ¤
-## What Streamlit components are available?
+## āĻāĻŋ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāĻĒāĻžāĻĻāĻžāύ āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāϝāĻŧ?
-There are several dozens of Streamlit components featured on Streamlit's website [[2](https://streamlit.io/components)].
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§āϰ āĻāϝāĻŧā§āĻŦāϏāĻžāĻāĻā§ āĻŦā§āĻļ āĻāϝāĻŧā§āĻ āĻĄāĻāύ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāĻĒāĻžāĻĻāĻžāύ āϰāϝāĻŧā§āĻā§ [[2](https://streamlit.io/components)].
-Fanilo (a Streamlit Creator) curated an amazing list of Streamlit components on a wiki post [[3](https://discuss.streamlit.io/t/streamlit-components-community-tracker/4634)] that lists about 85 Streamlit components as of April 2022.
+āĻĢā§āϝāĻžāύāĻŋāϞā§āϰ āĻāĻāĻāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāϰā§āύ āϝā§āĻāĻžāύ⧠āĻĒā§āϰāĻžā§ ā§Žā§ĢāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāύ āĻāĻā§ [[3](https://discuss.streamlit.io/t/streamlit-components-community-tracker/4634)]āĨ¤
-## How to use?
+## āĻāĻŋāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§?
-Streamlit components are just a pip-install away.
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāĻĒāĻžāĻĻāĻžāύāĻā§āϞāĻŋ āĻā§āĻŦāϞ āĻāĻāĻāĻŋ āĻĒāĻŋāĻĒ-āĻāύāϏā§āĻāϞ āĻĻā§āϰā§āĨ¤
-In this tutorial, let's get you started in using the `streamlit_pandas_profiling` component [[4](https://share.streamlit.io/okld/streamlit-gallery/main?p=pandas-profiling)].
+āĻāĻ āĻāĻŋāĻāĻā§āϰāĻŋā§āĻžāϞ⧠`streamlit_pandas_profiling` āĻāĻĒāĻžāĻĻāĻžāύ āĻĻā§āĻāϤ⧠āĻĒāĻžāϰā§āύ [[4](https://share.streamlit.io/okld/streamlit-gallery/main?p=pandas-profiling)].
-#### Install the component
+#### āĻāĻŽā§āĻĒā§āύā§āύā§āĻ āĻāύāϏā§āĻāϞ āĻāϰā§āύ
```bash
pip install streamlit_pandas_profiling
```
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
[](https://share.streamlit.io/dataprofessor/streamlit-components/)
-## Code
-Here's how to build a Streamlit app using a component:
+## āĻā§āĻĄ
+āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āĻā§āĻāĻžāĻŦā§ āϤā§āϰāĻŋ āĻāϰāĻŦā§āύ āϤāĻž āĻāĻāĻžāύā§:
```python
import streamlit as st
import pandas as pd
@@ -40,8 +40,8 @@ pr = df.profile_report()
st_profile_report(pr)
```
-## Line-by-line explanation
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` as well as other libraries used in the app like so:
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻĨāĻŽ āĻāĻŋāύāĻŋāϏāĻāĻŋ āĻšāϞ⧠`streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ `st` āĻšāĻŋāϏā§āĻŦā§ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž āĻāĻŦāĻ āĻ
āύā§āύāĻžāύā§āϝ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž:
```python
import streamlit as st
import pandas as pd
@@ -49,35 +49,35 @@ import pandas_profiling
from streamlit_pandas_profiling import st_profile_report
```
-This is followed by creating a header text for the app:
+āϤāĻžāϰāĻĒāϰ āĻšā§āĻĄāĻžāϰ āĻā§āĻā§āϏāĻ āĻŦāĻžāύāĻžāύ:
```python
st.header('`streamlit_pandas_profiling`')
```
-Next, we load in the Penguins dataset using the `read_csv` command of `pandas`.
+āĻšā§āĻĄāĻžāϰ āĻŦāĻžāύāĻžāύā§āϰ āĻĒāϰ āĻĒā§āĻā§āĻā§āĻāύāϏ āĻĄāĻžāĻāĻžāϏā§āĻ āϞā§āĻĄ āĻāϰā§āύ `read_csv` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϝāĻž `pandas` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāϤ⧠āĻĒāĻžāĻā§āĻž āϝāĻžā§āĨ¤ .
```python
df = pd.read_csv('https://raw.githubusercontent.com/dataprofessor/data/master/penguins_cleaned.csv')
```
-Finally, the pandas profiling report is generated via the `profile_report()` command and displayed using `st_profile_report`:
+āĻĒāĻžāύā§āĻĄāĻžāϰ `profile_report()` āĻāĻŽāĻžāύā§āĻĄ āĻĻāĻŋā§ā§ āĻĒā§āϰā§āĻĢāĻžāĻāϞ āϰāĻŋāĻĒā§āϰā§āĻ āϤā§āϰ⧠āĻāϰā§āύ āĻāĻŦāĻ āĻĻā§āĻāĻžāύā§āϰ āĻāύā§āϝ āĻāĻ āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ `st_profile_report`:
```python
pr = df.profile_report()
st_profile_report(pr)
```
-## Making your own Components
+## āĻāĻĒāύāĻžāϰ āύāĻŋāĻāϏā§āĻŦ āĻāĻĒāĻžāĻĻāĻžāύ āϤā§āϰāĻŋ
-If you're interested in making your own component, please check out the following resources:
+āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āύāĻŋāĻā§āϰ āĻāĻĒāĻžāĻĻāĻžāύ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻāĻā§āϰāĻšā§ āĻšāύ, āĻ
āύā§āĻā§āϰāĻš āĻāϰ⧠āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āϏāĻāϏā§āĻĨāĻžāύāĻā§āϞāĻŋ āĻĻā§āĻā§āύ:
- [Create a Component](https://docs.streamlit.io/library/components/create)
- [Publish a Component](https://docs.streamlit.io/library/components/publish)
- [Components API](https://docs.streamlit.io/library/components/components-api)
- [Blog post on Components](https://blog.streamlit.io/introducing-streamlit-components/)
-Alternatively, if you prefer to learn using videos, our engineer Tim Conkling has put together some amazing tutorials:
+āĻŦāĻŋāĻāϞā§āĻĒāĻāĻžāĻŦā§, āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻŋāĻĄāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻļāĻŋāĻāϤ⧠āĻĒāĻāύā§āĻĻ āĻāϰā§āύ, āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰāĻā§āĻļāϞ⧠āĻāĻŋāĻŽ āĻāύāĻā§āϞāĻŋāĻ āĻāĻŋāĻā§ āĻāĻļā§āĻāϰā§āϝāĻāύāĻ āĻāĻŋāĻāĻā§āϰāĻŋāϝāĻŧāĻžāϞ āĻāĻāϤā§āϰ āĻāϰā§āĻā§āύ:
- [How to build a Streamlit component | Part 1: Setup and Architecture](https://youtu.be/BuD3gILJW-Q)
- [How to build a Streamlit component | Part 2: Part 2: Make a Slider Widget](https://youtu.be/QjccJl_7Jco)
-## Further reading about Components
+## āĻāĻĒāĻžāĻĻāĻžāύ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰāĻ āĻĒāĻĄāĻŧāĻž
1. [Streamlit Components - API Documentation](https://docs.streamlit.io/library/components)
2. [Featured Streamlit Components](https://streamlit.io/components)
3. [Streamlit Components - Community Tracker](https://discuss.streamlit.io/t/streamlit-components-community-tracker/4634)
diff --git a/content/Day15.md b/content/Day15.md
index 62f3cd1..657bfcd 100644
--- a/content/Day15.md
+++ b/content/Day15.md
@@ -1,16 +1,16 @@
# st.latex
-`st.latex` display mathematical expressions formatted as LaTeX.
+`st.latex` āĻ
āĻāĻā§āϰ āĻĢāϰā§āĻŽā§āϞāĻž āϞā§āϝāĻžāĻā§āĻā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĻā§āĻāĻžā§āĨ¤
-## What we're building?
+## āĻāĻŋ āĻŦāĻžāύāĻžāĻā§āĻāĻŋ āĻāĻŽāϰāĻž?
-A simple app that displays a mathematical equation using LaTeX syntax via the `st.latex` command.
+āĻāĻāĻāĻŋ āϏāĻšāĻ āĻ
ā§āϝāĻžāĻĒ āϝāĻž LaTeX āϏāĻŋāύāĻā§āϝāĻžāĻā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻāĻŋ āĻāĻžāĻŖāĻŋāϤāĻŋāĻ āϏāĻŽā§āĻāϰāĻŖ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰ⧠`st.latex` āĻāĻŽāĻžāύā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤.
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
[](https://share.streamlit.io/dataprofessor/st.latex/)
-## Code
-Here's how to use `st.latex`:
+## āĻā§āĻĄ
+āĻāĻŋāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻšāϝāĻŧ `st.latex`:
```python
import streamlit as st
@@ -23,18 +23,18 @@ st.latex(r'''
''')
```
-## Line-by-line explanation
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` like so:
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻĨāĻŽ āĻāĻŋāύāĻŋāϏāĻāĻŋ āĻšāϞ⧠`streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ `st` āĻšāĻŋāϏā§āĻŦā§ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž:
```python
import streamlit as st
```
-This is followed by creating a header text for the app:
+āϤāĻžāϰāĻĒāϰ āĻšā§āĻĄāĻžāϰ āϤā§āϰ⧠āĻāϰāϤā§:
```python
st.header('st.latex')
```
-Next, we're displaying the mathematical equation via `st.latex`:
+āĻ
āĻāĻā§āϰ āĻĢāϰā§āĻŽā§āϞāĻž `st.latex` āĻĻāĻŋā§ā§ āĻĻā§āĻāĻžāύ:
```python
st.latex(r'''
a + ar + a r^2 + a r^3 + \cdots + a r^{n-1} =
@@ -43,5 +43,5 @@ st.latex(r'''
''')
```
-## References
-- Read more about [`st.latex`](https://docs.streamlit.io/library/api-reference/text/st.latex) in the Streamlit API Documentation.
+## āϤāĻĨā§āϝāϏā§āϤā§āϰ
+- āĻāϰ⧠āĻĒā§ā§āύ [`st.latex`](https://docs.streamlit.io/library/api-reference/text/st.latex) āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ API āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύā§āĨ¤
diff --git a/content/Day16.md b/content/Day16.md
index 1353f2a..ae70730 100644
--- a/content/Day16.md
+++ b/content/Day16.md
@@ -1,17 +1,17 @@
-# Customizing the theme of Streamlit apps
+# āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒā§āϰ āĻĨāĻŋāĻŽ āĻāĻžāϏā§āĻāĻŽāĻžāĻāĻ āĻāϰāĻž
We can customize the theme by adjusting parameters in `config.toml`, which is a configuration file stored in the same folder as the app in the `.streamlit` folder.
-## What we're building?
+## āĻāĻŋ āĻŦāĻžāύāĻžāĻā§āĻāĻŋ āĻāĻŽāϰāĻž?
-A simple app that shows the result of our theme customization. This is made possible by customizing the HTML HEX code inside the [`.streamlit/config.toml`](https://github.com/dataprofessor/streamlit-custom-theme/blob/master/.streamlit/config.toml) file.
+āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻ
ā§āϝāĻžāĻĒ āϝāĻž āĻĨāĻŋāĻŽ āĻāĻžāϏā§āĻāĻŽāĻžāĻāĻ āĻāϰā§āĨ¤ This is made possible by customizing the code inside the [`.streamlit/config.toml`](https://github.com/dataprofessor/streamlit-custom-theme/blob/master/.streamlit/config.toml) āĻāĻ āĻĢāĻžāĻāϞāĻāĻŋāϰ āĻā§āϤāϰ⧠HTML HEX āĻā§āĻĄ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŖ āĻāϰ⧠āϤāĻž āϏāĻŽā§āĻāĻŦ.
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
[](https://share.streamlit.io/dataprofessor/streamlit-custom-theme/)
-## Code
-Here's the code to the [`streamlit_app.py`](https://github.com/dataprofessor/streamlit-custom-theme/blob/master/streamlit_app.py) file:
+## āĻā§āĻĄ
+āĻ
ā§āϝāĻžāĻĒā§āϰ āĻā§āĻĄ āĻāĻāĻāĻžāύ⧠[`streamlit_app.py`](https://github.com/dataprofessor/streamlit-custom-theme/blob/master/streamlit_app.py):
```python
import streamlit as st
@@ -32,7 +32,7 @@ number = st.sidebar.slider('Select a number:', 0, 10, 5)
st.write('Selected number from slider widget is:', number)
```
-Here's the code to the [`.streamlit/config.toml`](https://github.com/dataprofessor/streamlit-custom-theme/blob/master/.streamlit/config.toml) file:
+āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĢāĻžāĻāϞā§āϰ āĻā§āĻĄ āĻāĻāĻāĻžāύ⧠[`.streamlit/config.toml`](https://github.com/dataprofessor/streamlit-custom-theme/blob/master/.streamlit/config.toml):
```python
[theme]
primaryColor="#F39C12"
@@ -42,18 +42,18 @@ textColor="#FFFFFF"
font="monospace"
```
-## Line-by-line explanation
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` like so:
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻĨāĻŽ āĻāĻŋāύāĻŋāϏāĻāĻŋ āĻšāϞ⧠`streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ `st` āĻšāĻŋāϏā§āĻŦā§ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž:
```python
import streamlit as st
```
-This is followed by creating a title text for the app:
+āϤāĻžāϰāĻĒāϰ āĻ
ā§āϝāĻžāĻĒā§āϰ āĻāύā§āϝ āĻāĻžāĻāĻā§āϞ āĻā§āĻā§āϏāĻ āĻŦāĻžāύāĻžāύ:
```python
st.title('Theming with config.toml')
```
-Next, we're going to show the contents of the `.streamlit/config.toml` file which we'll first display a note of this via `st.write` followed by the actual code via `st.code`:
+āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĢāĻžāĻāϞ `.streamlit/config.toml` āϤāĻžāϰ āĻŦāĻŋāώāϝāĻŧāĻŦāϏā§āϤ⧠`st.write` āĻĻāĻŋā§ā§ āĻĻā§āĻāĻžāύ āĻāĻŦāĻ āĻāϏāϞ āĻā§āĻĄā§āϰ āĻāύā§āϝ `st.code` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ:
```python
st.write('Contents of the ./streamlit/config.toml file of this app')
@@ -67,20 +67,20 @@ font="monospace"
""")
```
-Finally, we're creating a slider widget in the sidebar followed by displaying the selected number:
+āĻ
āĻŦāĻļā§āώā§, āĻāĻŽāϰāĻž āύāĻŋāϰā§āĻŦāĻžāĻāĻŋāϤ āύāĻŽā§āĻŦāϰ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰ⧠āϏāĻžāĻāĻĄāĻŦāĻžāϰ⧠āĻāĻāĻāĻŋ āϏā§āϞāĻžāĻāĻĄāĻžāϰ āĻāĻāĻā§āĻ āϤā§āϰāĻŋ āĻāϰāĻāĻŋ:
```python
number = st.sidebar.slider('Select a number:', 0, 10, 5)
st.write('Selected number from slider widget is:', number)
```
-Let's now take a look at the custom colors that we've used in this app, which is specified in the `.streamlit/config.toml` file:
-- `primaryColor="#F39C12"` - This sets the primary color to orange. Notice the orange colors in the slider widget.
-- `backgroundColor="#2E86C1"` - This sets the background color to blue. Notice the main panel has a blue background color.
-- `secondaryBackgroundColor="#AED6F1"` - This sets the secondary background color to dark gray. Notice the gray background color of the sidebar and the background color of the code box in the main panel.
-- `textColor="#FFFFFF"` - The text color is set to white.
-- `font="monospace"` - This sets the font to monospace.
+āĻāϏā§āύ āĻāĻāύ āĻāĻŽāϰāĻž āĻāĻ āĻ
ā§āϝāĻžāĻĒāĻāĻŋāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĻāĻŋ āĻāĻŽāύ āĻāĻžāϏā§āĻāĻŽ āϰāĻāĻā§āϞāĻŋ āĻĻā§āĻā§ āύā§āĻāϝāĻŧāĻž āϝāĻžāĻ `.streamlit/config.toml` āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĢāĻžāĻāϞā§:
+- `primaryColor="#F39C12"` - āĻāĻāĻŋ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āϰāĻ āĻāĻŽāϞāĻž āϏā§āĻ āĻāϰā§āĨ¤ āϏā§āϞāĻžāĻāĻĄāĻžāϰ āĻāĻāĻā§āĻā§ āĻāĻŽāϞāĻž āϰāĻāĻā§āϞāĻŋ āϞāĻā§āώā§āϝ āĻāϰā§āύāĨ¤
+- `backgroundColor="#2E86C1"` - āĻāĻāĻŋ āĻĒāĻāĻā§āĻŽāĻŋāϰ āϰāĻāĻā§ āύā§āϞ⧠āϏā§āĻ āĻāϰā§āĨ¤ āϞāĻā§āώā§āϝ āĻāϰā§āύ āĻŽā§āϞ āĻĒā§āϝāĻžāύā§āϞ⧠āĻāĻāĻāĻŋ āύā§āϞ āĻĒāĻāĻā§āĻŽāĻŋāϰ āϰāĻ āϰāϝāĻŧā§āĻā§āĨ¤
+- `secondaryBackgroundColor="#AED6F1"` - āĻāĻāĻŋ āϏā§āĻā§āύā§āĻĄāĻžāϰāĻŋ āĻĒāĻāĻā§āĻŽāĻŋāϰ āϰāĻāĻā§ āĻāĻžāĻĸāĻŧ āϧā§āϏāϰ⧠āϏā§āĻ āĻāϰā§āĨ¤ āϏāĻžāĻāĻĄāĻŦāĻžāϰā§āϰ āϧā§āϏāϰ āĻĒāĻāĻā§āĻŽāĻŋāϰ āϰāĻ āĻāĻŦāĻ āĻĒā§āϰāϧāĻžāύ āĻĒā§āϝāĻžāύā§āϞ⧠āĻā§āĻĄ āĻŦāĻā§āϏā§āϰ āĻĒāĻāĻā§āĻŽāĻŋāϰ āϰāĻ āϞāĻā§āώā§āϝ āĻāϰā§āύāĨ¤
+- `textColor="#FFFFFF"` - āĻĒāĻžāĻ ā§āϝā§āϰ āϰāĻ āϏāĻžāĻĻāĻžāϤ⧠āϏā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
+- `font="monospace"` - āĻāĻāĻŋ āĻĢāύā§āĻāĻāĻŋāĻā§ āĻŽāύā§āϏā§āĻĒā§āϏ⧠āϏā§āĻ āĻāϰā§āĨ¤
-## Further reading
+## āĻāϰāĻ āĻĒāĻĄāĻŧāĻž
- [Theming](https://docs.streamlit.io/library/advanced-features/theming)
-- [HTML Color Codes](https://htmlcolorcodes.com/) is a great tool for selecting colors of interest.
+- [HTML Color Codes](https://htmlcolorcodes.com/) āĻāĻā§āϰāĻšā§āϰ āϰāĻ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻĻā§āϰā§āĻĻāĻžāύā§āϤ āĻšāĻžāϤāĻŋāϝāĻŧāĻžāϰāĨ¤
diff --git a/content/Day17.md b/content/Day17.md
index f5c2cc9..de91012 100644
--- a/content/Day17.md
+++ b/content/Day17.md
@@ -1,13 +1,13 @@
# st.secrets
-`st.secrets` allows you to store confidential information such as API keys, database passwords or other credentials.
+`st.secrets` āĻā§āĻĒāύā§ā§ āϤāĻĨā§āϝ āϝā§āĻŽāύ API keys, database passwords āĻŦāĻž āĻ
āύā§āϝāĻžāύā§āϝ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āϤāĻĨā§āϝāĨ¤
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
[](https://share.streamlit.io/dataprofessor/st.secrets/)
-## Code
-Here's how to use `st.secrets`:
+## āĻā§āĻĄ
+āĻāĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ `st.secrets`:
```python
import streamlit as st
@@ -16,26 +16,26 @@ st.title('st.secrets')
st.write(st.secrets['message'])
```
-## Line-by-line explanation
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` like so:
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻĨāĻŽ āĻāĻŋāύāĻŋāϏāĻāĻŋ āĻšāϞ⧠`streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ `st` āĻšāĻŋāϏā§āĻŦā§ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž:
```python
import streamlit as st
```
-This is followed by creating a title text for the app:
+āϤāĻžāϰāĻĒāϰ āĻāĻžāĻāĻā§āϞ āĻā§āĻā§āϏāĻ āĻŦāĻžāύāĻžāύ:
```python
st.title('st.secrets')
```
-Finally, we'll be displaying the stored secrets:
+āĻ
āĻŦāĻļā§āώā§, āĻāĻŽāϰāĻž āϏāĻā§āĻāĻŋāϤ āĻā§āĻĒāύā§āϝāĻŧāϤāĻž āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻŦ:
```python
st.write(st.secrets['message'])
```
-It should be noted that, secrets can be stored in Streamlit Community Cloud as shown in the screenshots shown below.
+āĻāĻāĻŋ āĻāϞā§āϞā§āĻ āĻāϰāĻž āĻāĻāĻŋāϤ āϝā§, āύā§āĻā§ āĻĻā§āĻāĻžāύ⧠āϏā§āĻā§āϰāĻŋāύāĻļāĻāĻā§āϞāĻŋāϤ⧠āĻĻā§āĻāĻžāύ⧠āĻšāĻŋāϏāĻžāĻŦā§ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāĻŽāĻŋāĻāύāĻŋāĻāĻŋ āĻā§āϞāĻžāĻāĻĄā§ āĻā§āĻĒāύā§āϝāĻŧāϤāĻžāĻā§āϞāĻŋ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
-If working locally, they can be stored in `.streamlit/secrets.toml`, but make sure to avoid uploading this to a GitHub repo when deploying the app.
+āϏā§āĻĨāĻžāύā§āϝāĻŧāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰāϞ⧠āϤāĻĨā§āϝāĻā§āϞ⧠`.streamlit/secrets.toml` āĻāĻāĻāĻžāύ⧠āϰāĻžāĻā§āύ , āĻāĻŋāύā§āϤ⧠āĻŽāύ⧠āϰāĻžāĻāĻŦā§āύ āϝ⧠āĻāĻŋāĻāĻšāĻžāĻŦ āϰā§āĻĒā§āϤ⧠āĻĄāĻŋāĻĒā§āϞ⧠āĻāϰāĻžāϰ āϏāĻŽā§ āĻāĻ āĻĢāĻžāĻāϞāĻāĻŋ āĻāĻĒāϞā§āĻĄ āĻāϰāĻŦā§āύ āύāĻžāĨ¤
-## Further reading
-- [Add secrets to your Streamlit apps](https://blog.streamlit.io/secrets-in-sharing-apps/)
-- [Secrets management](https://docs.streamlit.io/streamlit-cloud/get-started/deploy-an-app/connect-to-data-sources/secrets-management)
+## āĻāϰāĻ āĻĒāĻĄāĻŧāĻž
+- [āĻāĻĒāύāĻžāϰ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒā§ āĻā§āĻĒāύā§āϝāĻŧāϤāĻž āϝā§āĻ āĻāϰā§āύ](https://blog.streamlit.io/secrets-in-sharing-apps/)
+- [āĻā§āĻĒāύ āĻŦā§āϝāĻŦāϏā§āĻĨāĻžāĻĒāύāĻž](https://docs.streamlit.io/streamlit-cloud/get-started/deploy-an-app/connect-to-data-sources/secrets-management)
diff --git a/content/Day18.md b/content/Day18.md
index 0f86239..33d2336 100644
--- a/content/Day18.md
+++ b/content/Day18.md
@@ -1,15 +1,15 @@
# st.file_uploader
-`st.file_uploader` displays a file uploader widget [[1](https://docs.streamlit.io/library/api-reference/widgets/st.file_uploader)].
+`st.file_uploader` āĻĢāĻžāĻāϞ āĻĻā§āĻāĻžā§ āĻāĻĒā§āϞā§āĻĄāĻžāϰ āĻāĻāĻā§āĻ āĻĻā§āĻŦāĻžāϰāĻžāĨ¤ [[1](https://docs.streamlit.io/library/api-reference/widgets/st.file_uploader)].
-By default, uploaded files are limited to 200MB. You can configure this using the server.maxUploadSize config option. For more info on how to set config options, see [[2](https://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options)].
+āĻāϤāĻžāύā§āĻāϤāĻŋāĻ āĻāĻžāĻŦā§ āĻāĻĒāϞā§āĻĄ āĻāϰāĻž āĻĢāĻžāĻāϞ ⧍ā§Ļā§Ļ MB āĻĒāϰā§āϝāύā§āϤ āϏā§āĻŽāĻžāĻŦāĻĻā§āϧāĨ¤ āĻāĻĒāύāĻŋ server.maxUploadSize āĻāύāĻĢāĻŋāĻāĻžāϰ āĻ
āĻĒāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻŋ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻŦāĻŋāĻāϞā§āĻĒāĻā§āϞāĻŋ āĻā§āĻāĻžāĻŦā§ āϏā§āĻ āĻāϰāĻŦā§āύ āϏ⧠āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰāĻ āϤāĻĨā§āϝā§āϰ āĻāύā§āϝ, āĻĻā§āĻā§āύāĨ¤ [[2](https://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options)].
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
[](https://share.streamlit.io/dataprofessor/st.file_uploader/)
-## Code
-Here's how to use `st.file_uploader`:
+## āĻā§āĻĄ
+āĻāĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ `st.file_uploader`:
```python
import streamlit as st
import pandas as pd
@@ -29,25 +29,25 @@ else:
st.info('âī¸ Upload a CSV file')
```
-## Line-by-line explanation
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` and other prerequisite library like so:
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻĨāĻŽ āĻāĻŋāύāĻŋāϏāĻāĻŋ āĻšāϞ⧠`streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ `st` āĻšāĻŋāϏā§āĻŦā§ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž āĻāĻŦāĻ āĻ
āύā§āύāĻžāύā§āϝ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž:
```python
import streamlit as st
import pandas as pd
```
-This is followed by creating a title text for the app:
+āϤāĻžāϰāĻĒāϰ āĻāĻžāĻāĻā§āϞ āĻā§āĻā§āϏāĻ āĻŦāĻžāύāĻžāύ:
```python
st.title('st.file_uploader')
```
-Next, we'll use `st.file_uploader` to display a file uploader widget for accepting user input file:
+āĻāĻāύ āĻāĻŽāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§ `st.file_uploader` āĻĢāĻžāĻāϞ āĻāĻĒāϞā§āĻĄāĻžāϰ āĻāĻāĻā§āĻ āĻĻā§āĻāĻžāύā§āϰ āĻāύā§āϝ āϝāĻž āύāĻžāĻāĻŋ āĻāĻāϏāĻžāϰ āĻāύāĻĒā§āĻ āĻĢāĻžāĻāϞ āύā§ā§:
```python
st.subheader('Input CSV')
uploaded_file = st.file_uploader("Choose a file")
```
-Finally, we define conditional statements for initially displaying a welcome message inviting users to upload their file (as implemented in the `else` condition). Upon file upload, the `if` statements are activated and the CSV file is read by the `pandas` library and displayed via the `st.write` command.
+āĻ
āĻŦāĻļā§āώā§, āĻāĻŽāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āϤāĻžāĻĻā§āϰ āĻĢāĻžāĻāϞ āĻāĻĒāϞā§āĻĄ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻŽāύā§āϤā§āϰāĻŖ āĻāĻžāύāĻŋāϝāĻŧā§ āĻāĻāĻāĻŋ āϏā§āĻŦāĻžāĻāϤ āĻŦāĻžāϰā§āϤāĻž āĻĒā§āϰāĻĻāϰā§āĻļāύā§āϰ āĻāύā§āϝ āĻļāϰā§āϤāϏāĻžāĻĒā§āĻā§āώ āĻŦāĻŋāĻŦā§āϤāĻŋ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻŋ (`else` āĻāύā§āĻĄāĻŋāĻļāύ⧠āĻŦāϞāĻž āĻāĻā§). āĻĢāĻžāĻāϞ āĻāĻĒāϞā§āĻĄ āĻāϰāĻžāϰ āĻĒāϰ `if` āϏā§āĻā§āĻāĻŽā§āύā§āĻāϏāĻā§āϞ⧠āĻāĻžāϞ⧠āĻšā§ āĻāĻŦāĻ CSV āĻĢāĻžāĻāϞ `pandas` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āĻĻāĻŋā§ā§ āĻĒā§ā§ `st.write` āĻĻāĻŋā§ā§ āĻĻā§āĻāĻžāύ⧠āĻšā§āĨ¤
```python
if uploaded_file is not None:
df = pd.read_csv(uploaded_file)
@@ -59,6 +59,6 @@ else:
st.info('âī¸ Upload a CSV file')
```
-## Further reading
+## āĻāϰāĻ āĻĒāĻĄāĻŧāĻž
1. [`st.file_uploader`](https://docs.streamlit.io/library/api-reference/widgets/st.file_uploader)
-2. [Set configuration options](https://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options)
+2. [āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻŦāĻŋāĻāϞā§āĻĒ āϏā§āĻ āĻāϰā§āύ](https://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options)
diff --git a/content/Day19.md b/content/Day19.md
index 4c045f2..b80a31f 100644
--- a/content/Day19.md
+++ b/content/Day19.md
@@ -1,17 +1,17 @@
-# How to layout your Streamlit app
+# āĻāĻŋāĻāĻžāĻŦā§ āĻāĻĒāύāĻžāϰ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž āĻāϰāĻŦā§āύ
-In this tutorial, we're going to use the following commands to layout our Streamlit app:
-- `st.set_page_config(layout="wide")` - Displays the contents of the app in wide mode (otherwise by default, the contents are encapsulated in a fixed width box.
-- `st.sidebar` - Places the widgets or text/image displays in the sidebar.
-- `st.expander` - Places text/image displays inside a collapsible container box.
-- `st.columns` - Creates a tabular space (or column) within which contents can be placed inside.
+āĻāĻ āĻāĻŋāĻāĻā§āϰāĻŋāϝāĻŧāĻžāϞā§, āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϞā§āĻāĻāĻ āĻāϰāϤ⧠āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻāĻŽāĻžāύā§āĻĄāĻā§āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āϝāĻžāĻā§āĻāĻŋ:
+- `st.set_page_config(layout="wide")` - āĻ
ā§āϝāĻžāĻĒā§āϰ āĻŦāĻŋāώāϝāĻŧāĻŦāϏā§āϤā§āĻā§āϞāĻŋ āĻĒā§āϰāĻļāϏā§āϤ āĻŽā§āĻĄā§ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰ⧠(āĻ
āύā§āϝāĻĨāĻžāϝāĻŧ āĻāϤāĻžāύā§āĻāϤāĻŋāĻāĻāĻžāĻŦā§ āĻŦāĻŋāώāϝāĻŧāĻŦāϏā§āϤā§āĻā§āϞāĻŋ āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻĒā§āϰāϏā§āĻĨā§āϰ āĻŦāĻžāĻā§āϏ⧠āĻāύāĻā§āϝāĻžāĻĒāϏā§āϞā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤)
+- `st.sidebar` - āϏāĻžāĻāĻĄāĻŦāĻžāϰ⧠āĻāĻāĻā§āĻ āĻŦāĻž āĻā§āĻā§āϏāĻ/āĻāĻŽā§āĻ āĻĄāĻŋāϏāĻĒā§āϞ⧠āϰāĻžāĻā§āĨ¤
+- `st.expander` - āĻāĻāĻāĻŋ āϏāĻāĻā§āĻāύāϝā§āĻā§āϝ āĻāύā§āĻā§āĻāύāĻžāϰ āĻŦāĻžāĻā§āϏā§āϰ āĻāĻŋāϤāϰ⧠āĻĒāĻžāĻ ā§āϝ/āĻāĻŋāϤā§āϰ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰā§āĨ¤
+- `st.columns` - āĻāĻāĻāĻŋ āĻā§āĻŦā§āϞāĻžāϰ āϏā§āĻĨāĻžāύ (āĻŦāĻž āĻāϞāĻžāĻŽ) āϤā§āϰāĻŋ āĻāϰ⧠āϝāĻžāϰ āĻŽāϧā§āϝ⧠āĻŦāĻŋāώāϝāĻŧāĻŦāϏā§āϤ⧠āĻāĻŋāϤāϰ⧠āϰāĻžāĻāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
[](https://share.streamlit.io/dataprofessor/streamlit-layout/)
## Code
-Here's how to customize the layout of your Streamlit app:
+āĻāĻĒāύāĻžāϰ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒā§āϰ āϞā§āĻāĻāĻāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻžāϏā§āĻāĻŽāĻžāĻāĻ āĻāϰāĻŦā§āύ āϤāĻž āĻāĻāĻžāύā§:
```python
import streamlit as st
@@ -51,30 +51,30 @@ with col3:
st.write('đ Please choose your favorite **food**!')
```
-## Line-by-line explanation
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` like so:
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻĨāĻŽ āĻāĻŋāύāĻŋāϏāĻāĻŋ āĻšāϞ⧠`streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ `st` āĻšāĻŋāϏā§āĻŦā§ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž:
```python
import streamlit as st
```
-We'll start by first defining the page layout to be displayed in the `wide` mode, which allows the page content to expand to the browser's width.
+āĻāĻŽāϰāĻž āĻĒā§āϰāĻĨāĻŽā§ āĻĒā§āώā§āĻ āĻžāϰ āĻŦāĻŋāύā§āϝāĻžāϏāĻāĻŋ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰ⧠āĻļā§āϰ⧠āĻāϰāĻŦ āϝāĻž āĻĒā§āϰāĻĻāϰā§āĻļāĻŋāϤ āĻšāĻŦā§ `wide` āĻŽā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āϝāĻž āĻĒā§āώā§āĻ āĻžāϰ āĻŦāĻŋāώāϝāĻŧāĻŦāϏā§āϤā§āĻā§ āĻŦā§āϰāĻžāĻāĻāĻžāϰā§āϰ āĻĒā§āϰāϏā§āĻĨā§ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻāϰāϤ⧠āĻĻā§āϝāĻŧāĨ¤
```python
st.set_page_config(layout="wide")
```
-Next, we'll give the Streamlit app a title.
+āϤāĻžāϰāĻĒāϰ āĻāĻžāĻāĻā§āϞ āĻā§āĻā§āϏāĻ āĻŦāĻžāύāĻžāύ:
```python
st.title('How to layout your Streamlit app')
```
-An expandable box titled `About this app` is placed under the app title. Upon expansion, we'll see additional details inside.
+āĻļāĻŋāϰā§āύāĻžāĻŽ āĻāĻāĻāĻŋ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻŦāĻžāĻā§āϏ `About this app` āĻāĻā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻ
ā§āϝāĻžāĻĒ āĻļāĻŋāϰā§āύāĻžāĻŽā§āϰ āĻ
āϧā§āύ⧠āϰāϝāĻŧā§āĻā§āĨ¤ āϏāĻŽā§āĻĒā§āϰāϏāĻžāϰāĻŖā§āϰ āĻĒāϰā§, āĻāĻŽāϰāĻž āĻāĻŋāϤāϰ⧠āĻ
āϤāĻŋāϰāĻŋāĻā§āϤ āĻŦāĻŋāĻŦāϰāĻŖ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦāĨ¤
```python
with st.expander('About this app'):
st.write('This app shows the various ways on how you can layout your Streamlit app.')
st.image('https://streamlit.io/images/brand/streamlit-logo-secondary-colormark-darktext.png', width=250)
```
-Input widgets for accepting user input is placed in the sidebar as specified by using the `st.sidebar` command before the Streamlit commands `text_input` and `selectbox`. Input values entered or selected by the user are assigned and stored in the `user_name`, `user_emoji` and `user_food` variables.
+āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāύāĻĒā§āĻ āĻā§āϰāĻšāĻŖ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāύāĻĒā§āĻ āĻāĻāĻā§āĻāĻā§āϞāĻŋ āϏāĻžāĻāĻĄāĻŦāĻžāϰ⧠āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āĻšāϝāĻŧ `st.sidebar` āĻāĻŽāĻžāύā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāĻŽāĻžāύā§āĻĄāϏ `text_input` and `selectbox` āĻāĻā§āϞā§āϰ āĻāĻā§āĨ¤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāĻŦā§āĻļ āĻāϰāĻž āĻŦāĻž āύāĻŋāϰā§āĻŦāĻžāĻāĻŋāϤ āĻāύāĻĒā§āĻ āĻŽāĻžāύāĻā§āϞāĻŋ āĻŦāϰāĻžāĻĻā§āĻĻ āĻāϰāĻž āĻāĻŦāĻ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧ⧎ `user_name`, `user_emoji` āĻāĻŦāĻ `user_food` āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻĻā§āĻŦāĻžāϰāĻžāĨ¤
```python
st.sidebar.header('Input')
user_name = st.sidebar.text_input('What is your name?')
@@ -82,7 +82,8 @@ user_emoji = st.sidebar.selectbox('Choose an emoji', ['', 'đ', 'đ', 'đ'
user_food = st.sidebar.selectbox('What is your favorite food?', ['', 'Tom Yum Kung', 'Burrito', 'Lasagna', 'Hamburger', 'Pizza'])
```
-Finally, we'll create 3 columns using the `st.columns` command which corresponds to `col1`, `col2` and `col3`. Then, we assign contents to each of the column by creating individual code blocks starting with the `with` statement. Underneath this, we create conditional statements that display 1 of 2 alternative text depending on whether the user had provided their input data (specified in the sidebar) or not. By default, the page displays text under the `else` statement. Upon providing user input, the corresponding information that the user gives to the app is displayed under the `Output` header text.
+āĻ
āĻŦāĻļā§āώā§, āĻāĻŽāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāĻ°ā§ ā§ŠāĻāĻŋ āĻāϞāĻžāĻŽ āϤā§āϰāĻŋ āĻāϰāĻŦ `st.columns` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠`col1`, `col2` āĻāĻŦāĻ `col3`āĨ¤ āϤāĻžāϰāĻĒāϰ, āĻāĻŽāϰāĻž āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāϞāĻžāĻŽā§ āĻŦāĻŋāώāϝāĻŧāĻŦāϏā§āϤ⧠āĻŦāϰāĻžāĻĻā§āĻĻ āĻāϰāĻŋ āĻāϞāĻžāĻĻāĻž āĻāϞāĻžāĻĻāĻž āĻā§āĻĄ āĻŦā§āϞāĻ āϤā§āϰāĻŋ āĻāϰ⧠`with` āĻŦāĻŋāĻŦā§āϤāĻŋ āĻĻāĻŋāϝāĻŧā§āĨ¤ āĻāϰ āύā§āĻā§, āĻāĻŽāϰāĻž āĻļāϰā§āϤāϏāĻžāĻĒā§āĻā§āώ āĻŦāĻŋāĻŦā§āϤāĻŋ āϤā§āϰāĻŋ āĻāϰāĻŋ āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϤāĻžāĻĻā§āϰ āĻāύāĻĒā§āĻ āĻĄā§āĻāĻž (āϏāĻžāĻāĻĄāĻŦāĻžāϰ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ) āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āĻā§ āĻāĻŋ āύāĻž āϤāĻžāϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰ⧠⧍āĻāĻŋ āĻŦāĻŋāĻāϞā§āĻĒ āĻĒāĻžāĻ ā§āϝā§āϰ āĻŽāϧā§āϝ⧠⧧āĻāĻŋ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰā§āĨ¤ āĻĄāĻŋāĻĢāϞā§āĻāϰā§āĻĒā§, āĻĒā§āώā§āĻ āĻžāĻāĻŋ `else` āĻŦāĻŋāĻŦā§āϤāĻŋāϰ āĻ
āϧā§āύ⧠āĻĒāĻžāĻ ā§āϝ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰā§āĨ¤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāύāĻĒā§āĻ āĻĒā§āϰāĻĻāĻžāύ āĻāϰāĻžāϰ āĻĒāϰā§, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻ
ā§āϝāĻžāĻĒā§ āϝ⧠āϏāĻāĻļā§āϞāĻŋāώā§āĻ āϤāĻĨā§āϝ āĻĻā§āϝāĻŧ āϤāĻž `Output` āĻļāĻŋāϰā§āύāĻžāĻŽā§āϰ āĻĒāĻžāĻ ā§āϝā§āϰ āĻ
āϧā§āύ⧠āĻĒā§āϰāĻĻāϰā§āĻļāĻŋāϤ āĻšāϝāĻŧāĨ¤
+
```python
st.header('Output')
@@ -108,5 +109,5 @@ with col3:
```
It is also worthy to note that `f` strings were used to combine pre-canned text together with the user provided values.
-## Further reading
-- [Layouts and Containers](https://docs.streamlit.io/library/api-reference/layout)
+## āĻāϰāĻ āĻĒāĻĄāĻŧāĻž
+- [āϞā§āĻāĻāĻ āĻāĻŦāĻ āĻāύā§āĻā§āĻāύāĻžāϰ](https://docs.streamlit.io/library/api-reference/layout)
diff --git a/content/Day2.md b/content/Day2.md
index 4673080..2411622 100644
--- a/content/Day2.md
+++ b/content/Day2.md
@@ -1,14 +1,14 @@
-# Building your first Streamlit app
+# āĻĒā§āϰāĻĨāĻŽ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āĻŦāĻžāύāĻžāύā§āϰ āĻĒāĻĻāĻā§āώā§āĻĒ
-## Fire up your IDE
+## āĻāĻĒāύāĻžāϰ āĻāĻāĻĄāĻŋāĻ(IDE) āĻŦāĻž āĻāύā§āĻāĻŋāĻā§āϰā§āĻā§āĻĄ āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻ āĻāύāĻāĻžā§āϰāύāĻŽā§āύā§āĻ āĻāĻžāϞ⧠āĻāϰā§āύ
-Fire up your IDE whether it be Atom, VS Code or even a cloud IDE such as GitPod or GitHub.dev.
+āĻāĻĒāύāĻžāϰ āĻāĻāĻĄāĻŋāĻ āĻāĻžāϞ⧠āĻāϰā§āύ āĻāĻŦāĻ āϏā§āĻāĻž āĻāĻāĻŽ, āĻāĻŋāĻāϏ āĻā§āĻĄ āĻŦāĻž āĻāĻŽāύāĻāĻŋ āĻā§āϞāĻžāĻāĻĄ āĻāĻāĻĄāĻŋāĻ āϝā§āĻŽāύ āĻāĻŋāĻā§āĻĒāĻĄ āĻŦāĻž āĻāĻŋāĻāĻšāĻžāĻŦ.āĻĄā§āĻā§ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤
-Create a file called `streamlit_app.py`
+āĻāĻāĻāĻŋ āĻĢāĻžāĻāϞ āϤā§āϰ⧠āĻāϰā§āύ āϝāĻžāϰ āύāĻžāĻŽ `streamlit_app.py`
-## Entering your first lines of code
+## āĻāĻĒāύāĻžāϰ āĻā§āĻĄā§āϰ āĻĒā§āϰāĻĨāĻŽ āϞāĻžāĻāύāĻā§āϞāĻŋ āĻĒā§āϰāĻŦā§āĻļ āĻāϰāĻžāύ⧠āĻšāĻā§āĻā§
-To the newly created file, enter the following lines of code:
+āϏāĻĻā§āϝ āϤā§āϰāĻŋ āĻĢāĻžāĻāϞāĻāĻŋāϤā§, āĻā§āĻĄā§āϰ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āϞāĻžāĻāύāĻā§āϞāĻŋ āϞāĻŋāĻā§āύ:
```
import streamlit as st
@@ -16,16 +16,17 @@ import streamlit as st
st.write('Hello world!')
```
-Save the file.
+āĻĢāĻžāĻāϞāĻāĻŋ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύāĨ¤
-## Fire up the command line terminal
+## āϤāĻžāϰāĻĒāϰ āĻāĻŽā§āϝāĻžāύā§āĻĄ āϞāĻžāĻāύ āĻāĻžāϰā§āĻŽāĻŋāύāĻžāϞ āĻāĻžāϞ⧠āĻāϰā§āύ
-To the terminal, enter the following:
+āĻāĻžāϰā§āĻŽāĻŋāύāĻžāϞ⧠āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āϞāĻžāĻāύāĻā§āϞāĻŋ āϞāĻŋāĻā§āύ:
```
streamlit run streamlit_app.py
```
-A browser window should pop-up showing the newly created Streamlit app.
+āĻāĻāĻāĻŋ āĻŦā§āϰāĻžāĻāĻāĻžāϰ āĻāĻāύā§āĻĄā§ āĻĒāĻĒ-āĻāĻĒ āĻšāĻāϝāĻŧāĻž āĻāĻāĻŋāϤ āϏāĻĻā§āϝ āύāĻŋāϰā§āĻŽāĻŋāϤ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒāĻāĻŋ āĻĻā§āĻāĻžāϝāĻŧāĨ¤
+
+**āĻ
āĻāĻŋāύāύā§āĻĻāύ!** āĻāĻĒāύāĻŋ āĻāĻāĻŽāĻžāϤā§āϰ āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻĨāĻŽ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰā§āĻā§āύ!
-**Congratulations!** You have just created your first Streamlit app!
diff --git a/content/Day20.md b/content/Day20.md
index 24921ac..0cac9cf 100644
--- a/content/Day20.md
+++ b/content/Day20.md
@@ -1,6 +1,6 @@
-# Tech Twitter Space on What is Streamlit?
-## (Hosted by Francesco Ciulla)
+# āĻā§āĻ āĻā§āĻāĻāĻžāϰ āϏā§āĻĒā§āϏ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāĻŋ?
+## (āĻĢā§āϰāĻžāύā§āϏā§āϏāĻā§ āϏāĻŋāĻāϞāĻž āĻšā§āϏā§āĻ āĻāϰā§āĻā§āύ)
-Join us for a discussion about Streamlit with our host [Francesco Ciulla](https://twitter.com/FrancescoCiull4).
+āĻāĻŽāĻžāĻĻā§āϰ āĻšā§āϏā§āĻā§āϰ āϏāĻžāĻĨā§ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϞā§āĻāύāĻžāϰ āĻāύā§āϝ āĻāĻŽāĻžāĻĻā§āϰ āϏāĻžāĻĨā§ āϝā§āĻ āĻĻāĻŋāύ [āĻĢā§āϰāĻžāύā§āϏā§āϏāĻā§ āϏāĻŋāĻāϞāĻž](https://twitter.com/FrancescoCiull4).
đ Link: https://twitter.com/i/spaces/1dRJZlbglXMKB
diff --git a/content/Day21.md b/content/Day21.md
index 2ad6838..ce93c1e 100644
--- a/content/Day21.md
+++ b/content/Day21.md
@@ -1,13 +1,13 @@
# st.progress
-`st.progress` displays a progress bar that updates graphically as the iteration progresses.
+`st.progress` āĻāĻāĻāĻŋ āĻ
āĻā§āϰāĻāϤāĻŋ āĻŦāĻžāϰ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰ⧠āϝāĻž āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋāϰ āĻ
āĻā§āϰāĻāϤāĻŋāϰ āϏāĻžāĻĨā§ āϏāĻžāĻĨā§ āĻā§āϰāĻžāĻĢāĻŋāĻāĻāĻžāĻŦā§ āĻāĻĒāĻĄā§āĻ āĻšāϝāĻŧāĨ¤
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
[](https://share.streamlit.io/dataprofessor/st.progress/)
## Code
-Here's how to use `st.progress`:
+āĻāĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ `st.progress`:
```python
import streamlit as st
import time
@@ -26,25 +26,26 @@ for percent_complete in range(100):
st.balloons()
```
-## Line-by-line explanation
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` along with the `time` library like so:
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻĨāĻŽ āĻāĻŋāύāĻŋāϏāĻāĻŋ āĻšāϞ⧠`streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ `st` āĻšāĻŋāϏā§āĻŦā§ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻžāĨ¤ āϤāĻžāϰ āϏāĻžāĻĨā§ `time` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž āĻšā§ā§āĻā§:
```python
import streamlit as st
import time
```
-Next, we create a title text for the app:
+āĻāϰ āĻĒāϰā§, āĻāĻŽāϰāĻž āĻ
ā§āϝāĻžāĻĒāĻāĻŋāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻļāĻŋāϰā§āύāĻžāĻŽ āĻĒāĻžāĻ ā§āϝ āϤā§āϰāĻŋ āĻāϰāĻŋ:
```python
st.title('st.progress')
```
-An **About box** is created using `st.expander` and description is displayed via `st.write`:
+āĻāĻāĻāĻŋ **āϏāĻŽā§āĻĒāϰā§āĻā§ āĻŦāĻžāĻā§āϏ** āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ `st.expander` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻŦāĻ āĻŦāĻŋāĻŦāϰāĻŖ `st.write` āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒā§āϰāĻĻāϰā§āĻļāĻŋāϤ āĻšāϝāĻŧ:
```python
with st.expander('About this app'):
st.write('You can now display the progress of your calculations in a Streamlit app with the `st.progress` command.')
```
-Finally, we define a progress bar and instantiate it with a starting value of `0`. Then, a `for` loop will iterate from `0` until `100` is reached. In each iteration, we use `time.sleep(0.05)` to allow the app to wait for `0.05` before adding a value of `1` to the `my_bar` progress bar and in doing so the graphical display of the bar increases with each iteration.
+āĻ
āĻŦāĻļā§āώā§, āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āĻ
āĻā§āϰāĻāϤāĻŋ āĻŦāĻžāϰ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻŋ āĻāĻŦāĻ āĻāĻāĻŋāĻā§ `0` āĻāϰ āĻĒā§āϰāĻžāϰāĻŽā§āĻāĻŋāĻ āĻŽāĻžāύ āĻĻāĻŋāϝāĻŧā§ āĻāύāϏā§āĻā§āϝāĻžāύā§āĻāĻŋāϝāĻŧā§āĻ āĻāϰāĻŋāĨ¤ āϤāĻžāϰāĻĒāϰ, āĻāĻāĻāĻŋ `for` āϞā§āĻĒ `0` āĻĨā§āĻā§ `100` āĻ āĻĒā§āĻāĻāĻžāύ⧠āĻĒāϰā§āϝāύā§āϤ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋ āĻāϰāĻŦā§āĨ¤ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋāϤā§, āĻāĻŽāϰāĻž `time.sleep(0.05)` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋ āϝāĻžāϤ⧠āĻ
ā§āϝāĻžāĻĒāĻāĻŋāĻā§ `my_bar` āĻĒā§āϰāĻā§āϰā§āϏ āĻŦāĻžāϰ⧠`1` āĻāϰ āĻŽāĻžāύ āϝā§āĻ āĻāϰāĻžāϰ āĻāĻā§ `0.05` āĻāϰ āĻāύā§āϝ āĻ
āĻĒā§āĻā§āώāĻž āĻāϰāĻžāϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧ āĻāĻŦāĻ āĻāĻāĻāĻžāĻŦā§ āĻŦāĻžāϰā§āϰ āĻā§āϰāĻžāĻĢāĻŋāĻāĻžāϞ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻŦā§āĻĻā§āϧāĻŋ āĻĒāĻžāϝāĻŧ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋāϰ āϏāĻžāĻĨā§āĨ¤
+
```python
my_bar = st.progress(0)
@@ -55,5 +56,5 @@ for percent_complete in range(100):
st.balloons()
```
-## Further reading
+## āĻāϰāĻ āĻĒāĻĄāĻŧāĻž
- [`st.progress`](https://docs.streamlit.io/library/api-reference/status/st.progress)
diff --git a/content/Day22.md b/content/Day22.md
index 045aafc..e0d86e8 100644
--- a/content/Day22.md
+++ b/content/Day22.md
@@ -1,26 +1,26 @@
# st.form
-`st.form` creates a form that batches elements together with a "Submit" button.
+`st.form` āĻāĻāĻāĻŋ āĻĢāϰā§āĻŽ āϤā§āϰāĻŋ āĻāϰ⧠āϝāĻž āĻāĻāĻāĻŋ "Submit" āĻŦāĻžāĻāύ āĻĻāĻŋā§ā§ āĻāĻĒāĻžāĻĻāĻžāύāĻā§āϞāĻŋāĻā§ āĻŦā§āϝāĻžāĻ āĻāϰā§āĨ¤
-Typically, whenever a user interacts with a widget, the Streamlit app is rerun.
+āϏāĻžāϧāĻžāϰāĻŖāϤ, āϝāĻāύāĻ āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻāĻāĻāĻŋ āĻāĻāĻā§āĻā§āϰ āϏāĻžāĻĨā§ āĻāύā§āĻāĻžāϰāĻ
ā§āϝāĻžāĻā§āĻ āĻāϰā§, āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒāĻāĻŋ āĻĒā§āύāϰāĻžāϝāĻŧ āĻāĻžāϞ⧠āĻšāϝāĻŧāĨ¤
-A form is a container that visually groups other elements and widgets together, and contains a Submit button. Herein, a user can interacts with one or more widgets for as many times as they like without causing a rerun. Finally, when the form's Submit button is pressed, all widget values inside the form will be sent to Streamlit in a single batch.
+āĻāĻāĻāĻŋ āĻĢāϰā§āĻŽ āĻšāϞ āĻāĻāĻāĻŋ āϧāĻžāϰāĻ āϝāĻž āĻĻā§āĻļā§āϝāϤ āĻ
āύā§āϝāĻžāύā§āϝ āĻāĻĒāĻžāĻĻāĻžāύ āĻāĻŦāĻ āĻāĻāĻā§āĻāĻā§āϞāĻŋāĻā§ āĻāĻāϤā§āϰ⧠āĻā§āώā§āĻ ā§āĻŦāĻĻā§āϧ āĻāϰ⧠āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻŽāĻž āĻŦā§āϤāĻžāĻŽ āϧāĻžāϰāĻŖ āĻāϰā§ā§ˇ āĻāĻāĻžāύā§, āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻĒā§āύāĻāϰāĻžāύ āύāĻž āĻāĻāĻŋāϝāĻŧā§ āĻāĻ āĻŦāĻž āĻāĻāĻžāϧāĻŋāĻ āĻāĻāĻā§āĻā§āϰ āϏāĻžāĻĨā§ āϝāϤāĻŦāĻžāϰ āĻā§āĻļāĻŋ āϤāϤāĻŦāĻžāϰ āĻāύā§āĻāĻžāϰāĻ
ā§āϝāĻžāĻā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻ
āĻŦāĻļā§āώā§, āϝāĻāύ āĻĢāϰā§āĻŽā§āϰ āĻāĻŽāĻž āĻĻā§āĻāϝāĻŧāĻžāϰ āĻŦā§āϤāĻžāĻŽāĻāĻŋ āĻāĻžāĻĒāĻž āĻšāϝāĻŧ, āϤāĻāύ āĻĢāϰā§āĻŽā§āϰ āĻāĻŋāϤāϰā§āϰ āϏāĻŽāϏā§āϤ āĻāĻāĻā§āĻ āĻŽāĻžāύ āĻāĻāĻ āĻŦā§āϝāĻžāĻā§ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§ āĻĒāĻžāĻ āĻžāύ⧠āĻšāĻŦā§āĨ¤
-To add elements to a form object, you can use the `with` notation (preferred) or you could use it as an object notation by just calling methods directly on the form (by first assigning it to a variable and subsequently applying Streamlit methods on it). See in the example app.
+āĻāĻāĻāĻŋ āĻĢāϰā§āĻŽ āĻ
āĻŦāĻā§āĻā§āĻā§ āĻāĻĒāĻžāĻĻāĻžāύ āϝā§āĻ āĻāϰāϤā§, āĻāĻĒāύāĻŋ `āϏāĻš` āϏā§āĻŦāϰāϞāĻŋāĻĒāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ (āĻĒāĻāύā§āĻĻā§āϰ) āĻ
āĻĨāĻŦāĻž āĻāĻĒāύāĻŋ āĻĢāϰā§āĻŽā§ āϏāϰāĻžāϏāϰāĻŋ āĻĒāĻĻā§āϧāϤāĻŋāĻā§āϞāĻŋ āĻāϞ āĻāϰ⧠āĻāĻāĻŋāĻā§ āĻ
āĻŦāĻā§āĻā§āĻ āύā§āĻā§āĻļāύ āĻšāĻŋāϏā§āĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ (āĻĒā§āϰāĻĨāĻŽā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ⧠āĻŦāϰāĻžāĻĻā§āĻĻ āĻāϰ⧠āĻāĻŦāĻ āĻĒāϰāĻŦāϰā§āϤā§āϤ⧠āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻĒāĻĻā§āϧāϤāĻŋ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰ⧠āĻāĻāĻž)āĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖ āĻ
ā§āϝāĻžāĻĒā§ āĻĻā§āĻā§āύāĨ¤
-Forms have a few constraints:
-- Every form must contain a `st.form_submit_button`.
-- `st.button` and `st.download_button` cannot be added to a form.
-- Forms can appear anywhere in your app (sidebar, columns, etc), but they cannot be embedded inside other forms.
+āĻĢāϰā§āĻŽā§āϰ āĻāĻŋāĻā§ āϏā§āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āĻāĻā§:
+- āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĢāϰā§āĻŽā§ āĻ
āĻŦāĻļā§āϝāĻ āĻāĻāĻāĻŋ `st.form_submit_button` āĻĨāĻžāĻāϤ⧠āĻšāĻŦā§āĨ¤
+- `st.button` āĻāĻŦāĻ `st.download_button` āĻā§āύ⧠āĻĢāϰā§āĻŽā§ āϝā§āĻ āĻāϰāĻž āϝāĻžāĻŦā§ āύāĻžāĨ¤
+- āĻĢāϰā§āĻŽāĻā§āϞāĻŋ āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒā§āϰ āϝ⧠āĻā§āύāĻ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ (āϏāĻžāĻāĻĄāĻŦāĻžāϰ, āĻāϞāĻžāĻŽ, āĻāϤā§āϝāĻžāĻĻāĻŋ) āĻĒā§āϰāĻĻāϰā§āĻļāĻŋāϤ āĻšāϤ⧠āĻĒāĻžāϰ⧠āϤāĻŦā§ āϏā§āĻā§āϞāĻŋ āĻ
āύā§āϝ āĻĢāϰā§āĻŽāĻā§āϞāĻŋāϰ āĻŽāϧā§āϝ⧠āĻāĻŽā§āĻŦā§āĻĄ āĻāϰāĻž āϝāĻžāĻŦā§ āύāĻžā§ˇ
-For more information about forms, check out our [blog post](https://blog.streamlit.io/introducing-submit-button-and-forms/).
+āĻĢāϰā§āĻŽ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰāĻ āϤāĻĨā§āϝā§āϰ āĻāύā§āϝ āĻĻā§āĻā§āύ [āĻŦā§āϞāĻ āĻĒā§āϏā§āĻ](https://blog.streamlit.io/introducing-submit-button-and-forms/).
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
[](https://share.streamlit.io/dataprofessor/st.form/)
-## Code
-Here's how to use `st.form`:
+## āĻā§āĻĄ
+āĻāĻāĻžāύ⧠āĻāĻŋāĻāĻžāĻŦā§ `st.form` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ:
```python
import streamlit as st
@@ -68,19 +68,19 @@ form.form_submit_button('Submit')
st.write('Selected value: ', selected_val)
```
-## Line-by-line explanation
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` like so:
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻĨāĻŽ āĻāĻŋāύāĻŋāϏāĻāĻŋ āĻšāϞ⧠`streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ `st` āĻšāĻŋāϏā§āĻŦā§ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž:
```python
import streamlit as st
```
-This is followed by creating a title text for the app:
+āĻāĻāĻŋ āĻ
ā§āϝāĻžāĻĒā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻāĻžāĻāĻā§āϞ āĻĒāĻžāĻ ā§āϝ āϤā§āϰāĻŋ āĻāϰ⧠āĻ
āύā§āϏāϰāĻŖ āĻāϰāĻž āĻšāϝāĻŧ:
```python
st.title('st.form')
```
-### First example
-Let's start with the first example, here we'll apply the `st.form` command via the `with` notation. Inside the form, we'll start with writing a subheader `Order your coffee` then create several input widgets (`st.selectbox`, `st.select_slider` and `st.checkbox`) to collect information about the coffee order. Finally, a submit button is created via the `st.form_submit_button` command, which when clicked on will send all user input as a single batch of information to the app for processing.
+### āĻĒā§āϰāĻĨāĻŽ āĻāĻĻāĻžāĻšāϰāĻŖ
+āĻĒā§āϰāĻĨāĻŽ āĻāĻĻāĻžāĻšāϰāĻŖ āĻĻāĻŋāϝāĻŧā§ āĻļā§āϰ⧠āĻāϰāĻž āϝāĻžāĻ, āĻāĻāĻžāύ⧠āĻāĻŽāϰāĻž `st.form` āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ `with` āύā§āĻā§āĻļāύā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻŦāĨ¤ āĻĢāϰā§āĻŽā§āϰ āĻāĻŋāϤāϰā§, āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āĻāĻĒāĻļāĻŋāϰā§āύāĻžāĻŽ āϞāĻŋāĻāϤ⧠āĻļā§āϰ⧠āĻāϰāĻŦ `āĻāĻĒāύāĻžāϰ āĻāĻĢāĻŋ āĻ
āϰā§āĻĄāĻžāϰ āĻāϰā§āύ` āϤāĻžāϰāĻĒāϰ āĻāĻĢāĻŋāϰ āĻ
āϰā§āĻĄāĻžāϰ āϏāĻŽā§āĻĒāϰā§āĻā§ āϤāĻĨā§āϝ āϏāĻāĻā§āϰāĻš āĻāϰāϤ⧠āĻŦā§āĻļ āĻāĻŋāĻā§ āĻāύāĻĒā§āĻ āĻāĻāĻā§āĻ (`st.selectbox`, `st.select_slider` āĻāĻŦāĻ `st.checkbox`) āϤā§āϰāĻŋ āĻāϰāĻŦāĨ¤ āĻ
āĻŦāĻļā§āώā§, `st.form_submit_button` āĻāĻŽāĻžāύā§āĻĄā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻāĻāĻŋ āϏāĻžāĻŦāĻŽāĻŋāĻ āĻŦā§āϤāĻžāĻŽ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ, āϝā§āĻāĻŋāϤ⧠āĻā§āϞāĻŋāĻ āĻāϰāĻž āĻšāϞ⧠āϤāĻž āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĻāϰāĻŖā§āϰ āĻāύā§āϝ āĻ
ā§āϝāĻžāĻĒā§ āϤāĻĨā§āϝā§āϰ āĻāĻāĻ āĻŦā§āϝāĻžāĻ āĻšāĻŋāϏāĻžāĻŦā§ āϏāĻŽāϏā§āϤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāύāĻĒā§āĻ āĻĒāĻžāĻ āĻžāĻŦā§āĨ¤
```python
# Full example of using the with notation
st.header('1. Example of using `with` notation')
@@ -101,7 +101,8 @@ with st.form('my_form'):
submitted = st.form_submit_button('Submit')
```
-Next, we'll add the logic of what happen's after the submit button is clicked on. By default, whenever the Streamlit app is loaded the `else` statement will be run and we see a message `âī¸ Place your order!`. Whereas upon clicking on the submit button, all user provided input via the various widgets are stored in several variables (e.g. `coffee_bean_val`, `coffee_roast_val`, etc.) and printed out via the `st.markdown` command with the help of f-string.
+āĻāϰāĻĒāϰā§, āϏāĻžāĻŦāĻŽāĻŋāĻ āĻŦā§āϤāĻžāĻŽā§ āĻā§āϞāĻŋāĻ āĻāϰāĻžāϰ āĻĒāϰ āĻā§ āĻāĻāĻŦā§ āϤāĻžāϰ āϝā§āĻā§āϤāĻŋ āϝā§āĻ āĻāϰāĻŦāĨ¤ āĻĄāĻŋāĻĢāϞā§āĻāϰā§āĻĒā§, āϝāĻāύāĻ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒāĻāĻŋ āϞā§āĻĄ āĻšāĻŦā§ āϤāĻāύāĻ `āĻ
āύā§āϝ` āĻŦāĻŋāĻŦā§āϤāĻŋāĻāĻŋ āĻāĻžāϞāĻžāύ⧠āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āĻŦāĻžāϰā§āϤāĻž āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦ `âī¸ āĻāĻĒāύāĻžāϰ āĻ
āϰā§āĻĄāĻžāϰ āĻĻāĻŋāύ!`⧎ āϝā§āĻāĻžāύ⧠āϏāĻžāĻŦāĻŽāĻŋāĻ āĻŦā§āϤāĻžāĻŽā§ āĻā§āϞāĻŋāĻ āĻāϰāĻžāϰ āĻĒāϰā§, āĻŦāĻŋāĻāĻŋāύā§āύ āĻāĻāĻā§āĻā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏāĻŽāϏā§āϤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĻā§āĻāϝāĻŧāĻž āĻāύāĻĒā§āĻ āĻŦāĻŋāĻāĻŋāύā§āύ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧ (āϝā§āĻŽāύ `coffee_bean_val`, `coffee_roast_val` āĻāϤā§āϝāĻžāĻĻāĻŋ) āĻāĻŦāĻ f āĻāϰ āϏāĻžāĻšāĻžāϝā§āϝ⧠`st.markdown` āĻāĻŽāĻžāύā§āĻĄā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒā§āϰāĻŋāύā§āĻ āĻāĻāĻ āĻāϰāĻž āĻšāϝāĻŧ f-string āĻĻāĻŋā§ā§āĨ¤
+
```python
if submitted:
st.markdown(f'''
@@ -118,8 +119,8 @@ else:
```
-### Second example
-Let's now proceed to the second example on using the `st.form` as an object notation. Here, the `st.form` command is assigned to the `form` variable. Subsequently, various Streamlit commands such as `slider` or `form_submit_button` is applied on the `form` variable.
+### āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āĻāĻĻāĻžāĻšāϰāĻŖ
+āĻāĻāύ āĻ
āĻŦāĻā§āĻā§āĻ āύā§āĻā§āĻļāύ āĻšāĻŋāϏā§āĻŦā§ `st.form` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āĻāĻĻāĻžāĻšāϰāĻŖā§ āϝāĻžāĻāϝāĻŧāĻž āϝāĻžāĻāĨ¤ āĻāĻāĻžāύā§, `st.form` āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ `form` āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ⧠āĻŦāϰāĻžāĻĻā§āĻĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ āĻĒāϰāĻŦāϰā§āϤā§āĻāĻžāϞā§, āĻŦāĻŋāĻāĻŋāύā§āύ Streamlit āĻāĻŽāĻžāύā§āĻĄ āϝā§āĻŽāύ `slider` āĻŦāĻž `form_submit_button` `form` āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ⧠āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
```python
# Short example of using an object notation
st.header('2. Example of object notation')
@@ -131,6 +132,6 @@ form.form_submit_button('Submit')
st.write('Selected value: ', selected_val)
```
-## Further reading
+## āĻāϰāĻ āĻĒāĻĄāĻŧāĻž
- [`st.form`](https://docs.streamlit.io/library/api-reference/control-flow/st.form)
-- [Introducing Submit button and Forms](https://blog.streamlit.io/introducing-submit-button-and-forms/)
+- [āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻŦāĻžāĻāύ āĻāĻŦāĻ āĻĢāϰā§āĻŽ](https://blog.streamlit.io/introducing-submit-button-and-forms/)
diff --git a/content/Day23.md b/content/Day23.md
index 75884af..fdcffdc 100644
--- a/content/Day23.md
+++ b/content/Day23.md
@@ -1,19 +1,19 @@
# st.experimental_get_query_params
-`st.experimental_get_query_params` allows the retrieval of query parameters directly from the URL of the user's browser.
+`st.experimental_get_query_params` āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻŦā§āϰāĻžāĻāĻāĻžāϰā§āϰ URL āĻĨā§āĻā§ āϏāϰāĻžāϏāϰāĻŋ āĻā§āϝāĻŧā§āϰāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰā§āϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧāĨ¤
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
-1. The following link loads the demo app with no query parameters (notice the error message):
+ā§§. āύāĻŋāĻā§āϰ āϞāĻŋāĻā§āĻāĻāĻŋ āĻā§āύ āĻā§āϝāĻŧā§āϰāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻāĻžāĻĄāĻŧāĻžāĻ āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ āϞā§āĻĄ āĻāϰ⧠(āϤā§āϰā§āĻāĻŋāϰ āĻŦāĻžāϰā§āϤāĻžāĻāĻŋ āϞāĻā§āώā§āϝ āĻāϰā§āύ):
[](https://share.streamlit.io/dataprofessor/st.experimental_get_query_params/)
-2. The following link loads the demo app with query parameters (no error message here):
+⧍. āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āϞāĻŋāĻā§āĻāĻāĻŋ āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒāĻāĻŋāĻā§ āĻā§āϝāĻŧā§āϰāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āϏāĻš āϞā§āĻĄ āĻāϰ⧠(āĻāĻāĻžāύ⧠āĻā§āύāĻ āϤā§āϰā§āĻāĻŋ āĻŦāĻžāϰā§āϤāĻž āύā§āĻ):
[](http://share.streamlit.io/dataprofessor/st.experimental_get_query_params/?firstname=Jack&surname=Beanstalk)
-## Code
-Here's how to use `st.experimental_get_query_params`:
+## āĻā§āĻĄ
+āĻāĻāĻžāύ⧠āĻāĻŋāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻšāϝāĻŧ `st.experimental_get_query_params`:
```python
import streamlit as st
@@ -47,24 +47,24 @@ surname = st.experimental_get_query_params()['surname'][0]
st.write(f'Hello **{firstname} {surname}**, how are you?')
```
-## Line-by-line explanation
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` like so:
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻĨāĻŽ āĻāĻŋāύāĻŋāϏāĻāĻŋ āĻšāϞ⧠`streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ `st` āĻšāĻŋāϏā§āĻŦā§ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž:
```python
import streamlit as st
```
-Next, we'll give the app a title:
+āĻāϰ āĻĒāϰā§, āĻāĻŽāϰāĻž āĻ
ā§āϝāĻžāĻĒāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻļāĻŋāϰā§āύāĻžāĻŽ āĻĻā§āĻŦ:
```python
st.title('st.experimental_get_query_params')
```
-Let's also add an About drop-down box:
+āĻāϰ āĻāĻāĻāĻŋ āĻĄā§āϰāĻĒ-āĻĄāĻžāĻāύ āĻŦāĻā§āϏāĻ āϝā§āĻ āĻāϰāĻž āϝāĻžāĻ:
```python
with st.expander('About this app'):
st.write("`st.experimental_get_query_params` allows the retrieval of query parameters directly from the URL of the user's browser.")
```
-Then, we'll provide instructions to visitors of the app on how they can pass query parameters directly to the URL:
+āϤāĻžāϰāĻĒāϰ, āĻāĻŽāϰāĻž āĻ
ā§āϝāĻžāĻĒā§āϰ āĻĻāϰā§āĻļāĻāĻĻā§āϰ āϏāϰāĻžāϏāϰāĻŋ URL-āĻ āĻā§āϝāĻŧā§āϰāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰāĻā§āϞāĻŋ āĻā§āĻāĻžāĻŦā§ āĻĒāĻžāϏ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āϏ⧠āϏāĻŽā§āĻĒāϰā§āĻā§ āύāĻŋāϰā§āĻĻā§āĻļāύāĻž āĻĒā§āϰāĻĻāĻžāύ āĻāϰāĻŦ:
```python
# 1. Instructions
st.header('1. Instructions')
@@ -77,14 +77,14 @@ such that it becomes
''')
```
-Subsequently, we'll display the contents of the `st.experimental_get_query_params` command.
+āĻĒāϰāĻŦāϰā§āϤā§āĻāĻžāϞā§, āĻāĻŽāϰāĻž `st.experimental_get_query_params` āĻāĻŽāĻžāύā§āĻĄā§āϰ āĻŦāĻŋāώāϝāĻŧāĻŦāϏā§āϤ⧠āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻŦāĨ¤
```python
# 2. Contents of st.experimental_get_query_params
st.header('2. Contents of st.experimental_get_query_params')
st.write(st.experimental_get_query_params())
```
-Finally, we'll select and display selective information from the URL's query parameter:
+āĻ
āĻŦāĻļā§āώā§, āĻāĻŽāϰāĻž URL āĻāϰ āĻā§āϝā§āϝāĻŧāĻžāϰ⧠āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻĨā§āĻā§ āύāĻŋāϰā§āĻŦāĻžāĻāύ⧠āϤāĻĨā§āϝ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰāĻŦ āĻāĻŦāĻ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻŦ:
```python
# 3. Retrieving and displaying information from the URL
st.header('3. Retrieving and displaying information from the URL')
@@ -95,5 +95,5 @@ surname = st.experimental_get_query_params()['surname'][0]
st.write(f'Hello **{firstname} {surname}**, how are you?')
```
-## Further reading
+## āĻāϰāĻ āĻĒāĻĄāĻŧāĻž
- [`st.experimental_get_query_params`](https://docs.streamlit.io/library/api-reference/utilities/st.experimental_get_query_params)
diff --git a/content/Day24.md b/content/Day24.md
index fc12a46..a0c9853 100644
--- a/content/Day24.md
+++ b/content/Day24.md
@@ -1,32 +1,32 @@
# st.cache
-`st.cache` allows you to optimize the performance of your Streamlit app.
+`st.cache` āĻāĻĒāύāĻžāĻā§ āĻāĻĒāύāĻžāϰ Streamlit āĻ
ā§āϝāĻžāĻĒā§āϰ āĻāϰā§āĻŽāĻā§āώāĻŽāϤāĻž āĻ
āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻ āĻāϰāϤ⧠āĻĻā§āϝāĻŧāĨ¤
-Streamlit provides a caching mechanism that allows your app to stay performant even when loading data from the web, manipulating large datasets, or performing expensive computations. This is done with the `@st.cache` decorator.
+Streamlit āĻāĻāĻāĻŋ āĻā§āϝāĻžāĻļāĻŋāĻ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻĒā§āϰāĻĻāĻžāύ āĻāϰ⧠āϝāĻž āĻāϝāĻŧā§āĻŦ āĻĨā§āĻā§ āĻĄā§āĻāĻž āϞā§āĻĄ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻŦāĻĄāĻŧ āĻĄā§āĻāĻžāϏā§āĻāĻā§āϞāĻŋāĻā§ āĻŽā§āϝāĻžāύāĻŋāĻĒā§āϞā§āĻ āĻāϰāĻž āĻŦāĻž āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞ āĻāĻŖāύāĻž āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧāĻ āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒāĻāĻŋāĻā§ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāύā§āĻ āĻĨāĻžāĻāϤ⧠āĻĻā§āϝāĻŧ⧎ āĻāĻāĻŋ `@st.cache` āĻĄā§āĻā§āϰā§āĻāϰ āĻĻāĻŋāϝāĻŧā§ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
-When you mark a function with the @st.cache decorator, it tells Streamlit that whenever the function is called it needs to check a few things:
+āĻāĻĒāύāĻŋ āϝāĻāύ `@st.cache` āĻĄā§āĻā§āϰā§āĻāϰ āĻĻāĻŋāϝāĻŧā§ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāύ āĻāĻŋāĻšā§āύāĻŋāϤ āĻāϰā§āύ, āϤāĻāύ āĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻāĻā§ āĻŦāϞ⧠āϝ⧠āϝāĻāύāĻ āĻĢāĻžāĻāĻļāύāĻāĻŋ āĻŦāϞāĻž āĻšāϝāĻŧ āϤāĻāύ āĻāĻāĻŋ āĻāϝāĻŧā§āĻāĻāĻŋ āĻāĻŋāύāĻŋāϏ āĻĒāϰā§āĻā§āώāĻž āĻāϰāϤ⧠āĻšāĻŦā§:
-1. The input parameters that you called the function with
-2. The value of any external variable used in the function
-3. The body of the function
-4. The body of any function used inside the cached function
+ā§§. āĻāύāĻĒā§āĻ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋ āϝāĻž āĻĻāĻŋāϝāĻŧā§ āĻāĻĒāύāĻŋ āĻĢāĻžāĻāĻļāύ āĻāϞ āĻāϰā§āĻā§āύ
+⧍. āĻĢāĻžāĻāĻļāύ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āϝā§āĻā§āύ⧠āĻŦāĻžāĻšā§āϝāĻŋāĻ āĻāϞāĻā§āϰ āĻŽāĻžāύ
+ā§Š. āĻĢāĻžāĻāĻļāύā§āϰ āĻŽā§āϞ āĻ
āĻāĻļ
+ā§Ē. āĻā§āϝāĻžāĻļāĻĄ āĻĢāĻžāĻāĻļāύā§āϰ āĻāĻŋāϤāϰ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āϝā§āĻā§āύ⧠āĻĢāĻžāĻāĻļāύā§āϰ āĻŦāĻĄāĻŋ
-If this is the first time Streamlit has seen these four components with these exact values and in this exact combination and order, it runs the function and stores the result in a local cache. Then, next time the cached function is called, if none of these components changed, Streamlit will just skip executing the function altogether and, instead, return the output previously stored in the cache.
+āϝāĻĻāĻŋ āĻāĻ āĻĒā§āϰāĻĨāĻŽāĻŦāĻžāϰ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāĻ āĻāĻžāϰāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāύāĻā§ āĻāĻ āϏāĻ āĻŋāĻ āĻŽāĻžāύāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āĻĻā§āĻā§ āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻāĻ āϏāĻ āĻŋāĻ āϏāĻāĻŽāĻŋāĻļā§āϰāĻŖ āĻāĻŦāĻ āĻā§āϰāĻŽā§, āĻāĻāĻŋ āĻĢāĻžāĻāĻļāύāĻāĻŋ āĻāĻžāϞāĻžāϝāĻŧ āĻāĻŦāĻ āĻĢāϞāĻžāĻĢāϞāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āϏā§āĻĨāĻžāύā§āϝāĻŧ āĻā§āϝāĻžāĻļā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āĨ¤ āϤāĻžāϰāĻĒāϰā§, āĻĒāϰā§āϰ āĻŦāĻžāϰ āĻā§āϝāĻžāĻļā§ āĻāϰāĻž āĻĢāĻžāĻāĻļāύāĻāĻŋ āĻāϞ āĻāϰāĻž āĻšāϞā§, āϝāĻĻāĻŋ āĻāĻ āĻāĻĒāĻžāĻĻāĻžāύāĻā§āϞāĻŋāϰ āĻā§āύā§āĻāĻŋāĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āύāĻž āĻšāϝāĻŧ, āϤāĻŦā§ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĢāĻžāĻāĻļāύāĻāĻŋ āϏāĻŽā§āĻĒā§āϰā§āĻŖāϰā§āĻĒā§ āĻāĻžāϞāĻžāύ⧠āĻāĻĄāĻŧāĻŋāϝāĻŧā§ āϝāĻžāĻŦā§ āĻāĻŦāĻ āĻĒāϰāĻŋāĻŦāϰā§āϤā§, āĻā§āϝāĻžāĻļā§ āĻĒā§āϰā§āĻŦā§ āϏāĻāϰāĻā§āώāĻŋāϤ āĻāĻāĻāĻĒā§āĻāĻāĻŋ āĻĢāĻŋāϰāĻŋāϝāĻŧā§ āĻĻā§āĻŦā§āĨ¤
-The way Streamlit keeps track of changes in these components is through hashing. Think of the cache as an in-memory key-value store, where the key is a hash of all of the above and the value is the actual output object passed by reference.
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āϝā§āĻāĻžāĻŦā§ āĻāĻ āĻāĻĒāĻžāĻĻāĻžāύāĻā§āϞāĻŋāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞāĻŋ āĻā§āϰā§āϝāĻžāĻ āϰāĻžāĻā§ āϤāĻž āĻšāϞ āĻšā§āϝāĻžāĻļāĻŋāĻāϝāĻŧā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ā§ˇ āĻā§āϝāĻžāĻļā§āĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻāύ-āĻŽā§āĻŽāϰāĻŋ āĻā§-āĻā§āϝāĻžāϞ⧠āϏā§āĻā§āϰ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻžāĻŦā§āύ, āϝā§āĻāĻžāύ⧠āĻā§āĻāĻŋ āĻāĻĒāϰā§āϰ āϏāĻŽāϏā§āϤāĻāĻŋāϰ āĻāĻāĻāĻŋ āĻšā§āϝāĻžāĻļ āĻāĻŦāĻ āĻŽāĻžāύāĻāĻŋ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻĻā§āĻŦāĻžāϰāĻž āĻĒāĻžāϏ āĻāϰāĻž āĻĒā§āϰāĻā§āϤ āĻāĻāĻāĻĒā§āĻ āĻ
āĻŦāĻā§āĻā§āĻāĨ¤
-Finally, `@st.cache` supports arguments to configure the cache's behavior. You can find more information on those in our API reference.
+āĻ
āĻŦāĻļā§āώā§, `@st.cache` āĻā§āϝāĻžāĻļā§āϰ āĻāĻāϰāĻŖ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāϤ⧠āĻāϰā§āĻā§āĻŽā§āύā§āĻ āϏāĻŽāϰā§āĻĨāύ āĻāϰā§āĨ¤ āĻāĻĒāύāĻŋ āĻāĻŽāĻžāĻĻā§āϰ API āϰā§āĻĢāĻžāϰā§āύā§āϏ⧠āϏā§āĻā§āϞāĻŋ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰāĻ āϤāĻĨā§āϝ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύāĨ¤
-## How to use?
+## āĻāĻŋāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§?
-You can simply add `st.cache` decorator on the preceding line of a custom function that you define in your Streamlit app. See the example below.
+āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ Streamlit āĻ
ā§āϝāĻžāĻĒā§ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽ āĻĢāĻžāĻāĻļāύā§āϰ āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āϞāĻžāĻāύ⧠āϏāĻšāĻāĻāĻžāĻŦā§ `st.cache` āĻĄā§āĻā§āϰā§āĻāϰ āϝā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āύā§āĻā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖ āĻĻā§āĻā§āύāĨ¤
## Demo app
[](https://share.streamlit.io/dataprofessor/st.cache/)
-## Code
-Here's how to use `st.cache`:
+## āĻā§āĻĄ
+āĻāĻāĻžāύ⧠āĻāĻŋāĻāĻžāĻŦā§ `st.cache` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ:
```python
import streamlit as st
import numpy as np
@@ -68,8 +68,8 @@ b1 = time()
st.info(b1-b0)
```
-## Line-by-line explanation
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` as well as other libraries used in the app like so:
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻĨāĻŽ āĻāĻŋāύāĻŋāϏāĻāĻŋ āĻšāϞ⧠`streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ `st` āĻšāĻŋāϏā§āĻŦā§ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž āĻāĻŦāĻ āĻ
āύā§āύāĻžāύā§āϝ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž:
```python
import streamlit as st
import numpy as np
@@ -77,12 +77,12 @@ import pandas as pd
from time import time
```
-This is followed by creating a title text for the app:
+āĻāĻāĻŋ āĻ
ā§āϝāĻžāĻĒā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻļāĻŋāϰā§āύāĻžāĻŽ āĻĒāĻžāĻ ā§āϝ āϤā§āϰāĻŋ āĻāϰ⧠āĻ
āύā§āϏāϰāĻŖ āĻāϰāĻž āĻšāϝāĻŧ:
```python
st.title('Streamlit Cache')
```
-Next, we'll define 2 custom functions for generating a large DataFrame where the first one makes use of the `st.cache` decorator while the second does not:
+āĻāϰ āĻĒāϰā§, āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āĻŦāĻĄāĻŧ āĻĄā§āĻāĻžāĻĢā§āϰā§āĻŽ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āĻāύā§āϝ 2āĻāĻŋ āĻāĻžāϏā§āĻāĻŽ āĻĢāĻžāĻāĻļāύ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻŦ āϝā§āĻāĻžāύ⧠āĻĒā§āϰāĻĨāĻŽāĻāĻŋ `st.cache` āĻĄā§āĻā§āϰā§āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϝāĻāύ āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧāĻāĻŋ āĻāϰ⧠āύāĻž:
```python
@st.cache(suppress_st_warning=True)
def load_data_a():
@@ -100,7 +100,7 @@ def load_data_b():
return df
```
-Finally, we run the custom function while also timing the run time using the `time()` command.
+āĻ
āĻŦāĻļā§āώā§, āĻāĻŽāϰāĻž āĻāĻžāϏā§āĻāĻŽ āĻĢāĻžāĻāĻļāύ āĻāĻžāϞāĻžāĻ āϝāĻāύ `time()` āĻāĻŽāĻžāύā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϰāĻžāύ āĻāĻžāĻāĻŽ āĻāĻžāĻāĻŽāĻŋāĻ āĻāϰāĻŋāĨ¤
```python
# Using cache
a0 = time()
@@ -123,11 +123,11 @@ b1 = time()
st.info(b1-b0)
```
-Notice how the first run may provide roughly similar run time. Reload the app and notice how the run time changes when using the `st.cache` decorator. Did you observe any speed increase?
+āϞāĻā§āώā§āϝ āĻāϰā§āύ āĻāĻŋāĻāĻžāĻŦā§ āĻĒā§āϰāĻĨāĻŽ āϰāĻžāύ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻ
āύā§āϰā§āĻĒ āϰāĻžāύ āĻāĻžāĻāĻŽ āĻĒā§āϰāĻĻāĻžāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻ
ā§āϝāĻžāĻĒāĻāĻŋ āĻĒā§āύāϰāĻžāϝāĻŧ āϞā§āĻĄ āĻāϰā§āύ āĻāĻŦāĻ `st.cache` āĻĄā§āĻā§āϰā§āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻā§āĻāĻžāĻŦā§ āϰāĻžāύ āĻāĻžāĻāĻŽ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšāϝāĻŧ āϤāĻž āϞāĻā§āώā§āϝ āĻāϰā§āύāĨ¤ āĻāĻĒāύāĻŋ āĻāĻŋ āĻā§āύ āĻāϤāĻŋ āĻŦā§āĻĻā§āϧāĻŋ āĻĒāϰā§āϝāĻŦā§āĻā§āώāĻŖ āĻāϰā§āĻā§āύ?
## Further reading
-- [`st.cache` API Documentation](https://docs.streamlit.io/library/api-reference/performance/st.cache)
-- [Optimize performance with `st.cache`](https://docs.streamlit.io/library/advanced-features/caching)
-- [Experimental cache primitives](https://docs.streamlit.io/library/advanced-features/experimental-cache-primitives)
+- [`st.cache` API āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ](https://docs.streamlit.io/library/api-reference/performance/st.cache)
+- [āϏāĻā§āĻā§ āĻāϰā§āĻŽāĻā§āώāĻŽāϤāĻž āĻ
āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻ āĻāϰā§āύ `st.cache`āĻĻāĻŋā§ā§](https://docs.streamlit.io/library/advanced-features/caching)
+- [āĻĒāϰā§āĻā§āώāĻžāĻŽā§āϞāĻ āĻā§āϝāĻžāĻļā§](https://docs.streamlit.io/library/advanced-features/experimental-cache-primitives)
- [`st.experimental_memo`](https://docs.streamlit.io/library/api-reference/performance/st.experimental_memo)
- [`st.experimental_singleton`](https://docs.streamlit.io/library/api-reference/performance/st.experimental_singleton)
diff --git a/content/Day25.md b/content/Day25.md
index 26efc1c..fbcb369 100644
--- a/content/Day25.md
+++ b/content/Day25.md
@@ -1,19 +1,19 @@
# st.session_state
-We define access to a Streamlit app in a browser tab as a session. For each browser tab that connects to the Streamlit server, a new session is created. Streamlit reruns your script from top to bottom every time you interact with your app. Each reruns takes place in a blank slate: no variables are shared between runs.
+āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āĻ
āϧāĻŋāĻŦā§āĻļāύ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻŦā§āϰāĻžāĻāĻāĻžāϰ āĻā§āϝāĻžāĻŦā§ āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻ
ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāĻŦā§āĨ¤ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻŦā§āϰāĻžāĻāĻāĻžāϰ āĻā§āϝāĻžāĻŦā§āϰ āĻāύā§āϝ, āĻāĻāĻāĻŋ āύāϤā§āύ āϏā§āĻļāύ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻĒāύāĻŋ āϝāĻāύāĻ āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒā§āϰ āϏāĻžāĻĨā§ āĻāύā§āĻāĻžāϰāĻ
ā§āϝāĻžāĻā§āĻ āĻāϰā§āύ āϤāĻāύāĻ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāĻĒāύāĻžāϰ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāĻĒāϰ⧠āĻĨā§āĻā§ āύā§āĻā§ āĻĒā§āύāϰāĻžāϝāĻŧ āĻāĻžāϞāĻžāϝāĻŧāĨ¤ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒā§āύāĻāϰāĻžāύ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻāĻž āϏā§āϞā§āĻā§ āϏāĻā§āĻāĻžāϞāĻŋāϤ āĻšāϝāĻŧ: āϰāĻžāύā§āϰ āĻŽāϧā§āϝ⧠āĻā§āύ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻāĻžāĻ āĻāϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤
-Session State is a way to share variables between reruns, for each user session. In addition to the ability to store and persist state, Streamlit also exposes the ability to manipulate state using Callbacks.
+āϏā§āĻļāύ āϏā§āĻā§āĻ āĻšāϞ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āϏā§āĻļāύā§āϰ āĻāύā§āϝ āϰāĻŋāϰāĻžāύāĻā§āϞāĻŋāϰ āĻŽāϧā§āϝ⧠āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻļā§āϝāĻŧāĻžāϰ āĻāϰāĻžāϰ āĻāĻāĻāĻŋ āĻāĻĒāĻžāϝāĻŧāĨ¤ āϏā§āĻā§āĻ āϏāĻā§āĻāϝāĻŧ āĻāĻŦāĻ āϏā§āĻĨāĻžāϝāĻŧā§ āĻāϰāĻžāϰ āĻā§āώāĻŽāϤāĻž āĻāĻžāĻĄāĻŧāĻžāĻ, āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāϞāĻŦā§āϝāĻžāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏā§āĻā§āĻ āĻŽā§āϝāĻžāύāĻŋāĻĒā§āϞā§āĻ āĻāϰāĻžāϰ āĻā§āώāĻŽāϤāĻžāĻ āĻĒā§āϰāĻāĻžāĻļ āĻāϰā§āĨ¤
-In this tutorial, we will illustrate the usage of Session State and Callbacks as we build a weight conversion app.
+āĻāĻ āĻāĻŋāĻāĻā§āϰāĻŋāϝāĻŧāĻžāϞā§, āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āĻāĻāύ āϰā§āĻĒāĻžāύā§āϤāϰ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āϏā§āĻļāύ āϏā§āĻā§āĻ āĻāĻŦāĻ āĻāϞāĻŦā§āϝāĻžāĻā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰāĻŦāĨ¤
-`st.session_state` allows the implementation of session state in a Streamlit app.
+`st.session_state` āĻāĻāĻāĻŋ Streamlit āĻ
ā§āϝāĻžāĻĒā§ āϏā§āĻļāύ āϏā§āĻā§āĻ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύā§āϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧāĨ¤
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
[](https://share.streamlit.io/dataprofessor/st.session_state/)
-## Code
-Here's how to use `st.session_state`:
+## āĻā§āĻĄ
+āĻāĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ `st.session_state`:
```python
import streamlit as st
@@ -35,18 +35,18 @@ st.header('Output')
st.write("st.session_state object:", st.session_state)
```
-## Line-by-line explanation
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` like so:
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻĨāĻŽ āĻāĻŋāύāĻŋāϏāĻāĻŋ āĻšāϞ⧠`streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ `st` āĻšāĻŋāϏā§āĻŦā§ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž:
```python
import streamlit as st
```
-Firstly, we'll start by creating the title of the app:
+āĻĒā§āϰāĻĨāĻŽāϤ, āĻāĻŽāϰāĻž āĻ
ā§āϝāĻžāĻĒāĻāĻŋāϰ āĻļāĻŋāϰā§āύāĻžāĻŽ āϤā§āϰāĻŋ āĻāϰ⧠āĻļā§āϰ⧠āĻāϰāĻŦ:
```python
st.title('st.session_state')
```
-Next, we define custom functions for the weight conversion from lbs to kg and vice versa:
+āĻāϰ āĻĒāϰā§, āĻāĻŽāϰāĻž āĻĒāĻžāĻāύā§āĻĄ āĻĨā§āĻā§ āĻā§āĻāĻŋ āĻāĻāύ āϰā§āĻĒāĻžāύā§āϤāϰā§āϰ āĻŦāĻž āϤāĻžāϰ āĻŦāĻŋāĻĒāϰā§āϤ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻžāϏā§āĻāĻŽ āĻĢāĻžāĻāĻļāύ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻŋ:
```python
def lbs_to_kg():
st.session_state.kg = st.session_state.lbs/2.2046
@@ -54,7 +54,7 @@ def kg_to_lbs():
st.session_state.lbs = st.session_state.kg*2.2046
```
-Here, we use `st.number_input` to accept numerical inputs of the weight values:
+āĻāĻāĻžāύā§, āĻāĻŽāϰāĻž āĻāĻāύ āĻŽāĻžāύā§āϰ āϏāĻāĻā§āϝāĻžāϏā§āĻāĻ āĻāύāĻĒā§āĻ āĻā§āϰāĻšāĻŖ āĻāϰāϤ⧠`st.number_input` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋ:
```python
st.header('Input')
col1, spacer, col2 = st.columns([2,1,2])
@@ -63,16 +63,18 @@ with col1:
with col2:
kilogram = st.number_input("Kilograms:", key = "kg", on_change = kg_to_lbs)
```
-The above 2 custom functions will be called upon as soon as a numerical value is entered into the number box created using the `st.number_input` command. Notice how the `on_change` option specifies the 2 custom functions `lbs_to_kg` and `kg_to_lbs`).
-In a nutshell, upon entering a number into the `st.number_input` box the number is converted by these custom functions.
+āĻāĻĒāϰā§āϰ 2āĻāĻŋ āĻāĻžāϏā§āĻāĻŽ āĻĢāĻžāĻāĻļāύāĻā§āϞāĻŋāĻā§ 'st.number_input` āĻāĻŽāĻžāύā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϤā§āϰāĻŋ āĻāϰāĻž āύāĻŽā§āĻŦāϰ āĻŦāĻžāĻā§āϏ⧠āĻāĻāĻāĻŋ āϏāĻāĻā§āϝāĻžāϏā§āĻāĻ āĻŽāĻžāύ āĻĒā§āϰāĻŦā§āĻļ āĻāϰāĻžāύ⧠āĻšāĻŦā§āĨ¤ āϞāĻā§āώā§āϝ āĻāϰā§āύ āĻāĻŋāĻāĻžāĻŦā§ `on_change` āĻŦāĻŋāĻāϞā§āĻĒāĻāĻŋ 2āĻāĻŋ āĻāĻžāϏā§āĻāĻŽ āĻĢāĻžāĻāĻļāύ `lbs_to_kg` āĻāĻŦāĻ `kg_to_lbs` āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰā§āĨ¤
-Finally, the weight values in `kg` and `lbs` units as stored in the session state as `st.session_state.kg` and `st.session_state.lbs` will be printed out via `st.write`:
+āϏāĻāĻā§āώā§āĻĒā§, `st.number_input` āĻŦāĻžāĻā§āϏ⧠āĻāĻāĻāĻŋ āϏāĻāĻā§āϝāĻž āĻĒā§āϰāĻŦā§āĻļ āĻāϰāĻžāϞ⧠āϏāĻāĻā§āϝāĻžāĻāĻŋ āĻāĻ āĻāĻžāϏā§āĻāĻŽ āĻĢāĻžāĻāĻļāύ āĻĻā§āĻŦāĻžāϰāĻž āϰā§āĻĒāĻžāύā§āϤāϰāĻŋāϤ āĻšāϝāĻŧāĨ¤
+
+āĻĒāϰāĻŋāĻļā§āώā§, `kg` āĻāĻŦāĻ `lbs` āĻāĻāύāĻŋāĻā§āϰ āĻāĻāύā§āϰ āĻŽāĻžāύāĻā§āϞāĻŋ āϏā§āĻļāύ āϏā§āĻā§āĻā§ `st.session_state.kg` āĻāĻŦāĻ `st.session_state.lbs` āĻšāĻŋāϏāĻžāĻŦā§ āϏāĻāϰāĻā§āώāĻŋāϤ āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒā§āϰāĻŋāύā§āĻ āĻāϰāĻž āĻšāĻŦā§
+`st.write`:
```python
st.header('Output')
st.write("st.session_state object:", st.session_state)
```
-## Further reading
-- [Session State](https://docs.streamlit.io/library/api-reference/session-state)
-- [Add statefulness to apps](https://docs.streamlit.io/library/advanced-features/session-state)
+## āĻāϰāĻ āĻĒāĻĄāĻŧāĻž
+- [āϏā§āĻļāύ āϏā§āĻā§āĻ](https://docs.streamlit.io/library/api-reference/session-state)
+- [āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāĻžāύāĻā§āϞāĻŋāϤ⧠āϏā§āĻā§āĻ āϝā§āĻā§āϤ āĻāϰā§āύ](https://docs.streamlit.io/library/advanced-features/session-state)
diff --git a/content/Day26.md b/content/Day26.md
index 46deee9..582d980 100644
--- a/content/Day26.md
+++ b/content/Day26.md
@@ -1,15 +1,15 @@
-# How to use API by building the Bored API app
+# āĻŦā§āϰā§āĻĄ āĻāĻĒāĻŋāĻāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰ⧠āĻā§āĻāĻžāĻŦā§ API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ
-The Bored API app suggests fun things for you to do when you are bored!
+āĻŦā§āϰā§āĻĄ API āĻ
ā§āϝāĻžāĻĒāĻāĻŋ āĻāĻĒāύāĻžāϰ āĻāύā§āϝ āĻŽāĻāĻžāĻĻāĻžāϰ āĻāĻŋāύāĻŋāϏāĻā§āϞāĻŋ āĻĒā§āϰāϏā§āϤāĻžāĻŦ āĻāϰ⧠āϝāĻāύ āĻāĻĒāύāĻŋ āĻŦāĻŋāϰāĻā§āϤ āĻšāύ!
-Technically, it also demonstrates the usage of APIs from within a Streamlit app.
+āĻā§āĻāύāĻŋāĻā§āϝāĻžāϞāĻŋ, āĻāĻāĻŋ āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒā§āϰ āĻŽāϧā§āϝ⧠āĻĨā§āĻā§ API-āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ āĻĻā§āĻāĻžāϝāĻŧāĨ¤
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
-[](https://share.streamlit.io/dataprofessor/bored-api-app/)
+[](https://share.streamlit.io/dataprofessor/bored-api-app/)
-## Code
-Here's how to implement the Bored-API app:
+## āĻā§āĻĄ
+āĻŦā§āϰā§-API āĻ
ā§āϝāĻžāĻĒāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āĻāϰāĻŦā§āύ āϤāĻž āĻāĻāĻžāύā§:
```python
import streamlit as st
import requests
@@ -43,32 +43,34 @@ with col3:
st.metric(label='Price', value=suggested_activity['price'], delta='')
```
-## Line-by-line explanation
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` and the `requests` library like so:
+
+
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻĨāĻŽ āĻāĻŋāύāĻŋāϏāĻāĻŋ āĻšāϞ⧠`streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ `st` āĻšāĻŋāϏā§āĻŦā§ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž āĻāĻŦāĻ `requests` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž:
```python
import streamlit as st
import requests
```
-The app's title is displayed via `st.title`:
+āĻ
ā§āϝāĻžāĻĒā§āϰ āĻļāĻŋāϰā§āύāĻžāĻŽāĻāĻŋ `st.title` āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒā§āϰāĻĻāϰā§āĻļāĻŋāϤ āĻšāϝāĻŧ:
```python
st.title('đ Bored API app')
```
-Next, we'll accept user input on the **activity type** by means of the `st.selectbox` command:
+āĻāϰāĻĒāϰ, āĻāĻŽāϰāĻž `st.selectbox` āĻāĻŽāĻžāύā§āĻĄā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ **āĻ
ā§āϝāĻžāĻā§āĻāĻŋāĻāĻŋāĻāĻŋ āĻāĻžāĻāĻĒ**-āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāύāĻĒā§āĻ āĻā§āϰāĻšāĻŖ āĻāϰāĻŦ:
```python
st.sidebar.header('Input')
selected_type = st.sidebar.selectbox('Select an activity type', ["education", "recreational", "social", "diy", "charity", "cooking", "relaxation", "music", "busywork"])
```
-The selected activity mentioned above is then appended to the URL via an f-string, which is then used to retrieve the resulting JSON data:
+āĻāĻĒāϰ⧠āĻāϞā§āϞāĻŋāĻāĻŋāϤ āύāĻŋāϰā§āĻŦāĻžāĻāĻŋāϤ āĻāĻžāϰā§āϝāĻāϞāĻžāĻĒ āϤāĻžāϰāĻĒāϰ āĻāĻāĻāĻŋ f-āϏā§āĻā§āϰāĻŋāĻ āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ URL āĻ āϏāĻāϝā§āĻā§āϤ āĻāϰāĻž āĻšāϝāĻŧ, āϝāĻž āϤāĻžāϰāĻĒāϰ āĻĢāϞāĻžāĻĢāϞ JSON āĻĄā§āĻāĻž āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāϝāĻŧ:
```python
suggested_activity_url = f'http://www.boredapi.com/api/activity?type={selected_type}'
json_data = requests.get(suggested_activity_url)
suggested_activity = json_data.json()
```
-Here, we'll display information about the app and the JSON data via the `st.expander` command.
+āĻāĻāĻžāύā§, āĻāĻŽāϰāĻž `st.expander` āĻāĻŽāĻžāύā§āĻĄā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻ
ā§āϝāĻžāĻĒ āĻāĻŦāĻ JSON āĻĄā§āĻāĻž āϏāĻŽā§āĻĒāϰā§āĻā§ āϤāĻĨā§āϝ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻŦāĨ¤
```python
c1, c2 = st.columns(2)
with c1:
@@ -79,13 +81,13 @@ with c2:
st.write(suggested_activity)
```
-We'll then display a suggested activity like so:
+āϤāĻžāϰāĻĒāϰ⧠āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āĻĒā§āϰāϏā§āϤāĻžāĻŦāĻŋāϤ āĻāĻžāϰā§āϝāĻāϞāĻžāĻĒ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻŦ āϝā§āĻŽāύ:
```python
st.header('Suggested activity')
st.info(suggested_activity['activity'])
```
-Finally, we'll also display the accompanying information of the suggested activity such as the `Number of Participants`, `Type of Activity` and `Price`.
+āĻ
āĻŦāĻļā§āώā§, āĻāĻŽāϰāĻž āĻĒā§āϰāϏā§āϤāĻžāĻŦāĻŋāϤ āĻā§āϰāĻŋāϝāĻŧāĻžāĻāϞāĻžāĻĒā§āϰ āϏāĻšāĻāĻžāĻŽā§ āϤāĻĨā§āϝ āϝā§āĻŽāύ `āĻ
āĻāĻļāĻā§āϰāĻšāĻŖāĻāĻžāϰā§āĻĻā§āϰ āϏāĻāĻā§āϝāĻž`, `āĻā§āϰāĻŋāϝāĻŧāĻžāĻāϞāĻžāĻĒā§āϰ āĻĒā§āϰāĻāĻžāϰ` āĻāĻŦāĻ `āĻŽā§āϞā§āϝ` āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻŦāĨ¤
```python
col1, col2, col3 = st.columns(3)
with col1:
@@ -96,5 +98,5 @@ with col3:
st.metric(label='Price', value=suggested_activity['price'], delta='')
```
-## Further reading
-- [Bored API](http://www.boredapi.com/)
+## āĻāϰāĻ āĻĒāĻĄāĻŧāĻž
+- [āĻŦā§āϰā§āĻĄ API](http://www.boredapi.com/)
diff --git a/content/Day27.md b/content/Day27.md
index f9b791e..e8c618c 100644
--- a/content/Day27.md
+++ b/content/Day27.md
@@ -1,38 +1,38 @@
-# Build a draggable and resizable dashboard with Streamlit Elements
+# āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāϞāĻŋāĻŽā§āύā§āĻā§āϰ āϏāĻžāĻĨā§ āĻāĻāĻāĻŋ āĻā§āύ⧠āĻāύāϤ⧠āϝā§āĻā§āϝ āĻāĻŦāĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāϝā§āĻā§āϝ āĻĄā§āϝāĻžāĻļāĻŦā§āϰā§āĻĄ āϤā§āϰāĻŋ āĻāϰā§āύ
-Streamlit Elements is a third-party component made by [okld](https://github.com/okld) that gives you the tools to compose beautiful applications and dashboards with Material UI widgets, Monaco editor (Visual Studio Code), Nivo charts, and more.
+Streamlit Elements āĻšāϞ [okld](https://github.com/okld) āĻĻā§āĻŦāĻžāϰāĻž āϤā§āϰāĻŋ āĻāĻāĻāĻŋ āϤā§āϤā§āϝāĻŧ-āĻĒāĻā§āώā§āϰ āĻāĻĒāĻžāĻĻāĻžāύ āϝāĻž āĻāĻĒāύāĻžāĻā§ āĻāĻĒāĻžāĻĻāĻžāύ UI āĻāĻāĻā§āĻ, āĻŽā§āύāĻžāĻā§ āϏāĻŽā§āĻĒāĻžāĻĻāĻ (āĻāĻŋāĻā§āϝā§āϝāĻŧāĻžāϞ āϏā§āĻā§āĻĄāĻŋāĻ āĻā§āĻĄ), āύāĻŋāĻā§ āĻāĻžāϰā§āĻ āϏāĻš āϏā§āύā§āĻĻāϰ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻāĻŦāĻ āĻĄā§āϝāĻžāĻļāĻŦā§āϰā§āĻĄ āϰāĻāύāĻž āĻāϰāĻžāϰ āϏāϰāĻā§āĻāĻžāĻŽ āĻāĻŦāĻ āĻāϰ⧠āĻ
āύā§āĻ āĻāĻŋāĻā§ āĻĻā§ā§āĨ¤
-## How to use?
+## āĻāĻŋāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§?
-### Installation
+### āϏā§āĻĨāĻžāĻĒāύ
-The first step is to install Streamlit Elements in your environment:
+āĻĒā§āϰāĻĨāĻŽ āϧāĻžāĻĒ āĻšāϞ āĻāĻĒāύāĻžāϰ āĻĒāϰāĻŋāĻŦā§āĻļā§ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāĻĒāĻžāĻĻāĻžāύāĻā§āϞāĻŋ āĻāύāϏā§āĻāϞ āĻāϰāĻž:
```bash
pip install streamlit-elements==0.1.*
```
-It is recommended to pin the version to `0.1.*`, as future versions might introduce breaking API changes.
+āĻāĻžāϰā§āϏāύāĻāĻŋāĻā§ `ā§Ļ.ā§§ .*`-āĻ āĻĒāĻŋāύ āĻāϰāĻžāϰ āĻĒāϰāĻžāĻŽāϰā§āĻļ āĻĻā§āĻāϝāĻŧāĻž āĻšāĻā§āĻā§, āĻāĻžāϰāĻŖ āĻāĻŦāĻŋāώā§āϝāϤ āĻāĻžāϰā§āϏāύāĻā§āϞāĻŋ āĻŦā§āϰā§āĻāĻŋāĻ API āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāύāϤ⧠āĻĒāĻžāϰā§āĨ¤
-### Usage
+### āĻŦā§āϝāĻŦāĻšāĻžāϰ
-You can refer to [Streamlit Elements README](https://github.com/okld/streamlit-elements#getting-started) for an in-depth usage guide.
+āĻāĻĒāύāĻŋ āĻāĻā§āϰāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻžāĻāĻŋāϰ āĻāύā§āϝ [āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāϞāĻŋāĻŽā§āύā§āĻāϏ āϰāĻŋāĻĄāĻŽāĻŋ ](https://github.com/okld/streamlit-elements#getting-started) āĻāϞā§āϞā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
-## What are we building?
+## āĻāĻŽāϰāĻž āĻāĻŋ āύāĻŋāϰā§āĻŽāĻžāĻŖ āĻāϰāĻāĻŋ?
-The goal of today's challenge is to create a dashboard composed of three Material UI cards:
+āĻāĻāĻā§āϰ āĻā§āϝāĻžāϞā§āĻā§āĻā§āϰ āϞāĻā§āώā§āϝ āĻšāϞ āϤāĻŋāύāĻāĻŋ āĻŽā§āĻā§āϰāĻŋāϝāĻŧāĻžāϞ UI āĻāĻžāϰā§āĻĄā§āϰ āϏāĻŽāύā§āĻŦāϝāĻŧā§ āĻāĻāĻāĻŋ āĻĄā§āϝāĻžāĻļāĻŦā§āϰā§āĻĄ āϤā§āϰāĻŋ āĻāϰāĻž:
-- A first card with a Monaco code editor to input some data ;
-- A second card to display that data in a Nivo Bump chart ;
-- A third card to show a YouTube video URL defined with a `st.text_input`.
+- āĻāĻŋāĻā§ āĻĄā§āĻāĻž āĻāύāĻĒā§āĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻŽā§āύāĻžāĻā§ āĻā§āĻĄ āϏāĻŽā§āĻĒāĻžāĻĻāĻ āϏāĻš āĻāĻāĻāĻŋ āĻĒā§āϰāĻĨāĻŽ āĻāĻžāϰā§āĻĄ;
+- āĻāĻāĻāĻŋ āύāĻŋāĻā§ āĻŦāĻžāĻŽā§āĻĒ āĻāĻžāϰā§āĻā§ āϏā§āĻ āĻĄā§āĻāĻž āĻĒā§āϰāĻĻāϰā§āĻļāύā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āĻāĻžāϰā§āĻĄ;
+- āĻāĻāĻāĻŋ 'st.text_input' āĻĻāĻŋāϝāĻŧā§ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāĻāĻāĻŋ āĻāĻāĻāĻŋāĻāĻŦ āĻāĻŋāĻĄāĻŋāĻ URL āĻĻā§āĻāĻžāύā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϤā§āϤā§āϝāĻŧ āĻāĻžāϰā§āĻĄā§ˇ
-You can use data generated from Nivo Bump demo there, in 'data' tab: https://nivo.rocks/bump/.
+āĻāĻĒāύāĻŋ āϏā§āĻāĻžāύ⧠āύāĻŋāĻā§ āĻŦāĻžāĻŽā§āĻĒ āĻĄā§āĻŽā§ āĻĨā§āĻā§ āĻā§āĻĒāύā§āύ āĻĄā§āĻāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ, 'āĻĄā§āĻāĻž' āĻā§āϝāĻžāĻŦā§: https://nivo.rocks/bump/āĨ¤
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
[](https://share.streamlit.io/okld/streamlit-elements-demo/main)
-## Code with line-by-line explanation
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž āϏāĻš āĻā§āĻĄ
```python
# First, we will need the following imports for our application.
@@ -264,6 +264,6 @@ with elements("demo"):
```
-## Any question?
+## āĻā§āύ āĻĒā§āϰāĻļā§āύ?
-Feel free to ask any question regarding Streamlit Elements or this challenge there: [Streamlit Elements Topic](https://discuss.streamlit.io/t/streamlit-elements-build-draggable-and-resizable-dashboards-with-material-ui-nivo-charts-and-more/24616)
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāϞāĻŋāĻŽā§āύā§āĻāϏ āĻŦāĻž āϏā§āĻāĻžāύ⧠āĻāĻ āĻā§āϝāĻžāϞā§āĻā§āĻ āϏāĻŽā§āĻĒāϰā§āĻāĻŋāϤ āϝā§āĻā§āύ⧠āĻĒā§āϰāĻļā§āύ āύāĻŋāϰā§āĻĻā§āĻŦāĻŋāϧāĻžāϝāĻŧ āĻāϰā§āύ: [āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāϞāĻŋāĻŽā§āύā§āĻāϏ āĻŦāĻŋāώāϝāĻŧ](https://discuss.streamlit.io/t/streamlit-elements-build-draggable-and-resizable-dashboards-with-material-ui-nivo-charts-and-more/24616)
diff --git a/content/Day28.md b/content/Day28.md
index 02d68d1..dc34737 100644
--- a/content/Day28.md
+++ b/content/Day28.md
@@ -1,24 +1,24 @@
# streamlit-shap
-[`streamlit-shap`](https://github.com/snehankekre/streamlit-shap) is a Streamlit component that provides a wrapper to display [SHAP](https://github.com/slundberg/shap) plots in [Streamlit](https://streamlit.io/).
+[`streamlit-shap`](https://github.com/snehankekre/streamlit-shap) āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāĻĒāĻžāĻĻāĻžāύ āϝāĻž [SHAP](https://github.com/slundberg/shap) āĻĒā§āϞāĻāĻā§āϞāĻŋ āĻĒā§āϰāĻĻāϰā§āĻļāύā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻŽā§āĻĄāĻŧāĻ āϏāϰāĻŦāϰāĻžāĻš āĻāϰ⧠[āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ](https://streamlit.io/)āĨ¤
-The library is developed by our in-house staff [Snehan Kekre](https://github.com/snehankekre) who also maintains the [Streamlit Documentation](https://docs.streamlit.io/) website.
+āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāĻāĻŋ āĻāĻŽāĻžāĻĻā§āϰ āĻāύ-āĻšāĻžāĻāϏ āϏā§āĻāĻžāĻĢ [āϏā§āύā§āĻšāĻžāύ āĻā§āĻāϰā§](https://github.com/snehankekre) āĻĻā§āĻŦāĻžāϰāĻž āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§, āϝāĻŋāύāĻŋ [āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ](https://docs.streamlit.io/) āĻāϝāĻŧā§āĻŦāϏāĻžāĻāĻāĻ āϰāĻā§āώāĻŖāĻžāĻŦā§āĻā§āώāĻŖ āĻāϰā§āύāĨ¤
-Firstly, install Streamlit (of course!) then pip install the `streamlit-shap` library:
+āĻĒā§āϰāĻĨāĻŽā§, āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāύāϏā§āĻāϞ āĻāϰā§āύ (āĻ
āĻŦāĻļā§āϝāĻ!) āϤāĻžāϰāĻĒāϰ āĻĒāĻŋāĻĒ āĻāύā§āϏāĻāϞ āĻāϰā§āύ `streamlit-shap` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ:
```bash
pip install streamlit
pip install streamlit-shap
```
-There are also other prerequisite libraries to install (e.g. `matplotlib`, `pandas`, `scikit-learn` and `xgboost`) if you haven't yet done so.
+āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāύāϏā§āĻāϞ āĻāϰāĻžāϰ āĻāύā§āϝ āĻ
āύā§āϝāĻžāύā§āϝ āĻĒā§āϰā§āĻŦāĻļāϰā§āϤ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āϰāϝāĻŧā§āĻā§ (āϝā§āĻŽāύ `matplotlib`, `pandas`, `scikit-learn` āĻāĻŦāĻ `xgboost`) āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ āĻāĻāύāĻ āϤāĻž āύāĻž āĻāϰ⧠āĻĨāĻžāĻā§āύāĨ¤
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
-[](https://share.streamlit.io/dataprofessor/streamlit-shap/)
+[](https://share.streamlit.io/dataprofessor/streamlit-shap/)
-## Code
-Here's how to use `streamlit-shap`:
+## āĻā§āĻĄ
+āĻāĻāĻžāύ⧠āĻāĻŋāĻāĻžāĻŦā§ `āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ-āĻļā§āĻĒ` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ:
```python
import streamlit as st
from streamlit_shap import st_shap
@@ -104,19 +104,20 @@ import numpy as np
import pandas as pd
```
-Next, we'll set the page layout to be wide such that contents in the Streamlit app can spread the full page width.
+āĻāϰ āĻĒāϰā§, āĻāĻŽāϰāĻž āĻĒā§āώā§āĻ āĻžāϰ āĻŦāĻŋāύā§āϝāĻžāϏāĻāĻŋāĻā§ āĻāĻŽāύāĻāĻžāĻŦā§ āĻĒā§āϰāĻļāϏā§āϤ āĻāϰāϤ⧠āϏā§āĻ āĻāϰāĻŦ āϝāĻžāϤ⧠āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒā§āϰ āĻŦāĻŋāώāϝāĻŧāĻŦāϏā§āϤ⧠āĻĒā§āϰ⧠āĻĒā§āώā§āĻ āĻžāϰ āĻĒā§āϰāϏā§āĻĨāĻā§ āĻāĻĄāĻŧāĻŋāϝāĻŧā§ āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§āĨ¤
```python
st.set_page_config(layout="wide")
```
-Then, we'll load in a dataset from the `shap` library:
+āϤāĻžāϰāĻĒāϰ, āĻāĻŽāϰāĻž `shap` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻĄā§āĻāĻžāϏā§āĻā§ āϞā§āĻĄ āĻāϰāĻŦ:
```python
@st.experimental_memo
def load_data():
return shap.datasets.adult()
```
-Subsequently, we'll definite a function called `load_model` for taking in the `X, y` matrix pair as input, perform data splitting to train/test sets, constructing a `DMatrix` and build an XGBoost model.
+
+āĻĒāϰāĻŦāϰā§āϤā§āĻāĻžāϞā§, āĻāĻŽāϰāĻž āĻāύāĻĒā§āĻ āĻšāĻŋāϏāĻžāĻŦā§ `X, y` āĻŽā§āϝāĻžāĻā§āϰāĻŋāĻā§āϏ āĻā§āĻĄāĻŧāĻž āύā§āĻāϝāĻŧāĻžāϰ āĻāύā§āϝ `load_model` āύāĻžāĻŽāĻ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāύ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻŦ, āĻā§āϰā§āύ/āĻĒāϰā§āĻā§āώāĻž āϏā§āĻā§ āĻĄā§āĻāĻž āĻŦāĻŋāĻāĻžāĻāύ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻāϰāĻŦ, āĻāĻāĻāĻŋ `DMatrix` āύāĻŋāϰā§āĻŽāĻžāĻŖ āĻāϰāĻŦ āĻāĻŦāĻ āĻāĻāĻāĻŋ XGBoost āĻŽāĻĄā§āϞ āϤā§āϰāĻŋ āĻāϰāĻŦāĨ¤
```python
@st.experimental_memo
def load_model(X, y):
@@ -135,12 +136,12 @@ def load_model(X, y):
return model
```
-The title of the Streamlit app is then displayed:
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒā§āϰ āĻļāĻŋāϰā§āύāĻžāĻŽāĻāĻŋ āϤāĻžāϰāĻĒāϰ āĻĒā§āϰāĻĻāϰā§āĻļāĻŋāϤ āĻšāϝāĻŧ:
```python
st.title("`streamlit-shap` for displaying SHAP plots in a Streamlit app")
```
-An about expander box is implemented to provide details of the app:
+āĻ
ā§āϝāĻžāĻĒāĻāĻŋāϰ āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāϰāĻŖ āĻĻā§āĻāϝāĻŧāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϏāĻŽā§āĻĒā§āϰāϏāĻžāϰāĻŖāĻāĻžāϰ⧠āĻŦāĻžāĻā§āϏ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§:
```python
with st.expander('About the app'):
st.markdown('''[`streamlit-shap`](https://github.com/snehankekre/streamlit-shap) is a Streamlit component that provides a wrapper to display [SHAP](https://github.com/slundberg/shap) plots in [Streamlit](https://streamlit.io/).
@@ -148,7 +149,7 @@ with st.expander('About the app'):
''')
```
-Here, we'll display the header text along with expander box of the `X` and `y` variables of the Input data:
+āĻāĻāĻžāύā§, āĻāĻŽāϰāĻž āĻāύāĻĒā§āĻ āĻĄā§āĻāĻžāϰ `X` āĻāĻŦāĻ `y` āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞā§āϰ āĻāĻā§āϏāĻĒā§āύā§āĻĄāĻžāϰ āĻŦāĻā§āϏ āϏāĻš āĻšā§āĻĄāĻžāϰ āĻā§āĻā§āϏāĻ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻŦ:
```python
st.header('Input data')
X,y = load_data()
@@ -162,12 +163,13 @@ with st.expander('y'):
st.dataframe(y)
```
-Here, we'll display the header text for the forthcoming SHAP output:
+āĻāĻāĻžāύā§, āĻāĻŽāϰāĻž āĻāϏāύā§āύ SHAP āĻāĻāĻāĻĒā§āĻā§āϰ āĻāύā§āϝ āĻšā§āĻĄāĻžāϰ āĻā§āĻā§āϏāĻ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻŦ:
```python
st.header('SHAP output')
```
-The XGBoost model is then built by using the `load_model` function that was just implemented above. Finally,
+
+XGBoost āĻŽāĻĄā§āϞāĻāĻŋ 'load_model' āĻĢāĻžāĻāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āϝāĻž āĻāĻĒāϰ⧠āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ āĻ
āĻŦāĻļā§āώā§,
```python
# train XGBoost model
X,y = load_data()
@@ -176,7 +178,7 @@ X_display,y_display = shap.datasets.adult(display=True)
model = load_model(X, y)
```
-Here, we'll compute the SHAP values, which are then used to create the Waterfall and Beeswarm plots.
+āĻāĻāĻžāύā§, āĻāĻŽāϰāĻž SHAP āĻŽāĻžāύāĻā§āϞāĻŋ āĻāĻŖāύāĻž āĻāϰāĻŦ, āϝāĻž āĻā§āĻžāĻāĻžāϰāĻĢāϞ āĻāĻŦāĻ āĻŦāĻŋāϏā§āĻŦāĻžāϰā§āĻŽ āĻĒā§āϞāĻāϏ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāϝāĻŧāĨ¤
```python
# compute SHAP values
explainer = shap.Explainer(model, X)
@@ -188,7 +190,7 @@ with st.expander('Beeswarm plot'):
st_shap(shap.plots.beeswarm(shap_values), height=300)
```
-Finally, the Tree SHAP algorithms is used to explain the output of ensemble tree models via the `shap.TreeExplainer` command and visualized via the `shap.force_plot` command:
+āĻ
āĻŦāĻļā§āώā§, Tree SHAP āĻ
ā§āϝāĻžāϞāĻāϰāĻŋāĻĻāĻŽāĻā§āϞāĻŋ `shap.TreeExplainer` āĻāĻŽāĻžāύā§āĻĄā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāύāϏā§āĻŽā§āĻŦāϞ āĻā§āϰāĻŋ āĻŽāĻĄā§āϞā§āϰ āĻāĻāĻāĻĒā§āĻ āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāϝāĻŧ āĻāĻŦāĻ `shap.force_plot` āĻāĻŽāĻžāύā§āĻĄā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻŋāĻā§āϝā§āϝāĻŧāĻžāϞāĻžāĻāĻ āĻāϰāĻž āĻšāϝāĻŧ:
```python
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
@@ -200,6 +202,6 @@ with st.expander('Force plot'):
st_shap(shap.force_plot(explainer.expected_value, shap_values[:1000,:], X_display.iloc[:1000,:]), height=400, width=1000)
```
-## Further reading
+## āĻāϰāĻ āĻĒāĻĄāĻŧāĻž
- [`streamlit-shap`](https://github.com/snehankekre/streamlit-shap)
- [SHAP](https://github.com/slundberg/shap)
diff --git a/content/Day29.md b/content/Day29.md
index 294c71a..cd11aa4 100644
--- a/content/Day29.md
+++ b/content/Day29.md
@@ -1,32 +1,32 @@
-# How to make a zero-shot learning text classifier using Hugging Face and Streamlit
+# āĻšāĻžāĻāĻŋāĻāĻĢā§āϏ āĻāĻŦāĻ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻā§āĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻāĻŋāϰā§-āĻļāĻ āϞāĻžāϰā§āύāĻŋāĻ āĻā§āĻā§āϏāĻ āĻā§āϞāĻžāϏāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āϤā§āϰāĻŋ āĻāϰāĻŦā§āύ
-In today's challenge, [Charly Wargnier](https://twitter.com/DataChaz) will walk us through the process of developing a zero-shot learning text classifier using Hugging Face and Streamlit.
+āĻāĻāĻā§āϰ āĻā§āϝāĻžāϞā§āĻā§āĻā§, [āĻāĻžāϰā§āϞāĻŋ āĻāϝāĻŧāĻžāϰā§āĻāύāĻŋāϝāĻŧāĻžāϰ](https://twitter.com/DataChaz) āĻāĻŽāĻžāĻĻā§āϰāĻā§ āĻšāĻžāĻāĻŋāĻ āĻĢā§āϏ āĻāĻŦāĻ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻļā§āύā§āϝ-āĻļāĻ āĻļā§āĻāĻžāϰ āĻĒāĻžāĻ ā§āϝ āĻļā§āϰā§āĻŖāĻŋāĻŦāĻŋāύā§āϝāĻžāϏ āϤā§āϰāĻŋāϰ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāϰ āĻŽāϧā§āϝ āĻĻāĻŋāϝāĻŧā§ āύāĻŋāϝāĻŧā§ āϝāĻžāĻŦā§āĨ¤
-## Introduction
+## āĻā§āĻŽāĻŋāĻāĻž
-Hey Streamliters!
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻāĻžāϰāϰāĻž!
-Today I'm excited to have the opportunity to contribute to the 30DaysofStreamlit challenge via this hands-on tutorial! đ
+āĻāĻ āĻāĻŽāĻŋ āĻāĻ āĻšā§āϝāĻžāύā§āĻĄāϏ-āĻ
āύ āĻāĻŋāĻāĻā§āϰāĻŋāϝāĻŧāĻžāϞā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ 30DaysofStreamlit āĻā§āϝāĻžāϞā§āĻā§āĻā§ āĻ
āĻŦāĻĻāĻžāύ āϰāĻžāĻāĻžāϰ āϏā§āϝā§āĻ āĻĒā§āϝāĻŧā§ āĻāϤā§āϤā§āĻāĻŋāϤ! đ
-## What are we building?
+## āĻāĻŽāϰāĻž āĻāĻŋ āύāĻŋāϰā§āĻŽāĻžāĻŖ āĻāϰāĻāĻŋ?
-We will create a zero-shot learning text classifier using Hugging Face's API inference and Distilbart!
+āĻāĻŽāϰāĻž āĻšāĻžāĻāĻŋāĻāĻĢā§āϏ āĻāϰ API āĻ
āύā§āĻŽāĻžāύ āĻāĻŦāĻ āĻĄāĻŋāϏā§āĻāĻŋāϞāĻŦāĻžāϰā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻāĻŋ āĻāĻŋāϰā§-āĻļāĻ āϞāĻžāϰā§āύāĻŋāĻ āĻā§āĻā§āϏāĻ āĻā§āϞāĻžāϏāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āϤā§āϰāĻŋ āĻāϰāĻŦ!
-You will have the mighty power to classify keyphrases on-the-fly, fast, and without pre ML training!
+āĻāĻĄāĻŧāύā§āϤ, āĻĻā§āϰā§āϤ, āĻāĻŦāĻ āĻĒā§āϰāĻŋ-āĻāĻŽāĻāϞ āĻĒā§āϰāĻļāĻŋāĻā§āώāĻŖ āĻāĻžāĻĄāĻŧāĻžāĻ āĻŽā§āϞ āĻŦāĻžāĻā§āϝāĻžāĻāĻļāĻā§āϞāĻŋāĻā§ āĻļā§āϰā§āĻŖā§āĻŦāĻĻā§āϧ āĻāϰāĻžāϰ āĻĒā§āϰāĻŦāϞ āĻā§āώāĻŽāϤāĻž āĻāĻĒāύāĻžāϰ āĻĨāĻžāĻāĻŦā§!
-Create classifying labels, paste your keyphrases, and you're off!
+āĻļā§āϰā§āĻŖā§āĻŦāĻĻā§āϧ āϞā§āĻŦā§āϞ āϤā§āϰāĻŋ āĻāϰā§āύ, āĻāĻĒāύāĻžāϰ āĻŽā§āϞ āĻŦāĻžāĻā§āϝāĻžāĻāĻļ āĻĒā§āϏā§āĻ āĻāϰā§āύ, āĻāĻŦāĻ āĻāĻĒāύāĻŋ āĻŦāύā§āϧ!
-You can set these labels anything, e.g.:
+āĻāĻĒāύāĻŋ āĻāĻ āϞā§āĻŦā§āϞāĻā§āϞāĻŋ āϝā§āĻā§āύ⧠āĻāĻŋāĻā§ āϏā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ, āϝā§āĻŽāύ:
-- Positive, Negative and Neutral for sentiment analysis
-- Angry, Happy, Emotional for emotion analysis
-- Navigational, Transactional, Informational for intent classification purposes
-- Your product range (bags, shoes, boots etc.)
+- āĻ
āύā§āĻā§āϤāĻŋ āĻŦāĻŋāĻļā§āϞā§āώāĻŖā§āϰ āĻāύā§āϝ āĻāϤāĻŋāĻŦāĻžāĻāĻ, āύā§āϤāĻŋāĻŦāĻžāĻāĻ āĻāĻŦāĻ āύāĻŋāϰāĻĒā§āĻā§āώ
+- āĻāĻŦā§āĻ āĻŦāĻŋāĻļā§āϞā§āώāĻŖā§āϰ āĻāύā§āϝ āϰāĻžāĻāĻžāύā§āĻŦāĻŋāϤ, āĻā§āĻļāĻŋ, āĻāĻŦā§āĻāĻĒā§āϰāĻŦāĻŖ
+- āύā§āĻāĻŋāĻā§āĻļāύāĻžāϞ, āϞā§āύāĻĻā§āύāĻŽā§āϞāĻ, āĻāĻĻā§āĻĻā§āĻļā§āϝ āĻļā§āϰā§āĻŖā§āĻŦāĻŋāĻāĻžāĻā§āϰ āĻāĻĻā§āĻĻā§āĻļā§āϝ⧠āϤāĻĨā§āϝāĻāϤ
+- āĻāĻĒāύāĻžāϰ āĻĒāĻŖā§āϝ āĻĒāϰāĻŋāϏā§āĻŽāĻž (āĻŦā§āϝāĻžāĻ, āĻā§āϤāĻž, āĻŦā§āĻ āĻāϤā§āϝāĻžāĻĻāĻŋ)
-You decide!
+āϤā§āĻŽāĻŋ āĻ āĻŋāĻ āĻāϰ!
-Excited? Let's dive in!
+āĻāϤā§āϤā§āĻāĻŋāϤ? āĻāϰ āĻŽāϧā§āϝ⧠āĻĄā§āĻŦ āĻĻā§āĻāϝāĻŧāĻž āϝāĻžāĻ!
-## Read the full blog
-đ [Read the full blog](https://www.charlywargnier.com/post/how-to-create-a-zero-shot-learning-text-classifier-using-hugging-face-and-streamlit)
+## āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻŦā§āϞāĻ āĻĒāĻĄāĻŧā§āύ
+đ [āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻŦā§āϞāĻ āĻĒāĻĄāĻŧā§āύ](https://www.charlywargnier.com/post/how-to-create-a-zero-shot-learning-text-classifier-using-hugging-face-and-streamlit)
diff --git a/content/Day3.md b/content/Day3.md
index d24dcce..657b41a 100644
--- a/content/Day3.md
+++ b/content/Day3.md
@@ -1,25 +1,25 @@
# st.button
-`st.button` allows the display of a button widget.
+`st.button` āĻāĻāĻāĻŋ āĻŦā§āϤāĻžāĻŽ āĻāĻāĻā§āĻ āĻĒā§āϰāĻĻāϰā§āĻļāύā§āϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧāĨ¤
-## What we're building?
+## āĻāĻŽāϰāĻž āĻāĻŋ āύāĻŋāϰā§āĻŽāĻžāĻŖ āĻāϰāĻāĻŋ?
-A simple app that performs conditionally prints out alternative messages depending on whether the button was pressed or not.
+āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻ
ā§āϝāĻžāĻĒ āϝāĻž āĻļāϰā§āϤāϏāĻžāĻĒā§āĻā§āώ⧠āϏāĻā§āĻāĻžāϞāĻŋāϤ āĻāϰ⧠āĻŦāĻŋāĻāϞā§āĻĒ āĻŦāĻžāϰā§āϤāĻžāĻā§āϞāĻŋāĻā§ āĻĒā§āϰāĻŋāύā§āĻ āĻāĻāĻ āĻāϰ⧠āϤāĻž āύāĻŋāϰā§āĻāϰ āĻāϰ⧠āĻŦā§āϤāĻžāĻŽāĻāĻŋ āĻāĻžāĻĒāĻžāύ⧠āĻšāϝāĻŧā§āĻā§ āĻāĻŋ āύāĻžāĨ¤
-Flow of the app:
+āĻ
ā§āϝāĻžāĻĒā§āϰ āĻĒā§āϰāĻŦāĻžāĻš:
-1. By default, the app prints `Goodbye`
-2. Upon clicking on the button, the app displays the alternative message `Why hello there`
+1. āĻĄāĻŋāĻĢāϞā§āĻāϰā§āĻĒā§, āĻ
ā§āϝāĻžāĻĒāĻāĻŋ `āĻā§āĻĄāĻŦāĻžāĻ` āĻĒā§āϰāĻŋāύā§āĻ āĻāϰā§
+2. āĻŦāĻžāĻāύ āĻā§āϞāĻŋāĻ āĻāϰāĻžāϰ āĻĒāϰā§, āĻ
ā§āϝāĻžāĻĒāĻāĻŋ 'āĻā§āύ āĻšā§āϝāĻžāϞ⧠āϏā§āĻāĻžāύā§' āĻŦāĻŋāĻāϞā§āĻĒ āĻŦāĻžāϰā§āϤāĻž āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰā§
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
-The deployed Streamlit app should look something like the one shown in the below link:
+āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒāĻāĻŋ āύā§āĻā§āϰ āϞāĻŋāĻā§āĻā§ āĻĻā§āĻāĻžāύā§āϰ āĻŽāϤ⧠āĻĻā§āĻāϤ⧠āĻšāĻŦā§:
-[](https://share.streamlit.io/dataprofessor/st.button/)
+[](https://share.streamlit.io/dataprofessor/st.button/)
-## Code
+## āĻā§āĻĄ
-Here's the code to implement the above mentioned app:
+āĻāĻĒāϰ⧠āĻāϞā§āϞāĻŋāĻāĻŋāϤ āĻ
ā§āϝāĻžāĻĒāĻāĻŋ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āĻāϰāĻžāϰ āĻā§āĻĄ āĻāĻāĻžāύā§:
```python
import streamlit as st
@@ -32,21 +32,21 @@ else:
st.write('Goodbye')
```
-## Line-by-line explanation
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` like so:
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻĨāĻŽ āĻāĻŋāύāĻŋāϏāĻāĻŋ āĻšāϞ⧠`streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ `st` āĻšāĻŋāϏā§āĻŦā§ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž:
```python
import streamlit as st
```
-This is followed by creating a header text for the app:
+āĻāĻāĻŋ āĻ
ā§āϝāĻžāĻĒā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻļāĻŋāϰā§āύāĻžāĻŽ āĻĒāĻžāĻ ā§āϝ āϤā§āϰāĻŋ āĻāϰ⧠āĻ
āύā§āϏāϰāĻŖ āĻāϰāĻž āĻšāϝāĻŧ:
```python
st.header('st.button')
```
-Next, we will use conditional statements `if` and `else` for printing alternative messages.
+āĻĒāϰāĻŦāϰā§āϤā§, āĻāĻŽāϰāĻž āĻŦāĻŋāĻāϞā§āĻĒ āĻŦāĻžāϰā§āϤāĻž āĻĒā§āϰāĻŋāύā§āĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻļāϰā§āϤāϏāĻžāĻĒā§āĻā§āώ āĻŦāĻŋāĻŦā§āϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦ `if` āĻāĻŦāĻ `else`āĨ¤
```python
if st.button('Say hello'):
@@ -55,33 +55,34 @@ else:
st.write('Goodbye')
```
-As we can see from the above code box, the `st.button()` command accepts the `label` input argument of `Say hello`, which is the text that the button displays.
+āĻāĻŽāϰāĻž āĻāĻĒāϰā§āϰ āĻā§āĻĄ āĻŦāĻā§āϏ āĻĨā§āĻā§ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻā§āĻāĻŋ, `st.button()` āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ `āϏ⧠āĻšā§āϝāĻžāϞā§` āĻāϰ `āϞā§āĻŦā§āϞ` āĻāύāĻĒā§āĻ āĻāϰā§āĻā§āĻŽā§āύā§āĻ āĻā§āϰāĻšāĻŖ āĻāϰā§, āϝāĻž āĻŦā§āϤāĻžāĻŽāĻāĻŋ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰ⧠āĻāĻŽāύ āĻĒāĻžāĻ ā§āϝāĨ¤
-The `st.write` command is used to print text messages of either `Why hello there` or `Goodbye` depending on whether the button was clicked or not, which is implemented via:
+`st.write` āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ `āĻā§āύ āĻšā§āϝāĻžāϞ⧠āϏā§āĻāĻžāύā§` āĻŦāĻž `āĻā§āĻĄāĻŦāĻžāĻ` āĻāϰ āĻā§āĻā§āϏāĻ āĻŽā§āϏā§āĻ āĻĒā§āϰāĻŋāύā§āĻ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āĻŦā§āϤāĻžāĻŽāĻāĻŋ āĻā§āϞāĻŋāĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŋ āύāĻž āϤāĻžāϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§, āϝāĻž āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻž āĻšāϝāĻŧ:
```python
st.write('Why hello there')
```
-and
+āĻāĻŦāĻ
```python
st.write('Goodbye')
```
-It is important to note that the above `st.write` statements are placed under the `if` and `else` conditions in order to perform the above mentioned process of alternative displaying of messages
+āĻāĻāĻŋ āϞāĻā§āώ āĻāϰāĻž āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āϝ⧠āĻāĻĒāϰā§āϰ `st.write` āĻŦāĻŋāĻŦā§āϤāĻŋāĻā§āϞāĻŋāĻā§ `if` āĻāĻŦāĻ `else` āĻļāϰā§āϤā§āϰ āĻ
āϧā§āύ⧠āĻŦāĻžāϰā§āϤāĻžāĻā§āϞāĻŋāϰ āĻŦāĻŋāĻāϞā§āĻĒ āĻĒā§āϰāĻĻāϰā§āĻļāύā§āϰ āĻāĻĒāϰ⧠āĻāϞā§āϞāĻŋāĻāĻŋāϤ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻāϰāĻžāϰ āĻāύā§āϝ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§
-## Next steps
+## āĻĒāϰāĻŦāϰā§āϤ⧠āĻĒāĻĻāĻā§āώā§āĻĒ
-Now that you have created the Streamlit app locally, it's time to deploy it to [Streamlit Community Cloud](https://streamlit.io/cloud) as will be explained soon in an upcoming challenge.
+āĻāĻāύ āϝā§āĻšā§āϤ⧠āĻāĻĒāύāĻŋ āϏā§āĻĨāĻžāύā§āϝāĻŧāĻāĻžāĻŦā§ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰā§āĻā§āύ, āĻāĻāĻŋāĻā§ [āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāĻŽāĻŋāĻāύāĻŋāĻāĻŋ āĻā§āϞāĻžāĻāĻĄ](https://streamlit.io/cloud) āĻ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāϏā§āĻā§ āϝāĻž āĻāĻāĻāĻŋ āĻāϏāύā§āύ āĻā§āϝāĻžāϞā§āĻā§āĻā§ āĻļā§āĻā§āϰāĻ āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰāĻž āĻšāĻŦā§āĨ¤
-Because this is the first week of your challenge, we provide the full code (as shown in the code box above) and solution (the demo app) right inside this webpage.
+āĻāĻžāϰāĻŖ āĻāĻāĻŋ āĻāĻĒāύāĻžāϰ āĻā§āϝāĻžāϞā§āĻā§āĻā§āϰ āĻĒā§āϰāĻĨāĻŽ āϏāĻĒā§āϤāĻžāĻš, āĻāĻŽāϰāĻž āĻāĻ āĻāϝāĻŧā§āĻŦāĻĒā§āώā§āĻ āĻžāϰ āĻāĻŋāϤāϰā§āĻ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻā§āĻĄ (āĻāĻĒāϰā§āϰ āĻā§āĻĄ āĻŦāĻā§āϏ⧠āĻĻā§āĻāĻžāύ⧠āĻšāϝāĻŧā§āĻā§) āĻāĻŦāĻ āϏāĻŽāĻžāϧāĻžāύ (āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ) āĻĒā§āϰāĻĻāĻžāύ āĻāϰāĻŋāĨ¤
-Moving forward in the next challenges, it is recommended that you first try implementing the Streamlit app yourself.
+āĻĒāϰāĻŦāϰā§āϤ⧠āĻā§āϝāĻžāϞā§āĻā§āĻāĻā§āϞāĻŋāϤ⧠āĻāĻāĻŋāϝāĻŧā§ āϝāĻžāĻāϝāĻŧāĻžāϰ āĻāύā§āϝ, āĻāĻĒāύāĻžāĻā§ āĻĒā§āϰāĻĨāĻŽā§ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒāĻāĻŋ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰāĻžāϰ āĻĒāϰāĻžāĻŽāϰā§āĻļ āĻĻā§āĻāϝāĻŧāĻž āĻšāĻā§āĻā§āĨ¤
-Don't worry if you get stuck, you can always take a peek at the solution.
+āĻāĻĒāύāĻŋ āĻāĻāĻā§ āĻā§āϞ⧠āĻāĻŋāύā§āϤāĻž āĻāϰāĻŦā§āύ āύāĻž, āĻāĻĒāύāĻŋ āϏāĻŦāϏāĻŽāϝāĻŧ āϏāĻŽāĻžāϧāĻžāύāĻāĻŋ āĻāĻāĻāĻŋ āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
-## References
+## āϤāĻĨā§āϝāϏā§āϤā§āϰ
+
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ API āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ⧠[`st.button`](https://docs.streamlit.io/library/api-reference/widgets/st.button) āϏāĻŽā§āĻĒāϰā§āĻā§ āĻĒāĻĄāĻŧā§āύāĨ¤
-Read about [`st.button`](https://docs.streamlit.io/library/api-reference/widgets/st.button) in the Streamlit API Documentation.
diff --git a/content/Day30.md b/content/Day30.md
index 3bc0dbe..e2ae2d6 100644
--- a/content/Day30.md
+++ b/content/Day30.md
@@ -1,35 +1,35 @@
-# The Art of Creating Streamlit Apps
+# āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋāϰ āĻļāĻŋāϞā§āĻĒ
-Today's Day 30 of the *#30DaysOfStreamlit* challenge. Congratulations on making this far in the challenge.
+*#30DaysOfStreamlit* āĻā§āϝāĻžāϞā§āĻā§āĻā§āϰ āĻāĻāĻā§āϰ āĻĻāĻŋāύ ā§Šā§ĻāĨ¤ āĻ
āĻāĻŋāύāύā§āĻĻāύ āĻāĻ āĻā§āϝāĻžāϞā§āĻā§āĻā§ āĻāϤāĻĻā§āϰ āĻāĻĄāĻŧāĻžāϰ āĻāύā§āϝāĨ¤
-In this tutorial, we're going to put our newfound knowledge from this learning challenge to create Streamlit apps to solve real-world problem.
+āĻāĻ āĻāĻŋāĻāĻā§āϰāĻŋāϝāĻŧāĻžāϞā§, āĻāĻŽāϰāĻž āĻŦāĻžāϏā§āϤāĻŦ-āĻŦāĻŋāĻļā§āĻŦā§āϰ āϏāĻŽāϏā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻāύā§āϝ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒāϏ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻ āĻļā§āĻāĻžāϰ āĻā§āϝāĻžāϞā§āĻā§āĻ āĻĨā§āĻā§ āĻāĻŽāĻžāĻĻā§āϰ āύāϤā§āύ āĻā§āĻāĻžāύ āϰāĻžāĻāϤ⧠āϝāĻžāĻā§āĻāĻŋāĨ¤
-## Real-world problem
+## āĻŦāĻžāϏā§āϤāĻŦ āĻŦāĻŋāĻļā§āĻŦā§āϰ āϏāĻŽāϏā§āϝāĻž
-As a content creator, having access to thumbnail images from YouTube videos are useful resources for social promotion and content creation.
+āĻāĻāĻāĻŋ āĻŦāĻŋāώāϝāĻŧāĻŦāϏā§āϤ⧠āύāĻŋāϰā§āĻŽāĻžāϤāĻž āĻšāĻŋāϏāĻžāĻŦā§, āĻāĻāĻāĻŋāĻāĻŦ āĻāĻŋāĻĄāĻŋāĻ āĻĨā§āĻā§ āĻĨāĻžāĻŽā§āĻŦāύā§āĻāϞ āĻāĻŋāϤā§āϰāĻā§āϞāĻŋāϤ⧠āĻ
ā§āϝāĻžāĻā§āϏā§āϏ āĻĨāĻžāĻāĻž āϏāĻžāĻŽāĻžāĻāĻŋāĻ āĻĒā§āϰāĻāĻžāϰ āĻāĻŦāĻ āϏāĻžāĻŽāĻā§āϰ⧠āϤā§āϰāĻŋāϰ āĻāύā§āϝ āĻĻāϰāĻāĻžāϰ⧠āϏāĻāϏā§āĻĨāĻžāύāĨ¤
-Let's figure out how we're going to tackle this problem and build a Streamlit app.
+āĻāϏā§āύ āĻāĻŽāϰāĻž āĻā§āĻāĻžāĻŦā§ āĻāĻ āϏāĻŽāϏā§āϝāĻžāĻāĻŋ āĻŽā§āĻāĻžāĻŦā§āϞāĻž āĻāϰāϤ⧠āϝāĻžāĻā§āĻāĻŋ āĻāĻŦāĻ āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰāĻŦ āϤāĻž āĻā§āĻāĻā§ āĻŦā§āϰ āĻāϰāĻž āϝāĻžāĻāĨ¤
-## Solution
+## āϏāĻŽāĻžāϧāĻžāύ
-Today, we're going to build `yt-img-app`, which is a Streamlit app that can extract thumbnail images from YouTube videos.
+āĻāĻ, āĻāĻŽāϰāĻž `yt-img-app` āϤā§āϰāĻŋ āĻāϰāϤ⧠āϝāĻžāĻā§āĻāĻŋ, āϝā§āĻāĻŋ āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϝāĻž āĻāĻāĻāĻŋāĻāĻŦ āĻāĻŋāĻĄāĻŋāĻ āĻĨā§āĻā§ āĻĨāĻžāĻŽā§āĻŦāύā§āĻāϞ āĻāĻŦāĻŋ āĻŦā§āϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
-In a nutshell, here's the 3 simple steps that we want the Streamlit app to do:
+āϏāĻāĻā§āώā§āĻĒā§, āĻāĻāĻžāĻ¨ā§ ā§ŠāĻāĻŋ āϏāĻšāĻ āĻĒāĻĻāĻā§āώā§āĻĒ āϝāĻž āĻāĻŽāϰāĻž āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒāĻāĻŋ āĻāϰāϤ⧠āĻāĻžāĻ:
-1. Accept a YouTube URL as input from users
-2. Perform text processing of the URL to extract the unique YouTube video ID
-3. Use the YouTube video ID as an input to a custom function that retrieves and displays the thumbnail image from YouTube videos
+ā§§. āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻāĻžāĻ āĻĨā§āĻā§ āĻāύāĻĒā§āĻ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻāĻāĻāĻŋāĻāĻŦ URL āĻā§āϰāĻšāĻŖ āĻāϰā§āύ⧎
+⧍. āĻāĻāύāĻŋāĻ āĻāĻāĻāĻŋāĻāĻŦ āĻāĻŋāĻĄāĻŋāĻ āĻāĻāĻĄāĻŋ āĻāĻā§āϏāĻā§āϰā§āϝāĻžāĻā§āĻ āĻāϰāϤ⧠URL-āĻāϰ āĻā§āĻā§āϏāĻ āĻĒā§āϰāϏā§āϏāĻŋāĻ āĻāϰā§āύ
+ā§Š. āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽ āĻĢāĻžāĻāĻļāύ⧠āĻāύāĻĒā§āĻ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻāĻāĻŋāĻāĻŦ āĻāĻŋāĻĄāĻŋāĻ āĻāĻāĻĄāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ āϝāĻž āĻāĻāĻāĻŋāĻāĻŦ āĻāĻŋāĻĄāĻŋāĻāĻā§āϞāĻŋ āĻĨā§āĻā§ āĻĨāĻžāĻŽā§āĻŦāύā§āĻāϞ āĻāĻŋāϤā§āϰ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰ⧠āĻāĻŦāĻ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰā§
-## Instructions
+## āύāĻŋāϰā§āĻĻā§āĻļāύāĻž
-To get started in using the Streamlit app, copy and paste a YouTube URL into the input text box.
+āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻļā§āϰ⧠āĻāϰāϤā§, āĻāύāĻĒā§āĻ āĻā§āĻā§āϏāĻ āĻŦāĻā§āϏ⧠āĻāĻāĻāĻŋ āĻāĻāĻāĻŋāĻāĻŦ URL āĻāĻĒāĻŋ āĻāϰ⧠āĻĒā§āϏā§āĻ āĻāϰā§āύāĨ¤
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
-[](https://share.streamlit.io/dataprofessor/yt-img-app/)
+[](https://share.streamlit.io/dataprofessor/yt-img-app/)
-## Code
-Here's how to build the `yt-img-app` Streamlit app:
+## āĻā§āĻĄ
+āĻāĻāĻžāύ⧠āĻāĻŋāĻāĻžāĻŦā§ `yt-img-app` Streamlit āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰāĻŦā§āύ:
```python
import streamlit as st
@@ -65,18 +65,18 @@ else:
st.write('âī¸ Enter URL to continue ...')
```
-## Line-by-line explanation
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` like so:
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
+āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĒā§āϰāĻĨāĻŽā§āĻ āϝāĻž āĻāϰāϤ⧠āĻšāĻŦā§ āϤāĻž āĻšāϞ `streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāĻā§ `st` āĻāϰ āĻŽāϤ⧠āĻāĻŽāĻĻāĻžāύāĻŋ āĻāϰ⧠āĻļā§āϰ⧠āĻāϰāĻž:
```python
import streamlit as st
```
-Next, we display the app's title and accompanying header:
+āĻāϰ āĻĒāϰā§, āĻāĻŽāϰāĻž āĻ
ā§āϝāĻžāĻĒā§āϰ āĻļāĻŋāϰā§āύāĻžāĻŽ āĻāĻŦāĻ āϏāĻšāĻāĻžāϰ⧠āĻļāĻŋāϰā§āύāĻžāĻŽ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻŋ:
```python
st.title('đŧī¸ yt-img-app')
st.header('YouTube Thumbnail Image Extractor App')
```
-While we're at it, we'll might as well throw in an About expandable box.
+āĻāĻŽāϰāĻž āĻāĻāĻŋāϤ⧠āĻĨāĻžāĻāĻžāĻāĻžāϞā§āύ, āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āϏāĻŽā§āĻĒā§āϰāϏāĻžāϰāĻŖāϝā§āĻā§āϝ āĻŦāĻžāĻā§āϏ āϏāĻŽā§āĻĒāϰā§āĻā§āĻ āύāĻŋāĻā§āώā§āĻĒ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤
```python
with st.expander('About this app'):
st.write('This app retrieves the thumbnail image from a YouTube video.')
@@ -90,12 +90,12 @@ selected_img_quality = st.sidebar.selectbox('Select image quality', ['Max', 'Hig
img_quality = img_dict[selected_img_quality]
```
-An input text box is displayed to accept user input on the YouTube video URL to use for extracting the image from.
+āĻāĻāĻāĻŋāĻāĻŦ āĻāĻŋāĻĄāĻŋāĻ URL-āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāύāĻĒā§āĻ āĻā§āϰāĻšāĻŖ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻāύāĻĒā§āĻ āĻā§āĻā§āϏāĻ āĻŦāĻā§āϏ āĻĒā§āϰāĻĻāϰā§āĻļāĻŋāϤ āĻšāϝāĻŧ āϝāĻž āĻĨā§āĻā§ āĻāĻŦāĻŋāĻāĻŋ āĻŦā§āϰ āĻāϰāĻžāϰ āĻāύā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
```python
yt_url = st.text_input('Paste YouTube URL', 'https://youtu.be/JwSS70SZdyM')
```
-A custom function for performing text processing of the input URL.
+āĻāύāĻĒā§āĻ URL-āĻāϰ āĻĒāĻžāĻ ā§āϝ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĻāϰāĻŖā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽ āĻĢāĻžāĻāĻļāύāĨ¤
```python
def get_ytid(input_url):
if 'youtu.be' in input_url:
@@ -105,7 +105,7 @@ def get_ytid(input_url):
return ytid
```
-Finally, we use flow control to determine whether to display a reminder to enter the URL (i.e. as in the `else` statement) or to display the YouTube thumbnail image (i.e. as in the `if` statement).
+āĻ
āĻŦāĻļā§āώā§, URL āĻĒā§āϰāĻŦā§āĻļ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻ
āύā§āϏā§āĻŽāĻžāϰāĻ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻž āĻšāĻŦā§ āĻāĻŋāύāĻž āϤāĻž āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāϤ⧠āĻāĻŽāϰāĻž āĻĒā§āϰāĻŦāĻžāĻš āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋ (āϝā§āĻŽāύ `else` āĻŦāĻŋāĻŦā§āϤāĻŋāϤā§) āĻ
āĻĨāĻŦāĻž āĻāĻāĻāĻŋāĻāĻŦ āĻĨāĻžāĻŽā§āĻŦāύā§āĻāϞ āĻāĻŋāϤā§āϰ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāϤ⧠(āϝā§āĻŽāύ `if` āĻŦāĻŋāĻŦā§āϤāĻŋāϤā§)āĨ¤
```python
# Display YouTube thumbnail image
if yt_url != '':
@@ -118,10 +118,10 @@ else:
st.write('âī¸ Enter URL to continue ...')
```
-## Summary
+## āϏāĻžāϰāϏāĻāĻā§āώā§āĻĒ
-In summary, we have seen that in the creation of any Streamlit app, we normally start by first identifying and defining the problem. Next, we devise a solution to tackle the problem by breaking it down into the granular steps, which we implement in the Streamlit app.
+āϏāĻāĻā§āώā§āĻĒā§, āĻāĻŽāϰāĻž āĻĻā§āĻā§āĻāĻŋ āϝ⧠āĻā§āύāĻ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻŽāϰāĻž āϏāĻžāϧāĻžāϰāĻŖāϤ āĻĒā§āϰāĻĨāĻŽā§ āϏāĻŽāϏā§āϝāĻžāĻāĻŋ āϏāύāĻžāĻā§āϤ āĻāĻŦāĻ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰ⧠āĻļā§āϰ⧠āĻāϰāĻŋāĨ¤ āĻāϰāĻĒāϰā§, āĻāĻŽāϰāĻž āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒā§ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻŋ āĻāĻŽāύ āĻĻāĻžāύāĻžāĻĻāĻžāϰ āϧāĻžāĻĒā§ āĻŦāĻŋāĻāĻā§āϤ āĻāϰ⧠āϏāĻŽāϏā§āϝāĻžāĻāĻŋ āĻŽā§āĻāĻžāĻŦā§āϞāĻž āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϏāĻŽāĻžāϧāĻžāύ āϤā§āϰāĻŋ āĻāϰāĻŋāĨ¤
-Here, we also have to determine which data or information that we need as input from users, the approach and method to use in processing the user input in order to produce the final desired output.
+āĻāĻāĻžāύā§, āĻāĻŽāĻžāĻĻā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻāĻžāĻ āĻĨā§āĻā§ āĻāύāĻĒā§āĻ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻŽāĻžāĻĻā§āϰ āĻā§āύ āĻĄā§āĻāĻž āĻŦāĻž āϤāĻĨā§āϝ āĻĒā§āϰāϝāĻŧā§āĻāύ āϤāĻž āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāϤ⧠āĻšāĻŦā§, āĻā§āĻĄāĻŧāĻžāύā§āϤ āĻĒāĻāύā§āĻĻāϏāĻ āĻāĻāĻāĻĒā§āĻ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āĻāύā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāύāĻĒā§āĻ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĻāϰāĻŖā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻĒāĻĻā§āϧāϤāĻŋ āĻāĻŦāĻ āĻĒāĻĻā§āϧāϤāĻŋāĨ¤
-Hope you enjoyed this tutorial, Happy Streamlit-ing!
+āĻāĻļāĻž āĻāϰāĻŋ āĻāĻĒāύāĻŋ āĻāĻ āĻāĻŋāĻāĻā§āϰāĻŋāϝāĻŧāĻžāϞāĻāĻŋ āĻāĻĒāĻā§āĻ āĻāϰā§āĻā§āύ, āĻšā§āϝāĻžāĻĒāĻŋ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻāĻŋāĻ!
diff --git a/content/Day4.md b/content/Day4.md
index f9461e6..50adc63 100644
--- a/content/Day4.md
+++ b/content/Day4.md
@@ -1,7 +1,7 @@
-# Building Streamlit apps with Ken Jee
+# āĻā§āύ āĻā§āϰ āϏāĻžāĻĨā§ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰāĻž
-## Watch Ken's video
+## āĻā§āύā§āϰ āĻāĻŋāĻĄāĻŋāĻ āĻĻā§āĻā§āύ
-Let's follow along and watch how [Ken Jee](https://www.youtube.com/c/KenJee1) builds a Streamlit app in this video:
+āĻāϏā§āύ āĻ
āύā§āϏāϰāĻŖ āĻāϰāĻŋ āĻāĻŦāĻ āĻāĻ āĻāĻŋāĻĄāĻŋāĻāϤ⧠āĻā§āĻāĻžāĻŦā§ [āĻā§āύ āĻā§](https://www.youtube.com/c/KenJee1) āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰ⧠āĻĻā§āĻā§āύ:
-[]()]
+[]()]
diff --git a/content/Day5.md b/content/Day5.md
index d3356d0..26a06bd 100644
--- a/content/Day5.md
+++ b/content/Day5.md
@@ -1,29 +1,29 @@
# st.write
-`st.write` allows writing text and arguments to the Streamlit app.
+`st.write` āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒā§ āĻā§āĻā§āϏāĻ āĻāĻŦāĻ āĻāϰā§āĻā§āĻŽā§āύā§āĻ āϞā§āĻāĻžāϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧāĨ¤
-In addition to being able to display text, the following can also be displayed via the `st.write()` command:
+āĻĒāĻžāĻ ā§āϝ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāϤ⧠āϏāĻā§āώāĻŽ āĻšāĻāϝāĻŧāĻžāϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ, āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤāĻā§āϞāĻŋ `st.write()` āĻāĻŽāĻžāύā§āĻĄā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§āĻ āĻĒā§āϰāĻĻāϰā§āĻļāĻŋāϤ āĻšāϤ⧠āĻĒāĻžāϰā§:
-- Prints strings; works like `st.markdown()`
-- Displays a Python `dict`
-- Displays `pandas` DataFrame can be displayed as a table
-- Plots/graphs/figures from `matplotlib`, `plotly`, `altair`, `graphviz`, `bokeh`
-- And more (see [st.write on API docs](https://docs.streamlit.io/library/api-reference/write-magic/st.write))
+- āĻĒā§āϰāĻŋāύā§āĻ āϏā§āĻā§āϰāĻŋāĻ; `st.markdown()` āĻāϰ āĻŽāϤ⧠āĻāĻžāĻ āĻāϰā§
+- āĻāĻāĻāĻŋ āĻĒāĻžāĻāĻĨāύ `dict` āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰā§
+- āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰ⧠`pandas` āĻĄā§āĻāĻžāĻĢā§āϰā§āĻŽāĻā§ āĻā§āĻŦāĻŋāϞ āĻšāĻŋāϏā§āĻŦā§ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§
+- `matplotlib`, `plotly`, `altair`, `graphviz`, `bokeh` āĻĨā§āĻā§ āĻĒā§āϞāĻ/āĻā§āϰāĻžāĻĢ/āĻāĻŋāϤā§āϰ
+- āĻāĻŦāĻ āĻāϰāĻ (āĻĻā§āĻā§āύ [āĻāĻĒāĻŋāĻāĻ āĻĄāĻā§āϏ⧠st.write](https://docs.streamlit.io/library/api-reference/write-magic/st.write))
-## What we're building?
+## āĻāĻŽāϰāĻž āĻāĻŋ āύāĻŋāϰā§āĻŽāĻžāĻŖ āĻāϰāĻāĻŋ?
-A simple app showing the various ways on how to use the `st.write()` command for displaying text, numbers, DataFrames and plots.
+āĻĒāĻžāĻ ā§āϝ, āϏāĻāĻā§āϝāĻž, āĻĄā§āĻāĻžāĻĢā§āϰā§āĻŽ āĻāĻŦāĻ āĻĒā§āϞāĻ āĻĒā§āϰāĻĻāϰā§āĻļāύā§āϰ āĻāύā§āϝ `st.write()` āĻāĻŽāĻžāύā§āĻĄ āĻā§āĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻšāϝāĻŧ āϤāĻžāϰ āĻŦāĻŋāĻāĻŋāύā§āύ āĻāĻĒāĻžāϝāĻŧ āĻĻā§āĻāĻžāύ⧠āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻ
ā§āϝāĻžāĻĒāĨ¤
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
-The deployed Streamlit app should look something like the one shown in the below link:
+āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒāĻāĻŋ āύā§āĻā§āϰ āϞāĻŋāĻā§āĻā§ āĻĻā§āĻāĻžāύā§āϰ āĻŽāϤ⧠āĻĻā§āĻāϤ⧠āĻšāĻŦā§:
-[](https://share.streamlit.io/dataprofessor/st.write/)
+[](https://share.streamlit.io/dataprofessor/st.write/)
-## Code
+## āĻā§āĻĄ
-Here's how to use st.write:
+āĻāĻāĻžāύ⧠āĻāĻŋāĻāĻžāĻŦā§ st.write āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ:
```python
import numpy as np
@@ -63,36 +63,36 @@ c = alt.Chart(df2).mark_circle().encode(
st.write(c)
```
-## Line-by-line explanation
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` like so:
+āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĒā§āϰāĻĨāĻŽā§āĻ āϝāĻž āĻāϰāϤ⧠āĻšāĻŦā§ āϤāĻž āĻšāϞ `streamlit` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāĻā§ `st` āĻāϰ āĻŽāϤ⧠āĻāĻŽāĻĻāĻžāύāĻŋ āĻāϰ⧠āĻļā§āϰ⧠āĻāϰāĻž:
```python
import streamlit as st
```
-This is followed by creating a header text for the app:
+āĻāĻāĻŋ āĻ
ā§āϝāĻžāĻĒā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻļāĻŋāϰā§āύāĻžāĻŽ āĻĒāĻžāĻ ā§āϝ āϤā§āϰāĻŋ āĻāϰ⧠āĻ
āύā§āϏāϰāĻŖ āĻāϰāĻž āĻšāϝāĻŧ:
```python
st.header('st.write')
```
-**Example 1**
-Its basic use case is to display text and Markdown-formatted text:
+**āĻāĻĻāĻžāĻšāϰāĻŖ 1**
+āĻāϰ āĻŽā§āϞāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻā§āώā§āϤā§āϰ⧠āĻĒāĻžāĻ ā§āϝ āĻāĻŦāĻ āĻŽāĻžāϰā§āĻāĻĄāĻžāĻāύ-āĻĢāϰāĻŽā§āϝāĻžāĻ āĻāϰāĻž āĻĒāĻžāĻ ā§āϝ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻž āĻšāϝāĻŧ:
```python
st.write('Hello, *World!* :sunglasses:')
```
-**Example 2**
-As mentioned above, it can also be used to display other data formats such as numbers:
+**āĻāĻĻāĻžāĻšāϰāĻŖ 2**
+āĻāĻĒāϰ⧠āĻāϞā§āϞāĻŋāĻāĻŋāϤ āĻšāĻŋāϏāĻžāĻŦā§, āĻāĻāĻŋ āĻ
āύā§āϝāĻžāύā§āϝ āĻĄā§āĻāĻž āĻŦāĻŋāύā§āϝāĻžāϏ āϝā§āĻŽāύ āϏāĻāĻā§āϝāĻž āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§:
```python
st.write(1234)
```
-**Example 3**
-DataFrames can also be displayed as follows:
+**āĻāĻĻāĻžāĻšāϰāĻŖ ā§Š**
+āĻĄāĻžāĻāĻžāĻĢā§āϰā§āĻŽ āĻāĻāĻžāĻĄāĻŧāĻžāĻ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻšāĻŋāϏāĻžāĻŦā§ āĻĒā§āϰāĻĻāϰā§āĻļāĻŋāϤ āĻšāϤ⧠āĻĒāĻžāϰā§:
```python
df = pd.DataFrame({
@@ -102,15 +102,15 @@ df = pd.DataFrame({
st.write(df)
```
-**Example 4**
-You can pass in multiple arguments:
+**āĻāĻĻāĻžāĻšāϰāĻŖ ā§Ē**
+āĻāĻĒāύāĻŋ āĻāĻāĻžāϧāĻŋāĻ āĻāϰā§āĻā§āĻŽā§āύā§āĻ āĻĒāĻžāϏ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
```python
st.write('Below is a DataFrame:', df, 'Above is a dataframe.')
```
-**Example 5**
-Finally, you can also display plots as well by passing it to a variable as follows:
+**āĻāĻĻāĻžāĻšāϰāĻŖ ā§Ģ**
+āĻ
āĻŦāĻļā§āώā§, āĻāĻĒāύāĻŋ āύāĻŋāĻŽā§āύāϰā§āĻĒ āĻāĻāĻāĻŋ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ⧠āĻĒāĻžāϏ āĻāϰ⧠āĻĒā§āϞāĻāĻā§āϞāĻŋāĻ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
```python
df2 = pd.DataFrame(
@@ -121,25 +121,25 @@ c = alt.Chart(df2).mark_circle().encode(
st.write(c)
```
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
-The deployed Streamlit app should look something like the one shown in the below link:
+āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒāĻāĻŋ āύā§āĻā§āϰ āϞāĻŋāĻā§āĻā§ āĻĻā§āĻāĻžāύā§āϰ āĻŽāϤ⧠āĻĻā§āĻāϤ⧠āĻšāĻŦā§:
-[](https://share.streamlit.io/dataprofessor/st.write/)
+[](https://share.streamlit.io/dataprofessor/st.write/)
-## Next steps
+## āĻĒāϰāĻŦāϰā§āϤ⧠āĻĒāĻĻāĻā§āώā§āĻĒ
-Now that you have created the Streamlit app locally, it's time to deploy it to [Streamlit Community Cloud](https://streamlit.io/cloud) as will be explained soon in an upcoming challenge.
+āĻāĻāύ āϝā§āĻšā§āϤ⧠āĻāĻĒāύāĻŋ āϏā§āĻĨāĻžāύā§āϝāĻŧāĻāĻžāĻŦā§ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰā§āĻā§āύ, āĻāĻāĻŋāĻā§ [āϏā§āĻā§āϰā§āĻŽāϞāĻŋāĻ āĻāĻŽāĻŋāĻāύāĻŋāĻāĻŋ āĻā§āϞāĻžāĻāĻĄ](https://streamlit.io/cloud) āĻ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāϏā§āĻā§ āϝāĻž āĻāĻāĻāĻŋ āĻāϏāύā§āύ āĻā§āϝāĻžāϞā§āĻā§āĻā§ āĻļā§āĻā§āϰāĻ āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰāĻž āĻšāĻŦā§āĨ¤
-Because this is the first week of your challenge, we provide the full code (as shown in the code box above) and solution (the demo app) right inside this webpage.
+āĻāĻžāϰāĻŖ āĻāĻāĻŋ āĻāĻĒāύāĻžāϰ āĻā§āϝāĻžāϞā§āĻā§āĻā§āϰ āĻĒā§āϰāĻĨāĻŽ āϏāĻĒā§āϤāĻžāĻš, āĻāĻŽāϰāĻž āĻāĻ āĻāϝāĻŧā§āĻŦāĻĒā§āώā§āĻ āĻžāϰ āĻāĻŋāϤāϰā§āĻ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻā§āĻĄ (āĻāĻĒāϰā§āϰ āĻā§āĻĄ āĻŦāĻā§āϏ⧠āĻĻā§āĻāĻžāύ⧠āĻšāϝāĻŧā§āĻā§) āĻāĻŦāĻ āϏāĻŽāĻžāϧāĻžāύ (āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ) āĻĒā§āϰāĻĻāĻžāύ āĻāϰāĻŋāĨ¤
-Moving forward in the next challenges, it is recommended that you first try implementing the Streamlit app yourself.
+āĻĒāϰāĻŦāϰā§āϤ⧠āĻā§āϝāĻžāϞā§āĻā§āĻāĻā§āϞāĻŋāϤ⧠āĻāĻāĻŋāϝāĻŧā§ āϝāĻžāĻāϝāĻŧāĻžāϰ āĻāύā§āϝ, āĻāĻĒāύāĻžāĻā§ āĻĒā§āϰāĻĨāĻŽā§ Streamlit āĻ
ā§āϝāĻžāĻĒāĻāĻŋ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰāĻžāϰ āĻĒāϰāĻžāĻŽāϰā§āĻļ āĻĻā§āĻāϝāĻŧāĻž āĻšāĻā§āĻā§āĨ¤
-Don't worry if you get stuck, you can always take a peek at the solution.
+āĻāĻĒāύāĻŋ āĻāĻāĻā§ āĻā§āϞ⧠āĻāĻŋāύā§āϤāĻž āĻāϰāĻŦā§āύ āύāĻž, āĻāĻĒāύāĻŋ āϏāĻŦāϏāĻŽāϝāĻŧ āϏāĻŽāĻžāϧāĻžāύāĻāĻŋ āĻāĻāĻāĻŋ āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
-## Further reading
+## āĻāϰāĻ āĻĒāĻĄāĻŧāĻž
-In addition to [`st.write`](https://docs.streamlit.io/library/api-reference/write-magic/st.write), you can explore the other ways of displaying text:
+[`st.write`](https://docs.streamlit.io/library/api-reference/write-magic/st.write) āĻāĻžāĻĄāĻŧāĻžāĻ, āĻāĻĒāύāĻŋ āĻĒāĻžāĻ ā§āϝ āĻĒā§āϰāĻĻāϰā§āĻļāύā§āϰ āĻ
āύā§āϝāĻžāύā§āϝ āĻāĻĒāĻžāϝāĻŧāĻā§āϞāĻŋ āĻ
āύā§āĻŦā§āώāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
- [`st.markdown`](https://docs.streamlit.io/library/api-reference/text/st.markdown)
- [`st.header`](https://docs.streamlit.io/library/api-reference/text/st.header)
diff --git a/content/Day6.md b/content/Day6.md
index 818e779..f40c17b 100644
--- a/content/Day6.md
+++ b/content/Day6.md
@@ -1,34 +1,35 @@
-# Uploading your Streamlit app to GitHub
+# # āĻāĻŋāĻāĻšāĻžāĻŦā§ āĻāĻĒāύāĻžāϰ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āĻāĻĒāϞā§āĻĄ
-## GitHub
-Git is a software for keeping track of all changes made to code (i.e. version control). GitHub is a Git repository hosting service that makes data and code publicly available on the web, which allows team collaboration and allow others to contribute to the repo.
+## āĻāĻŋāĻāĻšāĻžāĻŦ
-Housing your Streamlit app in a GitHub repository will allow apps to be deployed to the cloud (the next challenge).
+āĻāĻŋāĻ āĻšāϞ āĻāĻāĻāĻŋ āϏāĻĢā§āĻāĻāϝāĻŧā§āϝāĻžāϰ āϝāĻž āĻā§āĻĄā§ āĻāϰāĻž āϏāĻŽāϏā§āϤ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āĻā§āϰā§āϝāĻžāĻ āϰāĻžāĻāĻžāϰ āĻāύā§āϝ (āϝā§āĻŽāύ āϏāĻāϏā§āĻāϰāĻŖ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ)āĨ¤ āĻāĻŋāĻāĻšāĻžāĻŦ āĻšāϞ āĻāĻāĻāĻŋ āĻāĻŋāĻ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ āĻšā§āϏā§āĻāĻŋāĻ āĻĒāϰāĻŋāώā§āĻŦāĻž āϝāĻž āĻāϝāĻŧā§āĻŦā§ āϏāϰā§āĻŦāĻāύā§āύāĻāĻžāĻŦā§ āĻĄā§āĻāĻž āĻāĻŦāĻ āĻā§āĻĄ āĻāĻĒāϞāĻŦā§āϧ āĻāϰā§, āϝāĻž āĻāĻŋāĻŽ āϏāĻšāϝā§āĻāĻŋāϤāĻžāϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧ āĻāĻŦāĻ āĻ
āύā§āϝāĻĻā§āϰ āϰā§āĻĒā§āϤ⧠āĻ
āĻŦāĻĻāĻžāύ āϰāĻžāĻāĻžāϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧāĨ¤
-## Sign up for GitHub
+āĻāĻĒāύāĻžāϰ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻāĻŋāĻāĻšāĻžāĻŦ āϏāĻāĻā§āϰāĻšāϏā§āĻĨāϞ⧠āϰāĻžāĻāĻž āĻ
ā§āϝāĻžāĻĒāĻā§āϞāĻŋāĻā§ āĻā§āϞāĻžāĻāĻĄā§ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻžāϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āĻŦā§ (āĻĒāϰāĻŦāϰā§āϤ⧠āĻā§āϝāĻžāϞā§āĻā§āĻ)āĨ¤
-Firstly, sign up for a [GitHub](https://github.com/) account.
+## āĻāĻŋāĻāĻšāĻžāĻŦ-āĻāϰ āĻāύā§āϝ āϏāĻžāĻāύ āĻāĻĒ āĻāϰā§āύ
-## Create a GitHub repository
+āĻĒā§āϰāĻĨāĻŽāϤ, āĻāĻāĻāĻŋ [āĻāĻŋāĻāĻšāĻžāĻŦ](https://github.com/) āĻ
ā§āϝāĻžāĻāĻžāĻāύā§āĻā§āϰ āĻāύā§āϝ āϏāĻžāĻāύ āĻāĻĒ āĻāϰā§āύāĨ¤
-Follow the following steps to create a GitHub repository:
-- In the top right hand corner, click on the **"+"** icon which should reveal a drop-down menu, then click on **"New repository"** (*Figure 1*).
+## āĻāĻāĻāĻŋ āĻāĻŋāĻāĻšāĻžāĻŦ āϏāĻāĻā§āϰāĻšāϏā§āĻĨāϞ āϤā§āϰāĻŋ āĻāϰā§āύ
-- This should bring to a new webpage called **"Create a new repository"**. Under the **"Repository name"** field, enter a name for your repository, for example, `helloworld` (***Figure 2***).
+āĻāĻāĻāĻŋ āĻāĻŋāĻāĻšāĻžāĻŦ āϏāĻāĻā§āϰāĻšāϏā§āĻĨāϞ āϤā§āϰāĻŋ āĻāϰāϤ⧠āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻĒāĻĻāĻā§āώā§āĻĒāĻā§āϞāĻŋ āĻ
āύā§āϏāϰāĻŖ āĻāϰā§āύ:
+- āĻāĻĒāϰā§āϰ āĻĄāĻžāύāĻĻāĻŋāĻā§āϰ āĻā§āĻŖāĻžāϝāĻŧ, **"+"** āĻāĻāĻāύ⧠āĻā§āϞāĻŋāĻ āĻāϰā§āύ āϝāĻž āĻāĻāĻāĻŋ āĻĄā§āϰāĻĒ-āĻĄāĻžāĻāύ āĻŽā§āύ⧠āĻĒā§āϰāĻāĻžāĻļ āĻāϰāĻŦā§, āϤāĻžāϰāĻĒāϰ⧠**"āύāϤā§āύ āϏāĻāĻā§āϰāĻšāϏā§āĻĨāϞ"** (*āĻāĻŋāϤā§āϰ 1*) āĻ āĻā§āϞāĻŋāĻ āĻāϰā§āύāĨ¤
-- Under the **"Initialize this repository with:"** field, tick on **"Add a README file"**.
+- āĻāĻāĻŋ **"āĻāĻāĻāĻŋ āύāϤā§āύ āϏāĻāĻā§āϰāĻšāϏā§āĻĨāϞ āϤā§āϰāĻŋ āĻāϰā§āύ"** āύāĻžāĻŽā§ āĻāĻāĻāĻŋ āύāϤā§āύ āĻāϝāĻŧā§āĻŦāĻĒā§āĻā§ āĻāύāϤ⧠āĻšāĻŦā§āĨ¤ **"āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ āύāĻžāĻŽ"** āĻā§āώā§āϤā§āϰā§āϰ āĻ
āϧā§āύā§, āĻāĻĒāύāĻžāϰ āϏāĻāĻā§āϰāĻšāϏā§āĻĨāϞā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āύāĻžāĻŽ āϞāĻŋāĻā§āύ, āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, `āĻšā§āϝāĻžāϞā§āĻāϝāĻŧāĻžāϰā§āϞā§āĻĄ` (***āĻāĻŋāϤā§āϰ 2***)āĨ¤
-- Finally, click on **"Create repository"** (Figure 3).
+- **"āĻāĻ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāĻāĻŋ āĻĻāĻŋāϝāĻŧā§ āĻļā§āϰ⧠āĻāϰā§āύ:"** āĻĢāĻŋāϞā§āĻĄā§āϰ āĻ
āϧā§āύā§, **"āĻāĻāĻāĻŋ āϰāĻŋāĻĄāĻŽāĻŋ āĻĢāĻžāĻāϞ āϝā§āĻ āĻāϰā§āύ"** āĻ āĻāĻŋāĻ āĻĻāĻŋāύāĨ¤
-Your newly created repository will be available at `https://github.com/dataprofessor/helloworld` where `dataprofessor` is the username and `helloworld` is the repository name.
+- āĻ
āĻŦāĻļā§āώā§, **"āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ āϤā§āϰāĻŋ āĻāϰā§āύ"** (āĻāĻŋāϤā§āϰ ā§Š) āĻ āĻā§āϞāĻŋāĻ āĻāϰā§āύāĨ¤
-Below is the screenshot of the newly created repo (Figure 4):
+āĻāĻĒāύāĻžāϰ āύāϤā§āύ āϤā§āϰāĻŋ āĻāϰāĻž āϏāĻāĻā§āϰāĻšāϏā§āĻĨāϞ `https://github.com/dataprofessor/helloworld`-āĻ āĻāĻĒāϞāĻŦā§āϧ āĻšāĻŦā§ āϝā§āĻāĻžāύ⧠`dataprofessor` āĻšāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āύāĻžāĻŽ āĻāĻŦāĻ `helloworld` āĻšāϞ āϏāĻāĻā§āϰāĻšāϏā§āĻĨāϞā§āϰ āύāĻžāĻŽāĨ¤
-## Upload files to the GitHub repo
+āύā§āĻā§ āύāϤā§āύ āϤā§āϰāĻŋ āϰā§āĻĒā§āϰ āϏā§āĻā§āϰāĻŋāύāĻļāĻ (āĻāĻŋāϤā§āϰ ā§Ē):
-Slightly above the file table and adjacent to the green **Code** button, click on **Add file** > **Upload files** (Figure 5).
+## āĻāĻŋāĻāĻšāĻžāĻŦ āϰā§āĻĒā§āϤ⧠āĻĢāĻžāĻāϞ āĻāĻĒāϞā§āĻĄ āĻāϰā§āύ
-This will bring you to a new webpage where the central box says ***Drag files here to add them to your repository*** and **choose your files**, which you can either drag-and-drop files into this box or click on the **choose your files** link to choose files from your local computer.
+āĻĢāĻžāĻāϞ āĻā§āĻŦāĻŋāϞā§āϰ āϏāĻžāĻŽāĻžāύā§āϝ āĻāĻĒāϰ⧠āĻāĻŦāĻ āϏāĻŦā§āĻ **āĻā§āĻĄ** āĻŦā§āϤāĻžāĻŽā§āϰ āĻĒāĻžāĻļā§, **āĻĢāĻžāĻāϞ āϝā§āĻ āĻāϰā§āύ** > **āĻĢāĻžāĻāϞ āĻāĻĒāϞā§āĻĄ** (āĻāĻŋāϤā§āϰ 5) āĻ āĻā§āϞāĻŋāĻ āĻāϰā§āύāĨ¤
-Click on **Commit changes** to proceed further (Figure 6).
+āĻāĻāĻŋ āĻāĻĒāύāĻžāĻā§ āĻāĻāĻāĻŋ āύāϤā§āύ āĻāϝāĻŧā§āĻŦāĻĒā§āĻā§ āύāĻŋāϝāĻŧā§ āĻāϏāĻŦā§ āϝā§āĻāĻžāύ⧠āĻā§āύā§āĻĻā§āϰā§āϝāĻŧ āĻŦāĻžāĻā§āϏ⧠āĻŦāϞāĻž āĻšāϝāĻŧā§āĻā§ ***Drag files here to add them to your repository*** āĻāĻŦāĻ **āĻāĻĒāύāĻžāϰ āĻĢāĻžāĻāϞāĻā§āϞāĻŋ āĻāϝāĻŧāύ āĻāϰā§āύ**, āϝā§āĻāĻŋ āĻāĻĒāύāĻŋ āĻāĻ āĻŦāĻžāĻā§āϏ⧠āĻĢāĻžāĻāϞāĻā§āϞāĻŋāĻā§ āĻā§āύā§-āĻāύā§āĻĄ-āĻĄā§āϰāĻĒ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻ
āĻĨāĻŦāĻž āĻāĻĒāύāĻžāϰ āϏā§āĻĨāĻžāύā§āϝāĻŧ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāϰ āĻĨā§āĻā§ āĻĢāĻžāĻāϞāĻā§āϞāĻŋ āĻāϝāĻŧāύ āĻāϰāϤ⧠**choose your files** āϞāĻŋāĻā§āĻāĻāĻŋāϤ⧠āĻā§āϞāĻŋāĻ āĻāϰā§āύ⧎
+
+āĻāϰāĻ āĻāĻāĻŋāϝāĻŧā§ āϝā§āϤ⧠**Commit changes**-āĻ āĻā§āϞāĻŋāĻ āĻāϰā§āύ (āĻāĻŋāϤā§āϰ 6)āĨ¤
diff --git a/content/Day7.md b/content/Day7.md
index 8322582..fe18604 100644
--- a/content/Day7.md
+++ b/content/Day7.md
@@ -1,18 +1,19 @@
-# Deploying your Streamlit app with Streamlit Community Cloud
+# āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāĻŽāĻŋāĻāύāĻŋāĻāĻŋ āĻā§āϞāĻžāĻāĻĄā§āϰ āϏāĻžāĻĨā§ āĻāĻĒāύāĻžāϰ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āĻšāĻā§āĻā§
-## Streamlit Community Cloud
+## āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāĻŽāĻŋāĻāύāĻŋāĻāĻŋ āĻā§āϞāĻžāĻāĻĄ
-[Streamlit Community Cloud](https://streamlit.io/cloud) is a hosting service for easily deploying Streamlit apps.
+[āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāĻŽāĻŋāĻāύāĻŋāĻāĻŋ āĻā§āϞāĻžāĻāĻĄ](https://streamlit.io/cloud) āĻšāϞ āĻāĻāĻāĻŋ āĻšā§āϏā§āĻāĻŋāĻ āĻĒāϰāĻŋāώā§āĻŦāĻž āϝāĻžāϤ⧠āϏāĻšāĻā§ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒāĻā§āϞāĻŋ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤
-## Sign up for Streamlit Community Cloud
+## āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāĻŽāĻŋāĻāύāĻŋāĻāĻŋ āĻā§āϞāĻžāĻāĻĄā§āϰ āĻāύā§āϝ āϏāĻžāĻāύ āĻāĻĒ āĻāϰā§āύ
-You can easily sign up for [Streamlit Community Cloud](https://streamlit.io/cloud) by simply logging in with Google or GitHub account.
+āĻāĻĒāύāĻŋ āĻā§āĻāϞ āĻŦāĻž āĻāĻŋāĻāĻšāĻžāĻŦ āĻ
ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻĻāĻŋāϝāĻŧā§ āϞāĻ āĻāύ āĻāϰ⧠āϏāĻšāĻā§āĻ [āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāĻŽāĻŋāĻāύāĻŋāĻāĻŋ āĻā§āϞāĻžāĻāĻĄ](https://streamlit.io/cloud) āĻāϰ āĻāύā§āϝ āϏāĻžāĻāύ āĻāĻĒ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
-## Deploy a Streamlit app
+## āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϏā§āĻĨāĻžāĻĒāύ āĻāϰā§āύ
-To deploy a Streamlit app, do the following:
-1. Sign in with GitHub or Gmail credentials
-2. Pick a repo, branch and file
-3. Click Deploy
+āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāϤā§, āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤāĻā§āϞāĻŋ āĻāϰā§āύ:
+1. āĻāĻŋāĻāĻšāĻžāĻŦ āĻŦāĻž āĻāĻŋāĻŽā§āĻāϞ āĻļāĻāϏāĻžāĻĒāϤā§āϰ āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ āĻāύ āĻāϰā§āύ⧎
+2. āĻāĻāĻāĻŋ āϰā§āĻĒā§, āĻļāĻžāĻāĻž āĻāĻŦāĻ āĻĢāĻžāĻāϞ āĻāϝāĻŧāύ āĻāϰā§āύ
+3. āĻĄāĻŋāĻĒā§āϞ⧠āĻ āĻā§āϞāĻŋāĻ āĻāϰā§āύ
+
+āϤāĻžāϰāĻĒāϰ⧠āĻāĻĒāύāĻŋ āϝāĻāύāĻ āĻāĻāĻāĻŋ āĻāĻŋāĻ āĻĒā§āĻļ āĻāϰāĻŦā§āύ āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒ āĻ
āĻŦāĻŋāϞāĻŽā§āĻŦā§ āĻāĻĒāĻĄā§āĻ āĻšāĻŦā§āĨ¤
-Then any time you do a git push your app will update immediately.
diff --git a/content/Day8.md b/content/Day8.md
index 2753c9b..5ba04de 100644
--- a/content/Day8.md
+++ b/content/Day8.md
@@ -1,24 +1,24 @@
# st.slider
-`st.slider` allows the display of a slider input widget.
+`st.slider` āĻāĻāĻāĻŋ āϏā§āϞāĻžāĻāĻĄāĻžāϰ āĻāύāĻĒā§āĻ āĻāĻāĻā§āĻ āĻĒā§āϰāĻĻāϰā§āĻļāύā§āϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧāĨ¤
-The following data types are supported: int, float, date, time, and datetime.
+āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻĄā§āĻāĻž āĻĒā§āϰāĻāĻžāϰāĻā§āϞāĻŋ āϏāĻŽāϰā§āĻĨāĻŋāϤ: int, float, date, time, āĻāĻŦāĻ datetime.
-## What we're building?
+## āĻāĻŽāϰāĻž āĻāĻŋ āύāĻŋāϰā§āĻŽāĻžāĻŖ āĻāϰāĻāĻŋ?
-A simple app that shows the various ways on how to accept user input by adjusting the slider widget.
+āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻ
ā§āϝāĻžāĻĒ āϝāĻž āϏā§āϞāĻžāĻāĻĄāĻžāϰ āĻāĻāĻā§āĻ āϏāĻžāĻŽāĻā§āĻāϏā§āϝ āĻāϰ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāύāĻĒā§āĻ āĻā§āϰāĻšāĻŖ āĻāϰāĻžāϰ āĻŦāĻŋāĻāĻŋāύā§āύ āĻāĻĒāĻžāϝāĻŧ āĻĻā§āĻāĻžāϝāĻŧāĨ¤
-Flow of the app:
-1. User selects value by adjusting the slider widget
-2. App prints out the selected value
+āĻ
ā§āϝāĻžāĻĒā§āϰ āĻĒā§āϰāĻŦāĻžāĻš:
+1. āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϏā§āϞāĻžāĻāĻĄāĻžāϰ āĻāĻāĻā§āĻ āϏāĻžāĻŽāĻā§āĻāϏā§āϝ āĻāϰ⧠āĻŽāĻžāύ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰā§
+2. āĻ
ā§āϝāĻžāĻĒ āύāĻŋāϰā§āĻŦāĻžāĻāĻŋāϤ āĻŽāĻžāύ āĻĒā§āϰāĻŋāύā§āĻ āĻāϰā§
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
-[](https://share.streamlit.io/dataprofessor/st.slider/)
+[](https://share.streamlit.io/dataprofessor/st.slider/)
-## Code
-Here's how to use st.slider:
+## āĻā§āĻĄ
+āĻāĻāĻžāύ⧠āĻāĻŋāĻāĻžāĻŦā§ st.slider āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ:
```python
import streamlit as st
@@ -63,21 +63,21 @@ st.write("Start time:", start_time)
```
-## Line-by-line explanation
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` like so:
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
+āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĒā§āϰāĻĨāĻŽā§āĻ āϝāĻž āĻāϰāϤ⧠āĻšāĻŦā§ āϤāĻž āĻšāϞ `āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāĻā§ `st` āĻšāĻŋāϏā§āĻŦā§ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž:
```python
import streamlit as st
from datetime import time, datetime
```
-This is followed by creating a header text for the app:
+āĻāĻāĻŋ āĻ
ā§āϝāĻžāĻĒā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻļāĻŋāϰā§āύāĻžāĻŽ āĻĒāĻžāĻ ā§āϝ āϤā§āϰāĻŋ āĻāϰ⧠āĻ
āύā§āϏāϰāĻŖ āĻāϰāĻž āĻšāϝāĻŧ:
```python
st.header('st.slider')
```
-**Example 1**
+**āĻāĻĻāĻžāĻšāϰāĻŖ 1**
-Slider:
+āϏā§āϞāĻžāĻāĻĄāĻžāϰ:
```python
st.subheader('Slider')
@@ -86,16 +86,16 @@ age = st.slider('How old are you?', 0, 130, 25)
st.write("I'm ", age, 'years old')
```
-As we can see, the `st.slider()` command
-is used to collect user input about the age of users.
+āĻāĻŽāϰāĻž āĻĻā§āĻāϤ⧠āĻĒāĻžāĻā§āĻāĻŋ, `st.slider()` āĻāĻŽāĻžāύā§āĻĄ
+āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻŦāϝāĻŧāϏ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāύāĻĒā§āĻ āϏāĻāĻā§āϰāĻš āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāϝāĻŧāĨ¤
-The first input argument displays the text just above the **slider** widget asking `'How old are you?'`.
+āĻĒā§āϰāĻĨāĻŽ āĻāύāĻĒā§āĻ āĻāϰā§āĻā§āĻŽā§āύā§āĻāĻāĻŋ **āϏā§āϞāĻžāĻāĻĄāĻžāϰ** āĻāĻāĻā§āĻā§āϰ āĻ āĻŋāĻ āĻāĻĒāϰ⧠āϞā§āĻāĻžāĻāĻŋ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰ⧠āϝāĻž āĻāĻŋāĻā§āĻā§āϏ āĻāϰ⧠`'āĻāĻĒāύāĻžāϰ āĻŦāϝāĻŧāϏ āĻāϤ?'`āĨ¤
-The following three integers `0, 130, 25` represents the minimum, maximum and default values, respectively.
+āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āϤāĻŋāύāĻāĻŋ āĻĒā§āϰā§āĻŖāϏāĻāĻā§āϝāĻž `ā§Ļ, ā§§ā§Šā§Ļ, ⧍ā§Ģ` āϝāĻĨāĻžāĻā§āϰāĻŽā§ āϏāϰā§āĻŦāύāĻŋāĻŽā§āύ, āϏāϰā§āĻŦā§āĻā§āĻ āĻāĻŦāĻ āĻĄāĻŋāĻĢāϞā§āĻ āĻŽāĻžāύāĻā§āϞāĻŋāĻā§ āĻāĻĒāϏā§āĻĨāĻžāĻĒāύ āĻāϰā§āĨ¤
-**Example 2**
+**āĻāĻĻāĻžāĻšāϰāĻŖ ⧍**
-Range slider:
+āϰā§āĻā§āĻ āϏā§āϞāĻžāĻāĻĄāĻžāϰ:
```python
st.subheader('Range slider')
@@ -106,15 +106,15 @@ values = st.slider(
st.write('Values:', values)
```
-The range slider allow selection of a lower and upper bound value pair.
+āĻĒāϰāĻŋāϏā§āĻŽāĻž āϏā§āϞāĻžāĻāĻĄāĻžāϰ āĻāĻāĻāĻŋ āύāĻŋāĻŽā§āύ āĻāĻŦāĻ āĻāĻĒāϰā§āϰ āĻāĻŦāĻĻā§āϧ āĻŽāĻžāύ āĻā§āĻĄāĻŧāĻž āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰāĻžāϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧāĨ¤
-The first input argument displays the text just above the **range slider** widget asking `'Select a range of values'`.
+āĻĒā§āϰāĻĨāĻŽ āĻāύāĻĒā§āĻ āĻāϰā§āĻā§āĻŽā§āύā§āĻāĻāĻŋ **āϰā§āĻā§āĻ āϏā§āϞāĻžāĻāĻĄāĻžāϰ** āĻāĻāĻā§āĻā§āϰ āĻ āĻŋāĻ āĻāĻĒāϰ⧠āϞā§āĻāĻžāĻāĻŋ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰ⧠āϝāĻž āĻāĻŋāĻā§āĻāĻžāϏāĻž āĻāϰ⧠`'āĻŽāĻžāύāĻā§āϞāĻŋāϰ āĻāĻāĻāĻŋ āĻĒāϰāĻŋāϏāϰ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰā§āύ'`āĨ¤
-The following three arguments `0.0, 100.0, (25.0, 75.0)` represents the minimum and maximum values while the last tuple denotes the default values to use as the selected lower (25.0) and upper (75.0) bound values.
+āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āϤāĻŋāύāĻāĻŋ āĻāϰā§āĻā§āĻŽā§āύā§āĻ `ā§Ļ.ā§Ļ , ā§§ā§Ļā§Ļ.ā§Ļ , (⧍ā§Ģ.ā§Ļ , ā§ā§Ģ.ā§Ļ)` āύā§āϝā§āύāϤāĻŽ āĻāĻŦāĻ āϏāϰā§āĻŦāĻžāϧāĻŋāĻ āĻŽāĻžāύāĻā§āϞāĻŋāĻā§ āĻāĻĒāϏā§āĻĨāĻžāĻĒāύ āĻāϰ⧠āϝāĻāύ āĻļā§āώ āĻāĻŋāĻĒāϞāĻāĻŋ āύāĻŋāϰā§āĻŦāĻžāĻāĻŋāϤ āύāĻŋāĻŽā§āύ (25.0) āĻāĻŦāĻ āĻāĻĒāϰā§āϰ (75.0) āĻāĻŦāĻĻā§āϧ āĻŽāĻžāύ āĻšāĻŋāϏāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĄāĻŋāĻĢāϞā§āĻ āĻŽāĻžāύāĻā§āϞāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰā§ā§ˇ
-**Example 3**
+**āĻāĻĻāĻžāĻšāϰāĻŖ ā§Š**
-Range time slider:
+āĻĒāϰāĻŋāϏā§āĻŽāĻž āϏāĻŽāϝāĻŧ āϏā§āϞāĻžāĻāĻĄāĻžāϰ:
```python
st.subheader('Range time slider')
@@ -125,15 +125,15 @@ appointment = st.slider(
st.write("You're scheduled for:", appointment)
```
-The range time slider allows selection of a lower and upper bound value pair of datetime.
+āϰā§āĻā§āĻ āĻāĻžāĻāĻŽ āϏā§āϞāĻžāĻāĻĄāĻžāϰ āĻĄā§āĻāĻāĻžāĻāĻŽā§āϰ āĻāĻāĻāĻŋ āύāĻŋāĻŽā§āύ āĻāĻŦāĻ āĻāĻĒāϰā§āϰ āĻāĻŦāĻĻā§āϧ āĻŽāĻžāύ āĻā§āĻĄāĻŧāĻž āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰāĻžāϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧāĨ¤
-The first input argument displays the text just above the **range time slider** widget asking `'Schedule your appointment:`.
+āĻĒā§āϰāĻĨāĻŽ āĻāύāĻĒā§āĻ āĻāϰā§āĻā§āĻŽā§āύā§āĻ **āϰā§āĻā§āĻ āĻāĻžāĻāĻŽ āϏā§āϞāĻžāĻāĻĄāĻžāϰ** āĻāĻāĻā§āĻā§āϰ āĻ āĻŋāĻ āĻāĻĒāϰ⧠āĻā§āĻā§āϏāĻ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰ⧠āϝāĻž āĻāĻŋāĻā§āĻā§āϏ āĻāϰ⧠`'āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒāϝāĻŧā§āύā§āĻāĻŽā§āύā§āĻā§āϰ āϏāĻŽāϝāĻŧ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰā§āύ:'āĨ¤
-The default values for the lower and upper bound value pairs of datetime are set to 11:30 and 12:45, respectively.
+āĻĄā§āĻāĻāĻžāĻāĻŽā§āϰ āύāĻŋāĻŽā§āύ āĻāĻŦāĻ āĻāĻĒāϰā§āϰ āĻāĻŦāĻĻā§āϧ āĻŽāĻžāύ āĻā§āĻĄāĻŧāĻžāϰ āĻāύā§āϝ āĻĄāĻŋāĻĢāϞā§āĻ āĻŽāĻžāύ āϝāĻĨāĻžāĻā§āϰāĻŽā§ ā§§ā§§:ā§Šā§Ļ āĻāĻŦāĻ ā§§ā§¨:ā§Ēā§Ģ āϏā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
-**Example 4**
+**āĻāĻĻāĻžāĻšāϰāĻŖ ā§Ē**
-Datetime slider:
+āϤāĻžāϰāĻŋāĻ āϏāĻŽāϝāĻŧ āϏā§āϞāĻžāĻāĻĄāĻžāϰ:
```python
st.subheader('Datetime slider')
@@ -145,12 +145,13 @@ start_time = st.slider(
st.write("Start time:", start_time)
```
-The datetime slider allows selection of a datetime.
+āϤāĻžāϰāĻŋāĻā§āϰ āϏāĻŽāϝāĻŧ āϏā§āϞāĻžāĻāĻĄāĻžāϰ āĻāĻāĻāĻŋ āϤāĻžāϰāĻŋāĻ āϏāĻŽāϝāĻŧ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰāĻžāϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧāĨ¤
-The first input argument displays the text just above the **datetime** slider widget asking `'When do you start?'`.
+āĻĒā§āϰāĻĨāĻŽ āĻāύāĻĒā§āĻ āĻāϰā§āĻā§āĻŽā§āύā§āĻ **datetime** āϏā§āϞāĻžāĻāĻĄāĻžāϰ āĻāĻāĻā§āĻā§āϰ āĻ āĻŋāĻ āĻāĻĒāϰ⧠āĻĒāĻžāĻ ā§āϝ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰ⧠āϝāĻž āĻāĻŋāĻā§āĻāĻžāϏāĻž āĻāϰ⧠`'āĻāĻĒāύāĻŋ āĻāĻāύ āĻļā§āϰ⧠āĻāϰāĻŦā§āύ?'`āĨ¤
-The default value for the datetime was set using the `value` option to be January 1, 2020 at 9:30
+āϤāĻžāϰāĻŋāĻ āϏāĻŽāϝāĻŧā§āϰ āĻāύā§āϝ āĻĄāĻŋāĻĢāϞā§āĻ `āĻŽāĻžāύ` āĻŦāĻŋāĻāϞā§āĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠⧧ āĻāĻžāύā§āϝāĻŧāĻžāϰā§, ⧍ā§Ļ⧍ā§Ļ ⧝:ā§Šā§Ļ āĻ āϏā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ
-## Further reading
-You can also explore the following related widget:
+## āĻāϰāĻ āĻĒāĻĄāĻŧāĻž
+āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻĒāύāĻŋ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āϏāĻŽā§āĻĒāϰā§āĻāĻŋāϤ āĻāĻāĻā§āĻ āĻ
āύā§āĻŦā§āώāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
- [`st.select_slider`](https://docs.streamlit.io/library/api-reference/widgets/st.select_slider)
+
diff --git a/content/Day9.md b/content/Day9.md
index 931bb21..861cb77 100644
--- a/content/Day9.md
+++ b/content/Day9.md
@@ -1,25 +1,25 @@
# st.line_chart
-`st.line_chart` displays a line chart.
+`st.line_chart` āĻāĻāĻāĻŋ āϞāĻžāĻāύ āĻāĻžāϰā§āĻ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰā§āĨ¤
-This is syntax-sugar around `st.altair_chart`. The main difference is this command uses the data's own column and indices to figure out the chart's spec. As a result this is easier to use for many "just plot this" scenarios, while being less customizable.
+āĻāĻāĻŋ `st.altair_chart` āĻāϰ āĻāĻžāϰāĻĒāĻžāĻļā§ āĻŦāĻžāύāĻžāύā§āĨ¤ āĻĒā§āϰāϧāĻžāύ āĻĒāĻžāϰā§āĻĨāĻā§āϝ āĻšāϞ āĻāĻ āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ āĻāĻžāϰā§āĻā§āϰ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āĻŦā§āϰ āĻāϰāϤ⧠āĻĄā§āĻāĻžāϰ āύāĻŋāĻāϏā§āĻŦ āĻāϞāĻžāĻŽ āĻāĻŦāĻ āϏā§āĻāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤ āĻĢāϞāϏā§āĻŦāϰā§āĻĒ āĻāĻāĻŋ āĻ
āύā§āĻ "āĻļā§āϧ⧠āĻāĻ āĻĒā§āϞāĻ" āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϏāĻšāĻ, āϝāĻĻāĻŋāĻ āĻāĻŽ āĻāĻžāϏā§āĻāĻŽāĻžāĻāĻāϝā§āĻā§āϝāĨ¤
-If `st.line_chart` does not guess the data specification correctly, try specifying your desired chart using st.altair_chart.
+āϝāĻĻāĻŋ `st.line_chart` āĻĄā§āĻāĻž āϏā§āĻĒā§āϏāĻŋāĻĢāĻŋāĻā§āĻļāύ āϏāĻ āĻŋāĻāĻāĻžāĻŦā§ āĻ
āύā§āĻŽāĻžāύ āύāĻž āĻāϰā§, āϤāĻžāĻšāϞ⧠st.altair_chart āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻĒāύāĻžāϰ āĻāĻžāĻā§āĻāĻŋāϤ āĻāĻžāϰā§āĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰā§āύāĨ¤
-## What we're building?
+## āĻāĻŽāϰāĻž āĻāĻŋ āύāĻŋāϰā§āĻŽāĻžāĻŖ āĻāϰāĻāĻŋ?
-A simple app for displaying a line chart.
+āĻāĻāĻāĻŋ āϞāĻžāĻāύ āĻāĻžāϰā§āĻ āĻĒā§āϰāĻĻāϰā§āĻļāύā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϏāĻšāĻ āĻ
ā§āϝāĻžāĻĒāĨ¤
-Flow of the app:
-1. Create a `Pandas` DataFrame from numbers randomly generated via `NumPy`.
-2. Create and display the line chart via `st.line_chart()` command.
+āĻ
ā§āϝāĻžāĻĒā§āϰ āĻĒā§āϰāĻŦāĻžāĻš:
+ā§§. 'NumPy' āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāϞā§āĻŽā§āϞā§āĻāĻžāĻŦā§ āϤā§āϰāĻŋ āĻšāĻāϝāĻŧāĻž āϏāĻāĻā§āϝāĻžāĻā§āϞāĻŋ āĻĨā§āĻā§ āĻāĻāĻāĻŋ 'Pandas' āĻĄā§āĻāĻžāĻĢā§āϰā§āĻŽ āϤā§āϰāĻŋ āĻāϰā§āύ⧎
+⧍. `st.line_chart()` āĻāĻŽāĻžāύā§āĻĄā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϞāĻžāĻāύ āĻāĻžāϰā§āĻ āϤā§āϰāĻŋ āĻāϰā§āύ āĻāĻŦāĻ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰā§āύāĨ¤
-## Demo app
+## āĻĄā§āĻŽā§ āĻ
ā§āϝāĻžāĻĒ
-[](https://share.streamlit.io/dataprofessor/st.line_chart/)
+[](https://share.streamlit.io/dataprofessor/st.line_chart/)
-## Code
-Here's how to use [`st.line_chart`](https://docs.streamlit.io/library/api-reference/charts/st.line_chart):
+## āĻā§āĻĄ
+āĻāĻāĻžāύ⧠āĻāĻŋāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ [`st.line_chart`](https://docs.streamlit.io/library/api-reference/charts/st.line_chart):
```python
import streamlit as st
import pandas as pd
@@ -35,31 +35,32 @@ st.line_chart(chart_data)
```
-## Line-by-line explanation
-The very first thing to do when creating a Streamlit app is to start by importing the `streamlit` library as `st` as well as other libraries like so:
+## āϞāĻžāĻāύ-āĻŦāĻžāĻ-āϞāĻžāĻāύ āĻŦā§āϝāĻžāĻā§āϝāĻž
+āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĒā§āϰāĻĨāĻŽā§āĻ āϝ⧠āĻāĻžāĻāĻāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§ āϤāĻž āĻšāϞ `āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ` āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāĻā§ `st` āĻšāĻŋāϏā§āĻŦā§ āĻ āĻ
āύā§āϝāĻžāύā§āϝ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž:
```python
import streamlit as st
import pandas as pd
import numpy as np
```
-Next, we create a header text for the app:
+āĻāϰ āĻĒāϰā§, āĻāĻŽāϰāĻž āĻ
ā§āϝāĻžāĻĒā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻļāĻŋāϰā§āύāĻžāĻŽ āĻĒāĻžāĻ ā§āϝ āϤā§āϰāĻŋ āĻāϰāĻŋ:
```python
st.header('Line chart')
```
-Then, we create a DataFrame of randomly generated numbers that contains 3 columns.
+āϤāĻžāϰāĻĒāϰ āĻāĻŽāϰāĻž āĻāϞā§āĻŽā§āϞā§āĻāĻžāĻŦā§ āϤā§āϰāĻŋ āĻāϰāĻž āϏāĻāĻā§āϝāĻžāĻā§āϞāĻŋāϰ āĻāĻāĻāĻŋ āĻĄā§āĻāĻžāĻĢā§āϰā§āĻŽ āϤā§āϰāĻŋ āĻāϰāĻŋ āϝāĻžāĻ¤ā§ ā§ŠāĻāĻŋ āĻāϞāĻžāĻŽ āĻĨāĻžāĻā§āĨ¤
```python
chart_data = pd.DataFrame(
np.random.randn(20, 3),
columns=['a', 'b', 'c'])
```
-Finally, a line chart is created by using `st.line_chart()` with the DataFrame stored in the `chart_data` variable as the input data:
+
+āĻ
āĻŦāĻļā§āώā§, āĻāύāĻĒā§āĻ āĻĄā§āĻāĻž āĻšāĻŋāϏāĻžāĻŦā§ `chart_data` āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ⧠āϏāĻāϰāĻā§āώāĻŋāϤ āĻĄā§āĻāĻžāĻĢā§āϰā§āĻŽā§āϰ āϏāĻžāĻĨā§ `st.line_chart()` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻāĻŋ āϞāĻžāĻāύ āĻāĻžāϰā§āĻ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ:
```python
st.line_chart(chart_data)
```
-## Further reading
-Read more about the following related Streamlit command from which [`st.line_chart`](https://docs.streamlit.io/library/api-reference/charts/st.line_chart) is based on:
+## āĻāϰāĻ āĻĒāĻĄāĻŧāĻž
+āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āϏāĻŽā§āĻĒāϰā§āĻāĻŋāϤ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻ āĻāĻŽāĻžāύā§āĻĄ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰāĻ āĻĒāĻĄāĻŧā§āύ āϝā§āĻāĻŋ āĻĨā§āĻā§ [`st.line_chart`](https://docs.streamlit.io/library/api-reference/charts/st.line_chart) āĻāϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰā§:
- [`st.altair_chart`](https://docs.streamlit.io/library/api-reference/charts/st.altair_chart)
diff --git a/content/images/readme.md b/content/images/readme.md
index 4148b2f..59bfea4 100644
--- a/content/images/readme.md
+++ b/content/images/readme.md
@@ -1 +1 @@
-# images
+# āĻāĻŦāĻŋ
diff --git a/streamlit_app.py b/streamlit_app.py
index e18e771..a550c54 100644
--- a/streamlit_app.py
+++ b/streamlit_app.py
@@ -20,7 +20,7 @@ def update_params():
col1, col2, col3 = st.columns((1, 4, 1))
with col2:
st.image(Image.open("streamlit-logo-secondary-colormark-darktext.png"))
-st.markdown("# 30 Days of Streamlit")
+st.markdown("# ā§Šā§Ļ āĻĻāĻŋāύ⧠āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§ ")
days_list = [f"Day {x}" for x in md_files]
@@ -33,40 +33,40 @@ def update_params():
st.session_state.day = days_list[0]
selected_day = st.selectbox(
- "Start the Challenge đ", days_list, key="day", on_change=update_params
+ "āĻā§āϝāĻžāϞā§āĻā§āĻ āĻļā§āϰ⧠āĻāϰā§āύ đ", days_list, key="day", on_change=update_params
)
-with st.expander("About the #30DaysOfStreamlit"):
+with st.expander("#30DaysOfStreamlit āϏāĻŽā§āĻĒāϰā§āĻāĻŋāϤ"):
st.markdown(
"""
- The **#30DaysOfStreamlit** is a coding challenge designed to help you get started in building Streamlit apps.
+ **#30DaysOfStreamlit** āĻšāϞ āĻāĻāĻāĻŋ āĻā§āĻĄāĻŋāĻ āĻā§āϝāĻžāϞā§āĻā§āĻ āϝāĻž āĻāĻĒāύāĻžāĻā§ Streamlit āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻļā§āϰ⧠āĻāϰāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
- Particularly, you'll be able to:
- - Set up a coding environment for building Streamlit apps
- - Build your first Streamlit app
- - Learn about all the awesome input/output widgets to use for your Streamlit app
+ āĻŦāĻŋāĻļā§āώ āĻāϰā§, āĻāĻĒāύāĻŋ āϏāĻā§āώāĻŽ āĻšāĻŦā§āύ:
+ - āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§ āĻ
ā§āϝāĻžāĻĒāϏ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻā§āĻĄāĻŋāĻ āĻĒāϰāĻŋāĻŦā§āĻļ āϏā§āĻ āĻāĻĒ āĻāϰā§āύ
+ - āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻĨāĻŽ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§ āĻ
ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰā§āύ
+ - āĻāĻĒāύāĻžāϰ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§ āĻ
ā§āϝāĻžāĻĒā§āϰ āĻāύā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ āϏāĻŽāϏā§āϤ āĻĻā§āϰā§āĻĻāĻžāύā§āϤ āĻāύāĻĒā§āĻ/āĻāĻāĻāĻĒā§āĻ āĻāĻāĻā§āĻ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻžāύā§āύ
"""
)
# Sidebar
st.sidebar.header("About")
st.sidebar.markdown(
- "[Streamlit](https://streamlit.io) is a Python library that allows the creation of interactive, data-driven web applications in Python."
+ "[āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§](https://streamlit.io) āĻšāϞ āĻāĻāĻāĻŋ āĻĒāĻžāĻāĻĨāύ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āϝāĻž āĻĒāĻžāĻāĻĨāύ⧠āĻāύā§āĻāĻžāϰā§āĻā§āĻāĻŋāĻ, āĻĄā§āĻāĻž-āĻāĻžāϞāĻŋāϤ āĻāϝāĻŧā§āĻŦ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĻā§āϝāĻŧ"
)
st.sidebar.header("Resources")
st.sidebar.markdown(
"""
-- [Streamlit Documentation](https://docs.streamlit.io/)
-- [Cheat sheet](https://docs.streamlit.io/library/cheatsheet)
-- [Book](https://www.amazon.com/dp/180056550X) (Getting Started with Streamlit for Data Science)
-- [Blog](https://blog.streamlit.io/how-to-master-streamlit-for-data-science/) (How to master Streamlit for data science)
+- [āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ](https://docs.streamlit.io/)
+- [āĻāĻŋāĻ āĻļā§āĻ](https://docs.streamlit.io/library/cheatsheet)
+- [āĻŦāĻ](https://www.amazon.com/dp/180056550X) (āĻĄā§āĻāĻž āϏāĻžāϝāĻŧā§āύā§āϏā§āϰ āĻāύā§āϝ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§ āĻĻāĻŋāϝāĻŧā§ āĻļā§āϰ⧠āĻāϰāĻž)
+- [āĻŦā§āϞāĻ](https://blog.streamlit.io/how-to-master-streamlit-for-data-science/) (āĻĄā§āĻāĻž āϏāĻžāϝāĻŧā§āύā§āϏā§āϰ āĻāύā§āϝ āĻā§āĻāĻžāĻŦā§ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§ āĻāϝāĻŧāϤā§āϤ āĻāϰāĻŦā§āύ)
"""
)
st.sidebar.header("Deploy")
st.sidebar.markdown(
- "You can quickly deploy Streamlit apps using [Streamlit Community Cloud](https://streamlit.io/cloud) in just a few clicks."
+ "āĻāĻĒāύāĻŋ āĻŽāĻžāϤā§āϰ āĻāϝāĻŧā§āĻāĻāĻŋ āĻā§āϞāĻŋāĻā§ [āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§ āĻāĻŽāĻŋāĻāύāĻŋāĻāĻŋ āĻā§āϞāĻžāĻāĻĄ](https://streamlit.io/cloud) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĻā§āϰā§āϤ āϏā§āĻā§āϰāĻŋāĻŽāϞāĻŋāĻā§ āĻ
ā§āϝāĻžāĻĒ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤"
)
# Display content