2. По умолчанию тип проекта "Translation Project" в списке не отображается, чтобы он появился надо включить его в Tools - Add-in Manager - Gettext Translation Support.
3. То что указано в Mono.Unix.Catalog.GetString("Hello World!") является одновременно и именем, и значением по умолчанию (которое используется, если в переводе не найдено)
4. При разработке в GTK# и использовании графической разработки, дизайнер автоматически подставляет GetString, вместо отображаемого значения.
5. По умолчанию имя ВСЕХ проектов переводов - "i8n1", можете поменять в свойствах Translation Project. Также в опциях можно указать в какой католог кидать переводы + увидеть строку для инициализации
6. Для указания где брать переводы используется команда
Mono.Unix.Catalog.Init ("i8n1", "./locale");
7. Чтобы указать в приложении конкретный язык нужно до инициализации (и назначения значений переменных) выполнить
Environment.SetEnvironmentVariable ("LANGUAGE", "ru");
8. Можно сменить язык во время работы приложения. Но для этого нужно заново указать все компоненты (для примера у нас есть три элемента label)
protected void OnButtonRUClicked (object sender, EventArgs e) { Environment.SetEnvironmentVariable ("LANGUAGE", "ru"); Mono.Unix.Catalog.Init ("i8n1", "./locale"); nameUpdate (); } protected void OnButtonENClicked (object sender, EventArgs e) { Environment.SetEnvironmentVariable ("LANGUAGE", "en"); Mono.Unix.Catalog.Init ("i8n1", "./locale"); nameUpdate (); } void nameUpdate() { label1.LabelProp = global::Mono.Unix.Catalog.GetString ("label1"); label2.LabelProp = global::Mono.Unix.Catalog.GetString ("label2"); label3.LabelProp = global::Mono.Unix.Catalog.GetString ("label3"); }
9. Если после создания проекта перевода в основном проекте были добавлены компоненты которые нужно переводить, то чтобы они появились в ранее созданом проекте перевода нужно просто щелкнуть правой кнопкой на нём и выбрать "Update Translations"
10. На текст перевода распространяются ограничения обычного текста в коде. То есть спецсимволы, такие как "\" или сами кавычки нужно экранировть.
11. Вы можете в любом месте проекта сделать
string str = global::Mono.Unix.Catalog.GetString ("TestMessage");
затем сделать Update Translations и новое сообщение появится для перевода
12. В переводах допустима подстановка -
string str = global::Mono.Unix.Catalog.GetString ("Hello {0}!");
string str2 = string.Format (str, "World");
Комментариев нет:
Отправить комментарий