Version at: 03/05/2013, 14:58
# How to Install the CakePHP Version of the Tatoeba Web App
NOTE: This is about installing the PHP version (i.e. current version) of Tatoeba.
# Downloads
## Required tools
* Apache
* PHP
* MySQL
* SVN Client
For those who are on Windows:
* [XAMPP](http://www.apachefriends.org/en/xampp-windows.html) will do the trick for Apache/PHP/MySQL.
* [TortoiseSVN](http://tortoisesvn.net/downloads.html) for the SVN client
For those who are on Macintosh or Linux:
* [XAMPP](http://www.apachefriends.org/en/xampp.html) works, too.
## Source code
The source code is hosted on a platform called Assembla:
[https://www.assembla.com/code/tatoeba2/subversion/nodes](https://www.assembla.com/code/tatoeba2/subversion/nodes)
Repository URL:
[https://subversion.assembla.com/svn/tatoeba2/](https://subversion.assembla.com/svn/tatoeba2/)
URL you'll want to checkout:
[https://subversion.assembla.com/svn/tatoeba2/trunk/](https://subversion.assembla.com/svn/tatoeba2/trunk/)
# Configuration
## Virtual host
You may set up a virtual host. I personally use http://tatoeba.dev/ as my local URL.
To find out how to set up a virtual host on a Macintosh using XAMPP see the following page.
[http://f6design.com/journal/2012/03/11/configuring-virtualhosts-in-xampp-on-mac/](http://f6design.com/journal/2012/03/11/configuring-virtualhosts-in-xampp-on-mac/)
On Windows 7 using XAMPP:
[http://austinpassy.com/tutorials/setting-up-virtual-hosts-wordpress-multisite-with-xampp-on-windows-7/](http://austinpassy.com/tutorials/setting-up-virtual-hosts-wordpress-multisite-with-xampp-on-windows-7/)
**TODO** More details on how to do that.
## mod_rewrite
You need to have mod_rewrite enabled, it's necessary for CakePHP.
**TODO** More details on how to do that.
## app/config/core.php
In the file `app/config/core.php`, put into comments the part about XCache.
/*
Cache::config('default', array(
'engine' => 'Xcache', //[required]
'duration'=> 3600, //[optional]
'probability'=> 100, //[optional]
'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
'user' => 'user', //user from xcache.admin.user settings
'password' => 'password', //plaintext password (xcache.admin.pass)
));
Cache::config('_cake_core_', array(
'engine' => 'Xcache', //[required]
'duration'=> 3600, //[optional]
'probability'=> 100, //[optional]
'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
'user' => 'user', //user from xcache.admin.user settings
'password' => 'password', //plaintext password (xcache.admin.pass)
));
*/
And uncomment the line to use the "File" cache engine:
`Cache::config('default', array('engine' => 'File'));`
## app/config/database.php
In the file `app/config/database.php`, set your login, password and database in the $default array.
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => 'somepassword',
'database' => 'tatoeba',
'prefix' => '',
'encoding' => 'utf8'
);
## app/models/sentence.php
Tatoeba uses some other external tools that you won't necessarily need. These tools are:
* the search engine (Sphinx)
* the tools for romanization
If you're not going to work on the search or on the romanization and don't want to install these tools, you will have to uncomment a few things in the Sentence model (`app/models/sentence.php`).
line 274: uncomment "return array(1)"
public function getSeveralRandomIds($lang = 'und', $numberOfIdWanted = 10)
{
// Uncomment the line below if you don't have sphinx installed.
return array(1);
line 768: uncomment "return false"
public function getRomanization($text,$lang)
{
// Uncomment the line below you don't have the
// romanization tools installed.
return false;
line 851: uncomment "return false"
public function generateMetas(&$sentenceArray)
{
// Uncomment the line below you don't have the Chinese
// romanization tools installed.
return false;`
## Make the following directory writable.
/app/tmp/cache/
## For XAMPP (at least on a Mac)
You'll need to up the default thread_stack from 64K to 256K.
(I tried 128K, but that wasn't enough.)
/Applications/XAMPP/xamppfiles/etc/my.cnf
thread_stack = 256K
# Database
Now you need to create the database, and import the necessary things. The scripts you will need are in the `docs/database` folder.
First, create the database. Make sure the name you use here is the name you've set in app/core/database.php. I'll name it `tatoeba`.
CREATE DATABASE tatoeba
USE tatoeba
Then execute the following scripts.
1. This will create all the tables (they will be empty).
\. docs/database/database_20130406.sql
2. These will create a minimal user base (one user in each group), and the associated access rights for each user.
\. docs/database/import/groups.sql
\. docs/database/import/users.sql
\. docs/database/import/acos.sql
\. docs/database/import/aros.sql
\. docs/database/import/aros_acos.sql
3. This will import the list of countries. It's used in profile.
\. docs/database/import/countries.sql
4. After you start adding sentences, you will get some errors related to the fact that the table langStats is empty. This table contains lists the different languages in which the sentences are and the number of sentences for each language. So after adding your first sentences, and also everytime you will add sentences in a language that wasn't present before, you will need to execute the following script to update the langStats table:
\. docs/database/scripts/create_fill_langStats.sql
You can fill your database with the [exported CSV files](http://tatoeba.org/files/downloads/). For example, adapt and use the following commands to add sentences:
cat sentences.csv | while read -r id lang text; do echo "insert into sentences (id, lang, text) values ('$id', '$lang', '${text//\'/\'}');"; done | sudo mysql -u root tatoeba_database
cat links.csv | while read -r id1 id2; do echo "insert into sentences_translations (sentence_id, translation_id) values ($id1, $id2);"; done | sudo mysql -u root tatoeba_database
Expect this to take some time (dozens of minutes) and fill some disk space (several gigabytes).
**TODO** Would probably be nice to have some data for sentences, comments, wall messages as well. Although they can be created manually once logged in.
# Logging in
Now you should be able to go to your local Tatoeba URL (http://tatoeba.dev/ in my case), and be able to log in.
The default usernames are:
* admin
* corpus_maintainer
* advanced_contributor
* contributor
* inactive
* spammer
The default password for each user is '123456'.
version at: 20/05/2013, 03:56
# How to Install the CakePHP Version of the Tatoeba Web App
NOTE: This is about installing the PHP version (i.e. current version) of Tatoeba.
# Downloads
## Required tools
* Apache
* PHP 5.3
* MySQL
* SVN Client
For those who are on Windows:
* [XAMPP](http://www.apachefriends.org/en/xampp-windows.html) will do the trick for Apache/PHP/MySQL. But you will need to use version 1.7.7 of XAMPP rather than the latest version, because Tatoeba currently uses PHP 5.3.
* [TortoiseSVN](http://tortoisesvn.net/downloads.html) for the SVN client
For those who are on Macintosh or Linux:
* [XAMPP](http://www.apachefriends.org/en/xampp.html) works, too.
## Source code
The source code is hosted on a platform called Assembla:
[https://www.assembla.com/code/tatoeba2/subversion/nodes](https://www.assembla.com/code/tatoeba2/subversion/nodes)
Repository URL:
[https://subversion.assembla.com/svn/tatoeba2/](https://subversion.assembla.com/svn/tatoeba2/)
URL you'll want to checkout:
[https://subversion.assembla.com/svn/tatoeba2/trunk/](https://subversion.assembla.com/svn/tatoeba2/trunk/)
# Configuration
## Virtual host
You may set up a virtual host. I personally use http://tatoeba.dev/ as my local URL.
To find out how to set up a virtual host on a Macintosh using XAMPP see the following page.
[http://f6design.com/journal/2012/03/11/configuring-virtualhosts-in-xampp-on-mac/](http://f6design.com/journal/2012/03/11/configuring-virtualhosts-in-xampp-on-mac/)
On Windows 7 using XAMPP:
[http://austinpassy.com/tutorials/setting-up-virtual-hosts-wordpress-multisite-with-xampp-on-windows-7/](http://austinpassy.com/tutorials/setting-up-virtual-hosts-wordpress-multisite-with-xampp-on-windows-7/)
**TODO** More details on how to do that.
## mod_rewrite
You need to have mod_rewrite enabled, it's necessary for CakePHP.
**TODO** More details on how to do that.
## app/config/core.php
In the file `app/config/core.php`, put into comments the part about XCache.
/*
Cache::config('default', array(
'engine' => 'Xcache', //[required]
'duration'=> 3600, //[optional]
'probability'=> 100, //[optional]
'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
'user' => 'user', //user from xcache.admin.user settings
'password' => 'password', //plaintext password (xcache.admin.pass)
));
Cache::config('_cake_core_', array(
'engine' => 'Xcache', //[required]
'duration'=> 3600, //[optional]
'probability'=> 100, //[optional]
'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
'user' => 'user', //user from xcache.admin.user settings
'password' => 'password', //plaintext password (xcache.admin.pass)
));
*/
And uncomment the line to use the "File" cache engine:
`Cache::config('default', array('engine' => 'File'));`
## app/config/database.php
In the file `app/config/database.php`, set your login, password and database in the $default array.
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => 'somepassword',
'database' => 'tatoeba',
'prefix' => '',
'encoding' => 'utf8'
);
## app/models/sentence.php
Tatoeba uses some other external tools that you won't necessarily need. These tools are:
* the search engine (Sphinx)
* the tools for romanization
If you're not going to work on the search or on the romanization and don't want to install these tools, you will have to uncomment a few things in the Sentence model (`app/models/sentence.php`).
line 274: uncomment "return array(1)"
public function getSeveralRandomIds($lang = 'und', $numberOfIdWanted = 10)
{
// Uncomment the line below if you don't have sphinx installed.
return array(1);
line 768: uncomment "return false"
public function getRomanization($text,$lang)
{
// Uncomment the line below you don't have the
// romanization tools installed.
return false;
line 851: uncomment "return false"
public function generateMetas(&$sentenceArray)
{
// Uncomment the line below you don't have the Chinese
// romanization tools installed.
return false;`
## Make the following directory writable.
/app/tmp/cache/
## For XAMPP (at least on a Mac)
You'll need to up the default thread_stack from 64K to 256K.
(I tried 128K, but that wasn't enough.)
/Applications/XAMPP/xamppfiles/etc/my.cnf
thread_stack = 256K
# Database
Now you need to create the database, and import the necessary things. The scripts you will need are in the `docs/database` folder.
First, create the database. Make sure the name you use here is the name you've set in app/core/database.php. I'll name it `tatoeba`.
CREATE DATABASE tatoeba
USE tatoeba
Then execute the following scripts.
1. This will create all the tables (they will be empty).
\. docs/database/database_20130406.sql
2. These will create a minimal user base (one user in each group), and the associated access rights for each user.
\. docs/database/import/groups.sql
\. docs/database/import/users.sql
\. docs/database/import/acos.sql
\. docs/database/import/aros.sql
\. docs/database/import/aros_acos.sql
3. This will import the list of countries. It's used in profile.
\. docs/database/import/countries.sql
4. After you start adding sentences, you will get some errors related to the fact that the table langStats is empty. This table contains lists the different languages in which the sentences are and the number of sentences for each language. So after adding your first sentences, and also everytime you will add sentences in a language that wasn't present before, you will need to execute the following script to update the langStats table:
\. docs/database/scripts/create_fill_langStats.sql
You can fill your database with the [exported CSV files](http://tatoeba.org/files/downloads/). For example, adapt and use the following commands to add sentences:
cat sentences.csv | while read -r id lang text; do echo "insert into sentences (id, lang, text) values ('$id', '$lang', '${text//\'/\'}');"; done | sudo mysql -u root tatoeba_database
cat links.csv | while read -r id1 id2; do echo "insert into sentences_translations (sentence_id, translation_id) values ($id1, $id2);"; done | sudo mysql -u root tatoeba_database
Expect this to take some time (dozens of minutes) and fill some disk space (several gigabytes).
**TODO** Would probably be nice to have some data for sentences, comments, wall messages as well. Although they can be created manually once logged in.
# Logging in
Now you should be able to go to your local Tatoeba URL (http://tatoeba.dev/ in my case), and be able to log in.
The default usernames are:
* admin
* corpus_maintainer
* advanced_contributor
* contributor
* inactive
* spammer
The default password for each user is '123456'.