CPPLASTIC Telegram 334
Де це Сіпласпластик знов подівся? Працює, мабуть…

Ще б пак працює!

Отже, у вільний час, якого на жаль не так багато, потроху допомагаю перекладати гру українською. І щоб перевірити локалізацію на власне грі, треба стягнути поточний файл з перекладом з Crowdin та закинути у потрібну теку.

От тільки файл — це CSV, і Crowdin автоматично огортає кожне значення в лапки, а парсер гри цього не розуміє, бо там розробники не заморочувалися. Ну й додаткові ще якісь реквайрменти до того файлу є.

Що роблять нормальні люди у такому випадку? — Виправляють все файнд-реплейсом у ноутпаді.
Що роблять адекватні люди з навичками програмування? — Пишуть скрипт на 💻 у три рядки, який виправлятиме все автоматично.

Що роблю я? — Я пишу рушій для запуску «правил», написаних на #QML 😅

Отож правила + опціональний логотип (гри) + додаткові файли для копіювання лежать в бандлі. Концепція бандлів з #macOS мені дуже подобається: це така тека з різноманітним мотлохом, але система відображає її як файл і, коли дабл-клікаєш, відкриває відповідну програму. На вінді, звісно, так не працює, тому я просто всередину бандла поклав ще один додатковий порожній файл з кастомним розширенням, і дабл-клікаю там вже по ньому.

QML-рушій крутиться в UI-треді, тож коли йшла обробка файлу, все завмирало, чим дуже мене дратувало. Але виявилося, що можна мати декілька рушіїв в одному процесі! Мені так навіть краще. Я в окремому треді запускаю рушій для опрацювання правил, а в UI-ному тільки… UI. І вони один з одним комунікують там якось сигналами. На одному з етапів розробки у мене так летіло 50к сигналів в секунду 😄, тому UI все одно не реагував — довелося трохи оптимізнути. Зараз там, думаю, ну сотня тих сигналів, може, якщо не менше.

Користувач просто драг-н-дропає файл у вікно, й воно фігачить. Наразі є декілька видів правил:
FileRule отримує на вхід чисто імʼя файлу й далі робить з ним ті перевірки, що хоче, в колбеці ensure.
ItemRule запускається для кожного рядку тексту, тож отримує цей рядок та його індекс. Окрім того, можна задефайнити ще fix, який автоматично щось виправлятиме.
InstallCurrentFile дозволяє поточний файл закинути у якусь теку, опціонально під іншим імʼям.
InstallFiles — майже те саме, але копіює якісь статичні файли з бандлу.
• Окрім того, існує Group, щоб можна було групувати декілька рулів, а значить — виносити їх в окремі реюзабл-файли! Їх можна вкладати одна в одну, й воно врешті просто «розчиняє» їх, роблячи щось на кшталт flatten.

Люди з команди поки що не дуже оцінили прикол, відреагувавши доволі вʼяло — мабуть, тому що треба текст перекладати, а не хуйнею маятися 😅 Але мене прям бісило руками це робити щоразу, тож я не встояв, бо коли мене щось з інструментів дратує, я весь час про це думаю й не можу сфокусуватися на роботі.

Думаю згодом ще додати можливість порівнювати рядок з оригіналом + підтримку інших форматів на кшталт XLIFF + автоматичний апдейт з Crowdin, щоб руками ото не качати. Але поки що мені й так норм.
Media is too big
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥53👍3



tgoop.com/cpplastic/334
Create:
Last Update:

Де це Сіпласпластик знов подівся? Працює, мабуть…

Ще б пак працює!

Отже, у вільний час, якого на жаль не так багато, потроху допомагаю перекладати гру українською. І щоб перевірити локалізацію на власне грі, треба стягнути поточний файл з перекладом з Crowdin та закинути у потрібну теку.

От тільки файл — це CSV, і Crowdin автоматично огортає кожне значення в лапки, а парсер гри цього не розуміє, бо там розробники не заморочувалися. Ну й додаткові ще якісь реквайрменти до того файлу є.

Що роблять нормальні люди у такому випадку? — Виправляють все файнд-реплейсом у ноутпаді.
Що роблять адекватні люди з навичками програмування? — Пишуть скрипт на 💻 у три рядки, який виправлятиме все автоматично.

Що роблю я? — Я пишу рушій для запуску «правил», написаних на #QML 😅

Отож правила + опціональний логотип (гри) + додаткові файли для копіювання лежать в бандлі. Концепція бандлів з #macOS мені дуже подобається: це така тека з різноманітним мотлохом, але система відображає її як файл і, коли дабл-клікаєш, відкриває відповідну програму. На вінді, звісно, так не працює, тому я просто всередину бандла поклав ще один додатковий порожній файл з кастомним розширенням, і дабл-клікаю там вже по ньому.

QML-рушій крутиться в UI-треді, тож коли йшла обробка файлу, все завмирало, чим дуже мене дратувало. Але виявилося, що можна мати декілька рушіїв в одному процесі! Мені так навіть краще. Я в окремому треді запускаю рушій для опрацювання правил, а в UI-ному тільки… UI. І вони один з одним комунікують там якось сигналами. На одному з етапів розробки у мене так летіло 50к сигналів в секунду 😄, тому UI все одно не реагував — довелося трохи оптимізнути. Зараз там, думаю, ну сотня тих сигналів, може, якщо не менше.

Користувач просто драг-н-дропає файл у вікно, й воно фігачить. Наразі є декілька видів правил:
FileRule отримує на вхід чисто імʼя файлу й далі робить з ним ті перевірки, що хоче, в колбеці ensure.
ItemRule запускається для кожного рядку тексту, тож отримує цей рядок та його індекс. Окрім того, можна задефайнити ще fix, який автоматично щось виправлятиме.
InstallCurrentFile дозволяє поточний файл закинути у якусь теку, опціонально під іншим імʼям.
InstallFiles — майже те саме, але копіює якісь статичні файли з бандлу.
• Окрім того, існує Group, щоб можна було групувати декілька рулів, а значить — виносити їх в окремі реюзабл-файли! Їх можна вкладати одна в одну, й воно врешті просто «розчиняє» їх, роблячи щось на кшталт flatten.

Люди з команди поки що не дуже оцінили прикол, відреагувавши доволі вʼяло — мабуть, тому що треба текст перекладати, а не хуйнею маятися 😅 Але мене прям бісило руками це робити щоразу, тож я не встояв, бо коли мене щось з інструментів дратує, я весь час про це думаю й не можу сфокусуватися на роботі.

Думаю згодом ще додати можливість порівнювати рядок з оригіналом + підтримку інших форматів на кшталт XLIFF + автоматичний апдейт з Crowdin, щоб руками ото не качати. Але поки що мені й так норм.

BY Cіпласпластик


Share with your friend now:
tgoop.com/cpplastic/334

View MORE
Open in Telegram


Telegram News

Date: |

Public channels are public to the internet, regardless of whether or not they are subscribed. A public channel is displayed in search results and has a short address (link). Hashtags are a fast way to find the correct information on social media. To put your content out there, be sure to add hashtags to each post. We have two intelligent tips to give you: The imprisonment came as Telegram said it was "surprised" by claims that privacy commissioner Ada Chung Lai-ling is seeking to block the messaging app due to doxxing content targeting police and politicians. As five out of seven counts were serious, Hui sentenced Ng to six years and six months in jail. Developing social channels based on exchanging a single message isn’t exactly new, of course. Back in 2014, the “Yo” app was launched with the sole purpose of enabling users to send each other the greeting “Yo.”
from us


Telegram Cіпласпластик
FROM American