首页 / 知识
关于数据库:您如何建立一个多语言的网站?
2023-04-13 22:32:00

How do you build a multi-language web site?我的一个朋友现在正在使用J2EE和Struts构建Web应用程序,并且准备好以多种语言显示页面。 有人告诉我,支持多语言站点的最佳方法是使用属性文件,在其中存储页面的所有字符串,例如:
这种解决方案是可以的,但是如果您的站点显示新闻或类似内容(博客)会怎样? 我的意思是,不是静态的内容,经常更新的内容...保留网站的人员必须用每种支持的语言编写每个新条目,并将条目的每个版本存储在数据库中。 该应用程序仅以用户选择的语言加载条目。 您如何设计数据库来支持这种实现? 谢谢。 警告:我不是Java黑客,所以YMMV但是... 使用"属性"列表的问题在于您需要进行大量的纪律检查。每次添加应该输出给用户的字符串时,您都需要打开属性文件,查看该字符串(或与之大致等效的字符串)是否已存在于文件中,然后去添加新属性如果不是这样。最重要的是,如果您希望将属性文件交给外部翻译团队处理,则必须希望该属性文件是人类可读/可编辑的。 基于数据库的方法对于所有基于数据库的内容很有用。理想情况下,您希望轻松将内容及其翻译联系在一起。对于您可能要输出数据库以外的某些内容(错误消息等)的所有地方,它实际上都下降了。 我们发现一种相当古老的技术仍然非常有效,那就是使用gettext。 Gettext或某些变体似乎可用于大多数语言和平台。基本前提是将输出包装在特殊的函数调用中,如下所示:
然后,在源代码上运行gettext工具,会将所有类似包装的实例提取到" po"文件中。这将包含如下条目:
您可以将翻译添加到适当的位置:
随后运行的gettext工具只需更新您的po文件。您甚至不需要从源中提取po文件。如果您知道您可能希望将网站翻译成一行,那么您可以对所有输出使用上面显示的格式(带下划线的功能)。如果您不提供po文件,它将仅返回您在引号中输入的内容。 gettext旨在与语言环境配合使用,因此使用用户语言环境来检索适当的po文件。这使得添加新翻译变得非常容易。 Gettext专业人士
Gettext缺点
有关gettext的更多信息,请参见此Wikipedia页面 我以前设计数据库的方式是让一个News-table包含NewsID(int),NewsPubDate(datetime),NewsAuthor(varchar / int)之类的基本信息,然后拥有一个包含以下列的链接表NewsText:NewsID(int ),NewsText(文本),NewsLanguageID(int)。最后,您有了一个语言表,其中包含LanguageID(int)和LanguageName(varchar)。 然后,当您想向用户显示新闻页面时,您可以执行以下操作:
该会话位是一个本地变量,您可以在用户首次登录或进入站点时在其中存储用户的语言。 Java Web应用程序使用java标准标记库支持国际化。 你真的有两个问题。静态内容和动态内容。 对于静态内容,可以使用jstl。它使用java ResourceBundles完成此任务。我设法在此站点的帮助下获得了支持数据库的捆绑软件。
第二个问题是动态内容。 这并非微不足道,但是您可以通过预先计划就可以做到。 如果您使用的是JSP,则标记库很好,但是您也可以使用基于模板的技术(例如FreeMarker)来实现I18N。 @奥龙 多数民众赞成在我们应用它。我们的应用程序都是PHP,但是gettext具有悠久的历史。 看起来有一个不错的Java实现 |
最新内容
相关内容
linux命令是什么语言?
linux命令是什么语言?,系统,环境,代码,传播,管理,语言,操作系统,源码,自由,部分,dos和linux的命令行里面用的是什么语言?1、DOS/Windows/Linuxlinux访问网站的命令?
linux访问网站的命令?,地址,系统,服务,工作,网站,命令,网络,管理,信息,网址,Linux必学的网络操作命令Linux的网络命令比较多,其中一些命令像pinlinux支持管道的命令?
linux支持管道的命令?,通信,标准,系统,信息,地方,数据,管道,环境,设备,工具,Linux下Grep命令的详细使用方法?查找包含teacher文本的所有行并打linux改语言命令行?
linux改语言命令行?,系统,环境,工具,密码,概念,地方,软件,通信,管理,国际,linux命令行下怎样改变语言将内容改为:LANG=zh_CN.UTF-8LANGUAGE=zh_linux命令行c语言?
linux命令行c语言?,代码,系统,工具,环境,工作,保险,发行,命令,文件,终端,linux终端下如何进行C语言编译1、在Linux下面,如果要编译一个C语言源c语言在linux命令?
c语言在linux命令?,系统,工作,管理,命令,保险,基础,环境,信息,文件,语言,linux系统的命令是什么linux常用命令有pwd命令、cd命令、ls命令、catlinux编写c语言命令?
linux编写c语言命令?,系统,基础,环境,代码,盘面,保险,百度,情况,数据,工具,在Linux系统中,如何运行一个C语言程序?编译。由.c文件生成.o文件,写linux命令行登陆网站?
linux命令行登陆网站?,网站,系统,密码,服务,地址,环境,网络,软件,状态,项目,在Linux下怎么通过命令上网首先,连接相应linux主机,进入到linux命令linux登陆网站命令?
linux登陆网站命令?,网络,工具,网站,标准,地址,软件,系统,命令,数据,环境,linux如何用命令行登录?1、首先在桌面模式下,右键点击open in terminlinux命令打开网站?
linux命令打开网站?,网络,网站,系统,地址,密码,传播,工具,代码,环境,命令,大学生通关这几个编程游戏1、Hack The Game Hack The Game是一款好linux命令行登录网站?
linux命令行登录网站?,系统,网站,地址,工作,软件,密码,网络,第一,环境,中心,如何使用linux命令打开网页1、在命令符界面浏览网页可以使用lynx,llinux改变语言命令?
linux改变语言命令?,系统,管理,网上,官方网站,情况,服务,中文,语言,命令,终端,linux命令行下怎样改变语言将内容改为:LANG=zh_CN.UTF-8LANGUAGE