Подтвердить что ты не робот

Интернационализация Desktop App в течение нескольких лет... Что нам теперь делать?

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

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

Используемая технология: С#, WPF, WinForms

4b9b3361

Ответ 1

Подготовьте его сейчас, прежде чем писать все строки в самой кодовой базе.

Теперь все будет слишком поздно. Это сейчас или никогда!

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

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

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

Маленький экстракт:

  • Переместите все локализуемые ресурсы, чтобы разделить только DLL-ресурсы. Локализуемые ресурсы включают элементы пользовательского интерфейса, такие как строки, сообщения об ошибках, диалоговые окна, меню и ресурсы встроенных объектов. (Перемещение ресурсов в DLL впоследствии будет болью)
  • Не печатайте строки или ресурсы пользовательского интерфейса. (Если вы не подготовитесь, вы знаете, что будете строчить строки)
  • Не помещайте нелокализуемые ресурсы в библиотеки только для ресурсов. Это вызывает путаницу для переводчиков.
  • Не используйте составные строки, которые создаются во время выполнения из конкатенированных фраз. Композитные строки трудно локализовать, потому что они часто предполагают английский грамматический порядок, который не распространяется на все языки. (После дизайна интерфейса изменяющиеся фразы усложняются)
  • Избегайте неоднозначных конструкций, таких как "Пустая папка", где строки могут быть переведены по-разному в зависимости от грамматических ролей компонентов строк. Например, "пустой" может быть либо глаголом, либо прилагательным, и это может привести к различным переводам на таких языках, как итальянский или французский. (Тот же вопрос)
  • Избегайте использования изображений и значков, содержащих текст в приложении. Они дороги для локализации. (Используйте текст, визуализированный поверх изображения)
  • Достаточно места для расширения строк в пользовательском интерфейсе. На некоторых языках фразы могут потребовать на 50-75 процентов больше места. (Тот же вопрос, если вы не планируете его сейчас, редизайн стоит дороже)
  • Используйте класс System.Resources.ResourceManager для извлечения ресурсов на основе культуры.
  • Используйте Microsoft Visual Studio.NET для создания диалоговых окон Windows Forms, поэтому их можно локализовать с помощью редактора ресурсов Windows Forms (Winres.exe). Не скопируйте диалоговые окна Windows Forms вручную.

Ответ 2

ИМХО, заявить, что что-то произойдет, "через несколько лет" буквально переводится как "мы надеемся однажды", что на самом деле означает "никогда". Хотя я бы все равно просмотрел различные учебники, чтобы убедиться, что вы не совершаете каких-либо ужасных ошибок. В настоящее время правильная поддержка интернационализации будет означать меньшую работу в будущем, и как только вы ее освоите, она не будет иметь реального влияния на сегодняшнюю производительность. Но если вы можете измерить цель в годах, возможно, сейчас это не стоит делать.

Я работал над двумя проектами, которые делали интернационализацию: приложение С# ASP.NET(существовавшее до того, как я присоединился к проекту) и приложение PHP (самодельный мой собственный метод с использованием бесплатного элемента управления Интернационализацией и моего собственного приложения для управления).

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

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

Я бы просмотрел документы MS по этому вопросу: http://www.microsoft.com/globaldev/getwr/dotneti18n.mspx

Некоторые основные вещи, которых следует избегать:

  • никогда не использовать программное обеспечение для перевода, нанимать про или стажера, принимающего этот язык в местном колледже.
  • никогда не пытайтесь создавать текст, добавляя две существующие записи, потому что грамматика сильно отличается на каждом языке, это никогда не будет работать. Поэтому, если у вас есть строка, которая говорит "Click" и хочет, чтобы она говорила "Нажмите сейчас", не пытайтесь создать установку, которая объединяет две записи или во время перевода, скопируйте слово для щелчка и переведите слово сейчас. Рассматривайте каждую строку как совершенно новый перевод с нуля.

Ответ 3

Я добавлю для хранения и обработки строковых данных как Unicode (NVARCHAR в MS SQL).

Ответ 4

Некоторые вопросы думать о...

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

Будете ли вы по-прежнему торговать, если вы не получите денежный поток от доставки английской версии быстро?

Как вы получите право интерфейса, если вы не получите обратную связь от некоторых клиентов?

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

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

Поскольку большая часть боли интернационализации заключается в том, что вы не нарушаете английскую версию, автоматизированное системное тестирование пользовательского интерфейса - лучшая инвестиция?

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

Если ваш пользовательский интерфейс автоматически изменит размер (и макет), чтобы справиться с длиной ярлыков и т.д., вы сэкономите много времени на протяжении многих лет, если сможете сделать это дешево. Там множество сторонних наборов элементов управления для Windows Forms, которые позволяют вам накладывать текстовые поля и т.д., Не помещая ярлыки в качестве отдельных элементов управления.

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

Ответ 5

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

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

Ответ 6

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

  • Поддержка международных символов - используйте только типы данных Unicode в файлах и базах данных.
  • Поддержка международных форматов даты, времени и числа - используйте CultureInfo.InvariantCulture при хранении данных в файле или считываемом компьютером хранилище, используйте CultureInfo.CurrentCulture при отображении данных или анализе ввода пользователя, никогда не выполняйте собственный анализ, никогда не используйте какие-либо другие объекты культуры.
  • текстовые данные, введенные пользователем, должны считаться черным ящиком, не пытайтесь разбить его на слова или буквы, особенно при отображении его пользователю - на разных языках действуют правила дифракции, а ОС знает, как отображать слева -в правом, вы этого не делаете.

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