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
Да, софтверные компании обычно покупают услугу у бюро переводов для перевода с английского на китайский, с английского на немецкий и так далее, открытый исходный код работает аналогично, но обычно без денежного аспекта.