2014-02-20 1 views
1

Я не эксперт в SQL и базе данных в целом.База данных SQL с двумя языками

Я создаю приложение для Android с функцией multi-languages ​​как для интерфейса, так и для самого контента.

Мой вопрос предназначен для языка контента: есть ли способ получить данные из базы данных, содержащей только один язык (на английском языке), например, перевод содержимого на другой язык?

потому что я считаю, что хранить данные в базе данных не так эффективно.

заранее спасибо,

+0

Я думаю, вам не нужно хранить его в базе данных. Взгляните на это: http://developer.android.com/training/basics/supporting-devices/languages.html – Dehumanizer

+0

спасибо за ваш ответ, я имею в виду контент, а не интерфейсы ... например: в моей базе данных есть таблица для информации о продукте, хранящейся на английском языке. Когда пользователь выбирает просмотр информации с помощью приложения, он будет отображать, например, название продукта с выбранным языком (а не на английском). – user3333203

+0

Вы можете добавить Lang_Code Column (Integer), например English = 0, German = 1, ... и получить данные по Lang_Code. –

ответ

1

Текст принадлежащий к клиентскому приложению, как правило, хранятся с этим приложением, так что вам не придется загружать «ОК» и «Отмена» на соответствующем языке из базы данных только, чтобы показать некоторые кнопок. (Но вы можете сохранить это в базе данных, если хотите.)

Данные о содержимом, с другой стороны, обычно хранятся в базе данных. Это не имеет большого смысла, чтобы сохранить часть его в базе данных и часть его в другом месте. Если вы храните продукты в своей базе данных, сохраните необходимый текст. Он принадлежит. Что касается доступа к данным, это не так, потому что вы не извлекаете текст на всех языках, а только на желаемом языке.

Вот типичный дизайн таблицы:

create table product 
(
    id number(10), 
    buying_price number(6,2), 
    selling_price number(6,2), 
    id_vat number(1), 
    ... 
); 

create table product_name 
(
    id_product number(10), 
    language_iso varchar(2), -- 'en', 'de', 'fr', ... or chose another code 
    text varchar(100) 
); 

create table product_description 
(
    id_product number(10), 
    language_iso varchar(2), 
    text varchar(2000) 
); 

Вы также можете решить для более общего дизайна:

create table products 
(
    id number(10), 
    tranlation_number number(10), 
    buying_price number(6,2), 
    selling_price number(6,2), 
    id_vat number(1), 
    ... 
); 

create table translations 
(
    tranlation_number number(10), 
    content_name varchar2(30), -- 'PRODUCT_NAME', 'PRODUCT_DESCRIPTION', ... 
    language_iso varchar(2), -- 'en', 'de', 'fr', ... or chose another code 
    text varchar(4000) 
); 

Есть больше возможностей. Какой бы вы ни выбрали, доступ к данным просто означает объединение и константу для языка. Не должно быть никаких проблем с производительностью вообще. И данные там, где они принадлежат.

Смежные вопросы