Интернационализация Настольного приложения в течение пары лет …, Что мы должны сделать теперь?

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

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

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
16
задан Robert Jørgensgaard Engdahl 29 March 2019 в 09:23
поделиться

6 ответов

Подготовьте его теперь перед записью всех строк в самой кодовой базе.

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

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

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

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

  1. Развивающиеся страны готовые приложения

  2. Лучшие практики для развивающихся стран готовые приложения

Мало извлечения:

  1. Перемещение все локализуемые ресурсы для разделения DLLs только для ресурса. Локализуемые ресурсы включают элементы пользовательского интерфейса, такие как строки, сообщения об ошибках, диалоговые окна, меню и ресурсы внедренного объекта. (Перемещение ресурсов к DLL впоследствии будет болью)
  2. не Делают строк hardcode или ресурсов пользовательского интерфейса. (Если Вы не готовитесь, Вы знаете, Вы будете строки hardcode)
  3. , не помещают нелокализуемые ресурсы в DLLs только для ресурса. Это вызывает беспорядок для переводчиков.
  4. не используют составные строки, которые создаются во время выполнения из связанных фраз. Составные строки трудно локализовать, потому что они часто принимают английский грамматический порядок, который не относится ко всем языкам. (После того, как дизайн интерфейса, изменение фраз становится более трудным)
  5. Избегают неоднозначных конструкций, таких как "Пустая Папка", где строки могут быть переведены по-другому в зависимости от грамматических ролей компонентов строк. Например, "пустой" может быть или глагол или прилагательное, и это может привести к различным переводам на языках, таких как итальянский или французский язык. (Та же проблема)
  6. Избегают использования изображений и значков, которые содержат текст в Вашем приложении. Они являются дорогими для локализации. (Используют текст, представленный по изображению)
  7. Предусматривают много пространства для длины строк расширяться в пользовательском интерфейсе. На некоторых языках фразы могут потребовать на 50-75 процентов большего количества пространства. (Та же проблема, если Вы не планируете его теперь, модернизация является более дорогой)
  8. Использование Система. Ресурсы. Класс ResourceManager для получения ресурсов на основе культуры.
  9. Microsoft Visual Studio.NET Использования для создания диалоговых окон Windows Forms, таким образом, они могут быть локализованы с помощью Редактора Ресурса Windows Forms (Winres.exe). Не кодируйте диалоговые окна Windows Forms вручную.
32
ответ дан 30 November 2019 в 16:30
поделиться

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

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

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

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

я скользил бы по документам MS о предмете: http://www.microsoft.com/globaldev/getwr/dotneti18n.mspx

Некоторые основные вещи избежать:

  • никогда когда-либо программное обеспечение для перевода использования, наймите про или интерн, берущий тот язык в локальном колледже
  • никогда попытка создать текст путем добавления двух существующих записей, потому что грамматика отличается greately по каждому языку, это никогда не будет работать. Таким образом, если у Вас есть строка, которая говорит "Щелчок", и хотят тот, который говорит "Щелчок Теперь", не пытаются создать установку, которая объединяет две записи, или во время перевода, скопируйте слово для щелчка и переведите слово теперь. Рассматривайте каждую строку как полностью новый перевод с нуля
3
ответ дан 30 November 2019 в 16:30
поделиться

Я буду добавлять к хранилищу и управлять строковыми данными как Unicode (NVARCHAR в SQL MS).

2
ответ дан 30 November 2019 в 16:30
поделиться

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

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

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

0
ответ дан 30 November 2019 в 16:30
поделиться

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

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

0
ответ дан 30 November 2019 в 16:30
поделиться

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

Когда в библиотеках InfoZIP ZIP была уязвимость безопасности, обновление DLL /. поэтому автоматически сделало безопасным все программное обеспечение, которое их использовало. Программное обеспечение, которое было связано статически, пришлось перекомпилировать.

Является ли автоматическое системное тестирование пользовательского интерфейса лучшим вложением средств?

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

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

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

1
ответ дан 30 November 2019 в 16:30
поделиться
Другие вопросы по тегам:

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