Я иразильский, и мне нужны строки ресурсов Firemonkey на моем языке, например, когда я использую диалоги. Я не мог найти способ его перевести. Кто-нибудь знает, как это сделать?Как я могу перевести строки ресурсов Firemonkey?
ответ
Что вам нужно, это this, но для FMX. В результате быстрого поиска единственным файлом, который я нашел в help for Delphi XE2, является FMX.Consts
. Вы берете этот файл, переводите его, а затем помещаете переведенный файл в свой проект.
Позаботьтесь, когда Delphi получит обновление. Исходный файл можно изменить, и вам нужно будет обновить ваш перевод. Кроме того, вы, вероятно, захотите изменить любые другие файлы, которые имеют Resource Strings, и используются в вашем проекте.
Наконец, я не эксперт в этом, но если вы планируете использовать многоязычный язык, это может быть не лучшим подходом.
Это действительно хорошо, если вы можете использовать внутренний ITE Delphi, потому что он тянет все строки, необходимые для перевода, и вы знаете, что вам нужно перевести. Он может даже идентифицировать ваши собственные строковые константы, если они объявлены как константы resourcestring. Однако, когда у вас есть 5 комментариев, требующих уточнения вопроса, потому что это не ясно, вы должны стараться не отвечать до тех пор, пока он не будет отредактирован плакатом. Отвечая на это, у них нет причин для его улучшения, и если это действительно неясно, это бесполезно для будущих читателей, ищущих здесь. :) И 'resourcestring' использует resourcetable, –
(продолжение), поэтому даже если вы не можете использовать ITE, вы можете извлечь ресурс и настроить второй на основе другого идентификатора языка. –
@KenWhite Спасибо за предложения. Прости. Я ответил на вопрос, как португальский оратор и пользователь Delphi, я мог понять, что он ищет. В самом деле, один из комментариев, претендующих на ОП, не ясен, мой. В любом случае, я отвечу на ваш совет в следующий раз. – EMBarbosa
Перевод форматов FMX осуществляется с помощью компонента TLang, хотя это не будет работать для большинства диалогов.
Вы можете изменить диалоги с помощью FMX.Consts.pas, но он исправляет язык во время компиляции. Если вы хотите проверить языковые версии ОС хоста во время выполнения, вы должны исправить FMX.Platform.Android.pas или FMX.Platform.iOS.pas.
Для Android, в FMX.Platform.Android.pas, в процедуре TPlatformAndroid.MessageDialog ... найдите ButtonCaptions и окружите его своей собственной функцией, например: ZSTranslate (ButtonCaptions [B]). Объявить ZSTranslate следующим образом:
function ZSTranslate(txt: String):String;
var
LocaleSvc: IFMXLocaleService;
begin
LocaleSvc := TPlatformServices.Current.GetPlatformService(IFMXLocaleService) as IFMXLocaleService;
result:=txt;
if LocaleSvc.GetCurrentLangID ='your_language_two_letter_id' then
begin
if txt= 'Yes' then
result := 'yes in your language'
else
if txt= 'No' then
result := 'no in your language'
else
if txt= 'Confirm' then
result := 'confirm in your language'
else
if txt= 'Cancel' then
result := 'cancel in your language';
end
end;
Место ZSTranslate где-то выше TPlatformAndroid.MessageDialog в копию FMX.Platform.Android.pas, и добавить эту исправленную версию FMX.Platform.Android.pas для вашего проекта ,
Обратите внимание, что приведенный выше пример очень прост, и насколько я помню, в системе качества Embarcadero существует нерешенный случай, предлагающий здесь метод перевода (так что TLang должен работать нормально). Я не пытался перевести, моя версия выполнила эту работу (так как в диалоговом окне всего несколько ярлыков кнопок, и мне нужны только два разных языка).
Для iOS вы должны посмотреть в FMX.Platform.iOS.pas для функции TPlatformCocoaTouch.MessageDialog. Обратите внимание, что есть две перегруженные версии. В iOS также есть MsgTitles и ButtonCaptions, в качестве диалогов на iOS показаны титры.
PS. Для польского языка мне пришлось исправить также метод GetCurrentLangID, потому что он всегда возвращал «en» - пожалуйста, дважды проверьте результат для своего языка. Версии, которые работали для меня: в FMX.Platform.iOS.pas:
function TPlatformCocoaTouch.GetCurrentLangID: string;
var
lngs : NSArray;
CurrentLocale: NSLocale;
LanguageISO: NSString;
begin
lngs := TNSLocale.OCClass.preferredLanguages;
LanguageISO:= TNSString.Wrap(lngs.objectAtIndex(0));
//CurrentLocale := TNSLocale.Wrap(TNSLocale.OCClass.currentLocale);
//LanguageISO := TNSString.Wrap(CurrentLocale.objectForKey((NSLocaleLanguageCode as ILocalObject).GetObjectID));
Result := UTF8ToString(LanguageISO.UTF8String);
if Length(Result) > 2 then
Delete(Result, 3, MaxInt);
end;
в FMX.Platform.Android.pas:
function TPlatformAndroid.GetCurrentLangID: string;
var
Locale: JLocale;
begin
Locale := TJLocale.JavaClass.getDefault;
Result := JStringToString(Locale.getLanguage);//getISO3Language); //zs
if Length(Result) > 2 then
Delete(Result, 3, MaxInt);
end;
- 1. Как перевести ListBoxItem с firemonkey?
- 2. Как я могу перевести строку без использования файла ресурсов strings.xml?
- 3. Как я могу получить строки ArrayAdapter из строковых ресурсов?
- 4. Где я могу перевести предложения Wordpress/слово?
- 5. Как я могу перевести инструкции Mips?
- 6. Как я могу перевести дату в php?
- 7. Как я могу перевести это в VB.NET
- 8. Загрузка ресурсов стиля FireMonkey с RTTI
- 9. Как я могу вручную перевести шаблон, который я загрузил?
- 10. Где я могу перевести Jomsocial Apps
- 11. Как я могу разместить клиент формы FireMonkey, выровненный внутри другого?
- 12. Как я могу настроить ресурсы ресурсов Spinnaker?
- 13. Как я могу определить идентификаторы ресурсов?
- 14. Как я могу запустить раскадровку из ресурсов?
- 15. Firemonkey: Как я могу определить положение X символа в памятке
- 16. Как я могу заставить FireMonkey TComboEdit программно отображать его dropdown
- 17. Как я могу использовать http.get для delphi xe2 ios firemonkey?
- 18. Как перевести строки в RML?
- 19. FireMonkey - Показ изображения из base64 строки (как?)
- 20. Math Я просто не могу перевести код
- 21. Как и где я могу перевести предложение в бэк-офис?
- 22. Я использую Угловая перевести маркировать или преобразование строки, я не знаю, как перевести текст-заполнитель
- 23. Где я могу перевести ящики сообщений MFC
- 24. Я не могу перевести дату через класс
- 25. Как перевести строки JavaScript динамически?
- 26. Перевести строки в колонку
- 27. Перевести внутренние строки argparse
- 28. Как я могу перевести имя атрибута ActiveRecord в Rails 3.2?
- 29. Нужно перевести файл ресурсов на japanese
- 30. Braintree - как я могу перевести средства другому клиенту
Что именно вам нужно перевести? Что-то вроде кнопки OK на ShowMessage? –
Диалоги несколько особенные, так как обычно используются диалоговые окна ОС, которые, вероятно, отображаются на текущем языке ОС. –
Нет «API Firemonkey». Вы говорите о строках ресурсов (строки для встроенных диалогов и подписи кнопок)? –