Хорошие практики использования Базы данных и String.xml

База данных с несколькими подмостками. Одна из них например transporte со следующими признаками:

  • Nombre
  • Descripción
  • Precio

Вначале приложение будет доступно на двух языках.

Что сохранять в Базе данных? А именно, описание, должно быть, будет на Испанском языке и Английском языке. Тогда в BD, в поле описание: я сохраняю имя переменной, которая будет поселена в файле string.xml каждого языка? и в string.xml каждого языка будет написан контент.

Иначе база данных, должно быть, будет иметь поле каждым признаком multilingüe. Например:

  • Nombre_es
  • Nombre_en
  • Descripcion_es
  • Descripcion_en
  • Precio

Но этот второй случай я думаю, что он осложняет больше app, потому что в зависимости от настоящего языка пользователя осуществятся различные консультации SQL.

Какова лучшая практика, чтобы разрабатывать в этом типе случаев?

Я издаю

Как пример я поместил контент 1 tabla BD, но он будет содержать несколько относительных подмостков. Отсюда приходит сомнение. Чтобы приносить в cavo какие-то задания, будут необходимы консультации в BD с Ваш inner join и остальные команды.

5
задан 18.04.2016, 14:36
3 ответа

Если бы говорилось о том, чтобы обнаруживать только интерфейс пользователя, Андроид уже располагает опорой для дорожки используя ресурсы как strings.xml

Больше информации о дорожке в Android: Localizing with Resources

Но однако, поскольку я понимаю, тебе нужно, чтобы данные, которых ты хранишь в твоей базе данных, были localizables. В этом случае лучшее состоит в том, чтобы иметь схему multidioma в твоем BD.

Пример: (Он игнорирует типы данных)

Esquema multi-idioma

Таким образом в главной таблице у тебя был бы первичный ключ и все те признаки, которые не меняются согласно языку, как например цены, количество ты датируешь и т.д.

В промежуточной таблице между главной таблицей и таблицей языком ты будешь иметь линию каждой комбинацией транспорт - язык, который содержит данные, что, если они меняются из-за языка, в твоем случае Nombre и Descripcion

0
ответ дан 24.11.2019, 14:35
  • 1
    Эта система интересна, но в случае, если BD была больше подмостков он осложняется достаточно и #191; нет? Включенный будучи экспертом и # 237; простого, консультации SQL быть и # 237; an отличные из-за каждого языка и #191; нет? Например чтобы реализовывать один select tendr и # 237; в который изменять поле where показано и #236; dIdiomа и #191; Correcto? – aldakur 15.04.2016, 17:13
  • 2
    Каждая таблица, которая требует хранить текст способа localizable быть должным и # 237; чтобы продолжать ту же схему. Того же способа все консультации, которые требуют localizaci и # 243; n быть должным и # 225; n получать как пара и # 225; метр IdIdioma, это не должна быть проблема, если все они p и # 225; ginas они включают этот пойдите в унифицированном указателе ресурса (Или c и # 243; я говорю стиль и #39; он и # 39; и #39; в и # 39;) – Carlos Muñoz 17.04.2016, 02:05

Чтобы входить в контекст, если ты используешь файлы strings.xml определенные для языка, ты не нуждаешься в базе данных, чтобы сохранять какую-то информацию, если только ты не будешь желать схему, отличную от схемы дорожки.

Я думаю, что в этом случае ты был бы должен использовать опору, которой обладает Android, чтобы менять информацию о твоем UI на основании конфигурации языка. Схема дорожки требует, чтобы ты создал folders и файлы содержа текст и Вашего идентификатора в различных языках, как ты этого потребовал, что будут вынесены твоим приложением.

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

folder текстов default был бы:

res/values/strings.xml

folder, чтобы добавлять тексты на английском:

res/values-en/strings.xml

он содержал бы:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="nom">Crazy Dog</string>
    <string name="desc">Crazy dog Transportation, the best company</string>
</resources>

folder, чтобы добавлять тексты на испанском языке:

res/values-es/strings.xml

он содержал бы:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="nom">Perro Loco</string>
    <string name="desc">Transportes Perro Loco, la mejor empresa</string>
</resources>

folder, чтобы добавлять тексты на румынском языке:

res/values-ro/strings.xml

он содержал бы:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="nom">Câine nebun</string>
    <string name="desc">companie de transport Câine nebun, cea mai buna companie.</string>
</resources>

Ты считал бы что-то сходным с этим в твоем проекте:

introducir la descripción de la imagen aquí

Просто эти описания, определенные в твой strings.xml ты используешь их, где его потребовали в твоем приложении:

String strNombre = context.getResources().getString(R.string.nom);
textViewName.setText(strNombre);
String strDescripcion = context.getResources().getString(R.string.desc)  
textViewDesc.setText(strDescripcion);

Большое преимущество состоит в том, что автоматически, в зависимости от языка, определенного в твоей операционной системе он загружает тексты, определенные в файле strings.xml соответствующего языка.

introducir la descripción de la imagen aquí

Моя точка зрения относительно твоих вопросов:

Что сохранять в Базе данных? А именно, описание, должно быть, будет на Испанском языке и Английском языке. Тогда в BD, в поле описание

Я не считаю подходящим ни необходимым сочетать для этого случая сочетать использование базы данных с strings.xml. Если предпочитают использовать базу данных, он использовал бы ту же схему, использованную "Андроид Локалисатион". База данных содержала бы подмостки textos_es и textos_en, что содержал бы те же сельские имена

Nombre
Descripcion
Precio

Просто ты принимаешь решение, который таблица брать тексты и код, необходимый, чтобы показывать их не было бы должно изменять.

Я считаю, что это большее преимущество вместо единственной таблицы с различными именами поля:

Nombre_es
Nombre_en
Descripcion_es
Descripcion_en
Precio

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

я сохраняю имя переменной, которая будет поселена в файле string.xml, каждого языка?

Не необходимо сохранять в базе данных имя переменной, переменная - та же самая внутри strings.xml, но контент в каждом файле был бы на различных языках.

В этом случае, преимущество в том, чтобы использовать Strings.xml на базе данных, - сначала быстрый доступ к тем же самым посредством класса R и код, необходимый для осуществления минимальный.

0
ответ дан 24.11.2019, 14:35
  • 1
    Спасибо за ответ @Elenasys, но я думаю, что ты не понял хорошо мой вопрос. С начала мне ясно функционирование файла string.xml, из-за этого сомнение - это, если использовать базу данных ген и # 233; богатая и в полях multiling и # 252; он состоит в том, чтобы вводить имя переменной, написанной в файлах string.xml или приспосабливать базу данных для того, чтобы у тебя были поля espec и # 237; ficos для каждого языка. – aldakur 16.04.2016, 16:52
  • 2
    Просто мне казаться необходимым сочетаться между использованием strings.xml и база данных или наоборот. Я издал мой ответ для м и # 225; s informaci и # 243; n. Я вижу, что они дали мне-1, потому что они конечно не понимают использование strings.xml. У меня есть пара приложений с опорой для Alem и # 225; n, Румын, Espa и # 241; ol, Ingl и # 233; s и Грек, которые используют в средней величине 25 текстов, и у меня не была необходимость осуществлять базу данных, чтобы управлять текстами...:) – Jorgesys♦ 17.04.2016, 13:11
  • 3
    Преимущество в том, чтобы использовать Strings.xml на базе данных, сначала r и # 225; я прошу доступ к тем же самым посредством класса R и c и # 243; я говорю, что необходимый он минимальный. – Jorgesys♦ 17.04.2016, 13:17
  • 4
    @aldakur я думаю, что, если твой вопрос имеет фона, каков лучший способ манипулировать многообразными языками в Android. Я думаю, что этот ответ - та, которую ты ищешь. Не, если я теряюсь что-то, но кажется, что ты хочешь сделать новое колесо, вопрос тогда серьезная нуждался в новом колесе для этого конца или я хочу научиться изготовлять колеса, если оба, нет, думаю, что подход этого ответа - подходящий. Привет – Angel Angel 17.04.2016, 14:45
  • 5
    Я издал вопрос, чтобы осветлять confusi и # 243; n, что я думаю, что он вызывает в каких-то пользователях. – aldakur 18.04.2016, 14:36

Также есть выбор интегрировать мульти-язык в базу данных, осуществляя технику, которую использует plugin QTranslate Wordpress

В полях, где ты требуешь иметь их в более чем одном языке:

  • Имя
  • Описание

Из-за каждого языка, который ты нужно включать, ты можешь включать это и идентифицировать это:

<!--:es-->Nombre producto<!--:--><!--:en-->Name of product<!--:-->
<!--:es-->Descipción del producto<!--:--><!--:en-->Description of product<!--:-->

Следующая функция служит для того, чтобы извлечь цепь с языком в частности.

public static String getText(String text, String lang) {
    String r = "<!--:" + lang + "-->(.*?)<!--:-->";
    Pattern p = Pattern.compile(r);
    Matcher m = p.matcher(text);
    if (m.find( )) {
        return m.group(1);
    } else return "";
}

Ваше использование в PseudoCode

String Name = getDataOfTable("productos","nombre") //cargar los datos desde la BD
Name = getText(Name,"es"); //para obtener la cadena en español
0
ответ дан 24.11.2019, 14:35