thedevdojo / voyager

Voyager - The Missing Laravel Admin
https://voyager.devdojo.com
MIT License
11.72k stars 2.67k forks source link

Is it possible to translate BREAD BROWSE columns? #5829

Open enkhtulga opened 5 months ago

enkhtulga commented 5 months ago

Laravel version

9

PHP version

7.4

Voyager version

1.4.3

Description of problem

Is it possible to translate BREAD BROWSE columns when user changed his/her language in profile? So how to do it? For example:

English -> Mongolia:

Order - Дараалал Name - Нэр Slug - Слаг

Screen Shot 2024-01-05 at 14 51 41

Proposed solution

Is it possible to translate BREAD BROWSE columns when user changed his/her language in profile? So how to do it?

Alternatives considered

Is it possible to translate BREAD BROWSE columns when user changed his/her language in profile? So how to do it?

Additional context

Is it possible to translate BREAD BROWSE columns when user changed his/her language in profile? So how to do it?

Emerica commented 5 months ago

I think so, appears to look that way anyways.

https://voyager-docs.devdojo.com/core-concepts/multilanguage

You can also add bread to the translations table pretty easily by using "TCG\Voyager\Models\Translation" as a model, or build your own that extends it. If you search the repo here for getTranslatedAttribute

The browse blade takes a datatype, which has datarows. Datatype and DataRows have the translator trait applied.
Type uses "display_name_singular, display_name_plural" and Row uses "display_name" https://github.com/thedevdojo/voyager/blob/7866a2d287c72b2682322d84f691974eb68c9331/resources/views/bread/browse.blade.php#L91

So you should just be able to make translation entries for your table. The tricky part is that Voyager hides the DataTypes and Rows Tables. You can use tinker or debug another way.

For example Run php artisan tinker and then type

TCG\Voyager\Models\DataType::where('name','categories')->first()->rows->pluck('display_name','id')

This will give you a list of data rows with their display_name and corresponding id. You can use 'name' if you don't want the case confusion.

Now go into the Bread for translations that you just made and add a new entry. Set the fields as follows: Table Name : data_rows Column Name: display_name Foreign Key: [ID VALUE FROM QUEURY FOR COLUMN] Locale: [WANTED LOCALE] Value: [TRANSLATED VALUE]

Now when your user changes their locale, that data_row will get translated.

Emerica commented 5 months ago

image image Notice the first column is now translated.

enkhtulga commented 5 months ago

@Emerica Thank you so much. 🙇🏻‍♂️🙇🏻‍♂️🙇🏻‍♂️

enkhtulga commented 5 months ago

@Emerica how to create PR for new unsupported locale? I have already translated. When i try to push then it says:

git push --set-upstream origin adding-a-new-unsupported-locale-mongolia-mn
remote: Permission to thedevdojo/voyager.git denied to enkhtulga-gantsagaan.
fatal: unable to access 'https://github.com/thedevdojo/voyager.git/': The requested URL returned error: 403
Emerica commented 5 months ago

I think you have to commit to your own fork vs master and then submit the pull in github from your fork. Keep in mind, the maintainers don't seem to spend as much time going over those it seems, so it might be some time for it to be picked up. Don't let it discourage you if it sits...