I've enhanced the Pharo SQLite library to be even more multilingual. It has always supported data elements that are Pharo WideString instances, these being converted to/from UTF8 transparently by the library. Now the library also handles multilingual table names, column names and default column values; in other words, multilingual SQL statements.
To install in Pharo 7, load GlorpSQLite from the Catalog Browser.
Example:
| db |
db := UDBCSQLite3Connection openOn: '/tmp/ml.db'.
[ "Chinese table name, column names, and default column value."
db basicExecute: 'create table 表一 (键一 integer primary key, 列二 text default ''中文'');'.
"Insert a row, taking default column value for the 2nd column."
db basicExecute: 'insert into 表一 (键一) values (NULL)'.
"Insert another row, specifying a value in Chinese for the 2nd column."
db execute: 'insert into 表一 values (NULL, ?)'
with: (Array with: '值二').
(db execute: 'select * from 表一') rows inspect.
] ensure: [ db close ]
Inspector shows that it isn't quite I18N, although Transcript is:
From the SQLite shell:
% sqlite3 /tmp/ml.db
SQLite version 3.27.2 2019-02-25 16:06:06
Enter ".help" for usage hints.
sqlite> .header on
sqlite> .schema
CREATE TABLE 表一 (键一 integer primary key, 列二 text default '中文');
sqlite> select * from 表一;
键一|列二
1|中文
2|值二
sqlite>
Testing and feedback welcome, especially on which other parts of the library needing internationalization.
Tags: SQLite