Laravel 5 - 多语言网站(LTR 和 RTL)

Posted

技术标签:

【中文标题】Laravel 5 - 多语言网站(LTR 和 RTL)【英文标题】:Laravel 5 - Multi Language Website for (LTR and RTL) 【发布时间】:2017-08-14 10:09:34 【问题描述】:

向所有开发者致敬...

我是 Laravel 的新手。我想构建一个复杂的 Web 应用程序,支持至少 2 种语言很重要。不幸的是,其中一种语言是 LTR,另一种是 RTL!我的问题是:

    网站的某些部分具有静态内容,例如标题、导航项、侧边栏内容或...。据我了解,我必须在 lang 目录中创建文件并根据所选语言加载适当的数据。这样对吗?这样,是否可以从 lang 目录文件中加载这些静态数据导致应用程序变慢和性能不佳?(与静态视图相比,刀片文件有内容,不需要加载小块来自 lang 目录的数据)。 考虑第一个问题,一种语言的一组视图和第二语言的另一组视图更好吗?(每组视图都有其静态数据,不需要使用lang 文件到标题、侧边栏和...的完整部分) 正如我所说,我必须拥有 LTR 和 RTL 布局才能获得最佳 UI。所以我必须根据选择的语言有单独的样式表和加载,对吗?

我有一些关于多语言数据库设计的问题,但我稍后会开始新的讨论。感谢您的关注,希望您指导我并说出您的意见...

【问题讨论】:

我认为你可以使用相同的视图,并根据语言选择布局。 【参考方案1】:

网站的某些部分具有静态内容,例如标题、导航项、侧边栏内容或...。据我了解,我必须在 lang 目录中创建文件并根据所选语言加载适当的数据。这样对吗?这样,是否有可能从 lang 目录文件中加载这些静态数据导致应用程序变慢和性能变差? (与静态视图相比,刀片文件有内容,不需要从 lang 目录加载小块数据)

是的,一定要确保从您的观点中抽象出您的语言。这是一个很好的做法,您肯定会希望这样做可以为每种语言节省多个相同的视图(噩梦!)。 当您编写任何程序时,都会产生性能开销。当您使用这样的功能时,您的生活会轻松很多。对性能的影响很小。不要以此为理由不这样做。

考虑第一个问题,对一种语言有一套观点,对第二种语言有另一套观点更好吗? (每组视图都有它们的静态数据,不需要使用 lang 文件来处理标题、侧边栏和...的全部部分)

不,对于大多数开发人员来说,这是一场噩梦。由于语言的原因,维护多个脆弱的视图会消耗时间,因为在开始时将这些关注点分离就不需要发生这种情况了。

正如我所说,我必须拥有 LTR 和 RTL 布局才能获得最佳 UI。所以我必须根据选择的语言有单独的样式表和加载,对吗?

LTR 和 RTL 是一个完全可以单独使用一些简单的 CSS 解决的问题,无需单独的样式表。相反,在主体上使用单个类,您可以应用正确的样式。 <body class=" $rtl ? 'rtl' : 'ltr'">。现在您可以使用 CSS 的 direction 属性来定义文本读取的方向。

在您使用 Laravel 时,请尽可能多地利用该框架。您无需为此重新发明***。

【讨论】:

@DavidBarker,感谢您简化问题。我正在研究完全相同的问题。您能否添加更多关于如何在此上下文中使用 CSS 的方向属性的信息,或分享任何有助于理解此行为的链接。 @MIdrees 因为您在文档的正文中有一个指示所需文本方向的类,您可以添加一个全局样式规则,例如body.rtl direction: rtl; 。只要主体具有此类,您还可以修改浮点数或任何其他元素。有关此 CSS 属性的更多信息,请查看 developer.mozilla.org/en/docs/Web/CSS/direction 谢谢@DavidBarker,我试过了,有些零件会在镜像位置显示。但是我的左侧菜单对 rtl 有问题。我的左侧导航菜单有引导类 col-md-2,它仍然保持在相同的位置。我怎样才能动态地对此进行更改,以适应 rtl 语言。 @MIdrees 对不起,我不明白你最后一部分的意思。我建议您打开一个新问题并详细解释您遇到的问题。 感谢@DavidBarker,实际上我希望根据 rtl 反映相同的 UI,这意味着所有内容都应该从右到左对齐。我从这个 SO 问题中得到了 bootstrap-rtl 的解决方案:***.com/questions/19730598/…

以上是关于Laravel 5 - 多语言网站(LTR 和 RTL)的主要内容,如果未能解决你的问题,请参考以下文章

使用 django 创建多语言网站

Laravel 多语言站点和路线

多语言网站的 Django 重定向

Nuxt + Laravel 上的多语言站点,带有来自后端的语言环境

使用/ Laravel多语言在Google上定位良好?

静态 Html 网站 - Bootstrap - 多语言支持