- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想创建一个可以用两种语言(一种 LTR 和一种 RTL)查看的网站。这意味着所有内容都应以两种语言中的任何一种显示。
我的框架是 Spring,我使用的是 Tiles2,但我认为这个问题不是特定于框架的。
支持两种语言的明显解决方案是将所有内容(所有 JSP、片段等)加倍,然后您将获得树中适合您选择的语言的部分。但这会在更改网站时引起问题(您可能会忘记更新其他 JSP),并且不可扩展(尝试对 5 种或 10 种语言执行此操作)。
我知道我可以使用属性文件来托管不同语言的字符串,但是那样的话我的网站将是一个巨大的 spring:message 标签集合并且将很难维护(如果我有一段100 行,所有这些都放在一个属性行中吗?)
有没有什么框架、插件、其他可以解决这个问题?有没有人遇到过这个问题的巧妙解决方案?
最佳答案
我从来没有实现过一个完整的项目,只是一些测试。我认为如果您遵循一些简单的规则,这个问题并不像看起来那么大。这是我会尝试做的事情:
用<body dir='ltr/rtl'>
指定方向.与 CSS 方向属性相比,这是首选。
避免在所有 CSS 中使用不同的左/右边距或填充。如果您必须打破这条规则,您可能需要使用包含所有这些不同元素的两个不同文件(ltr.css 和 rtl.css)。
有时您需要将一些元素从左向右移动,反之亦然。例如,在 LTR 中你想要一个菜单在左边,但在 RTL 中你想要它在右边。您可以使用 CSS 实现此目的,但如果您不是专家并且必须在所有浏览器中对其进行测试,这有时会很复杂。另一种选择是根据情况使用一些 IF 。如果您使用基于网格的 CSS 库(例如 Bootstrap),最后一个选项将非常适合。
谨慎选择要使用的 CSS 和 JS 库。显然,选择那些提供 RTL/LTR 支持的。
不要太担心图像。如果您必须根据语言更改一张图片,可能是因为其中包含一些文字。因此,无论如何您都必须使用不同的图像。这是i18n相关的问题,不是文字方向问题。
不要让您的客户对此过于挑剔。我认为使用这些规则(也许还有更多)你可以获得很好的结果。但是,如果您的客户开始提示这里的一个像素和那里的另一个像素,您需要将所有这一切复杂化,而且可能没有必要。
关于您的语言属性文件。是的,使用它们。总是。即使您只使用一种语言,这也是一个很好的做法:HTML 结构与内容分离,很容易更正或翻译,一些单词或句子只在一个文件中...
关于java - JSP 国际化 RTL/LTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14082252/
当我尝试将 NotePad++ 的方向更改为 rtl(从右到左)时它看起来像这样: (我写了“测试”)。 请帮助我:) 最佳答案 要使其在 RTL 模式下正确显示,只需拖动窗口以更改其大小。它会自动修
我正在使用 Expanding Search Bar ,但根据我的要求/设计,搜索图标应位于左侧。因此,我修改了代码,将 right 替换为 left,将 float: right 替换为 float
我在 ltr 中的侧导航栏有一个小问题,我通过添加一个按钮来切换和取消切换来使其响应,如果它低于 700 像素,我还使用媒体查询隐藏它并且只显示切换按钮所以用户可以按下它,然后侧边导航将出现,这样他就
我想根据语言对齐 TextView 的内容(对希伯来语、阿拉伯语等使用 gravity=right)我试图找到资源文件夹后缀,例如 layout-ltr 或一些 API 来帮助我设置重力编程,但我找不
我目前拥有以我的语言显示 RTL 的 Galaxy Note 4,每当我运行我的应用程序时,它都会从右到左运行,而应用程序是英语。 我需要某种“强制”应用程序在所有类型的设备(RTL 和 LTR)中成
现在看来所有GUI元素的布局方向都由系统语言控制。当它是从右到左的时,所有菜单、对话框、消息框等都从右到左出现。这太可怕了。 该应用程序具有内置的本地化功能(“选择您的国家/地区”)如何让应用程序本地
我有一个 Web 应用程序需要支持所有语言,包括中东语言。 经过一些阅读,在许多情况下使用 dir 标签似乎可以完成这项工作(例如,文本正确对齐,我有一个表格可以在需要时正确交换)。 我正在使用 An
标记是这样的: p {direction: rtl;} code{direction: ltr !important;}
连接字符串时,如何让 Swift 遵循从右到左的语言环境设置? import Foundation var leftString = "1" let rightString = "2" let con
我在 上看到这个网站上的很多问题ls 排序 但我需要的是一个排序的输出 ls -ltr (按文件名排序) 因为我还需要文件大小和日期进行比较。 我试过 |排序 -k , |排序 , ls-1ltr 没
似乎无法找到有关以下内容的任何明确信息:在完全删除 SQL 逻辑服务器的情况下,Azure SQL 数据库的 LTR 备份是否可以恢复(可能是意外或管理员帐户泄露)。 换句话说,删除整个逻辑 SQL
我在连接包含阿拉伯字符的字符串时遇到了一些奇怪的行为,虽然我无法阅读阿拉伯文本,但看起来确实很明显发生了一些奇怪的事情,因为它似乎在重新排列文本/字符的顺序。代码未被使用。 var concat =
我在为客户开发网站时遇到了一个棘手的情况。我正在建立的网站有英文版和阿拉伯文版。当然,该网站的阿拉伯语版本是从右到左显示的,因为阿拉伯语是从右到左阅读的。 我为英语和阿拉伯语版本的索引页面构建了一个
我有一个位于 LFR 中的法语网站(从左到右) 并且客户想要用希伯来语翻译该站点,从而将其转换为 RTL(从右到左)。在所有希伯来语网站中,设计是相反的 https://he.wikipedia.or
我有以下 Bootstrap 代码,需要在不使用 Bootstrap 的情况下将导航中元素的方向更改为从右到左而不是从左到右(使元素 1 从右开始第一个)- rtl ,我也尝试在 ul 中使用 dir
如您所知,许多 ui 组件和开发工具不支持 rtl ,我们可以将其称为 flipping text ,因为结果与示例相同: 左转 سلام salam متن راهنما word RTL word
我正在开发一个支持两种语言的应用程序:英语(“en”)和波斯语(“fa”)。我在 AndroidManifest.xml 中设置了 android:supportsRtl="false" 因为我需要所
我知道了 site 我正在使用 cufon 将文本转换为我自己的字体。 问题是文本是反向显示的。 我正在使用名为 cunfonRTL.js 的 JavaScript 文件,内容是: var Cufon
我有一个元素数组,长度会改变,但它总是可以被 8 整除(8,16,24,32,40,48..等)。 我正在尝试切掉前 8 个元素,然后返回它们。然后将接下来的 8 个元素切片并反向返回。 并重复直到数
我的应用有一个包含许多 UIBarButtonItem 的 UIToolBar。 喜欢这张图片: 但是当我使应用程序可本地化时,当 RTL 语言选择了 UIToolBar 时,它会变成这样: 如何始终
我是一名优秀的程序员,十分优秀!