2016-11-04 5 views
2

Я хотел бы локализовать VirtualKey для Control. В настоящее время существует такой код:Локализация VirtualKey.Control (WinRT)

using Windows.System; 
var message = "Press " + VirtualKey.Control.ToString() + " + D for deletion!"; 

Есть ли API, который может быть использован, чтобы иметь следующий?

  • Press Control + D для удаления! (на английском языке)
  • Нажмите Steuerung + D для удаления! (На немецкой системе)
+0

Это не имеет никакого смысла для жестких кодов, таких как «нажмите» и «удалить», и надеемся, что он будет локализован. Также не имеет смысла использовать VirtualKey.Control, это всегда клавиша Ctrl в любой точке мира, хотя заголовок может читать по-другому. Попробуйте опубликовать более реалистичный пример, который не просто тривиально можно локализовать, переведя строку * whole *. –

ответ

1

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

Я последовал за this учебным пособием, чтобы создать простую систему локализации в приложении Windows 8.1; эти шаги я последовал (суммируется вверх)

  1. Создайте папку с именем «Строки»
  2. Внутри папки, создайте папку для языка по умолчанию вы хотите поддержать и назовите его accordigly (см полный список возможных кодов here)
  3. Создать Resources.resw файл в этой папке
  4. Добавьте строки, которые вы хотите добавить - Если вы хотите поддержать использование VirtualKey.xxx.ToString(), я настоятельно рекомендую вам использовать одни и те же идентификаторы перечисление; например: если вы хотите перевести контрольный символ, вызовите новый ресурс «Control» - (это то, что я сделал): How I did
  5. Скопируйте и вставьте эту папку за несколько раз, равную количеству языков, которые вы (я сделал это дважды): Folders
  6. Редактирование файла Resource.resx в соответствии с языком, на который вы переводите.
  7. В коде, обратитесь к каждой переведенной строке с

    var loader = new Windows.ApplicationModel.Resources.ResourceLoader(); 
    loader.GetString(VirtualKey.xxx.ToString()); 
    

    Вот что я сделал на TextBlock в MainPage.xaml:

    var loader = new Windows.ApplicationModel.Resources.ResourceLoader(); 
         this.txbCtrl.Text = String.Format("Press {0}-Z to undo", loader.GetString(VirtualKey.Control.ToString())); 
    

И вот результат для конкретного языка -IT: enter image description here

Чтобы проверить это на других языках, я следил за t utorial, даже если мне не нравится это:

  1. Откройте панель управления и перейдите Часы, язык и регион> Язык
  2. Обратите внимание, что язык, который был показан, когда приложение пробежалась является главным язык, указанный в моей системе, итальянский.
  3. Чтобы протестировать приложение на другом языке, выберите язык в списке и нажмите «Переместить вверх», пока он не окажется наверху. Затем запустите приложение.

NB: Если у вас нет всех трех этих языков на вашем компьютере, добавьте недостающие, нажав Добавить язык и добавив их в список.

В моем случае у меня есть итальянский перечисленные для первого и английский (Великобритания) в качестве второго, но если я поменять их местами: Mylangs

и снова запустить приложение, это результат Result

и если я добавить де-DE: enter image description here

с этими файлами ресурсов: ан-ГБ: en-GB

и IT-: it-IT

и де-DE: de-DE

Обратите внимание, что я назвал ключом английского управления "Control" и итальянские один "Ctrl"; он отлично работает

Надеюсь, это помогло.

Если у вас есть еще вопросы, просто спросите!

LuxGiammi

EDIT: это решение, хотя я признаю, что это не является хорошим (во всяком случае, это лучшее, что я мог придумать). В любом случае, как указано в here для приложений WinForm, нет необходимости делать это, потому что evrybody поймет вас, если вы используете имена defualt для ключей (т. Е. Тот, который перечисляется, как и сейчас).

EDIT2: это решение, однако, устанавливает все для будущей «полной» локализации для вашего приложения. Таким образом, половина усилий прилагается к началу процесса разработки.

+1

это правильный путь. –

 Смежные вопросы

  • Нет связанных вопросов^_^