Перевод в дб. Перевод контента базы данных в CMS: обзор методов и рекомендации

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

Содержание

Основные подходы к переводу контента базы данных

При разработке многоязычной CMS существует несколько основных подходов к организации переводов контента, хранящегося в базе данных:

  1. Добавление языковых полей в основные таблицы
  2. Создание отдельных таблиц для переводов
  3. Использование JSON/XML полей для хранения переводов
  4. Создание отдельных таблиц для каждого языка

Рассмотрим подробнее преимущества и недостатки каждого из этих методов.

Добавление языковых полей в основные таблицы

Этот подход предполагает добавление дополнительных полей для каждого языка непосредственно в основные таблицы контента. Например:


CREATE TABLE products (
  id INT PRIMARY KEY,
  title_en VARCHAR(255),
  title_fr VARCHAR(255),
  title_de VARCHAR(255),
  description_en TEXT,
  description_fr TEXT, 
  description_de TEXT
);

Преимущества данного метода:


  • Простота реализации
  • Быстрый доступ к переводам без JOIN’ов
  • Легко добавлять новые языки

Недостатки:

  • Избыточность данных при большом количестве языков
  • Сложность поддержки схемы при добавлении новых переводимых полей
  • Невозможность хранить метаданные переводов

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

Создание отдельных таблиц для переводов

При этом подходе переводы выносятся в отдельные таблицы, связанные с основными таблицами контента. Например:


CREATE TABLE products (
  id INT PRIMARY KEY,
  price DECIMAL(10,2)
);

CREATE TABLE product_translations (
  product_id INT,
  language VARCHAR(2),
  title VARCHAR(255),
  description TEXT,
  PRIMARY KEY (product_id, language),
  FOREIGN KEY (product_id) REFERENCES products(id)
);

Преимущества:

  • Гибкость — легко добавлять новые языки и поля
  • Нормализованная структура данных
  • Возможность хранить метаданные переводов

Недостатки:

  • Необходимость JOIN’ов для получения переводов
  • Сложнее реализация логики выбора языка по умолчанию

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


Использование JSON/XML полей для хранения переводов

В этом случае переводы хранятся в JSON или XML поле основной таблицы:


CREATE TABLE products (
  id INT PRIMARY KEY,
  translations JSON
);

INSERT INTO products VALUES (1, 
  '{"en": {"title": "Product", "description": "Description"},
    "fr": {"title": "Produit", "description": "Description"}}'
);

Преимущества:

  • Гибкость — легко добавлять новые языки и поля
  • Не требуются JOIN’ы
  • Экономия места при большом количестве языков

Недостатки:

  • Сложнее осуществлять поиск и фильтрацию по переведенным полям
  • Не все СУБД поддерживают индексацию JSON/XML полей

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

Создание отдельных таблиц для каждого языка

При этом подходе для каждого языка создается отдельная таблица с переводами:


CREATE TABLE products_en (
  id INT PRIMARY KEY,
  title VARCHAR(255),
  description TEXT
);

CREATE TABLE products_fr (
  id INT PRIMARY KEY, 
  title VARCHAR(255),
  description TEXT
);

Преимущества:


  • Быстрый доступ к данным конкретного языка
  • Возможность иметь разную структуру для разных языков

Недостатки:

  • Сложность поддержки схемы при большом количестве языков
  • Избыточность данных
  • Сложность получения переводов для нескольких языков одновременно

Этот подход редко используется на практике из-за сложности поддержки.

Рекомендации по выбору оптимального метода

При выборе подхода к организации переводов следует учитывать следующие факторы:

  • Количество поддерживаемых языков
  • Объем переводимого контента
  • Требования к производительности
  • Необходимость поиска и фильтрации по переведенным полям
  • Динамичность структуры переводов

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

Реализация логики выбора языка

При реализации многоязычности важно правильно организовать логику выбора текущего языка и подстановки переводов. Основные шаги:


  1. Определение текущего языка пользователя (из URL, cookie, настроек браузера)
  2. Выбор перевода для текущего языка
  3. Если перевод отсутствует, использование значения по умолчанию
  4. Кэширование результатов для оптимизации производительности

Пример реализации на PHP:


function getTranslation($entityId, $field, $language) {
  // Пытаемся получить перевод
  $translation = getTranslationFromDb($entityId, $field, $language);
  
  if ($translation) {
    return $translation;
  }
  
  // Если перевод отсутствует, возвращаем значение по умолчанию
  return getDefaultValue($entityId, $field);
}

SEO-оптимизация многоязычного сайта

При разработке многоязычного сайта важно учитывать SEO-аспекты:

  • Использование уникальных URL для каждого языка (например, /en/product/, /fr/produit/)
  • Правильная настройка hreflang тегов
  • Создание языковых версий sitemap
  • Локализация мета-тегов (title, description)
  • Создание уникального контента для каждого языка, а не просто перевод

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


Инструменты для управления переводами

Для упрощения процесса перевода и управления локализациями можно использовать специализированные инструменты:

  • Poedit — редактор .po файлов для GetText
  • Transifex — облачная платформа для управления переводами
  • Weblate — открытая система управления переводами
  • Lokalise — инструмент для локализации мобильных и веб-приложений

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

Заключение

Выбор оптимального метода перевода контента базы данных зависит от конкретных требований проекта. Для большинства средних и крупных проектов рекомендуется использовать отдельные таблицы для переводов. Это обеспечивает хороший баланс между гибкостью и производительностью.

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



Перевод из дБ в ПВЭ и эквивалентную площадь. | Страница 2

epoch5
Профессионал

  • #21

astrut написал(а):

В одной перед логарифмами 10, а в другой 20…Еще одна загадка

Нажмите для раскрытия…

Колян2 написал(а):

Тоже мне загадка…Пишут-пишут…Взять всё да и поделить на всех!

Нажмите для раскрытия…

Точно! Единая формула — перед логарифмом 15!

 

astrut
Дефектоскопист всея Руси

  • #22

epoch5 написал(а):

Точно! Единая формула — перед логарифмом 15!

Нажмите для раскрытия…

Это по-браЦки

 

Антошка
Мастер дефектоскопии

  • #23

Вроде не пятница, а тем зафлудили. (

 

dea135
Дефектоскопист всея Руси

  • #24

epoch5 написал(а):

Точно! Единая формула — перед логарифмом 15!

Нажмите для раскрытия…

я не против, но предлагаю обдумать вопрос и не продешевить. понимаете, волатильность, таргетирование и пр.

поэтому на обсуждение выносится идея привязки к курсу «корзины» валют.

 

Kaktus_SPb
Дефектоскопист всея Руси

  • #25

Alex249 написал(а):

А разве площадь прапорциональна амплитуде сигнала, не квадрату амплитуды?

Нажмите для раскрытия…

Возьмите любой букварь
Там найдите формулу акустического тракта для диска (отверстия с плоским дном, плоскодонки)
Там увидите, что отношение амплитуд сигналов (Р/Р0 или А/А0 или U/U0) пропорционально площади диска (S)
Также в любом букваре можно почитать про децибелы
P.S. Пользоваться формулами акустического тракта можно с кучей допущений….

 

astrut
Дефектоскопист всея Руси

  • #26

Kaktus_SPb написал(а):

Также в любом букваре можно почитать про децибелы

Нажмите для раскрытия…

Но интрига про 10 перед логарифмом вместо 20 осталась.
Ну чё, примем по-браЦки 15, али

dea135 написал(а):

привязки к курсу «корзины» валют

Нажмите для раскрытия…

 

ilia
Свой

  • #27

Alex249 написал(а):

Например у меня есть индикация на 80% ПВЭ от плоскондонного отверстия площадью 10 кв. мм. И вторая индикация скажем на 70% ПВЭ. Как найти эквивалентную площадь от второй индикации?

Нажмите для раскрытия…

20 log (А0/А1)=20 log (Sэкв 0/Sэкв 1)​

 

Kaktus_SPb
Дефектоскопист всея Руси

  • #28

ilia написал(а):

20 log (А0/А1)=20 log (Sэкв 0/Sэкв 1)​

Нажмите для раскрытия…

А логарифм по какому основанию?

 

ilia
Свой

  • #29

Kaktus_SPb написал(а):

А логарифм по какому основанию?

Нажмите для раскрытия. ..

Ну можно без логорифмов. С логорифмом наглядней ,для меня лично. И формулу легче уже готовую вставить сюда

 

Kaktus_SPb
Дефектоскопист всея Руси

  • #30

ilia написал(а):

Ну можно без логорифмов. С логорифмом наглядней ,для меня лично.

Нажмите для раскрытия…

Логарифм — это показатель степени…..
в которую надо возвести число а (основание) , чтобы получить число b. ..
Чаще всего используют десятичные Lg(основание 10) и натуральный Ln(основание число Непера, экспонента и т.п.) логарифмы….
Если Вы возьмете 20*Log10 (2) или чаще встречаем 20*Lg (2), то получите примерно 6
А если 20*Ln(2) ?
А если 20*Log3(2) ?
P.S. Можно и с логарифмами, только надо понимать что подставлять
Вот у Вас один сигнал 24 дБ, а другой 12 дБ и во сколько раз отличаются эквивалентные площади….?

 

Последнее редактирование:

ilia
Свой

  • #31

Kaktus_SPb написал(а):

Вот у Вас один сигнал 24 дБ, а другой 12 дБ и во сколько раз отличаются эквивалентные площади….?

Нажмите для раскрытия…

В два раза

 

Kaktus_SPb
Дефектоскопист всея Руси

  • #32

ilia написал(а):

В два раза

Нажмите для раскрытия. ..

А правильный ответ в 4…..

 

ilia
Свой

  • #33

Kaktus_SPb написал(а):

А правильный ответ в 4…..

Нажмите для раскрытия…

Согласен

Kaktus_SPb написал(а):

А правильный ответ в 4…..

Нажмите для раскрытия. ..

Согласен, это ж дБ. Не сообразил. Одна амплитуда больше другой в 4 раза. Тут надо по экрану в процентах
или пересчитывать

 

Колян2
Дефектоскопист всея Руси

  • #34

astrut написал(а):

Поровну, по-честному, по совести, по справедливости, по трудовому вкладу, али еще как?

Нажмите для раскрытия…

Предлагаю по-хорошему или по-семейному-30/70!

 

astrut
Дефектоскопист всея Руси

  • #35

ilia написал(а):

Согласен, это ж дБ. Не сообразил.

Нажмите для раскрытия…

А чего это, там же деци(Белл), а перед логарифмом почему-то 20 обычно стоит. Но иногда 10. Опять загадка
Маленькая подсказка здесь

Kaktus_SPb написал(а):

Логарифм — это показатель степени…..

Нажмите для раскрытия…

Дальше подсказывать не буду.
ЗЫ. Из своего опыта. Большинство студентов, сдав высшую математику на 2-м, к 5 курсу с большим трудом вспоминает, что такое логарифмы

 

astrut
Дефектоскопист всея Руси

  • #36

Колян2 написал(а):

Предлагаю по-хорошему или по-семейному-30/70!

Нажмите для раскрытия…

А может, по УСН? там всего 6% отдвавть…

 

ilia
Свой

  • #37

astrut написал(а):

А чего это, там же деци(Белл), а перед логарифмом почему-то 20 обычно стоит. Но иногда 10. Опять загадка
Маленькая подсказка здесь

Дальше подсказывать не буду.
ЗЫ. Из своего опыта. Большинство студентов, сдав высшую математику на 2-м, к 5 курсу с большим трудом вспоминает, что такое логарифмы

Нажмите для раскрытия…

при r≥3N (но применяют и при r≥N) и прочих соответствующих условиях
🥱

 

Kaktus_SPb
Дефектоскопист всея Руси

  • #38

ilia написал(а):

Посмотреть вложение 45890
при r≥3N (но применяют и при r≥N) и прочих соответствующих условиях
🥱

Нажмите для раскрытия. ..

Это если по экрану усиление линейное

 

dea135
Дефектоскопист всея Руси

  • #39

astrut написал(а):

ЗЫ. Из своего опыта. Большинство студентов, сдав высшую математику на 2-м, к 5 курсу с большим трудом вспоминает, что такое логарифмы

Нажмите для раскрытия…

сложный вопрос, это надо основы акустики знать как соотносятся интенсивности, давления и напряжения. не подсказываю.

 

astrut
Дефектоскопист всея Руси

  • #40

dea135 написал(а):

сложный вопрос, это надо основы акустики знать как соотносятся интенсивности, давления и напряжения. не подсказываю.

Нажмите для раскрытия…

А я чуть-чуть подскажу. В этом ультразвуке всё очень запутано. Начинаешь курить темы про коэффициенты отражения и пропускания (прозрачности), там тоже по две формулы

 

Преобразовать дБ в Нп (децибел в непер)

децибел сколько непер

Категории измерений:Активность катализатораБайт / Битвес ткани (текстиль)ВремяВыбросы CO2Громкость звукаДавлениеДинамическая вязкостьДлина / РасстояниеЁмкостьИмпульсИндуктивностьИнтенсивность светаКинематическая вязкостьКоличество веществаКулинария / РецептыМагнитный потокмагнитодвижущая силаМасса / ВесМассовый расходМолярная концентрацияМолярная массаМолярный объемМомент импульсаМомент силыМощностьМощностью эквивалентной дозыМузыкальный интервалНапряжённость магнитного поляНефтяной эквивалентОбъёмОбъёмный расход жидкостиОсвещенностьПлоский уголПлотностьПлотность магнитного потокаПлощадьПоверхностное натяжениеПоглощённая дозаПриставки СИпроизведение дозы на длинупроизведения дозы на площадьПроизводительность компьютера (флопс)Производительность компьютера (IPS)РадиоактивностьРазмер шрифта (CSS)Световая энергияСветовой потокСилаСистемы исчисленияСкоростьСкорость вращенияСкорость передачи данныхСкорость утечкиТекстильные измеренияТелесный уголТемператураУскорениеЧастей в . ..ЧастотаЭквивалентная дозаЭкспозиционная дозаЭлектрическая эластичностьЭлектрический дипольный моментЭлектрический зарядЭлектрический токЭлектрическое напряжениеЭлектрическое сопротивлениеЭлектрической проводимостиЭнергияЯркостьFuel consumption   

Изначальное значение:

Изначальная единица измерения:бел [Б]децибел [дБ]непер [Нп]

Требуемая единица измерения:бел [Б]децибел [дБ]непер [Нп]

  Числа в научной записи

Прямая ссылка на этот калькулятор:
https://www.preobrazovaniye-yedinits.info/preobrazovat+detsibel+v+neper.php

Сколько непер в 1 децибел?

1 децибел [дБ] = 0,115 129 254 650 56 непер [Нп] — Калькулятор измерений, который, среди прочего, может использоваться для преобразования децибел в непер.

  1. Выберите нужную категорию из списка, в данном случае ‘Громкость звука’.
  2. Введите величину для перевода. ), квадратный корень (√), скобки и π (число пи), уже поддерживаются на настоящий момент.
  3. Из списка выберите единицу измерения переводимой величины, в данном случае ‘децибел [дБ]’.
  4. И, наконец, выберите единицу измерения, в которую вы хотите перевести величину, в данном случае ‘непер [Нп]’.
  5. После отображения результата операции и всякий раз, когда это уместно, появляется опция округления результата до определенного количества знаков после запятой.


С помощью этого калькулятора можно ввести значение для конвертации вместе с исходной единицей измерения, например, ‘111 децибел’. При этом можно использовать либо полное название единицы измерения, либо ее аббревиатуруНапример, ‘децибел’ или ‘дБ’. После ввода единицы измерения, которую требуется преобразовать, калькулятор определяет ее категорию, в данном случае ‘Громкость звука’. После этого он преобразует введенное значение во все соответствующие единицы измерения, которые ему известны. В списке результатов вы, несомненно, найдете нужное вам преобразованное значение. Как вариант, преобразуемое значение можно ввести следующим образом: ’18 дБ в Нп‘ или ’42 дБ сколько Нп‘ или ’66 децибел -> непер‘ или ’44 дБ = Нп‘ или ’53 децибел в Нп‘ или ‘3 дБ в непер‘ или ’98 децибел сколько непер‘. В этом случае калькулятор также сразу поймет, в какую единицу измерения нужно преобразовать исходное значение. Независимо от того, какой из этих вариантов используется, исключается необходимость сложного поиска нужного значения в длинных списках выбора с бесчисленными категориями и бесчисленным количеством поддерживаемых единиц измерения. Все это за нас делает калькулятор, который справляется со своей задачей за доли секунды.

Кроме того, калькулятор позволяет использовать математические формулы. В результате, во внимание принимаются не только числа, такие как ‘(44 * 88) дБ’. Можно даже использовать несколько единиц измерения непосредственно в поле конверсии. 3′. Объединенные таким образом единицы измерения, естественно, должны соответствовать друг другу и иметь смысл в заданной комбинации.

Если поставить флажок рядом с опцией ‘Числа в научной записи’, то ответ будет представлен в виде экспоненциальной функции. Например, 1,975 308 624 ×1020. В этой форме представление числа разделяется на экспоненту, здесь 20, и фактическое число, здесь 1,975 308 624. В устройствах, которые обладают ограниченными возможностями отображения чисел (например, карманные калькуляторы), также используется способ записи чисел 1,975 308 624 E+20. В частности, он упрощает просмотр очень больших и очень маленьких чисел. Если в этой ячейке не установлен флажок, то результат отображается с использованием обычного способа записи чисел. В приведенном выше примере он будет выглядеть следующим образом: 197 530 862 400 000 000 000. Независимо от представления результата, максимальная точность этого калькулятора равна 14 знакам после запятой. Такой точности должно хватить для большинства целей.

Введение в перевод базы данных — ActivityInfo: программное обеспечение для управления информацией для мониторинга и оценки, отчетности и управления делами

Функция перевода в настоящее время находится в стадии бета-тестирования. Это означает, что могут быть небольшие ошибки, и еще не все запланированные функции доступны.

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

В ActivityInfo пользователь может столкнуться с тремя различными источниками текста:

Системные сообщения. ActivityInfo сама отображает пользователю определенные сообщения, такие как «Это поле обязательно для заполнения» или метки кнопок «Сохранить» или «Экспорт». Эти сообщения переводятся командой ActivityInfo более чем на 10 различных языков, включая французский, испанский и арабский.

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

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

Этот первый выпуск функции перевода охватывает структуру базы данных . Инструменты для перевода содержимого записей, включая названия провинций и другие справочные данные, будут доступны позже в 2022 году9.0005

Поддерживаемые языки

С функцией перевода можно использовать только языки, поддерживаемые ActivityInfo. В настоящее время к ним относятся:

  • Арабский
  • Бирманский
  • Голландский
  • Английский
  • Фарси (дари)
  • Французский
  • Греческий
  • Венгерский
  • Индонезия (Бахаса)
  • польский
  • Португальский
  • Румынский
  • Русский
  • Испанский
  • Турецкий
  • Украинский

Обратите внимание, что в принципе, если вам нужно несколько языков, вы можете создавать свою базу данных и формы на любом языке, хотя системные сообщения, такие как «Это поле обязательно», не будут соответствовать языку ваших форм.

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

Выбор исходного языка

Первым шагом в создании многоязычной базы данных является выбор исходного языка. Это язык, на котором вы будете разрабатывать свою базу данных и формы. Затем вы можете добавить переводы с этого «исходного языка» на дополнительные языки.

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

Исходный язык не обязательно должен быть английским. Вы можете установить исходный язык на испанский, а затем обеспечить перевод с испанского на английский и с испанского на португальский.

Исходный язык базы данных можно установить в разделе «Переводы» на странице «Параметры базы данных» для вашей базы данных.

Для управления переводами пользователю должно быть назначено разрешение «Управление переводами » .

Миграция из базы данных, которая уже включает несколько языков

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

Если вы решили использовать английский язык в качестве «исходного языка», вам необходимо удалить арабский текст из формы выше. Вы можете использовать кнопку «Экспорт полей», чтобы сохранить резервную копию переводов, если это необходимо.

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

Добавление языков перевода

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

После добавления дополнительного языка вы можете использовать кнопку «Перевести автоматически», чтобы отправить структуру вашей базы данных в Google Translate для автоматического перевода или войти в режим перевода, чтобы перевести базу данных вручную или отредактировать некоторые автоматически переведенные записи.

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

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

Переключение между языками

После запуска процесса автоматического перевода вы можете просматривать переведенные формы, изменив свой язык. Вы можете временно переключить язык, выбрав «Переключить язык» в меню профиля:

Если вы переключитесь на язык, для которого в базе данных доступны переводы, будет отображаться переведенная версия.

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

Использование переводов в мобильном приложении

Мобильное приложение ActivityInfo всегда использует язык, выбранный пользователем в качестве предпочтительного. Вы можете выбрать этот язык при приглашении пользователя, и пользователь может изменить его позже в своем профиле.

Поддержание переводов в актуальном состоянии

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

Если вы вносите изменения в папку или форму на исходном языке, переводы для этого элемента становятся недействительными. Вам потребуется повторно запустить процесс автоматического перевода, чтобы предоставить новые переводы для обновленного текста.

Будущая работа

Это первый из многих выпусков, поддерживающих многоязычные базы данных. Некоторые из функций, запланированных на 2022 год, включают:

  • Непрерывный автоматический перевод. Переводы автоматически обновляются при внесении изменений в базу данных.
  • Ручной перевод путем экспорта и импорта переводов, что позволяет вам исправлять автоматические переводы или предоставлять свои собственные
  • Делегирование перевода с разрешением «перевести» (добавлено в августе 2022 г. )
  • Интегрированный пользовательский интерфейс для ручного перевода баз данных (добавлен в августе 2022 г.)
  • Переводы содержимого записей, включая справочные данные, такие как названия провинций и имена партнеров.

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

php — Лучший способ перевести контент, управляемый базой данных

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

У меня есть CMS, которая использует систему шаблонов для вывода всех данных из базы данных на экран. Я зашел так далеко, чтобы «разделить» свои шаблоны по разным папкам, чтобы иметь возможность переводить «статические» вещи, такие как изображения с текстом, ссылки в нижнем колонтитуле и т. д.

Однако существует множество модулей (страницы, новости, продукты), которые имеют несколько полей, для перевода которых требуется метод, управляемый базой данных. Я начал с таблицы «languages», которая описывает языки (id, iso_code, name). Это все, что я сделал… так как было несколько проектов, которые нужно было сделать, я пока не тратил больше времени на эту тему.

Моей первой мыслью («быстрое исправление») было добавить несколько полей внутри таблиц (таких как «title_nl», «title_en»), но на самом деле это делает базу данных более переполненной, чем необходимо, по моему мнению.

Второй моей мыслью было создать таблицу, например, «news_translations». Который содержал изокод языка, news_id, поля, требующие перевода. Очевидно, что news_id связывает перевод с оригиналом, а iso-код языка используется для получения нужного языка из базы данных. Затем в моем интерфейсном коде я сначала проверил бы, выбран ли язык по умолчанию (=> выберите из таблицы «новости») или перевод (=> проверьте внутри таблицы переводов). Если 2-й случай не возвращает никаких результатов, отображается сообщение «Извините, перевод недоступен» и отображается значение по умолчанию (или сообщение об ошибке, что лучше всего подходит клиенту. .).

Но есть и 3-й вариант… все мои сайты используют удобные для поисковых систем ссылки (www.domain.com/pagename/ или www.domain.com/news/1-news-item-here.html). Было бы намного лучше, если бы у меня была возможность «переопределить» URL-адрес SEF в моей таблице переводов. Но я предполагаю, что в этом случае мне всегда понадобится 1 дополнительный запрос к таблице переводов (поскольку мы сначала хотим проверить переведенную страницу)… думаю, это не такая уж большая проблема, но я думаю, стоит подумать.

В итоге, описывая мои варианты, я думаю, что номер 3 — это то, что мне нужно. Но хотелось бы и других мнений по этому поводу! Вот чего я пытаюсь достичь:

  • Создание системы CMS с многоязычной поддержкой
  • Нет языковых файлов (очевидно, поэтому я использую шаблоны)
  • Возможность перевода оригинальной страницы/новостного сайта/продукта
  • Опционально: изменить URL-адрес SEF в соответствии с языком

Я думаю, что все это есть в варианте 3.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *