zequion Ответов: 1

Многоязычное приложение с текстовыми таблицами SQL server на языке C#


1.- I am looking for some example of multilanguage application in C#. I'm not talking about entering the text of each language by hand.

2.- In WPF I have several ComboBox linked to a table in a Sql Server database. How can I translate the texts retrieved from the database into the active language? I do not want to add in each table a text field for each language.


Что я уже пробовал:

What have you tried?
What have you tried?

1 Ответов

Рейтинг:
0

Dirk Bahle

Поддержка нескольких языков в C# управляется следующими 2 свойствами:

Thread.CurrentThread.CurrentCulture
Thread.CurrentThread.CurrentUICulture


который вы можете либо запросить, либо установить во время выполнения:

Thread.CurrentThread.CurrentCulture = new CultureInfo(options.LanguageSelected);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(options.LanguageSelected);


Ссылка: Edi/App.xaml.cs at master · Dirkster99/Edi · GitHub[^]

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

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

Create Table MyStrings
(
  id       int          not null,
  mystring varchar(255) not null,
  langid   int          not null
)


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

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


[no name]

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

Dirk Bahle

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

https://github.com/Dirkster99/Locult

Инструмент потреблял файлы resx и создавал соответствующие файлы resx на основе службы языкового перевода. Он был бесплатным и простым в использовании до тех пор, пока Microsoft не потребовала использования кредитной карты - тем не менее, он все еще бесплатный, но я должен обновить дату для нового API, прежде чем он снова заработает.

Вы можете использовать подход на основе файлов similair (resx, csv, xml), потому что большинство переводчиков не смогут напрямую работать с вашей базой данных, и вы, вероятно, захотите ограничить доступ в любом случае.

[no name]

Программы, которые являются многоязычными, как они это делают? Они нанимают десятки переводчиков? Я думал, что есть какая-то польза, например, подключение к Google translator.

Dirk Bahle

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