LINUX.ORG.RU
ФорумTalks

Про локализацию

 , ,


0

1

Собственно немного флуда о наболевшем. Про то что у нас есть в разных ЯП и ОС в плане локализации и почему у меня до сих пор от неё подгорает.

В linux-е и таких языках как c, c++ вовсю используется gettext. Штука хорошая мне нравится. Вроде как удобно, т.к. в коде пишешь на английском как дефолтном языке, а если есть перевод то подтягивается русский. Т.е. в самом коде всё написано нормально. Стал делать локализацию в оффтопике на c# там свой огород с .resx файлами и тем, что в коде одно, в локализации совсем другое, короче мне сильно не нравится, всё как всегда у мелгкомягких через одно место. Ещё и если сильно не извращаться то библиотека с переводом на каждый язык (там это технически дотнетовская dll-ка с данными внутри) ну и куча всякого говна паровозиком за твоим экзешником таскается (вопрос зачем, я бы предпочёл в один бинарь всё собирать, вроде как можно сверху помазать некоторыми полуофициальными средствами которые это в один бинарь собирают чтоб маленькая программка портативной была, но дотнет туповат и не может так ну или память старается экономить чтоб лишние переводы не подгружать заранее, хотя это ИМХО экономия на спичках при текущих объёмах оперативки). Что у джавистов и на андроде с маком хочу от знатоков послушать - честно не знаю, но стало очень интересно.

И ещё вопрос в догонку, а почему не прижилось в библиотеках делать переводы? Имеется ввиду не те dll что в дотнете чисто под ресурсы создаются, а к примеру, есть у нас формат mp3, в нём есть ID3 теги, ну например https://github.com/JeevanJames/Id3 вот пример библиотеки которая с ними работает как раз с примером кода. В результате имеем (в теории, понятно что это просто одна из рандомных либ на гитхабе) эту библиотеку в разных программах ну скажем возьмём более известную, например https://github.com/quodlibet/mutagen просто mutagen посерьёзнее и примеры там будут чуть менее простыми и каждый автор программы использующей эту библиотеку должен переводить в теории на все языки мира (в реальности конечно проектов с полной локализацией нет, и мало у кого больше 10 языков поддерживается) слова Artist, Album и так далее, которые в 99% случаев переводятся однозначно на все основные языки мира при этом перевод у всех будет под копирку почти, сколько плееров видел никто меня даже падежами не удивил, везде +- одно и то же, иногда синонимы разные используются, вводя смуту.

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

Console.WriteLine("Title: {0}", tag.Title);
Console.WriteLine($"{tag.TitleName}: {tag.Title}");
Глядишь сократило бы работу переводчиков и перевод был бы более однородным. Особенно наверное у всяких офисов которые аналоги экселя делают это актуально, т.к. там функции переводятся на язык при том однозначно, т.е. всякие SUMIF которые перевели на кучу языков, например на русском это СУМЕСЛИ, на испанском SUMAR.SI и таких функций там воз и маленькая тележка, т.е. счёт реально на сотни идёт. Ну и я в своей жизни сталкивался не раз с таким кодом, когда тупо от сотни до пары тысяч каких-то параметров с однозначным переводом имеется. Вплоть до того что я скриптом такое обрабатывал чтоб руками не терять ничего, потому как когда у тебя список из трёх-четырёх сотен таких строк на перевод, то расставлять ручками знаки для gettext-а или вытягивать их в resx файлы в случае C# руками я не готов.

★★★★★

Последнее исправление: peregrine (всего исправлений: 1)

А потом у языка xy меняется орфография…

pasquale
()

А gettext в C# ты не используешь потому, что… А, собственно, почему? Опенсорсные монософтины его юзали ещё 15 лет назад и больше.

AP ★★★★★
()

 я бы предпочёл в один бинарь всё собирать

внедренный ресурс в BuildAction религия запретила?

slackwarrior ★★★★★
()

в джаве это просто текстовые файлы(как конфиги), которые пакуются в архив артефакта в каталоги с ресурсами

Syncro ★★★★★
()

Ты это реально? Я просто сначала не совсем понял. Ты реально за перевод комментов в прогах??? Ну ты ващщеее... даёшь. Честное-комсомольское. Я фигею, дорогая редакция. Ну я, хрен с ним, до сих пор не могу внятно общаться по-английски. Но любой технический текст или документацию я переведу влёт - не заглядывая в словарь даже. Это ж блять, основа основ.

Нет, я реально с вас фигею, с новорегов...

ЗЫ: Знаешь, как я практиковался в английском языке, на кафедре Общей Физики ДонГУ в 1991 году? При помощи игрушки «Star Control II». Там очень-очень много диалогов, на английском естественно. Вот так и играл, ночами: на одном компе игра, на втором переводчик ПРОМТ =). Сейчас эта-самая игрушка, пережила уже третью реинкарнацию, и называется «The Ur-Quan Masters HD». Но я тя уверяю - все диалоги остались прежними. Сам проверял.

https://sourceforge.net/projects/urquanmastershd/

PPS: Кстати, если дружишь с шеснадцатиричным редактором, то замечу, что в самом начале sav-файла, хранятся незапакованные-незашифрованные ДЕНЬГИ. Ну, на самом деле это особо не поможет выиграть, поскольку там в ходу две валюты - деньги и биоресурсы, но поначалу, оснастить корабль более мощными двигателями - это да. =)

Щас посмотрел. Offset: 0x38, 4 байта. Только не делай их «FF» все, -1 получится. Делай 7F. Я тя уверяю - на всю игру бабла хватит.

cadaber ★★
()
Последнее исправление: cadaber (всего исправлений: 2)
Ответ на: комментарий от kto_tama

Хороший язык, всяко лучше джавы, нынче даже более открытый чем она, после того как оракл прокатил всех с oracle jdk и не ровен час будут с openjdk судиться, т.к. оракловский для разрабов и коммерсов давно стал платным но денег это сверху не будет столько сколько хочется приносить пока openjdk жив, с андроидом и гуглом то судятся на постоянной основе и на openjdk тоже наедут если с гуглом справятся, а это произойдёт когда фуксия выйдет и гугл отстанет от андроида потому как судиться дорого и думаю они не раз пожалели что взяли джаву туда. Ну а сишка и кресты ну такое прикладной софт на них писать. Только в играх и системном с критической производительностью оправданно.

peregrine ★★★★★
() автор топика
Ответ на: комментарий от AP

Используют, некоторые. Просто оно там не основное искоробочное решение и потому переучивать переводчиков мало кто хочет, ну и майки пилят дотнет под файлы ресурсов, тем более в них не только перевод можно запихивать, а ещё и бинарные блобы туда запихивают, а что в этих блобах, да всё что угодно - от картинок, до музыки, проприетарщики довольны тем что юзерам жизнь усложняют не давая к примеру легко текстурки воровать, ну и технически, можно наверное, даже текстурки локализовывать и в англоязычной версии игры показывать надпись shop а в русскоязычной магазин. А resx из коробки в визуал студии идёт. Ну и от проблемы таскать паравозиком .po/.mo файлы вместо .dll это не помогает.

peregrine ★★★★★
() автор топика
Ответ на: комментарий от cadaber

Ты реально за перевод комментов

Перечитай внимательно. Все комментарии и всё что касается самого процесса разработки должно быть исключительно на английском, исключение возможно только багрепорты, потому что от юзеров требовать знание языка ну такое, там надо большее покрытие багов а не элитных багрепортеров. Так что я даже локальные конторы типа рога и копыта которые софт чисто для РФ пишут осуждаю если они на русском комментарии пишут и это не 1С, потому как в коде у них всё те же var int float и нефиг мешанину из двух языков разводить, только отвлекает внимание проще на одном читать всё. В случае 1С наоборот буду говорить там на английском ничего не должно быть в принципе. Не комментов, а терминов которые конечному юзеру и так показывать будут и не в самом конечном приложении, а возможно даже в библиотеках которое это приложение юзает, при чём тут комменты вообще?

peregrine ★★★★★
() автор топика
Последнее исправление: peregrine (всего исправлений: 2)

Какая то странная либа. Мне кажется так бы было лучше:

mp3 = new MP3("/path/to/file");
mp3.author = "John Doe";
mp3.title = "Dummy Song";
mp3.save();

Вообще у C#/Java огромная проблема с многословностью и введением множества лишних сущностей

Питоновская либа получше

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

Я нигде такого не видел, и сам пишу на рунглише код. Оно объективно не нужно в вспомогательных либах, что-то переводится только в гуишных

rtxtxtrx ★★
()
Ответ на: комментарий от rtxtxtrx

Вот я и удивляюсь почему не видно такого.

peregrine ★★★★★
() автор топика
Ответ на: комментарий от cadaber

Щас посмотрел. Offset: 0x38, 4 байта. Только не делай их «FF» все, -1 получится. Делай 7F. Я тя уверяю - на всю игру бабла хватит.

Тоже на подобные грабельки наступал, емнип в ufo, там «накидываешь» «подобным способом» себе «ресурсов» и «здоровья» бойцам, потом после выполнения задания фигак! У тебя боец настолько перекачался, что улетел в минус и помер по итогам задания (ему здоровья накинули), начинаем проходить это задание заново :)
ЗЫ Место расположения ресурсов и другого здоровья в сэйвах вычислял опытным путем, делая дифы между «до задания» «после задания». Было даже интереснее чем в саму гамку играть :)
По итогам запилил прогу с кнопочками «сделай мне зашибись» которой «играющая» часть отдела потом пользовалась :)

anc ★★★★★
()
Ответ на: комментарий от peregrine

Ну а сишка и кресты ну такое прикладной софт на них писать.

На вкус и цвет фломастеры разные.

anc ★★★★★
()
Ответ на: комментарий от anc

Было даже интереснее чем в саму гамку играть :)

Это уж точно - интереснее! =)

cadaber ★★
()
Ответ на: комментарий от anc

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

cadaber ★★
()
Ответ на: комментарий от cadaber

А где это - я не нашел.
Да и не искал, собственно.

:)

Просто, тогда играть вообще неинтересно.

Зато искать интересно :) Этот квест раскрывает игру с другой стороны, той которую не предусматривали разработчики :)

anc ★★★★★
()
Ответ на: комментарий от anc

Зато искать интересно :)

Ну, знаешь... Это как играть в любую стрелялку, с чит-кодами, типа GOD или ALLWEAPONS. Неинтересно совершенно. Но чисто искать - интереснее.

Кстати, я однажды в старом Diablo нашел, где хранятся характеристики героя. Повысил, вручную хех-редактором. И что ты думаешь? Враги автоматически стали сильнее! Ну, натурально! =)

Кстати, я Half-Life 2 так проходил. Нет, поначалу - всё было в рамках игрового процесса. Но когда начали с вертолёта хреняить - тут я уже начал выпендриваться... =)

cadaber ★★
()
Последнее исправление: cadaber (всего исправлений: 1)
Ответ на: комментарий от cadaber

Но чисто искать - интереснее.

Вот я об этом же :) Одно дело, что-то нагуглить, скачать готовое... А другое дело потратить свое время и мозги, что бы это «немного поправить своими же рученками» :)

Кстати, я однажды в старом Diablo нашел, где хранятся характеристики героя. Повысил, вручную хех-редактором. И что ты думаешь? Враги автоматически стали сильнее! Ну, натурально! =)

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

Кстати, я Half-Life 2 так проходил. Нет, поначалу - всё было в рамках игрового процесса. Но когда начали с вертолёта хреняить - тут я уже начал выпендриваться... =)

рука-лицо.jpg :) Я хоть в халфу не играл, но вас понимаю :)

anc ★★★★★
()

О кстати, вопрос в догонку, раз уж начал думать над темой переводов ПО, то как более красиво делать когда у тебя числительные в разных языках к примеру разное число форм имеют? Всегда просто костылики в код подставлял (хотя в теории их бы к переводу ставить а не в логику, т.к. читаемость портят) и везде где видел их подставляли, кроме CDDA, там походу прикрутили что-то более изощрённое, но у них и gettext патченный сильно под них, чтоб часть задач решал, которые ванильным не решаются. Имеется ввиду, что 1 bottle, 2 bottles, 1 бутылка, 2 бутылки, 5 бутылок... Т.е. даже в русском и английском число форм разное. А что в других ЯП/системах перевода? Как там эту проблему решают? Видел конечно и что не решают и только для английского правильно показывает а на русском 1 бутылка, 2 бутылки, 5 бутылки...

peregrine ★★★★★
() автор топика
Последнее исправление: peregrine (всего исправлений: 1)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)