Глобализировать существующее приложение Windows Forms?

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

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

, Использовать ли SP, также сильно под влиянием базы данных, которую Вы собираетесь использовать. Если Вы вынимаете независимость базы данных из соображения тогда, Вы собираетесь иметь совсем другие события с помощью T-SQL или с помощью МН / SQL.

, Если Вы используете Oracle для разработки приложения, тогда МН / SQL, очевидный выбор как язык. Это, очень сильно связано с данными, постоянно улучшаемыми в каждом повторно генерировать, и любое достойное средство разработки идет в integratePL/SQL разработку с CVS или Подрывную деятельность или somesuch.

веб-приложение Oracle среда разработки Экспресса даже создается 100% с МН / SQL.

10
задан MusiGenesis 5 October 2009 в 12:55
поделиться

4 ответа

Я работал только с языками LTR и не касался японского. Имея это в виду, вот некоторые из моих лучших практик, которые я не могу себе представить:

  • Поместите все программные строки и фрагменты строк для конкретного языка в файл .resx (мне нравится использовать один файл .resx для каждого диалогового окна) , затем вызовите строки, используя автоматически созданные классы и свойства. В вашем коде не должно оставаться никаких строк, зависящих от языка (что означает, что в вашем коде почти нет строк, точка). Хороший шаблон - поместить строки форматирования в .resx, так как синтаксис языка различается.
  • Установите для свойства Localizable значение True во всех ваших формах и внесите изменения для конкретного языка напрямую (используйте свойство Language) ).
  • Создайте свои формы так, чтобы все, что отображает строки для конкретного языка, имело дополнительное пространство там, где это необходимо (примечание: немецкий длиннее английского). ИМО, формы не должны быть полностью переставлены для базового изменения языка - хотя это, возможно, придется сделать с таким языком, как японский.
  • Для элементов управления, таких как метки, текст которых требуется динамически устанавливать, установите текст на форме, чтобы вы знали, что это всего лишь маркер. Я использую для этого "##", что действительно выделяется. Избегайте установки текста как «образец» динамического текста, потому что вы никогда не вспомните, какие элементы управления устанавливаются динамически, просто взглянув на форму.
7
ответ дан 4 December 2019 в 01:31
поделиться

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

Обычно не рекомендуется составлять строки из фрагментов, потому что они, как правило, не будут отображаться в один и тот же образец фрагментов на другом языке. Использование форматированных строк ( String.Format ) для опускания значений - да, но все, что основывается на грамматике и порядке предложений исходного языка, вряд ли подойдет.

2
ответ дан 4 December 2019 в 01:31
поделиться

Если вы хотите, чтобы сообщество локализовало для вас, используйте внешний файл XML. Посмотрите http://www.codeplex.com/url2jpeg , этот проект с открытым исходным кодом локализован таким образом и использует Reflection для автоматической локализации формы.

Для строки просто используйте скрытую метку.

0
ответ дан 4 December 2019 в 01:31
поделиться

Если вы используете Visual Source Safe в качестве элемента управления исходным кодом (надеюсь, что это не так), что бы вы ни делали, не добавляйте японский текст в исходный код. . Хотя Visual Studio может обрабатывать исходные файлы Unicode, VSS не обрабатывает их должным образом.

Я работал над приложением, которое переводилось на японский язык, и включение японского языка в сам исходный код (для вызовов функции, подобной MessageBox) повредило файлы, а поскольку VSS основан на различиях, файлы были повреждены полностью вернуться к исходным зарегистрированным версиям. Это повреждение выразилось в том, что большинство файлов кода превратилось в тарабарщину на основе японских символов, и произошло потому, что VSS сдвинул части файлов CS на основе Unicode (которые использовали два байта на символ) на один байт.

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

Кроме того, вот еще пара других вопросов StackOverflow по этой теме:

Лучший способ реализовать многоязычность / глобализацию в большом .NET-проекте

Как лучше всего сделать многоязычное приложение на C # / WinForms?

Лично я предпочитаю более простой метод. Создайте список в Excel или что-нибудь из каждого фрагмента английского текста в приложении, который вам нужно перевести (управляйте свойствами текста, строками для использования в функциях MessageBox и т. Д.), И отправьте электронные таблицы своим переводчикам. В своем приложении вызовите метод в событии Load каждой из ваших форм, который выполняет итерацию по всем элементам управления в форме и изменяет их свойства Text на переведенные значения. Замените все вызовы MessageBox вызовами промежуточной функции, которая переводит отображаемый текст, а затем вызывает MessageBox с переведенным текстом.

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

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

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

1
ответ дан 4 December 2019 в 01:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: