feat: internationalization #43
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/internationalization"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary by CodeRabbit
New Features
LANGUAGE_CODEto specify the default language for the application.Bug Fixes
Documentation
Chores
Walkthrough
The pull request introduces internationalization features to the application, including the addition of a new environment variable
LANGUAGE_CODE, which is set toen-US. Several dependencies related to localization are added in theCargo.tomlfile. Key components are modified to support language handling, including theApp,CategoryCalendarPage, andCategoryTodayPage, among others. New JSON files for Czech and English localization are introduced, and server-side functionality for retrieving language identifiers is added. Overall, these changes enhance the application's capability to support multiple languages.Changes
LANGUAGE_CODE=en-USto support language localization.dioxus-sdk(withi18nfeature),unic-langid-impl, andvoca_rsfor internationalization and string manipulation.use_init_i18n, added functions for retrieving languages and language identifiers.use_i18andtranslate!macro for dynamic content adaptation.use_i18, replaced hardcoded strings with translations, and improved date formatting logic.translate!.get_languagesandLocaleFromLanguageIdentifierstruct.internationalizationto support localization features.Ordtrait implementation forTaskstruct for improved readability.establish_database_connectionfunction.get_language_identifierto retrieve language identifiers based on theLANGUAGE_CODEenvironment variable.internationalizationfor managing localization features on the server side.Dereftrait forReverseOrdOptionstruct to simplify interactions withOption<T>.Possibly related PRs
LANGUAGE_CODEvariable, which is relevant to the internationalization enhancements made in theCategoryTodayPagecomponent in the retrieved PR. Both PRs focus on improving user experience through language and content adaptation.Recent review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Commits
Files that changed from the base of the PR and between
fa68b05738and94ea49b76f.Files ignored due to path filters (1)
Cargo.lockis excluded by!**/*.lockFiles selected for processing (16)
Additional comments not posted (23)
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
Share
Tips
Chat
There are 3 ways to chat with CodeRabbit:
I pushed a fix in commit <commit_id>.Generate unit testing code for this file.Open a follow-up GitHub issue for this discussion.@coderabbitaiin a new review comment at the desired location with your query. Examples:@coderabbitai generate unit testing code for this file.@coderabbitai modularize this function.@coderabbitaiin a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:@coderabbitai generate interesting stats about this repository and render them as a table.@coderabbitai show all the console.log statements in this repository.@coderabbitai read src/utils.ts and generate unit testing code.@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.@coderabbitai help me debug CodeRabbit configuration file.Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.
CodeRabbit Commands (Invoked using PR comments)
@coderabbitai pauseto pause the reviews on a PR.@coderabbitai resumeto resume the paused reviews.@coderabbitai reviewto trigger an incremental review. This is useful when automatic reviews are disabled for the repository.@coderabbitai full reviewto do a full review from scratch and review all the files again.@coderabbitai summaryto regenerate the summary of the PR.@coderabbitai resolveresolve all the CodeRabbit review comments.@coderabbitai configurationto show the current CodeRabbit configuration for the repository.@coderabbitai helpto get help.Other keywords and placeholders
@coderabbitai ignoreanywhere in the PR description to prevent this PR from being reviewed.@coderabbitai summaryto generate the high-level summary at a specific location in the PR description.@coderabbitaianywhere in the PR title to generate the title automatically.CodeRabbit Configuration File (
.coderabbit.yaml).coderabbit.yamlfile to the root of your repository.# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.jsonDocumentation and Community
Actionable comments posted: 2
Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Commits
Files that changed from the base of the PR and between
fa68b05738and94ea49b76f.Files ignored due to path filters (1)
Cargo.lockis excluded by!**/*.lockFiles selected for processing (16)
Additional comments not posted (23)
@@ -9,3 +12,4 @@pub(crate) fn App() -> Element {use_init_query_client::<QueryValue, QueryErrors, QueryKey>();let language_identifier = use_server_future(get_language_identifier)?.unwrap().unwrap();Improve error handling when unwrapping the
language_identifier.The
language_identifieris being force unwrapped usingunwrap()at line 15. This can lead to a panic if the value isNone.Consider using
matchorif letto handle theNonecase gracefully:@@ -0,0 +11,4 @@Ok(env::var("LANGUAGE_CODE").expect("The environment variable LANGUAGE_CODE must be set.").parse::<LanguageIdentifier>()?)}LGTM with nitpicks!
The server-side code for retrieving the language identifier looks good. Just a couple of nitpicks:
If the
LANGUAGE_CODEenvironment variable is always set by the deployment process, you can remove thedotenvimport and thedotenv()call.Consider changing the visibility modifier from
pub(crate)topubfor consistency with other server functions, unless you have a specific reason to restrict the visibility to the current crate.