我有三种不同语言的表单,并在单个数据库中存储信息。我有搜索页面,通过选择下拉菜单从数据库中搜索数据。但是当用户搜索时,他只能使用他正在使用的语言获得结果。我需要根据用户的选择显示所有语言的结果。我怎样才能实现这个目标?任何想法和帮助表示赞赏。
这是一个培训师注册并且学生搜索培训师的网站。当培训师注册时,他填写表格并从下拉菜单中选择例如扇区。并且网站有3种不同语言的版本。当学生搜索培训师时,他选择一个部门,我想显示与所选部门相关的所有结果,无论培训师注册和用户使用的语言如何。
我有一个数据表如下
// Table : data
// --------------------------------------------
// username | name | sector_id | lang
// --------------------------------------------
// jack | Jack | 1 | en
// --------------------------------------------
// smith | Smith | 1 | fr
// --------------------------------------------
和Sector表如下
// Table : sector
// --------------------------------------------
// sector_id | sector_eng| sector_sp | sector_fr
// --------------------------------------------
// 1 | Finance | Financiar | la finance
// --------------------------------------------
例如,当用户搜索行业财务时,我需要获取杰克和史密斯的所有数据,但是显示为史密斯和财务杰克的财务
答案 0 :(得分:1)
假设您支持3种语言(英语,西班牙语,法语)和让我们以金融部门为例。无论您为金融行业存储什么数据,都会为各自的语言制作3个版本的数据。存储在您的数据库中。
但是,当您的用户搜索任何数据时 - 仅搜索ENGLISH版本的数据。然后,在获得结果(英文版)之后,获取其他不同版本的所有类似数据(这里也将是西班牙语,法语)。然后,根据用户的偏好显示各自的版本数据。
希望它会帮助你。
以下是根据您在问题中分享的用例的示例表结构。根据您不熟悉的应用程序复杂程度,它可能会有所不同。但是,希望它能为你提供一些基本的理解。
// Table : sector
// ---------------------------------
// sector_id | sector_name_eng
// ---------------------------------
// 1 | Finance
// ---------------------------------
// 2 | Statistics
// ---------------------------------
// 3 | Biology
// ---------------------------------
// Table : lang_reference
// ------------------------------
// lang_id | lang_name
// ------------------------------
// 1 | english
// ------------------------------
// 2 | spanish
// ------------------------------
// 3 | french
// -----------------------------
// Table : sector_lang_details
// --------------------------------------------
// sector_id | lang_id | sector_name
// --------------------------------------------
// 1 | 1 | Finance
// --------------------------------------------
// 1 | 2 | Financiar
// --------------------------------------------
// 1 | 3 | Finance_in_french
// --------------------------------------------
// 2 | 1 | Statistics
// --------------------------------------------
// 2 | 2 | Statistics_in_spanish
// --------------------------------------------
// 2 | 3 | Statistics_in_french
// --------------------------------------------
// 3 | 1 | Biology
// --------------------------------------------
// 3 | 2 | Biology_in_spanish
// --------------------------------------------
// 3 | 3 | Biology_in_french
// ---------------------------------------------------
// Table : trainer_details
// --------------------------------
// trainer_id | trainer_name
// ---------------------------------
// 1 | Tariner A
// ---------------------------------
// 2 | Tariner B
// ---------------------------------
// 3 | Tariner C
// ---------------------------------
// Table : trainer_teches_sectors
// ---------------------------------
// trainer_id | sector_id
// ---------------------------------
// 1 | 1
// ---------------------------------
// 1 | 2
// ---------------------------------
// 2 | 1
// ---------------------------------
// 3 | 3
// ---------------------------------
答案 1 :(得分:0)
您可以使用父子结构,这样您就可以使用多种语言。
例如,语言在所有系统中定义为tow char(ar,en,de,fr..etc)。
所以你的桌子就像这样
扇区表
id - sector_name - parent_id - language
1 - Sector in English - null - en
2 - Sector in French - 1 - fr
3 - Sector in Spain - 1 - sp
您的选择语句将如下
select * from sector where language="en" and (id=$id or parent_id=$id );
参考
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/