tag:blogger.com,1999:blog-1688132520265708820.post5215076671508805693..comments2023-04-02T16:52:35.787+03:00Comments on Блог GunSmoker-а (переводы): Формат строковых ресурсовGunSmokerhttp://www.blogger.com/profile/15611696588191431330noreply@blogger.comBlogger6125tag:blogger.com,1999:blog-1688132520265708820.post-62287883171371844062010-07-08T19:44:39.241+04:002010-07-08T19:44:39.241+04:00Отчёт в QC по вопросу формата TMX :)<a href="http://qc.embarcadero.com/wc/qcmain.aspx?d=86085" rel="nofollow">Отчёт в QC по вопросу формата TMX</a> :)GunSmokerhttps://www.blogger.com/profile/15611696588191431330noreply@blogger.comtag:blogger.com,1999:blog-1688132520265708820.post-58017602248047950342010-07-08T19:32:03.285+04:002010-07-08T19:32:03.285+04:00Вообще, TMX - это открытый формат, а не изобретени...Вообще, TMX - это <a href="http://en.wikipedia.org/wiki/Translation_Memory_eXchange" rel="nofollow">открытый формат</a>, а не изобретение Borland-а, так что хранение словаря в нём - обычно хорошая идея. С другой стороны, несколько странно выглядит отсутствие поддержки такого стандартного решения во многих "утилитах локализации для Delphi".<br /><br />И если вас не устраивает предлагаемый Delphi ITM/ETM - вы можете использовать и сторонние редакторы. <a href="http://www.maxprograms.com/products/swordfish.html" rel="nofollow">Например</a>. Это редактор для TMX-файлов. К Delphi не имеет ни малейшего отношения. (я НЕ пробовал его юзать)<br /><br />Вообще, по tmx converter поискать если в гугле/вики - всякое можно найти. Например, xls/cvs < - > tmx.GunSmokerhttps://www.blogger.com/profile/15611696588191431330noreply@blogger.comtag:blogger.com,1999:blog-1688132520265708820.post-71308416413852091142010-07-08T16:07:15.069+04:002010-07-08T16:07:15.069+04:00Что если два компонента сделают это и оба будут ис...<a href="http://www.transl-gunsmoker.ru/2010/06/blog-post_11.html" rel="nofollow">Что если два компонента сделают это</a> и оба будут использовать пересекающиеся идентификаторы?<br /><br />Я не думаю, что это удачная идея для компонента общего назначения. Для домашнего использования - вполне.<br /><br />Так что всё зависит от цели. Попробуйте и нам потом расскажете, что получилось :)<br /><br />Если же идея в том, чтобы давать переводчикам текстовый файл для перевода - вероятно, более лучшим решением было бы написание конвертера tmx <-> txt.GunSmokerhttps://www.blogger.com/profile/15611696588191431330noreply@blogger.comtag:blogger.com,1999:blog-1688132520265708820.post-27334081948926760142010-07-08T15:13:00.263+04:002010-07-08T15:13:00.263+04:00Ну то, что в ресурсах это понятно.
Я сейчас храню...Ну то, что в ресурсах это понятно. <br />Я сейчас храню строки в res-файле, а в модуле Delphi - только идентификаторы строк в таблице и в нужный момент вызываю LoadStr(идентификатор), чтоб показать строку пользователю. <br />Идея была такова - давать будущим переводчикам rc-файл. Переводят, делают Res, кидают рядом с проектом и делают build - компонент соответственно выдает строки на нужном языке.<br />Такой подход нормальный или то финт ушами с переподвыпердышем? :)Vladhttp://www.webdelphi.runoreply@blogger.comtag:blogger.com,1999:blog-1688132520265708820.post-7988690169226482532010-07-08T14:37:25.608+04:002010-07-08T14:37:25.608+04:00>>> По сути ведь получается, что различие...<i> >>> По сути ведь получается, что различие между res-файлом с таблицей строк и resourcestring в том, что в первом случае мы сами определяем идентификаторы строк в таблице, а во втором все проходит на автомате и индексы могут быть хз какими.</i><br /><br />Да, верно.<br /><br /><i> >>> Какой вариант более правильный, грамотный, и т.д., включая и вероятность возникновения каких-то скрытых ошибок?</i><br /><br />Единственный правильный вариант (ИМХО, конечно) - хранить локализуемые данные в ресурсах. В частности, для строк в коде это будет resourcestring. Это - стратегия по-умолчанию, которой следует большинство (Delphi, крупные поставщики компонент, библиотек кода и т.п.), за исключением самоделкиных, которым надо написать свой вариант с блек-джеком и... В частности, любое нормальное решение по локализации поддерживает resourcestring.<br /><br />Насчёт собственно переводов на другие языки - сильно зависит от конкретного решения, которое будет использовать конечная программа. К примеру, если пользователь вашего компонента будет использовать ITE - вы можете добавить в свой пакет словарик (ITE-шный tmx-файл). Пользователь просто подключит словарь и скажет: загрузить перевод из словаря. Если же будет использоваться стороннее решение - то и перевод надо бы поставлять в формате, поддерживаемом этим стороннем решением. В идеале, конечно, это стороннее решение должно уметь импортировать tmx-словарь, но у меня есть сильные сомнения, что с народной нелюбовью к ITE, это мало кто умеет. Поэтому, возможно, вам также нужно будет сконвертировать словарик в другой подходящий формат.<br /><br />Кстати, в новых Delphi (2010 и выше) появилась новая возможность локализации, о которой я скажу позднее отдельным постом.GunSmokerhttps://www.blogger.com/profile/15611696588191431330noreply@blogger.comtag:blogger.com,1999:blog-1688132520265708820.post-67039957357012721962010-07-08T00:38:01.739+04:002010-07-08T00:38:01.739+04:00Привет!
Хотелось бы узнать такую вещь: что лучше ...Привет! <br />Хотелось бы узнать такую вещь: что лучше использовать при разработке не программы, а, например, компонента Delphi - resourcestring в модуле, чтоб потом этот модуль переводили на другие языки или всё-таки подключать где-нибудь res-файл и распространять с модулем rc-файлик с таблицей строк? Чтоб разраб сам делал res и ложил его рядом с модулем, а в модуле хранить только индексы строк.<br />По сути ведь получается, что различие между res-файлом с таблицей строк и resourcestring в том, что в первом случае мы сами определяем идентификаторы строк в таблице, а во втором все проходит на автомате и индексы могут быть хз какими. <br />Какой вариант более правильный, грамотный, и т.д., включая и вероятность возникновения каких-то скрытых ошибок?Vladhttp://www.webdelphi.runoreply@blogger.com