网站要做成一个中英文的,数据也要是中英文的,要怎么搞?
下面是我的一些想法:
建个模块,网站默认是中文,英文就放到英文的那个模块里,是英文的时候就调用英文的数据?
中文一套模板,英文一套模板?
<code> 'modules' => [ 'en' => ['class' => '\app\modules\english\Module'], ]</code>
那数据要怎么存呢?给每条数据都加一个字段,lang = 'en' / lang = 'zh'
这样?
还是个数据多加几个字段, 像下面这样,title
存中文, title_en
存英文?
<code>CREATE TABLE `courses` ( `id` int(11) unsigned NOT NULL auto_increment, `title` varchar(255) NOT NULL default '', `title_en` varchar(255) NOT NULL default '', `cover` varchar(255) NOT NULL default '' comment '封面', `text` text, `text_en` text, `start_date` int(11) unsigned NOT NULL default 0 comment '开始日期', `end_date` int(11) unsigned NOT NULL default 0 comment '结束日期', `days` int(11) unsigned NOT NULL default 0 comment '有效天数', `maxnum` int(11) unsigned NOT NULL default 0 comment '最多报名人数', `has_num` int(11) unsigned NOT NULL default 0 comment '已报名人数', `price` decimal(10,2) comment '课程费', `created_at` int(11) unsigned default '0', `updated_at` int(11) unsigned default '0', `status` varchar(16) default 'on' comment 'on开启 off关闭 expire到期', `extra` text comment '额外的一些数据 可以使用序列化数据 serialize', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</code>
求比较好的解决方法,像 苹果官网
的多语言是如何做的,数据是怎么存的?
回复内容:
网站要做成一个中英文的,数据也要是中英文的,要怎么搞?
下面是我的一些想法:
建个模块,网站默认是中文,英文就放到英文的那个模块里,是英文的时候就调用英文的数据?
中文一套模板,英文一套模板?
<code> 'modules' => [ 'en' => ['class' => '\app\modules\english\Module'], ]</code>
那数据要怎么存呢?给每条数据都加一个字段,lang = 'en' / lang = 'zh'
这样?
还是个数据多加几个字段, 像下面这样,title
存中文, title_en
存英文?
<code>CREATE TABLE `courses` ( `id` int(11) unsigned NOT NULL auto_increment, `title` varchar(255) NOT NULL default '', `title_en` varchar(255) NOT NULL default '', `cover` varchar(255) NOT NULL default '' comment '封面', `text` text, `text_en` text, `start_date` int(11) unsigned NOT NULL default 0 comment '开始日期', `end_date` int(11) unsigned NOT NULL default 0 comment '结束日期', `days` int(11) unsigned NOT NULL default 0 comment '有效天数', `maxnum` int(11) unsigned NOT NULL default 0 comment '最多报名人数', `has_num` int(11) unsigned NOT NULL default 0 comment '已报名人数', `price` decimal(10,2) comment '课程费', `created_at` int(11) unsigned default '0', `updated_at` int(11) unsigned default '0', `status` varchar(16) default 'on' comment 'on开启 off关闭 expire到期', `extra` text comment '额外的一些数据 可以使用序列化数据 serialize', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</code>
求比较好的解决方法,像 苹果官网
的多语言是如何做的,数据是怎么存的?
1、英语翻译成别的语言比较方便,Yii配置文件里可以配置sourceLanguage=>‘en-US',lanaguae=>'zh-CN',同时Yii::$app->language是一个可读可写的全局变量。
Yii::t() 方法的用法如下,
echo \Yii::t('app', 'This is a string to translate!');
第一个参数指储存消息来源的类别名称,第二个参数指需要被翻译的消息。这个 Yii::t() 方法会调用 i18n 应用组件 来实现翻译工作。这个组件可以在应用程序中按下面的代码来配置,
'components' => [
<code>// ... 'i18n' => [ 'translations' => [ 'app*' => [ 'class' => 'yii\i18n\PhpMessageSource', //'basePath' => '@app/messages', //'sourceLanguage' => 'en-US', 'fileMap' => [ 'app' => 'app.php', 'app/error' => 'error.php', ], ], ], ], ], 在上面的代码中,配置了由 yii\i18n\PhpMessageSource 所支持的消息来源。模式 app* 表示所有以 app 开头的消息类别名称都使用这个翻译的消息来源。该 yii\i18n\PhpMessageSource 类使用 PHP</code>文件来存储消息翻译。 每 PHP 文件对应单一类别的消息。默认情况下,文件名应该与类别名称相同。但是,你可以配置
yii\i18n\PhpMessageSource::fileMap 来映射一个类别到不同名称的 PHP 文件。在上面的例子中, 类别
app/error 被映射到PHP文件 @app/messages/ru-RU/error.php(假设 ru-RU
为目标语言)。如果没有此配置, 该类别将被映射到 @app/messages/ru-RU/app/error.php 。除了在PHP文件中存储消息来源,也可以使用下面的消息来源在不同的存储来存储翻译的消息:
yii\i18n\GettextMessageSource 使用 GNU Gettext 的 MO 或 PO 文件保存翻译的消息。
yii\i18n\DbMessageSource 使用一个数据库表来存储翻译的消息。
补充一下Yii::t('app', 'This is a string to translate!',"zh-CN")这个方法可以传入目标语言参数。
2、数据库的内容,建议考虑多张表保存不同语言的那部分。如果每个语言一张表的话,扩展性较差;可以在表里加入language字段,根据Yii::$app->language和外键配置好关联也是很方便的。
数据库考虑可以创建结构完全一致的2个表:article_en、article_zn
使用同一个model,用url参数或者其他方法判断当前语言,在model中使用如下方法,切换对应的数据表:
<code>public static function tableName() { if (//如果是中文) { $table_name = 'article_zn'; } else { $table_name = 'article_en'; } return $table_name; }</code>
那要是支持10个国家的语言呢?都用数据库太浪费了。
可以借鉴tp框架的多语言,它是把不同的语言放入文件中。根据cookie或者session来区分语言,加载相应的语言文件。不过局限性也在于它好像只能做静态页面。
现在的骚年们使用框架前都不过一遍文档的吗?
Yii是支持多语言机制的。
赶紧戳这里看看吧。

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

PHP originated in 1994 and was developed by RasmusLerdorf. It was originally used to track website visitors and gradually evolved into a server-side scripting language and was widely used in web development. Python was developed by Guidovan Rossum in the late 1980s and was first released in 1991. It emphasizes code readability and simplicity, and is suitable for scientific computing, data analysis and other fields.

PHP is suitable for web development and rapid prototyping, and Python is suitable for data science and machine learning. 1.PHP is used for dynamic web development, with simple syntax and suitable for rapid development. 2. Python has concise syntax, is suitable for multiple fields, and has a strong library ecosystem.

PHP remains important in the modernization process because it supports a large number of websites and applications and adapts to development needs through frameworks. 1.PHP7 improves performance and introduces new features. 2. Modern frameworks such as Laravel, Symfony and CodeIgniter simplify development and improve code quality. 3. Performance optimization and best practices further improve application efficiency.

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP type prompts to improve code quality and readability. 1) Scalar type tips: Since PHP7.0, basic data types are allowed to be specified in function parameters, such as int, float, etc. 2) Return type prompt: Ensure the consistency of the function return value type. 3) Union type prompt: Since PHP8.0, multiple types are allowed to be specified in function parameters or return values. 4) Nullable type prompt: Allows to include null values and handle functions that may return null values.

In PHP, use the clone keyword to create a copy of the object and customize the cloning behavior through the \_\_clone magic method. 1. Use the clone keyword to make a shallow copy, cloning the object's properties but not the object's properties. 2. The \_\_clone method can deeply copy nested objects to avoid shallow copying problems. 3. Pay attention to avoid circular references and performance problems in cloning, and optimize cloning operations to improve efficiency.

PHP is suitable for web development and content management systems, and Python is suitable for data science, machine learning and automation scripts. 1.PHP performs well in building fast and scalable websites and applications and is commonly used in CMS such as WordPress. 2. Python has performed outstandingly in the fields of data science and machine learning, with rich libraries such as NumPy and TensorFlow.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

Dreamweaver CS6
Visual web development tools

WebStorm Mac version
Useful JavaScript development tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Notepad++7.3.1
Easy-to-use and free code editor