Phoenix Localized Routes - Localized/multilingual routes in Phoenix

Phoenix Localized Routes is dead. Long live Routex!

Phoenix Localized Routes did pave the way for some routing libs but that was possibly it’s only award. As it was the first of it’s kind the design very much left much to be desired. It’s successor, Routex, is in every aspect a better lib.

  • better design
  • better code
  • better documentation
  • better performance

What was Phoenix Localized Routes?

Localize your Phoenix website with multilingual URLs and custom template assigns; enhancing user engagement and content relevance.

                    ⇒ /products/:id/edit                  @loc.locale = "en_US"
/products/:id/edit  ⇒ /nederland/producten/:id/bewerken   @loc.locale = "nl_NL"
                    ⇒ /espana/producto/:id/editar         @loc.locale = "es_ES"

Top Features and Benefits

Simple when possible, powerful where needed.

Usage Summary

  • Add a configuration file describing which alternate routes to generate.
  • Replace less than 10 lines of code in your existing Phoenix application.
  • Optionally:
    • Run mix gettext.extract --merge
    • Translate the URL parts like any other translatable text.
  • Run mix phx.routes to verify the result.

You can now visit the localized URLs. Links and redirects in your application will automatically keep the visitors in their current (localized) scope.

Example App

Documentation

HexDocs (stable) and GitHub Pages (development).

Requirements and Installation

See the Usage Guide for the requirements and installation instructions.

Additional Resources

How it Works: High-level overview of Phoenix Localized Routes’ main features.
Usage guide: usage.html | hexdocs
Example app: Example repo | Github and Live at | Fly.io

Source: phoenix_localized_routes | GitHub
Package: phoenix_localized_routes | hex

19 Likes

This looks promising, I’ll have to try it out in one of my Phoenix projects!

2 Likes

It would be nice some tutorial or video using this!

Great idea; will write a blog once I have some time (currently adding specs to the functions)

In the meantime the usage guide can be used. Added the link to the opening post.

https://hexdocs.pm/phoenix_localized_routes/usage.html

2 Likes

Yes, I saw the usage guide after posting here.
@BartOtten if you create this tutorial on the blog I would like to have some notification for this.
Thank you for your reply!

Looks great!

I wonder if @kip has already seen this! :blush:

Sure have! @BartOtten is doing an awesome job.

4 Likes

Hello, @kip I would like to know if you have a tutorial or video doing the internationalization of the app?
using the dependencies you have created!
I know one it is the cldr.

I would not dare to publish a localization lib without @kip’s blessing :wink: Therefor I asked him personally to have a look at the lib when it was pre-0.1.0. Dare to say we both share a vision.

As a result CLDR Routes and Phoenix Localized Routes have influenced each other for the better. Both coming from another direction and with other features, but both targeting improvement in localization of Phoenix apps.

Soon will pick up the conversation and check which area would add the greatest improvement to accomplish that shared vision.

4 Likes

I’ll be publishing my first livebook on this topic in the next week or so based upon my ElixirConf EU talk, and I have a few more in planning to follow that. I’ll post an announcement in the ex_cldr thread soon.

4 Likes

A small update has been published on Hex with a very limited change for end users. Therefor it became…

0.1.1

1. Enhancements

  • Fixed error reported by Dialyzer
  • Added typespecs
  • Modules split for better test experience

2. Breaking Change

  • Helpers.loc_route requires :loc_opts of type Scope.Flat.t() | nil instead of freeform map | nil

The README has been rewitten, hopefully better emphasizing the benefits and unique selling points of the library.

As I am not a native speaker nor the ultimate documentation writer, I wonder if someone could provide some tips for improvement.

Snip snip (a post ended up here instead of PM)

This is exactly what I need for my next project. Happy coincidence that you published it recently. @BartOtten Thanks :slight_smile:

1 Like

Version 0.1.2

  • Support Elixir >= 1.14

Hopefully I soon have some time to see how the new verified routes of Phoenix 1.7 can be localized, while keeping the same features (unobtrusive) as the helper variant.

2 Likes

Hi, I am having trouble to implement your library in Phoenix 1.7. The example_web.ex file content is very different from 1.6.

Please, could you add or remove in example_web.ex file if we want to use your library in Phoenix 1.7?

Also, I am using LiveView and I am not sure if it will automatically work for LiveView as well. Is this library compatible with LiveView or just the regular controllers?

—-snip—

Will look into it.

As for the last question: The lib is fully functional with Live View.

1 Like

Thank you.

You are really my last hope. I really need this functionality and don’t want to go back to Laravel and GitHub - codezero-be/laravel-localized-routes: A convenient way to set up and use localized routes in a Laravel app. to be specific. And having this functionality of your library is crucial for my website.

Progress on Phoenix 1.7 Verified Routes
I have two proof of concepts for a method to accomplish the same behavior as with ‘the old way’. Gonna trow it away and write the actual implementation.

Soon this lib will support localized (verified) routes using the new sigil method.

3 Likes

Progress on Phoenix 1.7 Verified Routes
Next week a new version will be released with support for verified routes!

It will feature a new config option to specify the sigil to use, allowing the developer to pick one not confliction with possible other used sigils.

Although Phoenix Route Helpers will still be supported, they are now fully optional.

afbeelding

4 Likes